all:
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 81.163.193.244
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 57608cfa-dbd4-4afe-9969-9e8c1b12691e
        host_id: 39b0ac6b1bd0318d0940af02f75334312eeed4057396383c275283da
        interface_ip: 81.163.193.244
        label: ubuntu-noble
        private_ipv4: 10.128.0.105
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.244
        public_ipv6: ''
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base branches: None source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job ansible-lint branches: None source: osism/zuul-jobs/.zuul.yaml@main#7>'
      - '<Job ansible-lint branches: None source: osism/testbed/.zuul.yaml@main#195>'
      ansible_version: '8'
      attempts: 1
      branch: main
      build: 4637b175912f442bafddf31fa2d2f15a
      buildset: 86313f67bd1a456d8d942a28b4d34101
      change: '2654'
      change_message: "chore(deps): update dependency gruntwork-io/terragrunt to v0.77.22\n\
        \nThis PR contains the following updates:\n\n| Package | Update | Change |\n\
        |---|---|---|\n| [gruntwork-io/terragrunt](https://redirect.github.com/gruntwork-io/terragrunt)\
        \ | patch | `v0.77.3` -> `v0.77.22` |\n\n---\n\n### Release Notes\n\n<details>\n\
        <summary>gruntwork-io/terragrunt (gruntwork-io/terragrunt)</summary>\n\n###\
        \ [`v0.77.22`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.22)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.21...v0.77.22)\n\
        \n##### \U0001F9EA Experiments Completed\n\n##### The `cli-redesign` experiment\
        \ is now complete\n\nThe [cli-redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment is now complete.\n\nIf you were previously using the flag `--experiment\
        \ cli-redesign` to opt in to experimental functionality, you no longer have\
        \ to do so. Note that if you are, you will simply get a warning that it is\
        \ no longer necessary.\n\n##### What's Changed\n\n-   feat: Adding base tests\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4176](https://redirect.github.com/gruntwork-io/terragrunt/pull/4176)\n\
        -   chore: Complete CLI Redesign experiment by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4189](https://redirect.github.com/gruntwork-io/terragrunt/pull/4189)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.21...v0.77.22\n\
        \n### [`v0.77.21`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.21)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.20...v0.77.21)\n\
        \n#### \u2728 New Features\n\n##### Introduction of `hcl` commands\n\nAs part\
        \ of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`hcl`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#hcl-commands)\
        \ commands has been introduced.\n\nThe `hcl` commands allow users to directly\
        \ interact with HCL content independent of the underlying functionality they\
        \ support.\n\nThe functionality of the `hcl` commands replace existing functionality\
        \ that is soon to be deprecated:\n\n-   `hclfmt` --> `hcl fmt`\n-   `hclvalidate`\
        \ --> `hcl validate`\n-   `validate-inputs` --> `hcl validate --inputs`\n\
        -   `validate-inputs --strict-validate` --> `hcl validate --inputs --strict`\n\
        \n#### What's Changed\n\n-   feat: `hcl` commands docs by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4180](https://redirect.github.com/gruntwork-io/terragrunt/pull/4180)\n\
        -   feat: add symbol link experiemnt in discovery process by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4177](https://redirect.github.com/gruntwork-io/terragrunt/pull/4177)\n\
        -   feat: Implementation of `hcl` commands by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4169](https://redirect.github.com/gruntwork-io/terragrunt/pull/4169)\n\
        -   fix: Adding redirect from /docs/reference/experiment-mode to /docs/reference/experiments\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4178](https://redirect.github.com/gruntwork-io/terragrunt/pull/4178)\n\
        -   fix: Fix spelling by [@&#8203;hpe-noinarisak](https://redirect.github.com/hpe-noinarisak)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4179](https://redirect.github.com/gruntwork-io/terragrunt/pull/4179)\n\
        -   fix: Update status of cli-redesign experiment by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4188](https://redirect.github.com/gruntwork-io/terragrunt/pull/4188)\n\
        -   build(deps): bump github.com/charmbracelet/bubbles from 0.20.0 to 0.21.0\
        \ by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/gruntwork-io/terragrunt/pull/4160](https://redirect.github.com/gruntwork-io/terragrunt/pull/4160)\n\
        \n#### New Contributors\n\n-   [@&#8203;hpe-noinarisak](https://redirect.github.com/hpe-noinarisak)\
        \ made their first contribution in [https://github.com/gruntwork-io/terragrunt/pull/4179](https://redirect.github.com/gruntwork-io/terragrunt/pull/4179)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.20...v0.77.21\n\
        \n### [`v0.77.20`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.20)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.19...v0.77.20)\n\
        \n##### What's Changed\n\n-   build: Added `build-no-proxy.yml` workflow by\
        \ [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4171](https://redirect.github.com/gruntwork-io/terragrunt/pull/4171)\n\
        -   build: Added `lint.yml` and `strict-lint.yml` workflows for GitHub Actions\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4172](https://redirect.github.com/gruntwork-io/terragrunt/pull/4172)\n\
        -   build: Added codespell workflow by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4173](https://redirect.github.com/gruntwork-io/terragrunt/pull/4173)\n\
        -   build: Added markdownlint v2 to GitHub Actions workflows by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4175](https://redirect.github.com/gruntwork-io/terragrunt/pull/4175)\n\
        -   docs: Improved getting started guide by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4174](https://redirect.github.com/gruntwork-io/terragrunt/pull/4174)\n\
        -   build(deps): bump github.com/ProtonMail/go-crypto from 1.1.6 to 1.2.0\
        \ by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/gruntwork-io/terragrunt/pull/4161](https://redirect.github.com/gruntwork-io/terragrunt/pull/4161)\n\
        -   build(deps): bump golang.org/x/term from 0.30.0 to 0.31.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4159](https://redirect.github.com/gruntwork-io/terragrunt/pull/4159)\n\
        -   build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.78.2\
        \ to 1.79.2 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4158](https://redirect.github.com/gruntwork-io/terragrunt/pull/4158)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.19...v0.77.20\n\
        \n### [`v0.77.19`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.19)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.18...v0.77.19)\n\
        \n##### \u2728 New Features\n\n##### OpenTelemetry traces are now integrated\
        \ into `find` and `list` commands\n\nfind telemetry:\n![image](https://redirect.github.com/user-attachments/assets/eb5ff11a-e90f-4b5d-bec0-c99cb1419f57)\n\
        \nlist telemetry:\n![image](https://redirect.github.com/user-attachments/assets/7af232f1-e822-4aae-8230-12257c359d21)\n\
        \n##### What's Changed\n\n-   feat: Implemented telemetry for find/list by\
        \ [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4165](https://redirect.github.com/gruntwork-io/terragrunt/pull/4165)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.18...v0.77.19\n\
        \n### [`v0.77.18`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.18)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.17...v0.77.18)\n\
        \n##### \u2728 New Features\n\n##### Support for HCL formatting with the `render`\
        \ command\n\nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`render`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate)\
        \ command now supports HCL formatting for rendered configurations, which is\
        \ the default output format.\n\nUsing the `render` command with HCL formatting\
        \ allows users to get a quick, minimal evaluation of Terragrunt unit configurations\
        \ with as much pre-processing done as possible.\n\nFor example, the following\
        \ `terragrunt.hcl` file:\n\n```hcl\n\n##### terragrunt.hcl\n\nlocals {\n \
        \ aws_region = \"us-east-1\"\n}\n\ninputs = {\n  aws_region = local.aws_region\n\
        }\n```\n\nRenders to the following HCL:\n\n```bash\n$ terragrunt render\n\
        locals {\n  aws_region = \"us-east-1\"\n}\ninputs = {\n  aws_region = \"us-east-1\"\
        \n}\n```\n\nUsing the `render` command with HCL formatting offers a way to\
        \ resolve complex HCL function evaluation, include merging or string interpolation,\
        \ etc. to achieve equivalent Terragrunt HCL configurations that are easier\
        \ to reason about.\n\n##### What's Changed\n\n-   feat: Adding `render` with\
        \ HCL formatting by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4164](https://redirect.github.com/gruntwork-io/terragrunt/pull/4164)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.17...v0.77.18\n\
        \n### [`v0.77.17`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.17)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.16...v0.77.17)\n\
        \n##### \u2728 New Features\n\n##### Introduction of the `render` command\n\
        \nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`render`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate)\
        \ command has been introduced.\n\nThe `render` command allows users to easily\
        \ render Terragrunt unit configurations with reduced complexity, making it\
        \ easier to understand configurations at a glance.\n\nFor example, the following\
        \ `terragrunt.hcl` file:\n\n```hcl\n\n##### terragrunt.hcl\n\nlocals {\n \
        \ aws_region = \"us-east-1\"\n}\n\ninputs = {\n  aws_region = local.aws_region\n\
        }\n```\n\nRenders to the following JSON:\n\n```bash\n$ terragrunt render --format\
        \ json\n{\n  \"locals\": { \"aws_region\": \"us-east-1\" },\n  \"inputs\"\
        : { \"aws_region\": \"us-east-1\" }\n  // NOTE: other attributes are omitted\
        \ for brevity\n}\n```\n\nThe introduction of the `render` command is part\
        \ of the eventual deprecation of the existing `render-json` command, which\
        \ will be deprecated by the end of the CLI Redesign. The `render` command\
        \ is a higher level command, that offers the ability to write to stdout, in\
        \ addition to writing to files, and will support HCL configurations in addition\
        \ to JSON (coming soon).\n\nTo learn more about the `render` command, read\
        \ the official documentation [here](https://terragrunt.gruntwork.io/docs/reference/cli-options/#render).\n\
        \n##### What's Changed\n\n-   feat: Adding `render` command by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4145](https://redirect.github.com/gruntwork-io/terragrunt/pull/4145)\n\
        -   feat: Adding docs for `backend migrate` by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4140](https://redirect.github.com/gruntwork-io/terragrunt/pull/4140)\n\
        -   build(deps): bump ruby/setup-ruby from 1.229.0 to 1.230.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4162](https://redirect.github.com/gruntwork-io/terragrunt/pull/4162)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.16...v0.77.17\n\
        \n### [`v0.77.16`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.16)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.15...v0.77.16)\n\
        \n##### \u2728 New Features\n\n##### Introduction of the `backend migrate`\
        \ command\n\nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`backend migrate`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate)\
        \ command has been introduced.\n\nThe `backend migrate` command allows you\
        \ to simply migrate state between different units (or renames of units) without\
        \ manually running OpenTofu/Terraform state migration commands.\n\nTo learn\
        \ more about the `backend migrate` command, read the [official docs](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate).\n\
        \n##### What's Changed\n\n-   feat: Added support for migrating state between\
        \ different backends by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4154](https://redirect.github.com/gruntwork-io/terragrunt/pull/4154)\n\
        -   feat: Enhanced error explainer to detect and report issues related to\
        \ `stack` values by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4163](https://redirect.github.com/gruntwork-io/terragrunt/pull/4163)\n\
        -   fix: Improved the deprecation message for experimental command flags by\
        \ [@&#8203;levkohimins](https://redirect.github.com/levkohimins) in [https://github.com/gruntwork-io/terragrunt/pull/4146](https://redirect.github.com/gruntwork-io/terragrunt/pull/4146)\n\
        -   fix: Prevent `TF_CLI_CONFIG_FILE` environment variable from being overwritten,\
        \ except during `init` and `providers` commands by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4155](https://redirect.github.com/gruntwork-io/terragrunt/pull/4155)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.15...v0.77.16\n\
        \n### [`v0.77.15`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.15)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.14...v0.77.15)\n\
        \n#### \u2728 New Features\n\n##### Introduction of the `dag graph` command\n\
        \nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`dag graph`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#print-graph)\
        \ command has been introduced.\n\n![dag](https://redirect.github.com/user-attachments/assets/389d4e31-197c-4c37-8913-1417ecd3e5b4)\n\
        \n![dag-help](https://redirect.github.com/user-attachments/assets/2525cd27-0d8e-457b-87ea-759fae31e2f3)\n\
        \n![dag-graph-help](https://redirect.github.com/user-attachments/assets/fb268b20-f32b-4b4f-ba13-0d1fc9fca748)\n\
        \n#### What's Changed\n\n-   docs: Added migration guide for adopting Terragrunt\
        \ Stacks by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4152](https://redirect.github.com/gruntwork-io/terragrunt/pull/4152)\n\
        -   feat: Added dag graph command by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4143](https://redirect.github.com/gruntwork-io/terragrunt/pull/4143)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.14...v0.77.15\n\
        \n### [`v0.77.14`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.14)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.13...v0.77.14)\n\
        \n#### \u2728 New Features\n\n##### Support for `--exclude` and `--queue-construct-as`\
        \ in `find` and `list`\n\nThe [`find`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find)\
        \ and [`list`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#list)\
        \ commands have been updated to leverage new capabilities involving greater\
        \ understanding of the Terragrunt run queue.\n\nUsers can now leverage the\
        \ [`--queue-construct-as`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find-queue-construct-as)\
        \ (or just `--as`) flag in the `find` and `list` commands to discover configurations\
        \ as if a particular Terragrunt command was being run (e.g. `plan`, `destroy`).\n\
        \nFor example:\n\n```bash\n$ terragrunt find --queue-construct-as=plan\nstacks/live/dev\n\
        stacks/live/prod\nunits/live/dev/vpc\nunits/live/prod/vpc\nunits/live/dev/db\n\
        units/live/prod/db\nunits/live/dev/ec2\nunits/live/prod/ec2\n```\n\n```bash\n\
        $ terragrunt find --as=destroy\nstacks/live/dev\nstacks/live/prod\nunits/live/dev/ec2\n\
        units/live/prod/ec2\nunits/live/dev/db\nunits/live/prod/db\nunits/live/dev/vpc\n\
        units/live/prod/vpc\n```\n\nThe `find` and `list` commands will now construct\
        \ the Terragrunt run queue as if a particular command was being run, potentially\
        \ altering the position of elements in the run queue, based on their dependencies\
        \ (dependencies before dependents for plans, applies, etc. and dependents\
        \ before dependencies for destroys).\n\nIn addition, users can leverage the\
        \ [`--exclude`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find-exclude)\
        \ flag on the `find` command to get information on the `exclude` block included\
        \ in results. The `exclude` block is also factored in to discovery results\
        \ when the `--queue-construct-as` flag is passed, allowing users to dry-run\
        \ behavior of the `exclude` block before performing any Terragrunt runs.\n\
        \n#### What's Changed\n\n-   feat: Adding exclude support to list and find\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4147](https://redirect.github.com/gruntwork-io/terragrunt/pull/4147)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.13...v0.77.14\n\
        \n### [`v0.77.13`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.13)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.12...v0.77.13)\n\
        \n#### What's Changed\n\n-   build(deps): bump google.golang.org/grpc from\
        \ 1.71.0 to 1.71.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4132](https://redirect.github.com/gruntwork-io/terragrunt/pull/4132)\n\
        -   build(deps): bump golang.org/x/sys from 0.31.0 to 0.32.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4133](https://redirect.github.com/gruntwork-io/terragrunt/pull/4133)\n\
        -   build(deps): bump golang.org/x/oauth2 from 0.28.0 to 0.29.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4131](https://redirect.github.com/gruntwork-io/terragrunt/pull/4131)\n\
        -   build(deps): bump github.com/getsops/sops/v3 from 3.9.4 to 3.10.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4130](https://redirect.github.com/gruntwork-io/terragrunt/pull/4130)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.12...v0.77.13\n\
        \n### [`v0.77.12`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.12)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.11...v0.77.12)\n\
        \n#### \u2728 New Features\n\nIntroduced `no_validation` attribute for `stack`\
        \ and `unit`, allowing users to bypass Terragrunt's validation checks when\
        \ deploying infrastructure. This is particularly useful in scenarios where\
        \ you need to deploy infrastructure that doesn't strictly adhere to Terragrunt's\
        \ validation rules, such as during emergency deployments or when working with\
        \ legacy infrastructure patterns.\n\n#### What's Changed\n\n-   docs: added\
        \ more docs for stacks by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4144](https://redirect.github.com/gruntwork-io/terragrunt/pull/4144)\n\
        -   feat: added support for `no_validation` attribute for `stack` and `unit`\
        \ by [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4149](https://redirect.github.com/gruntwork-io/terragrunt/pull/4149)\n\
        \nRFC: [https://github.com/gruntwork-io/terragrunt/issues/3313](https://redirect.github.com/gruntwork-io/terragrunt/issues/3313)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.11...v0.77.12\n\
        \n### [`v0.77.11`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.11)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.10...v0.77.11)\n\
        \n#### \u2728 New Features\n\n##### Introduction of the `info print` command\n\
        \nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`info print`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#print-command)\
        \ command has been introduced.\n\n![help](https://redirect.github.com/user-attachments/assets/2eac4645-93c2-47dd-8dc3-73c4442bf1c8)\n\
        \n![out](https://redirect.github.com/user-attachments/assets/7005c5db-15e1-4efe-b5a8-349a179f6033)\n\
        \n#### What's Changed\n\n-   feat: Introduced the `info print` command to\
        \ output Terragrunt context as a structured JSON object by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4122](https://redirect.github.com/gruntwork-io/terragrunt/pull/4122)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.10...v0.77.11\n\
        \n### [`v0.77.10`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.10)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.9...v0.77.10)\n\
        \n#### What's Changed\n\n-   fix: Suppressing warning for catalog when determining\
        \ default file name by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4134](https://redirect.github.com/gruntwork-io/terragrunt/pull/4134)\n\
        -   fix: Remove warning message for unimplemented backends by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4138](https://redirect.github.com/gruntwork-io/terragrunt/pull/4138)\n\
        -   fix: Fixing optional default template by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4141](https://redirect.github.com/gruntwork-io/terragrunt/pull/4141)\n\
        -   chore: stack code improvements by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4136](https://redirect.github.com/gruntwork-io/terragrunt/pull/4136)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.9...v0.77.10\n\
        \n### [`v0.77.9`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.9)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.8...v0.77.9)\n\
        \n#### \U0001F41B Bug fixes\n\n##### Fetching Outputs from Nested Stacks\n\
        \nResolved an issue that prevented the correct retrieval of outputs from nested\
        \ stacks.\n\n#### What's Changed\n\n-   fix: corrected the logic for fetching\
        \ outputs from nested stacks by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4126](https://redirect.github.com/gruntwork-io/terragrunt/pull/4126)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.8...v0.77.9\n\
        \n### [`v0.77.8`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.8)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.7...v0.77.8)\n\
        \n#### \U0001F4D6 Documentation Updates\n\nA new [performance guide](https://terragrunt.gruntwork.io/docs/troubleshooting/performance/)\
        \ has been added to Terragrunt documentation to offer guidance on how performance\
        \ can be improved when using Terragrunt or contributing to the Terragrunt\
        \ codebase.\n\nThis documentation will evolve over time, as more optional\
        \ optimizations become available, or are no longer necessary, as they become\
        \ default behavior.\n\n#### What's Changed\n\n-   feat: Add performance guide\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4120](https://redirect.github.com/gruntwork-io/terragrunt/pull/4120)\n\
        -   build(deps): bump ruby/setup-ruby from 1.221.0 to 1.229.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4100](https://redirect.github.com/gruntwork-io/terragrunt/pull/4100)\n\
        -   fix: Addressing commas in external IDs by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4128](https://redirect.github.com/gruntwork-io/terragrunt/pull/4128)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.7...v0.77.8\n\
        \n### [`v0.77.7`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.7)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.6...v0.77.7)\n\
        \n#### \u2728 New Features\n\nUsers can now configure a custom default template\
        \ for `scaffold` and `catalog` commands in their `catalog` configuration blocks\
        \ like so:\n\n```hcl\ncatalog {\n  default_template = \"git@github.com/acme/example.git//path/to/template\"\
        \n}\n```\n\nFor more information, read the documentation in the [catalog feature](https://terragrunt.gruntwork.io/docs/features/catalog/#custom-templates-for-scaffolding).\n\
        \nSpecial thanks to [@&#8203;tgeijg](https://redirect.github.com/tgeijg) for\
        \ contributing this feature!\n\n#### What's Changed\n\n-   feat: Adding custom\
        \ default template [#&#8203;3658](https://redirect.github.com/gruntwork-io/terragrunt/issues/3658)\
        \ by [@&#8203;tgeijg](https://redirect.github.com/tgeijg) in [https://github.com/gruntwork-io/terragrunt/pull/4035](https://redirect.github.com/gruntwork-io/terragrunt/pull/4035)\n\
        -   fix: Updating docs after [#&#8203;4035](https://redirect.github.com/gruntwork-io/terragrunt/issues/4035)\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4117](https://redirect.github.com/gruntwork-io/terragrunt/pull/4117)\n\
        -   chore: stacks documentation improvements by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4114](https://redirect.github.com/gruntwork-io/terragrunt/pull/4114)\n\
        \n#### New Contributors\n\n-   [@&#8203;tgeijg](https://redirect.github.com/tgeijg)\
        \ made their first contribution in [https://github.com/gruntwork-io/terragrunt/pull/4035](https://redirect.github.com/gruntwork-io/terragrunt/pull/4035)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.6...v0.77.7\n\
        \n### [`v0.77.6`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.6)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.5...v0.77.6)\n\
        \n#### What's Changed\n\n-   fix: Correctly ignore lock table encryption setting\
        \ to prevent unintended configuration overrides by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4112](https://redirect.github.com/gruntwork-io/terragrunt/pull/4112)\n\
        -   fix: Introduced stricter constraints for detecting stack configuration\
        \ files by [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4113](https://redirect.github.com/gruntwork-io/terragrunt/pull/4113)\n\
        -   feat: Enabled parsing of stack configuration directly from a string input\
        \ for enhanced integration with 3rd party code by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4110](https://redirect.github.com/gruntwork-io/terragrunt/pull/4110)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.5...v0.77.6\n\
        \n### [`v0.77.5`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.5)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.4...v0.77.5)\n\
        \n#### What's Changed\n\n-   feat: added support for OpenTelemetry in `stack`\
        \ commands to enable enhanced observability and tracing by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4109](https://redirect.github.com/gruntwork-io/terragrunt/pull/4109)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.4...v0.77.5\n\
        \n### [`v0.77.4`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.4)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.3...v0.77.4)\n\
        \n#### \U0001F41B Bug fixes\n\n##### Newlines reduced in Error Logging for\
        \ Configuration Errors\n\nLogging for configuration errors has been compacted\
        \ to reduce noise, and make errors easier to read.\n\n```\n\n### Before\n\
        14:09:25.892 ERROR  Error: Error in function call\n\n14:09:25.892 ERROR  \
        \  on terragrunt.hcl line 3, in locals:\n\n14:09:25.892 ERROR     3:     \
        \  requires_auth = run_cmd(\"exit\", \"1\") // intentional error\n\n14:09:25.892\
        \ ERROR\n\n14:09:25.892 ERROR  Call to function \"run_cmd\" failed: Failed\
        \ to execute \"exit 1\" in .\n\nexec: \"exit\": executable file not found\
        \ in $PATH.\n\n```\n\n    ### After\n    15:19:50.937 ERROR  Error: Error\
        \ in function call\n    15:19:50.937 ERROR    on terragrunt.hcl line 3, in\
        \ locals:\n    15:19:50.937 ERROR  Error: Error in function call\n    15:19:50.937\
        \ ERROR    on terragrunt.hcl line 3, in locals:\n    15:19:50.937 ERROR  \
        \   3:       requires_auth = run_cmd(\"exit\", \"1\") // intentional error\n\
        \    15:19:50.937 ERROR     3:       fail   = run_cmd(\"exit\", \"1\") //\
        \ intentional error\n    15:19:50.937 ERROR  Call to function \"run_cmd\"\
        \ failed: Failed to execute \"exit 1\" in .\n    15:19:50.937 ERROR  exec:\
        \ \"exit\": executable file not found in $PATH.\n\n##### Improved Cycle Detection\
        \ Logic for `stack generate`\n\nOn the default filesystem for macOS, path\
        \ length was likely to result in an error before internal cycle detection\
        \ logic, so cycle detection was updated to leverage a maximum path length\
        \ of 1024 characters as an earlier exit for all operating systems.\n\n#####\
        \ Excessive warning for bootstrap requirement resolved\n\nInternal logic for\
        \ determination that backends required bootstrapping was adjusted to no longer\
        \ leverage the value of the OpenTofu state file.\n\nWhile cheaper than making\
        \ a network request to assess the current state of backend resources, it also\
        \ resulted in false negatives, which triggered excessive backend bootstrap\
        \ warnings.\n\n#### What's Changed\n\n-   fix: New lines in TF diagnostic\
        \ log by [@&#8203;levkohimins](https://redirect.github.com/levkohimins) in\
        \ [https://github.com/gruntwork-io/terragrunt/pull/4108](https://redirect.github.com/gruntwork-io/terragrunt/pull/4108)\n\
        -   fix: Stack cycles detection improvements by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4106](https://redirect.github.com/gruntwork-io/terragrunt/pull/4106)\n\
        -   fix: Fixing excessive warning for bootstrap by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4107](https://redirect.github.com/gruntwork-io/terragrunt/pull/4107)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.3...v0.77.4\n\
        \n</details>\n\n---\n\n### Configuration\n\n\U0001F4C5 **Schedule**: Branch\
        \ creation - At any time (no schedule defined), Automerge - At any time (no\
        \ schedule defined).\n\n\U0001F6A6 **Automerge**: Disabled by config. Please\
        \ merge this manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever\
        \ PR becomes conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F515\
        \ **Ignore**: Close this PR and you won't be reminded about this update again.\n\
        \n---\n\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR,\
        \ check this box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).\
        \ View the [repository job log](https://developer.mend.io/github/osism/testbed).\n\
        <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjI0OC40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/testbed/pull/2654
      child_jobs: []
      commit_id: c2859d318d144080bfe7bedbe5d0185af968210b
      event_id: 999aaef0-1ee9-11f0-927f-b5c7a7906200
      executor:
        hostname: 7d211f194f6a
        inventory_file: /var/lib/zuul/builds/4637b175912f442bafddf31fa2d2f15a/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/4637b175912f442bafddf31fa2d2f15a/work/logs
        result_data_file: /var/lib/zuul/builds/4637b175912f442bafddf31fa2d2f15a/work/results.json
        src_root: /var/lib/zuul/builds/4637b175912f442bafddf31fa2d2f15a/work/src
        work_root: /var/lib/zuul/builds/4637b175912f442bafddf31fa2d2f15a/work
      items:
      - branch: main
        change: '2654'
        change_url: https://github.com/osism/testbed/pull/2654
        patchset: c2859d318d144080bfe7bedbe5d0185af968210b
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/testbed
          name: osism/testbed
          short_name: testbed
          src_dir: src/github.com/osism/testbed
      job: ansible-lint
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBkZXBlbmRlbmN5IGdydW50d29yay1pby90ZXJyYWdydW50IHRvIHYwLjc3LjIyCgpUaGlzIFBSIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdXBkYXRlczoKCnwgUGFja2FnZSB8IFVwZGF0ZSB8IENoYW5nZSB8CnwtLS18LS0tfC0tLXwKfCBbZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudCkgfCBwYXRjaCB8IGB2MC43Ny4zYCAtPiBgdjAuNzcuMjJgIHwKCi0tLQoKIyMjIFJlbGVhc2UgTm90ZXMKCjxkZXRhaWxzPgo8c3VtbWFyeT5ncnVudHdvcmstaW8vdGVycmFncnVudCAoZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQpPC9zdW1tYXJ5PgoKIyMjIFtgdjAuNzcuMjJgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjIyKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4yMS4uLnYwLjc3LjIyKQoKIyMjIyMg8J+nqiBFeHBlcmltZW50cyBDb21wbGV0ZWQKCiMjIyMjIFRoZSBgY2xpLXJlZGVzaWduYCBleHBlcmltZW50IGlzIG5vdyBjb21wbGV0ZQoKVGhlIFtjbGktcmVkZXNpZ25dKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvZXhwZXJpbWVudHMvI2NsaS1yZWRlc2lnbikgZXhwZXJpbWVudCBpcyBub3cgY29tcGxldGUuCgpJZiB5b3Ugd2VyZSBwcmV2aW91c2x5IHVzaW5nIHRoZSBmbGFnIGAtLWV4cGVyaW1lbnQgY2xpLXJlZGVzaWduYCB0byBvcHQgaW4gdG8gZXhwZXJpbWVudGFsIGZ1bmN0aW9uYWxpdHksIHlvdSBubyBsb25nZXIgaGF2ZSB0byBkbyBzby4gTm90ZSB0aGF0IGlmIHlvdSBhcmUsIHlvdSB3aWxsIHNpbXBseSBnZXQgYSB3YXJuaW5nIHRoYXQgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KCiMjIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogQWRkaW5nIGJhc2UgdGVzdHMgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTc2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTc2KQotICAgY2hvcmU6IENvbXBsZXRlIENMSSBSZWRlc2lnbiBleHBlcmltZW50IGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE4OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE4OSkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMjEuLi52MC43Ny4yMgoKIyMjIFtgdjAuNzcuMjFgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjIxKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4yMC4uLnYwLjc3LjIxKQoKIyMjIyDinKggTmV3IEZlYXR1cmVzCgojIyMjIyBJbnRyb2R1Y3Rpb24gb2YgYGhjbGAgY29tbWFuZHMKCkFzIHBhcnQgb2YgdGhlIFtDTEkgUmVkZXNpZ25dKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvZXhwZXJpbWVudHMvI2NsaS1yZWRlc2lnbikgZXhwZXJpbWVudCwgdGhlIFtgaGNsYF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jaGNsLWNvbW1hbmRzKSBjb21tYW5kcyBoYXMgYmVlbiBpbnRyb2R1Y2VkLgoKVGhlIGBoY2xgIGNvbW1hbmRzIGFsbG93IHVzZXJzIHRvIGRpcmVjdGx5IGludGVyYWN0IHdpdGggSENMIGNvbnRlbnQgaW5kZXBlbmRlbnQgb2YgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb25hbGl0eSB0aGV5IHN1cHBvcnQuCgpUaGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgYGhjbGAgY29tbWFuZHMgcmVwbGFjZSBleGlzdGluZyBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgc29vbiB0byBiZSBkZXByZWNhdGVkOgoKLSAgIGBoY2xmbXRgIC0tPiBgaGNsIGZtdGAKLSAgIGBoY2x2YWxpZGF0ZWAgLS0+IGBoY2wgdmFsaWRhdGVgCi0gICBgdmFsaWRhdGUtaW5wdXRzYCAtLT4gYGhjbCB2YWxpZGF0ZSAtLWlucHV0c2AKLSAgIGB2YWxpZGF0ZS1pbnB1dHMgLS1zdHJpY3QtdmFsaWRhdGVgIC0tPiBgaGNsIHZhbGlkYXRlIC0taW5wdXRzIC0tc3RyaWN0YAoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IGBoY2xgIGNvbW1hbmRzIGRvY3MgYnkgW0AmIzgyMDM7bGV2a29oaW1pbnNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9sZXZrb2hpbWlucykgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxODBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxODApCi0gICBmZWF0OiBhZGQgc3ltYm9sIGxpbmsgZXhwZXJpZW1udCBpbiBkaXNjb3ZlcnkgcHJvY2VzcyBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3NykKLSAgIGZlYXQ6IEltcGxlbWVudGF0aW9uIG9mIGBoY2xgIGNvbW1hbmRzIGJ5IFtAJiM4MjAzO2xldmtvaGltaW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbGV2a29oaW1pbnMpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTY5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTY5KQotICAgZml4OiBBZGRpbmcgcmVkaXJlY3QgZnJvbSAvZG9jcy9yZWZlcmVuY2UvZXhwZXJpbWVudC1tb2RlIHRvIC9kb2NzL3JlZmVyZW5jZS9leHBlcmltZW50cyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzgpCi0gICBmaXg6IEZpeCBzcGVsbGluZyBieSBbQCYjODIwMztocGUtbm9pbmFyaXNha10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2hwZS1ub2luYXJpc2FrKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3OSkKLSAgIGZpeDogVXBkYXRlIHN0YXR1cyBvZiBjbGktcmVkZXNpZ24gZXhwZXJpbWVudCBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxODhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxODgpCi0gICBidWlsZChkZXBzKTogYnVtcCBnaXRodWIuY29tL2NoYXJtYnJhY2VsZXQvYnViYmxlcyBmcm9tIDAuMjAuMCB0byAwLjIxLjAgYnkgW0AmIzgyMDM7ZGVwZW5kYWJvdF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlcGVuZGFib3QpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTYwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTYwKQoKIyMjIyBOZXcgQ29udHJpYnV0b3JzCgotICAgW0AmIzgyMDM7aHBlLW5vaW5hcmlzYWtdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ocGUtbm9pbmFyaXNhaykgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzkpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjIwLi4udjAuNzcuMjEKCiMjIyBbYHYwLjc3LjIwYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4yMCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTkuLi52MC43Ny4yMCkKCiMjIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgYnVpbGQ6IEFkZGVkIGBidWlsZC1uby1wcm94eS55bWxgIHdvcmtmbG93IGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3MSkKLSAgIGJ1aWxkOiBBZGRlZCBgbGludC55bWxgIGFuZCBgc3RyaWN0LWxpbnQueW1sYCB3b3JrZmxvd3MgZm9yIEdpdEh1YiBBY3Rpb25zIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3MikKLSAgIGJ1aWxkOiBBZGRlZCBjb2Rlc3BlbGwgd29ya2Zsb3cgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTczXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTczKQotICAgYnVpbGQ6IEFkZGVkIG1hcmtkb3dubGludCB2MiB0byBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvd3MgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTc1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTc1KQotICAgZG9jczogSW1wcm92ZWQgZ2V0dGluZyBzdGFydGVkIGd1aWRlIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3NCkKLSAgIGJ1aWxkKGRlcHMpOiBidW1wIGdpdGh1Yi5jb20vUHJvdG9uTWFpbC9nby1jcnlwdG8gZnJvbSAxLjEuNiB0byAxLjIuMCBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNjEpCi0gICBidWlsZChkZXBzKTogYnVtcCBnb2xhbmcub3JnL3gvdGVybSBmcm9tIDAuMzAuMCB0byAwLjMxLjAgYnkgW0AmIzgyMDM7ZGVwZW5kYWJvdF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlcGVuZGFib3QpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTU5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTU5KQotICAgYnVpbGQoZGVwcyk6IGJ1bXAgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12Mi9zZXJ2aWNlL3MzIGZyb20gMS43OC4yIHRvIDEuNzkuMiBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNTgpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjE5Li4udjAuNzcuMjAKCiMjIyBbYHYwLjc3LjE5YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4xOSkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTguLi52MC43Ny4xOSkKCiMjIyMjIOKcqCBOZXcgRmVhdHVyZXMKCiMjIyMjIE9wZW5UZWxlbWV0cnkgdHJhY2VzIGFyZSBub3cgaW50ZWdyYXRlZCBpbnRvIGBmaW5kYCBhbmQgYGxpc3RgIGNvbW1hbmRzCgpmaW5kIHRlbGVtZXRyeToKIVtpbWFnZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2ViNWZmMTFhLWU5MGYtNGI1ZC1iZWMwLWM5OWNiMTQxOWY1NykKCmxpc3QgdGVsZW1ldHJ5OgohW2ltYWdlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvN2FmMjMyZjEtZTgyMi00YWFlLTgyMzAtMTIyNTdjMzU5ZDIxKQoKIyMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBJbXBsZW1lbnRlZCB0ZWxlbWV0cnkgZm9yIGZpbmQvbGlzdCBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE2NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE2NSkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTguLi52MC43Ny4xOQoKIyMjIFtgdjAuNzcuMThgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjE4KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xNy4uLnYwLjc3LjE4KQoKIyMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKIyMjIyMgU3VwcG9ydCBmb3IgSENMIGZvcm1hdHRpbmcgd2l0aCB0aGUgYHJlbmRlcmAgY29tbWFuZAoKQXMgcGFydCBvZiB0aGUgW0NMSSBSZWRlc2lnbl0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9leHBlcmltZW50cy8jY2xpLXJlZGVzaWduKSBleHBlcmltZW50LCB0aGUgW2ByZW5kZXJgXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNiYWNrZW5kLW1pZ3JhdGUpIGNvbW1hbmQgbm93IHN1cHBvcnRzIEhDTCBmb3JtYXR0aW5nIGZvciByZW5kZXJlZCBjb25maWd1cmF0aW9ucywgd2hpY2ggaXMgdGhlIGRlZmF1bHQgb3V0cHV0IGZvcm1hdC4KClVzaW5nIHRoZSBgcmVuZGVyYCBjb21tYW5kIHdpdGggSENMIGZvcm1hdHRpbmcgYWxsb3dzIHVzZXJzIHRvIGdldCBhIHF1aWNrLCBtaW5pbWFsIGV2YWx1YXRpb24gb2YgVGVycmFncnVudCB1bml0IGNvbmZpZ3VyYXRpb25zIHdpdGggYXMgbXVjaCBwcmUtcHJvY2Vzc2luZyBkb25lIGFzIHBvc3NpYmxlLgoKRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgYHRlcnJhZ3J1bnQuaGNsYCBmaWxlOgoKYGBgaGNsCgojIyMjIyB0ZXJyYWdydW50LmhjbAoKbG9jYWxzIHsKICBhd3NfcmVnaW9uID0gInVzLWVhc3QtMSIKfQoKaW5wdXRzID0gewogIGF3c19yZWdpb24gPSBsb2NhbC5hd3NfcmVnaW9uCn0KYGBgCgpSZW5kZXJzIHRvIHRoZSBmb2xsb3dpbmcgSENMOgoKYGBgYmFzaAokIHRlcnJhZ3J1bnQgcmVuZGVyCmxvY2FscyB7CiAgYXdzX3JlZ2lvbiA9ICJ1cy1lYXN0LTEiCn0KaW5wdXRzID0gewogIGF3c19yZWdpb24gPSAidXMtZWFzdC0xIgp9CmBgYAoKVXNpbmcgdGhlIGByZW5kZXJgIGNvbW1hbmQgd2l0aCBIQ0wgZm9ybWF0dGluZyBvZmZlcnMgYSB3YXkgdG8gcmVzb2x2ZSBjb21wbGV4IEhDTCBmdW5jdGlvbiBldmFsdWF0aW9uLCBpbmNsdWRlIG1lcmdpbmcgb3Igc3RyaW5nIGludGVycG9sYXRpb24sIGV0Yy4gdG8gYWNoaWV2ZSBlcXVpdmFsZW50IFRlcnJhZ3J1bnQgSENMIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGVhc2llciB0byByZWFzb24gYWJvdXQuCgojIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEFkZGluZyBgcmVuZGVyYCB3aXRoIEhDTCBmb3JtYXR0aW5nIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE2NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE2NCkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTcuLi52MC43Ny4xOAoKIyMjIFtgdjAuNzcuMTdgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjE3KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xNi4uLnYwLjc3LjE3KQoKIyMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKIyMjIyMgSW50cm9kdWN0aW9uIG9mIHRoZSBgcmVuZGVyYCBjb21tYW5kCgpBcyBwYXJ0IG9mIHRoZSBbQ0xJIFJlZGVzaWduXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2V4cGVyaW1lbnRzLyNjbGktcmVkZXNpZ24pIGV4cGVyaW1lbnQsIHRoZSBbYHJlbmRlcmBdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2JhY2tlbmQtbWlncmF0ZSkgY29tbWFuZCBoYXMgYmVlbiBpbnRyb2R1Y2VkLgoKVGhlIGByZW5kZXJgIGNvbW1hbmQgYWxsb3dzIHVzZXJzIHRvIGVhc2lseSByZW5kZXIgVGVycmFncnVudCB1bml0IGNvbmZpZ3VyYXRpb25zIHdpdGggcmVkdWNlZCBjb21wbGV4aXR5LCBtYWtpbmcgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgY29uZmlndXJhdGlvbnMgYXQgYSBnbGFuY2UuCgpGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBgdGVycmFncnVudC5oY2xgIGZpbGU6CgpgYGBoY2wKCiMjIyMjIHRlcnJhZ3J1bnQuaGNsCgpsb2NhbHMgewogIGF3c19yZWdpb24gPSAidXMtZWFzdC0xIgp9CgppbnB1dHMgPSB7CiAgYXdzX3JlZ2lvbiA9IGxvY2FsLmF3c19yZWdpb24KfQpgYGAKClJlbmRlcnMgdG8gdGhlIGZvbGxvd2luZyBKU09OOgoKYGBgYmFzaAokIHRlcnJhZ3J1bnQgcmVuZGVyIC0tZm9ybWF0IGpzb24KewogICJsb2NhbHMiOiB7ICJhd3NfcmVnaW9uIjogInVzLWVhc3QtMSIgfSwKICAiaW5wdXRzIjogeyAiYXdzX3JlZ2lvbiI6ICJ1cy1lYXN0LTEiIH0KICAvLyBOT1RFOiBvdGhlciBhdHRyaWJ1dGVzIGFyZSBvbWl0dGVkIGZvciBicmV2aXR5Cn0KYGBgCgpUaGUgaW50cm9kdWN0aW9uIG9mIHRoZSBgcmVuZGVyYCBjb21tYW5kIGlzIHBhcnQgb2YgdGhlIGV2ZW50dWFsIGRlcHJlY2F0aW9uIG9mIHRoZSBleGlzdGluZyBgcmVuZGVyLWpzb25gIGNvbW1hbmQsIHdoaWNoIHdpbGwgYmUgZGVwcmVjYXRlZCBieSB0aGUgZW5kIG9mIHRoZSBDTEkgUmVkZXNpZ24uIFRoZSBgcmVuZGVyYCBjb21tYW5kIGlzIGEgaGlnaGVyIGxldmVsIGNvbW1hbmQsIHRoYXQgb2ZmZXJzIHRoZSBhYmlsaXR5IHRvIHdyaXRlIHRvIHN0ZG91dCwgaW4gYWRkaXRpb24gdG8gd3JpdGluZyB0byBmaWxlcywgYW5kIHdpbGwgc3VwcG9ydCBIQ0wgY29uZmlndXJhdGlvbnMgaW4gYWRkaXRpb24gdG8gSlNPTiAoY29taW5nIHNvb24pLgoKVG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgYHJlbmRlcmAgY29tbWFuZCwgcmVhZCB0aGUgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiBbaGVyZV0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jcmVuZGVyKS4KCiMjIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogQWRkaW5nIGByZW5kZXJgIGNvbW1hbmQgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ1KQotICAgZmVhdDogQWRkaW5nIGRvY3MgZm9yIGBiYWNrZW5kIG1pZ3JhdGVgIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0MCkKLSAgIGJ1aWxkKGRlcHMpOiBidW1wIHJ1Ynkvc2V0dXAtcnVieSBmcm9tIDEuMjI5LjAgdG8gMS4yMzAuMCBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNjIpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjE2Li4udjAuNzcuMTcKCiMjIyBbYHYwLjc3LjE2YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4xNikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTUuLi52MC43Ny4xNikKCiMjIyMjIOKcqCBOZXcgRmVhdHVyZXMKCiMjIyMjIEludHJvZHVjdGlvbiBvZiB0aGUgYGJhY2tlbmQgbWlncmF0ZWAgY29tbWFuZAoKQXMgcGFydCBvZiB0aGUgW0NMSSBSZWRlc2lnbl0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9leHBlcmltZW50cy8jY2xpLXJlZGVzaWduKSBleHBlcmltZW50LCB0aGUgW2BiYWNrZW5kIG1pZ3JhdGVgXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNiYWNrZW5kLW1pZ3JhdGUpIGNvbW1hbmQgaGFzIGJlZW4gaW50cm9kdWNlZC4KClRoZSBgYmFja2VuZCBtaWdyYXRlYCBjb21tYW5kIGFsbG93cyB5b3UgdG8gc2ltcGx5IG1pZ3JhdGUgc3RhdGUgYmV0d2VlbiBkaWZmZXJlbnQgdW5pdHMgKG9yIHJlbmFtZXMgb2YgdW5pdHMpIHdpdGhvdXQgbWFudWFsbHkgcnVubmluZyBPcGVuVG9mdS9UZXJyYWZvcm0gc3RhdGUgbWlncmF0aW9uIGNvbW1hbmRzLgoKVG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgYGJhY2tlbmQgbWlncmF0ZWAgY29tbWFuZCwgcmVhZCB0aGUgW29mZmljaWFsIGRvY3NdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2JhY2tlbmQtbWlncmF0ZSkuCgojIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEFkZGVkIHN1cHBvcnQgZm9yIG1pZ3JhdGluZyBzdGF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBiYWNrZW5kcyBieSBbQCYjODIwMztsZXZrb2hpbWluc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2xldmtvaGltaW5zKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE1NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE1NCkKLSAgIGZlYXQ6IEVuaGFuY2VkIGVycm9yIGV4cGxhaW5lciB0byBkZXRlY3QgYW5kIHJlcG9ydCBpc3N1ZXMgcmVsYXRlZCB0byBgc3RhY2tgIHZhbHVlcyBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE2M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE2MykKLSAgIGZpeDogSW1wcm92ZWQgdGhlIGRlcHJlY2F0aW9uIG1lc3NhZ2UgZm9yIGV4cGVyaW1lbnRhbCBjb21tYW5kIGZsYWdzIGJ5IFtAJiM4MjAzO2xldmtvaGltaW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbGV2a29oaW1pbnMpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ2KQotICAgZml4OiBQcmV2ZW50IGBURl9DTElfQ09ORklHX0ZJTEVgIGVudmlyb25tZW50IHZhcmlhYmxlIGZyb20gYmVpbmcgb3ZlcndyaXR0ZW4sIGV4Y2VwdCBkdXJpbmcgYGluaXRgIGFuZCBgcHJvdmlkZXJzYCBjb21tYW5kcyBieSBbQCYjODIwMztsZXZrb2hpbWluc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2xldmtvaGltaW5zKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE1NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE1NSkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTUuLi52MC43Ny4xNgoKIyMjIFtgdjAuNzcuMTVgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjE1KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xNC4uLnYwLjc3LjE1KQoKIyMjIyDinKggTmV3IEZlYXR1cmVzCgojIyMjIyBJbnRyb2R1Y3Rpb24gb2YgdGhlIGBkYWcgZ3JhcGhgIGNvbW1hbmQKCkFzIHBhcnQgb2YgdGhlIFtDTEkgUmVkZXNpZ25dKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvZXhwZXJpbWVudHMvI2NsaS1yZWRlc2lnbikgZXhwZXJpbWVudCwgdGhlIFtgZGFnIGdyYXBoYF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jcHJpbnQtZ3JhcGgpIGNvbW1hbmQgaGFzIGJlZW4gaW50cm9kdWNlZC4KCiFbZGFnXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvMzg5ZDRlMzEtMTk3Yy00YzM3LTg5MTMtMTQxN2VjZDNlNWI0KQoKIVtkYWctaGVscF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzI1MjVjZDI3LTBkOGUtNDU3Yi04N2VhLTc1OWZhZTMxZTJmMykKCiFbZGFnLWdyYXBoLWhlbHBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9mYjI2OGIyMC1mMzJiLTRiNGYtYmExMy0wZDFmYzlmY2E3NDgpCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZG9jczogQWRkZWQgbWlncmF0aW9uIGd1aWRlIGZvciBhZG9wdGluZyBUZXJyYWdydW50IFN0YWNrcyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNTIpCi0gICBmZWF0OiBBZGRlZCBkYWcgZ3JhcGggY29tbWFuZCBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0MykKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTQuLi52MC43Ny4xNQoKIyMjIFtgdjAuNzcuMTRgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjE0KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xMy4uLnYwLjc3LjE0KQoKIyMjIyDinKggTmV3IEZlYXR1cmVzCgojIyMjIyBTdXBwb3J0IGZvciBgLS1leGNsdWRlYCBhbmQgYC0tcXVldWUtY29uc3RydWN0LWFzYCBpbiBgZmluZGAgYW5kIGBsaXN0YAoKVGhlIFtgZmluZGBdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2ZpbmQpIGFuZCBbYGxpc3RgXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNsaXN0KSBjb21tYW5kcyBoYXZlIGJlZW4gdXBkYXRlZCB0byBsZXZlcmFnZSBuZXcgY2FwYWJpbGl0aWVzIGludm9sdmluZyBncmVhdGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIFRlcnJhZ3J1bnQgcnVuIHF1ZXVlLgoKVXNlcnMgY2FuIG5vdyBsZXZlcmFnZSB0aGUgW2AtLXF1ZXVlLWNvbnN0cnVjdC1hc2BdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2ZpbmQtcXVldWUtY29uc3RydWN0LWFzKSAob3IganVzdCBgLS1hc2ApIGZsYWcgaW4gdGhlIGBmaW5kYCBhbmQgYGxpc3RgIGNvbW1hbmRzIHRvIGRpc2NvdmVyIGNvbmZpZ3VyYXRpb25zIGFzIGlmIGEgcGFydGljdWxhciBUZXJyYWdydW50IGNvbW1hbmQgd2FzIGJlaW5nIHJ1biAoZS5nLiBgcGxhbmAsIGBkZXN0cm95YCkuCgpGb3IgZXhhbXBsZToKCmBgYGJhc2gKJCB0ZXJyYWdydW50IGZpbmQgLS1xdWV1ZS1jb25zdHJ1Y3QtYXM9cGxhbgpzdGFja3MvbGl2ZS9kZXYKc3RhY2tzL2xpdmUvcHJvZAp1bml0cy9saXZlL2Rldi92cGMKdW5pdHMvbGl2ZS9wcm9kL3ZwYwp1bml0cy9saXZlL2Rldi9kYgp1bml0cy9saXZlL3Byb2QvZGIKdW5pdHMvbGl2ZS9kZXYvZWMyCnVuaXRzL2xpdmUvcHJvZC9lYzIKYGBgCgpgYGBiYXNoCiQgdGVycmFncnVudCBmaW5kIC0tYXM9ZGVzdHJveQpzdGFja3MvbGl2ZS9kZXYKc3RhY2tzL2xpdmUvcHJvZAp1bml0cy9saXZlL2Rldi9lYzIKdW5pdHMvbGl2ZS9wcm9kL2VjMgp1bml0cy9saXZlL2Rldi9kYgp1bml0cy9saXZlL3Byb2QvZGIKdW5pdHMvbGl2ZS9kZXYvdnBjCnVuaXRzL2xpdmUvcHJvZC92cGMKYGBgCgpUaGUgYGZpbmRgIGFuZCBgbGlzdGAgY29tbWFuZHMgd2lsbCBub3cgY29uc3RydWN0IHRoZSBUZXJyYWdydW50IHJ1biBxdWV1ZSBhcyBpZiBhIHBhcnRpY3VsYXIgY29tbWFuZCB3YXMgYmVpbmcgcnVuLCBwb3RlbnRpYWxseSBhbHRlcmluZyB0aGUgcG9zaXRpb24gb2YgZWxlbWVudHMgaW4gdGhlIHJ1biBxdWV1ZSwgYmFzZWQgb24gdGhlaXIgZGVwZW5kZW5jaWVzIChkZXBlbmRlbmNpZXMgYmVmb3JlIGRlcGVuZGVudHMgZm9yIHBsYW5zLCBhcHBsaWVzLCBldGMuIGFuZCBkZXBlbmRlbnRzIGJlZm9yZSBkZXBlbmRlbmNpZXMgZm9yIGRlc3Ryb3lzKS4KCkluIGFkZGl0aW9uLCB1c2VycyBjYW4gbGV2ZXJhZ2UgdGhlIFtgLS1leGNsdWRlYF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jZmluZC1leGNsdWRlKSBmbGFnIG9uIHRoZSBgZmluZGAgY29tbWFuZCB0byBnZXQgaW5mb3JtYXRpb24gb24gdGhlIGBleGNsdWRlYCBibG9jayBpbmNsdWRlZCBpbiByZXN1bHRzLiBUaGUgYGV4Y2x1ZGVgIGJsb2NrIGlzIGFsc28gZmFjdG9yZWQgaW4gdG8gZGlzY292ZXJ5IHJlc3VsdHMgd2hlbiB0aGUgYC0tcXVldWUtY29uc3RydWN0LWFzYCBmbGFnIGlzIHBhc3NlZCwgYWxsb3dpbmcgdXNlcnMgdG8gZHJ5LXJ1biBiZWhhdmlvciBvZiB0aGUgYGV4Y2x1ZGVgIGJsb2NrIGJlZm9yZSBwZXJmb3JtaW5nIGFueSBUZXJyYWdydW50IHJ1bnMuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogQWRkaW5nIGV4Y2x1ZGUgc3VwcG9ydCB0byBsaXN0IGFuZCBmaW5kIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0NykKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTMuLi52MC43Ny4xNAoKIyMjIFtgdjAuNzcuMTNgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjEzKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xMi4uLnYwLjc3LjEzKQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGJ1aWxkKGRlcHMpOiBidW1wIGdvb2dsZS5nb2xhbmcub3JnL2dycGMgZnJvbSAxLjcxLjAgdG8gMS43MS4xIGJ5IFtAJiM4MjAzO2RlcGVuZGFib3RdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZXBlbmRhYm90KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzMikKLSAgIGJ1aWxkKGRlcHMpOiBidW1wIGdvbGFuZy5vcmcveC9zeXMgZnJvbSAwLjMxLjAgdG8gMC4zMi4wIGJ5IFtAJiM4MjAzO2RlcGVuZGFib3RdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZXBlbmRhYm90KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzMykKLSAgIGJ1aWxkKGRlcHMpOiBidW1wIGdvbGFuZy5vcmcveC9vYXV0aDIgZnJvbSAwLjI4LjAgdG8gMC4yOS4wIGJ5IFtAJiM4MjAzO2RlcGVuZGFib3RdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZXBlbmRhYm90KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzMSkKLSAgIGJ1aWxkKGRlcHMpOiBidW1wIGdpdGh1Yi5jb20vZ2V0c29wcy9zb3BzL3YzIGZyb20gMy45LjQgdG8gMy4xMC4xIGJ5IFtAJiM4MjAzO2RlcGVuZGFib3RdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZXBlbmRhYm90KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzMCkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTIuLi52MC43Ny4xMwoKIyMjIFtgdjAuNzcuMTJgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjEyKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xMS4uLnYwLjc3LjEyKQoKIyMjIyDinKggTmV3IEZlYXR1cmVzCgpJbnRyb2R1Y2VkIGBub192YWxpZGF0aW9uYCBhdHRyaWJ1dGUgZm9yIGBzdGFja2AgYW5kIGB1bml0YCwgYWxsb3dpbmcgdXNlcnMgdG8gYnlwYXNzIFRlcnJhZ3J1bnQncyB2YWxpZGF0aW9uIGNoZWNrcyB3aGVuIGRlcGxveWluZyBpbmZyYXN0cnVjdHVyZS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGluIHNjZW5hcmlvcyB3aGVyZSB5b3UgbmVlZCB0byBkZXBsb3kgaW5mcmFzdHJ1Y3R1cmUgdGhhdCBkb2Vzbid0IHN0cmljdGx5IGFkaGVyZSB0byBUZXJyYWdydW50J3MgdmFsaWRhdGlvbiBydWxlcywgc3VjaCBhcyBkdXJpbmcgZW1lcmdlbmN5IGRlcGxveW1lbnRzIG9yIHdoZW4gd29ya2luZyB3aXRoIGxlZ2FjeSBpbmZyYXN0cnVjdHVyZSBwYXR0ZXJucy4KCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBkb2NzOiBhZGRlZCBtb3JlIGRvY3MgZm9yIHN0YWNrcyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDQpCi0gICBmZWF0OiBhZGRlZCBzdXBwb3J0IGZvciBgbm9fdmFsaWRhdGlvbmAgYXR0cmlidXRlIGZvciBgc3RhY2tgIGFuZCBgdW5pdGAgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDkpCgpSRkM6IFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvaXNzdWVzLzMzMTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9pc3N1ZXMvMzMxMykKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTEuLi52MC43Ny4xMgoKIyMjIFtgdjAuNzcuMTFgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjExKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xMC4uLnYwLjc3LjExKQoKIyMjIyDinKggTmV3IEZlYXR1cmVzCgojIyMjIyBJbnRyb2R1Y3Rpb24gb2YgdGhlIGBpbmZvIHByaW50YCBjb21tYW5kCgpBcyBwYXJ0IG9mIHRoZSBbQ0xJIFJlZGVzaWduXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2V4cGVyaW1lbnRzLyNjbGktcmVkZXNpZ24pIGV4cGVyaW1lbnQsIHRoZSBbYGluZm8gcHJpbnRgXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNwcmludC1jb21tYW5kKSBjb21tYW5kIGhhcyBiZWVuIGludHJvZHVjZWQuCgohW2hlbHBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8yZWFjNDY0NS05M2MyLTQ3ZGQtOGRjMy03M2M0NDQyYmYxYzgpCgohW291dF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzcwMDVjNWRiLTE1ZTEtNGVmZS1iNWE4LTM0OWExNzlmNjAzMykKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBJbnRyb2R1Y2VkIHRoZSBgaW5mbyBwcmludGAgY29tbWFuZCB0byBvdXRwdXQgVGVycmFncnVudCBjb250ZXh0IGFzIGEgc3RydWN0dXJlZCBKU09OIG9iamVjdCBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEyMikKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTAuLi52MC43Ny4xMQoKIyMjIFtgdjAuNzcuMTBgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjEwKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny45Li4udjAuNzcuMTApCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZml4OiBTdXBwcmVzc2luZyB3YXJuaW5nIGZvciBjYXRhbG9nIHdoZW4gZGV0ZXJtaW5pbmcgZGVmYXVsdCBmaWxlIG5hbWUgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTM0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTM0KQotICAgZml4OiBSZW1vdmUgd2FybmluZyBtZXNzYWdlIGZvciB1bmltcGxlbWVudGVkIGJhY2tlbmRzIGJ5IFtAJiM4MjAzO2xldmtvaGltaW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbGV2a29oaW1pbnMpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTM4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTM4KQotICAgZml4OiBGaXhpbmcgb3B0aW9uYWwgZGVmYXVsdCB0ZW1wbGF0ZSBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDEpCi0gICBjaG9yZTogc3RhY2sgY29kZSBpbXByb3ZlbWVudHMgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzYpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjkuLi52MC43Ny4xMAoKIyMjIFtgdjAuNzcuOWBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuOSkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuOC4uLnYwLjc3LjkpCgojIyMjIPCfkJsgQnVnIGZpeGVzCgojIyMjIyBGZXRjaGluZyBPdXRwdXRzIGZyb20gTmVzdGVkIFN0YWNrcwoKUmVzb2x2ZWQgYW4gaXNzdWUgdGhhdCBwcmV2ZW50ZWQgdGhlIGNvcnJlY3QgcmV0cmlldmFsIG9mIG91dHB1dHMgZnJvbSBuZXN0ZWQgc3RhY2tzLgoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZpeDogY29ycmVjdGVkIHRoZSBsb2dpYyBmb3IgZmV0Y2hpbmcgb3V0cHV0cyBmcm9tIG5lc3RlZCBzdGFja3MgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMjZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMjYpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjguLi52MC43Ny45CgojIyMgW2B2MC43Ny44YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny44KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny43Li4udjAuNzcuOCkKCiMjIyMg8J+TliBEb2N1bWVudGF0aW9uIFVwZGF0ZXMKCkEgbmV3IFtwZXJmb3JtYW5jZSBndWlkZV0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3Ryb3VibGVzaG9vdGluZy9wZXJmb3JtYW5jZS8pIGhhcyBiZWVuIGFkZGVkIHRvIFRlcnJhZ3J1bnQgZG9jdW1lbnRhdGlvbiB0byBvZmZlciBndWlkYW5jZSBvbiBob3cgcGVyZm9ybWFuY2UgY2FuIGJlIGltcHJvdmVkIHdoZW4gdXNpbmcgVGVycmFncnVudCBvciBjb250cmlidXRpbmcgdG8gdGhlIFRlcnJhZ3J1bnQgY29kZWJhc2UuCgpUaGlzIGRvY3VtZW50YXRpb24gd2lsbCBldm9sdmUgb3ZlciB0aW1lLCBhcyBtb3JlIG9wdGlvbmFsIG9wdGltaXphdGlvbnMgYmVjb21lIGF2YWlsYWJsZSwgb3IgYXJlIG5vIGxvbmdlciBuZWNlc3NhcnksIGFzIHRoZXkgYmVjb21lIGRlZmF1bHQgYmVoYXZpb3IuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogQWRkIHBlcmZvcm1hbmNlIGd1aWRlIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEyMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEyMCkKLSAgIGJ1aWxkKGRlcHMpOiBidW1wIHJ1Ynkvc2V0dXAtcnVieSBmcm9tIDEuMjIxLjAgdG8gMS4yMjkuMCBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMDBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMDApCi0gICBmaXg6IEFkZHJlc3NpbmcgY29tbWFzIGluIGV4dGVybmFsIElEcyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMjhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMjgpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjcuLi52MC43Ny44CgojIyMgW2B2MC43Ny43YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny43KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny42Li4udjAuNzcuNykKCiMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKVXNlcnMgY2FuIG5vdyBjb25maWd1cmUgYSBjdXN0b20gZGVmYXVsdCB0ZW1wbGF0ZSBmb3IgYHNjYWZmb2xkYCBhbmQgYGNhdGFsb2dgIGNvbW1hbmRzIGluIHRoZWlyIGBjYXRhbG9nYCBjb25maWd1cmF0aW9uIGJsb2NrcyBsaWtlIHNvOgoKYGBgaGNsCmNhdGFsb2cgewogIGRlZmF1bHRfdGVtcGxhdGUgPSAiZ2l0QGdpdGh1Yi5jb20vYWNtZS9leGFtcGxlLmdpdC8vcGF0aC90by90ZW1wbGF0ZSIKfQpgYGAKCkZvciBtb3JlIGluZm9ybWF0aW9uLCByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBbY2F0YWxvZyBmZWF0dXJlXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvZmVhdHVyZXMvY2F0YWxvZy8jY3VzdG9tLXRlbXBsYXRlcy1mb3Itc2NhZmZvbGRpbmcpLgoKU3BlY2lhbCB0aGFua3MgdG8gW0AmIzgyMDM7dGdlaWpnXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdGdlaWpnKSBmb3IgY29udHJpYnV0aW5nIHRoaXMgZmVhdHVyZSEKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBBZGRpbmcgY3VzdG9tIGRlZmF1bHQgdGVtcGxhdGUgWyMmIzgyMDM7MzY1OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2lzc3Vlcy8zNjU4KSBieSBbQCYjODIwMzt0Z2VpamddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS90Z2VpamcpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDM1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDM1KQotICAgZml4OiBVcGRhdGluZyBkb2NzIGFmdGVyIFsjJiM4MjAzOzQwMzVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9pc3N1ZXMvNDAzNSkgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTE3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTE3KQotICAgY2hvcmU6IHN0YWNrcyBkb2N1bWVudGF0aW9uIGltcHJvdmVtZW50cyBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDExNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDExNCkKCiMjIyMgTmV3IENvbnRyaWJ1dG9ycwoKLSAgIFtAJiM4MjAzO3RnZWlqZ10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3RnZWlqZykgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMzVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMzUpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjYuLi52MC43Ny43CgojIyMgW2B2MC43Ny42YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny42KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny41Li4udjAuNzcuNikKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmaXg6IENvcnJlY3RseSBpZ25vcmUgbG9jayB0YWJsZSBlbmNyeXB0aW9uIHNldHRpbmcgdG8gcHJldmVudCB1bmludGVuZGVkIGNvbmZpZ3VyYXRpb24gb3ZlcnJpZGVzIGJ5IFtAJiM4MjAzO2xldmtvaGltaW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbGV2a29oaW1pbnMpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTEyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTEyKQotICAgZml4OiBJbnRyb2R1Y2VkIHN0cmljdGVyIGNvbnN0cmFpbnRzIGZvciBkZXRlY3Rpbmcgc3RhY2sgY29uZmlndXJhdGlvbiBmaWxlcyBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDExM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDExMykKLSAgIGZlYXQ6IEVuYWJsZWQgcGFyc2luZyBvZiBzdGFjayBjb25maWd1cmF0aW9uIGRpcmVjdGx5IGZyb20gYSBzdHJpbmcgaW5wdXQgZm9yIGVuaGFuY2VkIGludGVncmF0aW9uIHdpdGggM3JkIHBhcnR5IGNvZGUgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMTApCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjUuLi52MC43Ny42CgojIyMgW2B2MC43Ny41YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny41KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny40Li4udjAuNzcuNSkKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBhZGRlZCBzdXBwb3J0IGZvciBPcGVuVGVsZW1ldHJ5IGluIGBzdGFja2AgY29tbWFuZHMgdG8gZW5hYmxlIGVuaGFuY2VkIG9ic2VydmFiaWxpdHkgYW5kIHRyYWNpbmcgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMDkpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjQuLi52MC43Ny41CgojIyMgW2B2MC43Ny40YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny40KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4zLi4udjAuNzcuNCkKCiMjIyMg8J+QmyBCdWcgZml4ZXMKCiMjIyMjIE5ld2xpbmVzIHJlZHVjZWQgaW4gRXJyb3IgTG9nZ2luZyBmb3IgQ29uZmlndXJhdGlvbiBFcnJvcnMKCkxvZ2dpbmcgZm9yIGNvbmZpZ3VyYXRpb24gZXJyb3JzIGhhcyBiZWVuIGNvbXBhY3RlZCB0byByZWR1Y2Ugbm9pc2UsIGFuZCBtYWtlIGVycm9ycyBlYXNpZXIgdG8gcmVhZC4KCmBgYAoKIyMjIEJlZm9yZQoxNDowOToyNS44OTIgRVJST1IgIEVycm9yOiBFcnJvciBpbiBmdW5jdGlvbiBjYWxsCgoxNDowOToyNS44OTIgRVJST1IgICAgb24gdGVycmFncnVudC5oY2wgbGluZSAzLCBpbiBsb2NhbHM6CgoxNDowOToyNS44OTIgRVJST1IgICAgIDM6ICAgICAgIHJlcXVpcmVzX2F1dGggPSBydW5fY21kKCJleGl0IiwgIjEiKSAvLyBpbnRlbnRpb25hbCBlcnJvcgoKMTQ6MDk6MjUuODkyIEVSUk9SCgoxNDowOToyNS44OTIgRVJST1IgIENhbGwgdG8gZnVuY3Rpb24gInJ1bl9jbWQiIGZhaWxlZDogRmFpbGVkIHRvIGV4ZWN1dGUgImV4aXQgMSIgaW4gLgoKZXhlYzogImV4aXQiOiBleGVjdXRhYmxlIGZpbGUgbm90IGZvdW5kIGluICRQQVRILgoKYGBgCgogICAgIyMjIEFmdGVyCiAgICAxNToxOTo1MC45MzcgRVJST1IgIEVycm9yOiBFcnJvciBpbiBmdW5jdGlvbiBjYWxsCiAgICAxNToxOTo1MC45MzcgRVJST1IgICAgb24gdGVycmFncnVudC5oY2wgbGluZSAzLCBpbiBsb2NhbHM6CiAgICAxNToxOTo1MC45MzcgRVJST1IgIEVycm9yOiBFcnJvciBpbiBmdW5jdGlvbiBjYWxsCiAgICAxNToxOTo1MC45MzcgRVJST1IgICAgb24gdGVycmFncnVudC5oY2wgbGluZSAzLCBpbiBsb2NhbHM6CiAgICAxNToxOTo1MC45MzcgRVJST1IgICAgIDM6ICAgICAgIHJlcXVpcmVzX2F1dGggPSBydW5fY21kKCJleGl0IiwgIjEiKSAvLyBpbnRlbnRpb25hbCBlcnJvcgogICAgMTU6MTk6NTAuOTM3IEVSUk9SICAgICAzOiAgICAgICBmYWlsICAgPSBydW5fY21kKCJleGl0IiwgIjEiKSAvLyBpbnRlbnRpb25hbCBlcnJvcgogICAgMTU6MTk6NTAuOTM3IEVSUk9SICBDYWxsIHRvIGZ1bmN0aW9uICJydW5fY21kIiBmYWlsZWQ6IEZhaWxlZCB0byBleGVjdXRlICJleGl0IDEiIGluIC4KICAgIDE1OjE5OjUwLjkzNyBFUlJPUiAgZXhlYzogImV4aXQiOiBleGVjdXRhYmxlIGZpbGUgbm90IGZvdW5kIGluICRQQVRILgoKIyMjIyMgSW1wcm92ZWQgQ3ljbGUgRGV0ZWN0aW9uIExvZ2ljIGZvciBgc3RhY2sgZ2VuZXJhdGVgCgpPbiB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIGZvciBtYWNPUywgcGF0aCBsZW5ndGggd2FzIGxpa2VseSB0byByZXN1bHQgaW4gYW4gZXJyb3IgYmVmb3JlIGludGVybmFsIGN5Y2xlIGRldGVjdGlvbiBsb2dpYywgc28gY3ljbGUgZGV0ZWN0aW9uIHdhcyB1cGRhdGVkIHRvIGxldmVyYWdlIGEgbWF4aW11bSBwYXRoIGxlbmd0aCBvZiAxMDI0IGNoYXJhY3RlcnMgYXMgYW4gZWFybGllciBleGl0IGZvciBhbGwgb3BlcmF0aW5nIHN5c3RlbXMuCgojIyMjIyBFeGNlc3NpdmUgd2FybmluZyBmb3IgYm9vdHN0cmFwIHJlcXVpcmVtZW50IHJlc29sdmVkCgpJbnRlcm5hbCBsb2dpYyBmb3IgZGV0ZXJtaW5hdGlvbiB0aGF0IGJhY2tlbmRzIHJlcXVpcmVkIGJvb3RzdHJhcHBpbmcgd2FzIGFkanVzdGVkIHRvIG5vIGxvbmdlciBsZXZlcmFnZSB0aGUgdmFsdWUgb2YgdGhlIE9wZW5Ub2Z1IHN0YXRlIGZpbGUuCgpXaGlsZSBjaGVhcGVyIHRoYW4gbWFraW5nIGEgbmV0d29yayByZXF1ZXN0IHRvIGFzc2VzcyB0aGUgY3VycmVudCBzdGF0ZSBvZiBiYWNrZW5kIHJlc291cmNlcywgaXQgYWxzbyByZXN1bHRlZCBpbiBmYWxzZSBuZWdhdGl2ZXMsIHdoaWNoIHRyaWdnZXJlZCBleGNlc3NpdmUgYmFja2VuZCBib290c3RyYXAgd2FybmluZ3MuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZml4OiBOZXcgbGluZXMgaW4gVEYgZGlhZ25vc3RpYyBsb2cgYnkgW0AmIzgyMDM7bGV2a29oaW1pbnNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9sZXZrb2hpbWlucykgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMDhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMDgpCi0gICBmaXg6IFN0YWNrIGN5Y2xlcyBkZXRlY3Rpb24gaW1wcm92ZW1lbnRzIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTA2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTA2KQotICAgZml4OiBGaXhpbmcgZXhjZXNzaXZlIHdhcm5pbmcgZm9yIGJvb3RzdHJhcCBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMDcpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjMuLi52MC43Ny40Cgo8L2RldGFpbHM+CgotLS0KCiMjIyBDb25maWd1cmF0aW9uCgrwn5OFICoqU2NoZWR1bGUqKjogQnJhbmNoIGNyZWF0aW9uIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpLCBBdXRvbWVyZ2UgLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCkuCgrwn5qmICoqQXV0b21lcmdlKio6IERpc2FibGVkIGJ5IGNvbmZpZy4gUGxlYXNlIG1lcmdlIHRoaXMgbWFudWFsbHkgb25jZSB5b3UgYXJlIHNhdGlzZmllZC4KCuKZuyAqKlJlYmFzaW5nKio6IFdoZW5ldmVyIFBSIGJlY29tZXMgY29uZmxpY3RlZCwgb3IgeW91IHRpY2sgdGhlIHJlYmFzZS9yZXRyeSBjaGVja2JveC4KCvCflJUgKipJZ25vcmUqKjogQ2xvc2UgdGhpcyBQUiBhbmQgeW91IHdvbid0IGJlIHJlbWluZGVkIGFib3V0IHRoaXMgdXBkYXRlIGFnYWluLgoKLS0tCgogLSBbIF0gPCEtLSByZWJhc2UtY2hlY2sgLS0+SWYgeW91IHdhbnQgdG8gcmViYXNlL3JldHJ5IHRoaXMgUFIsIGNoZWNrIHRoaXMgYm94CgotLS0KClRoaXMgUFIgd2FzIGdlbmVyYXRlZCBieSBbTWVuZCBSZW5vdmF0ZV0oaHR0cHM6Ly9tZW5kLmlvL3Jlbm92YXRlLykuIFZpZXcgdGhlIFtyZXBvc2l0b3J5IGpvYiBsb2ddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vZ2l0aHViL29zaXNtL3Rlc3RiZWQpLgo8IS0tcmVub3ZhdGUtZGVidWc6ZXlKamNtVmhkR1ZrU1c1V1pYSWlPaUl6T1M0eU1EY3VNU0lzSW5Wd1pHRjBaV1JKYmxabGNpSTZJak01TGpJME9DNDBJaXdpZEdGeVoyVjBRbkpoYm1Ob0lqb2liV0ZwYmlJc0lteGhZbVZzY3lJNld5SnlaVzV2ZG1GMFpTSmRmUT09LS0+Cg==
      patchset: c2859d318d144080bfe7bedbe5d0185af968210b
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          trusted/project_1/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: e4e91ee5c425b9c22060484c5410162ce4a3896b
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: c212ef9fff456ceede260bdfaaf903f6e2d2313a
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          untrusted/project_2/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: e4e91ee5c425b9c22060484c5410162ce4a3896b
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/ansible-lint/run.yaml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_0/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_0/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_1/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/testbed
        name: osism/testbed
        short_name: testbed
        src_dir: src/github.com/osism/testbed
      projects:
        github.com/osism/testbed:
          canonical_hostname: github.com
          canonical_name: github.com/osism/testbed
          checkout: main
          checkout_description: zuul branch
          commit: 2d242f354946783c3d1dd0dfcf49629b819ec803
          name: osism/testbed
          required: false
          short_name: testbed
          src_dir: src/github.com/osism/testbed
      ref: refs/pull/2654/head
      resources: {}
      tenant: osism
      timeout: 1800
      voting: true
