all:
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 81.163.193.138
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: b180b9f8-dafa-4e5d-b01b-2527b21e253b
        host_id: 7b3f0b92197487d4577819108acea9423a4ebbe6107eeb02f4a72cb2
        interface_ip: 81.163.193.138
        label: ubuntu-noble
        private_ipv4: 10.128.0.102
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.138
        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 hadolint branches: None source: osism/zuul-jobs/.zuul.yaml@main#37>'
      - '<Job hadolint branches: None source: osism/container-images/.zuul.yaml@main#2>'
      ansible_version: '8'
      attempts: 1
      branch: main
      build: 3972d97a269c4c84830ffda7e903e34c
      buildset: 8406b3b4c5c145139d193eab460875c5
      change: '709'
      change_message: "chore(deps): update netbox\n\nThis PR contains the following\
        \ updates:\n\n| Package | Type | Update | Change | Age | Adoption | Passing\
        \ | Confidence |\n|---|---|---|---|---|---|---|---|\n| [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv)\
        \ | final | patch | `0.6.11` -> `0.6.14` | [![age](https://developer.mend.io/api/mc/badges/age/docker/ghcr.io%2fastral-sh%2fuv/0.6.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/ghcr.io%2fastral-sh%2fuv/0.6.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/ghcr.io%2fastral-sh%2fuv/0.6.11/0.6.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/ghcr.io%2fastral-sh%2fuv/0.6.11/0.6.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [netbox-plugin-dns](https://redirect.github.com/peteeckel/netbox-plugin-dns)\
        \ |  | patch | `==1.2.6` -> `==1.2.7` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/netbox-plugin-dns/1.2.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/netbox-plugin-dns/1.2.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/netbox-plugin-dns/1.2.6/1.2.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/netbox-plugin-dns/1.2.6/1.2.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [quay.io/netboxcommunity/netbox](https://redirect.github.com/netbox-community/netbox-docker)\
        \ |  | patch | `v4.2.2` -> `v4.2.6` | [![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [quay.io/netboxcommunity/netbox](https://redirect.github.com/netbox-community/netbox-docker)\
        \ | stage | patch | `v4.2.2` -> `v4.2.6` | [![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv (ghcr.io/astral-sh/uv)</summary>\n\
        \n### [`v0.6.14`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0614)\n\
        \n##### Python versions\n\nThe following Python versions have been added:\n\
        \n-   CPython 3.13.3\n-   CPython 3.12.10\n-   CPython 3.11.12\n-   CPython\
        \ 3.10.17\n-   CPython 3.9.22\n\nSee the [`python-build-standalone` release\
        \ notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250409)\
        \ for more details.\n\n##### Enhancements\n\n-   Add `uv-build` and `uv_build`\
        \ aliases to `uv init --build-backend` ([#&#8203;12776](https://redirect.github.com/astral-sh/uv/pull/12776))\n\
        -   Emit dedicated error message for Conda `environment.yml` files ([#&#8203;12669](https://redirect.github.com/astral-sh/uv/pull/12669))\n\
        \n##### Preview features\n\n-   Build backend: Check module dir exists for\
        \ sdist build ([#&#8203;12779](https://redirect.github.com/astral-sh/uv/pull/12779))\n\
        -   Build backend: Fix sdist with long directories ([#&#8203;12764](https://redirect.github.com/astral-sh/uv/pull/12764))\n\
        \n##### Performance\n\n-   Avoid querying GitHub on repeated install invocations\
        \ ([#&#8203;12767](https://redirect.github.com/astral-sh/uv/pull/12767))\n\
        \n##### Bug fixes\n\n-   Error when `tool.uv.sources` is set in system-level\
        \ configuration file ([#&#8203;12757](https://redirect.github.com/astral-sh/uv/pull/12757))\n\
        -   Split workspace members onto their own lines in `uv init` ([#&#8203;12756](https://redirect.github.com/astral-sh/uv/pull/12756))\n\
        \n##### Documentation\n\n-   Add lockfile note about PEP 751 ([#&#8203;12732](https://redirect.github.com/astral-sh/uv/pull/12732))\n\
        -   Extend the reference documentation for `uv pip sync` ([#&#8203;12683](https://redirect.github.com/astral-sh/uv/pull/12683))\n\
        -   Fix mismatched pip interface header / nav titles ([#&#8203;12640](https://redirect.github.com/astral-sh/uv/pull/12640))\n\
        \n### [`v0.6.13`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0613)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.12...0.6.13)\n\
        \n##### Enhancements\n\n-   Add `--show-version` to `uv python find` ([#&#8203;12376](https://redirect.github.com/astral-sh/uv/pull/12376))\n\
        -   Remove `--no-config` warning from `uv pip compile` and `uv pip sync` ([#&#8203;12642](https://redirect.github.com/astral-sh/uv/pull/12642))\n\
        -   Skip repeated directories in `PATH` when searching for Python interpreters\
        \ ([#&#8203;12367](https://redirect.github.com/astral-sh/uv/pull/12367))\n\
        -   Unset `SCRIPT_PATH` in relocatable activation script ([#&#8203;12672](https://redirect.github.com/astral-sh/uv/pull/12672))\n\
        -   Add `UV_PYTHON_DOWNLOADS_JSON_URL` to set custom managed python sources\
        \ ([#&#8203;10939](https://redirect.github.com/astral-sh/uv/pull/10939))\n\
        -   Reject `pyproject.toml` files in `uv pip compile -o` ([#&#8203;12673](https://redirect.github.com/astral-sh/uv/pull/12673))\n\
        -   Respect the `--offline` flag for Git operations ([#&#8203;12619](https://redirect.github.com/astral-sh/uv/pull/12619))\n\
        \n##### Bug fixes\n\n-   Warn instead of error if CRC appears to be missing\
        \ ([#&#8203;12722](https://redirect.github.com/astral-sh/uv/pull/12722))\n\
        -   Avoid infinite loop in `uv export` with conflicts ([#&#8203;12726](https://redirect.github.com/astral-sh/uv/pull/12726))\n\
        \n##### Rust API\n\n-   Update MSRV to 1.84 ([#&#8203;12670](https://redirect.github.com/astral-sh/uv/pull/12670))\n\
        \n### [`v0.6.12`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0612)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.11...0.6.12)\n\
        \n##### Enhancements\n\n-   Report the queried executable path in `uv python\
        \ list` ([#&#8203;12628](https://redirect.github.com/astral-sh/uv/pull/12628))\n\
        -   Improve archive unpack error messages ([#&#8203;12627](https://redirect.github.com/astral-sh/uv/pull/12627))\n\
        \n##### Bug fixes\n\n-   Respect `authenticate` when using `explicit = true`\
        \ ([#&#8203;12631](https://redirect.github.com/astral-sh/uv/pull/12631))\n\
        -   Normalize extra and group names in `uv add` and `uv remove` ([#&#8203;12586](https://redirect.github.com/astral-sh/uv/pull/12586))\n\
        -   Enforce CRC-32 checks when unpacking archives ([#&#8203;12623](https://redirect.github.com/astral-sh/uv/pull/12623))\n\
        -   Fix parsing of `python-platform` in settings files ([#&#8203;12592](https://redirect.github.com/astral-sh/uv/pull/12592))\n\
        \n##### Documentation\n\n-   Add note about `uv build` to `package = false`\
        \ ([#&#8203;12608](https://redirect.github.com/astral-sh/uv/pull/12608))\n\
        -   Add index fallback note to `authenticate = always` documentation ([#&#8203;12498](https://redirect.github.com/astral-sh/uv/pull/12498))\n\
        -   Fix invalid 'kind' reference in flat index docs ([#&#8203;12583](https://redirect.github.com/astral-sh/uv/pull/12583))\n\
        \n</details>\n\n<details>\n<summary>peteeckel/netbox-plugin-dns (netbox-plugin-dns)</summary>\n\
        \n### [`v1.2.7`](https://redirect.github.com/peteeckel/netbox-plugin-dns/releases/tag/1.2.7):\
        \ Feature/Bugfix Release 1.2.7\n\n[Compare Source](https://redirect.github.com/peteeckel/netbox-plugin-dns/compare/1.2.6...1.2.7)\n\
        \n#### DNSSEC\n\nThis is release adds DNSSEC support for NetBox DNS.\n\nNetBox\
        \ DNS supports the management of DNSSEC in as much as DNSSEC Key Templates\
        \ and DNSSEC Policies can be stored in NetBox DNS and assigned to zones. It\
        \ does not, however, support zone signing nor storing cryptographic material\
        \ in the NetBox database. There are two main reasons for this concept:\n\n\
        1.  Storing cryptographic material in a data source for automation is generally\
        \ problematic. While there is the NetBox Secrets plugin, it is better practice\
        \ to store confidential data in vault systems specifically created for this\
        \ purpose. (In some cases the keys are stored in HSMs as an added method of\
        \ protection.)\n2.  In typical modern scenarios, signing servers maintain\
        \ keys and sign records, so such configurations do not even require having\
        \ NetBox DNS provide keys or create the signatures from within NetBox DNS.\n\
        \nAdditionally, there is no direct integration between NetBox and any given\
        \ name server implementation, so an interface for providing signed zones to\
        \ a name server is generally out of scope for NetBox DNS, just as it is the\
        \ case for serving plain DNS. This should be implemented using specific solutions\
        \ adapted to the use case and the name server implementation used.\n\nAs noted\
        \ earlier there are two data models for DNSSEC in NetBox DNS: DNSSEC Key Templates\
        \ and DNSSEC Policies. The former are used for storing parameters for DNSSEC\
        \ Keys such as the type, algorithm and lifetime, and the latter to define\
        \ policies that determine how often signatures are regenerated, DS records\
        \ are propagated etc.\n\nWhile the implementation is oriented largely towards\
        \ options BIND 9 provides, this is mainly because that software has a huge\
        \ set of configuration options and other products are usually not very different,\
        \ in most cases more limited than BIND 9. Given the large installed base of\
        \ BIND 9, this is considered a good basis. (There is, however, no reason why\
        \ NetBox DNS cannot be used to maintain data for, say, Knot-DNS or PowerDNS.)\n\
        \nFor a summary of the new functionality, see [this blogpost](https://jpmens.net/2025/03/16/dnssec-policy-and-key-template-support-in-netbox-dns/)\
        \ by [@&#8203;jpmens](https://redirect.github.com/jpmens).\n\n#### What's\
        \ Changed\n\n-   SOA MNAME must be checked in zone forms if zone template\
        \ is not set by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/589](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/589)\n\
        -   complete fr translation by [@&#8203;jean1](https://redirect.github.com/jean1)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/592](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/592)\n\
        -   Check whether zone was passed via dict before resolving templates by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/594](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/594)\n\
        -   Add DNSSEC support by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/563](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/563)\n\
        -   Add domain registration expiration date and EPP status fields by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/590](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/590)\n\
        -   Add tests for NetBox DNS objects as custom field targets by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/595](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/595)\n\
        -   Initialise views in `urls.py` instead of `ready()` by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/596](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/596)\n\
        \n**Full Changelog**: https://github.com/peteeckel/netbox-plugin-dns/compare/1.2.6...1.2.7\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\U0001F47B\
        \ **Immortal**: This PR will be recreated if closed unmerged. Get [config\
        \ help](https://redirect.github.com/renovatebot/renovate/discussions) if that's\
        \ undesired.\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/container-images).\n\
        <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/container-images/pull/709
      child_jobs: []
      commit_id: 9116f03a85f60739fff1e903e4d76b1ec92fd776
      event_id: fef3f7b0-1594-11f0-810d-256454ab126d
      executor:
        hostname: 7d211f194f6a
        inventory_file: /var/lib/zuul/builds/3972d97a269c4c84830ffda7e903e34c/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/3972d97a269c4c84830ffda7e903e34c/work/logs
        result_data_file: /var/lib/zuul/builds/3972d97a269c4c84830ffda7e903e34c/work/results.json
        src_root: /var/lib/zuul/builds/3972d97a269c4c84830ffda7e903e34c/work/src
        work_root: /var/lib/zuul/builds/3972d97a269c4c84830ffda7e903e34c/work
      items:
      - branch: main
        change: '709'
        change_url: https://github.com/osism/container-images/pull/709
        patchset: 9116f03a85f60739fff1e903e4d76b1ec92fd776
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          name: osism/container-images
          short_name: container-images
          src_dir: src/github.com/osism/container-images
      job: hadolint
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBuZXRib3gKClRoaXMgUFIgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1cGRhdGVzOgoKfCBQYWNrYWdlIHwgVHlwZSB8IFVwZGF0ZSB8IENoYW5nZSB8IEFnZSB8IEFkb3B0aW9uIHwgUGFzc2luZyB8IENvbmZpZGVuY2UgfAp8LS0tfC0tLXwtLS18LS0tfC0tLXwtLS18LS0tfC0tLXwKfCBbZ2hjci5pby9hc3RyYWwtc2gvdXZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYpIHwgZmluYWwgfCBwYXRjaCB8IGAwLjYuMTFgIC0+IGAwLjYuMTRgIHwgWyFbYWdlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvYWdlL2RvY2tlci9naGNyLmlvJTJmYXN0cmFsLXNoJTJmdXYvMC42LjE0P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbYWRvcHRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZG9wdGlvbi9kb2NrZXIvZ2hjci5pbyUyZmFzdHJhbC1zaCUyZnV2LzAuNi4xND9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L2RvY2tlci9naGNyLmlvJTJmYXN0cmFsLXNoJTJmdXYvMC42LjExLzAuNi4xND9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW2NvbmZpZGVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb25maWRlbmNlL2RvY2tlci9naGNyLmlvJTJmYXN0cmFsLXNoJTJmdXYvMC42LjExLzAuNi4xND9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8CnwgW25ldGJveC1wbHVnaW4tZG5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zKSB8ICB8IHBhdGNoIHwgYD09MS4yLjZgIC0+IGA9PTEuMi43YCB8IFshW2FnZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2FnZS9weXBpL25ldGJveC1wbHVnaW4tZG5zLzEuMi43P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbYWRvcHRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZG9wdGlvbi9weXBpL25ldGJveC1wbHVnaW4tZG5zLzEuMi43P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbcGFzc2luZ10oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2NvbXBhdGliaWxpdHkvcHlwaS9uZXRib3gtcGx1Z2luLWRucy8xLjIuNi8xLjIuNz9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW2NvbmZpZGVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb25maWRlbmNlL3B5cGkvbmV0Ym94LXBsdWdpbi1kbnMvMS4yLjYvMS4yLjc/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfAp8IFtxdWF5LmlvL25ldGJveGNvbW11bml0eS9uZXRib3hdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9uZXRib3gtY29tbXVuaXR5L25ldGJveC1kb2NrZXIpIHwgIHwgcGF0Y2ggfCBgdjQuMi4yYCAtPiBgdjQuMi42YCB8IFshW2FnZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2FnZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjY/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVthZG9wdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2Fkb3B0aW9uL2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuNj9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuMi92NC4yLjY/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVtjb25maWRlbmNlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29uZmlkZW5jZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjIvdjQuMi42P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwKfCBbcXVheS5pby9uZXRib3hjb21tdW5pdHkvbmV0Ym94XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbmV0Ym94LWNvbW11bml0eS9uZXRib3gtZG9ja2VyKSB8IHN0YWdlIHwgcGF0Y2ggfCBgdjQuMi4yYCAtPiBgdjQuMi42YCB8IFshW2FnZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2FnZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjY/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVthZG9wdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2Fkb3B0aW9uL2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuNj9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuMi92NC4yLjY/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVtjb25maWRlbmNlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29uZmlkZW5jZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjIvdjQuMi42P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwKCi0tLQoKIyMjIFJlbGVhc2UgTm90ZXMKCjxkZXRhaWxzPgo8c3VtbWFyeT5hc3RyYWwtc2gvdXYgKGdoY3IuaW8vYXN0cmFsLXNoL3V2KTwvc3VtbWFyeT4KCiMjIyBbYHYwLjYuMTRgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDYxNCkKCiMjIyMjIFB5dGhvbiB2ZXJzaW9ucwoKVGhlIGZvbGxvd2luZyBQeXRob24gdmVyc2lvbnMgaGF2ZSBiZWVuIGFkZGVkOgoKLSAgIENQeXRob24gMy4xMy4zCi0gICBDUHl0aG9uIDMuMTIuMTAKLSAgIENQeXRob24gMy4xMS4xMgotICAgQ1B5dGhvbiAzLjEwLjE3Ci0gICBDUHl0aG9uIDMuOS4yMgoKU2VlIHRoZSBbYHB5dGhvbi1idWlsZC1zdGFuZGFsb25lYCByZWxlYXNlIG5vdGVzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3B5dGhvbi1idWlsZC1zdGFuZGFsb25lL3JlbGVhc2VzL3RhZy8yMDI1MDQwOSkgZm9yIG1vcmUgZGV0YWlscy4KCiMjIyMjIEVuaGFuY2VtZW50cwoKLSAgIEFkZCBgdXYtYnVpbGRgIGFuZCBgdXZfYnVpbGRgIGFsaWFzZXMgdG8gYHV2IGluaXQgLS1idWlsZC1iYWNrZW5kYCAoWyMmIzgyMDM7MTI3NzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc3NikpCi0gICBFbWl0IGRlZGljYXRlZCBlcnJvciBtZXNzYWdlIGZvciBDb25kYSBgZW52aXJvbm1lbnQueW1sYCBmaWxlcyAoWyMmIzgyMDM7MTI2NjldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjY2OSkpCgojIyMjIyBQcmV2aWV3IGZlYXR1cmVzCgotICAgQnVpbGQgYmFja2VuZDogQ2hlY2sgbW9kdWxlIGRpciBleGlzdHMgZm9yIHNkaXN0IGJ1aWxkIChbIyYjODIwMzsxMjc3OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzc5KSkKLSAgIEJ1aWxkIGJhY2tlbmQ6IEZpeCBzZGlzdCB3aXRoIGxvbmcgZGlyZWN0b3JpZXMgKFsjJiM4MjAzOzEyNzY0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3NjQpKQoKIyMjIyMgUGVyZm9ybWFuY2UKCi0gICBBdm9pZCBxdWVyeWluZyBHaXRIdWIgb24gcmVwZWF0ZWQgaW5zdGFsbCBpbnZvY2F0aW9ucyAoWyMmIzgyMDM7MTI3NjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc2NykpCgojIyMjIyBCdWcgZml4ZXMKCi0gICBFcnJvciB3aGVuIGB0b29sLnV2LnNvdXJjZXNgIGlzIHNldCBpbiBzeXN0ZW0tbGV2ZWwgY29uZmlndXJhdGlvbiBmaWxlIChbIyYjODIwMzsxMjc1N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzU3KSkKLSAgIFNwbGl0IHdvcmtzcGFjZSBtZW1iZXJzIG9udG8gdGhlaXIgb3duIGxpbmVzIGluIGB1diBpbml0YCAoWyMmIzgyMDM7MTI3NTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc1NikpCgojIyMjIyBEb2N1bWVudGF0aW9uCgotICAgQWRkIGxvY2tmaWxlIG5vdGUgYWJvdXQgUEVQIDc1MSAoWyMmIzgyMDM7MTI3MzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjczMikpCi0gICBFeHRlbmQgdGhlIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIGZvciBgdXYgcGlwIHN5bmNgIChbIyYjODIwMzsxMjY4M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjgzKSkKLSAgIEZpeCBtaXNtYXRjaGVkIHBpcCBpbnRlcmZhY2UgaGVhZGVyIC8gbmF2IHRpdGxlcyAoWyMmIzgyMDM7MTI2NDBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjY0MCkpCgojIyMgW2B2MC42LjEzYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA2MTMpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjYuMTIuLi4wLjYuMTMpCgojIyMjIyBFbmhhbmNlbWVudHMKCi0gICBBZGQgYC0tc2hvdy12ZXJzaW9uYCB0byBgdXYgcHl0aG9uIGZpbmRgIChbIyYjODIwMzsxMjM3Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyMzc2KSkKLSAgIFJlbW92ZSBgLS1uby1jb25maWdgIHdhcm5pbmcgZnJvbSBgdXYgcGlwIGNvbXBpbGVgIGFuZCBgdXYgcGlwIHN5bmNgIChbIyYjODIwMzsxMjY0Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjQyKSkKLSAgIFNraXAgcmVwZWF0ZWQgZGlyZWN0b3JpZXMgaW4gYFBBVEhgIHdoZW4gc2VhcmNoaW5nIGZvciBQeXRob24gaW50ZXJwcmV0ZXJzIChbIyYjODIwMzsxMjM2N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyMzY3KSkKLSAgIFVuc2V0IGBTQ1JJUFRfUEFUSGAgaW4gcmVsb2NhdGFibGUgYWN0aXZhdGlvbiBzY3JpcHQgKFsjJiM4MjAzOzEyNjcyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2NzIpKQotICAgQWRkIGBVVl9QWVRIT05fRE9XTkxPQURTX0pTT05fVVJMYCB0byBzZXQgY3VzdG9tIG1hbmFnZWQgcHl0aG9uIHNvdXJjZXMgKFsjJiM4MjAzOzEwOTM5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTA5MzkpKQotICAgUmVqZWN0IGBweXByb2plY3QudG9tbGAgZmlsZXMgaW4gYHV2IHBpcCBjb21waWxlIC1vYCAoWyMmIzgyMDM7MTI2NzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjY3MykpCi0gICBSZXNwZWN0IHRoZSBgLS1vZmZsaW5lYCBmbGFnIGZvciBHaXQgb3BlcmF0aW9ucyAoWyMmIzgyMDM7MTI2MTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjYxOSkpCgojIyMjIyBCdWcgZml4ZXMKCi0gICBXYXJuIGluc3RlYWQgb2YgZXJyb3IgaWYgQ1JDIGFwcGVhcnMgdG8gYmUgbWlzc2luZyAoWyMmIzgyMDM7MTI3MjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjcyMikpCi0gICBBdm9pZCBpbmZpbml0ZSBsb29wIGluIGB1diBleHBvcnRgIHdpdGggY29uZmxpY3RzIChbIyYjODIwMzsxMjcyNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzI2KSkKCiMjIyMjIFJ1c3QgQVBJCgotICAgVXBkYXRlIE1TUlYgdG8gMS44NCAoWyMmIzgyMDM7MTI2NzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjY3MCkpCgojIyMgW2B2MC42LjEyYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA2MTIpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjYuMTEuLi4wLjYuMTIpCgojIyMjIyBFbmhhbmNlbWVudHMKCi0gICBSZXBvcnQgdGhlIHF1ZXJpZWQgZXhlY3V0YWJsZSBwYXRoIGluIGB1diBweXRob24gbGlzdGAgKFsjJiM4MjAzOzEyNjI4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2MjgpKQotICAgSW1wcm92ZSBhcmNoaXZlIHVucGFjayBlcnJvciBtZXNzYWdlcyAoWyMmIzgyMDM7MTI2MjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjYyNykpCgojIyMjIyBCdWcgZml4ZXMKCi0gICBSZXNwZWN0IGBhdXRoZW50aWNhdGVgIHdoZW4gdXNpbmcgYGV4cGxpY2l0ID0gdHJ1ZWAgKFsjJiM4MjAzOzEyNjMxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2MzEpKQotICAgTm9ybWFsaXplIGV4dHJhIGFuZCBncm91cCBuYW1lcyBpbiBgdXYgYWRkYCBhbmQgYHV2IHJlbW92ZWAgKFsjJiM4MjAzOzEyNTg2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI1ODYpKQotICAgRW5mb3JjZSBDUkMtMzIgY2hlY2tzIHdoZW4gdW5wYWNraW5nIGFyY2hpdmVzIChbIyYjODIwMzsxMjYyM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjIzKSkKLSAgIEZpeCBwYXJzaW5nIG9mIGBweXRob24tcGxhdGZvcm1gIGluIHNldHRpbmdzIGZpbGVzIChbIyYjODIwMzsxMjU5Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNTkyKSkKCiMjIyMjIERvY3VtZW50YXRpb24KCi0gICBBZGQgbm90ZSBhYm91dCBgdXYgYnVpbGRgIHRvIGBwYWNrYWdlID0gZmFsc2VgIChbIyYjODIwMzsxMjYwOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjA4KSkKLSAgIEFkZCBpbmRleCBmYWxsYmFjayBub3RlIHRvIGBhdXRoZW50aWNhdGUgPSBhbHdheXNgIGRvY3VtZW50YXRpb24gKFsjJiM4MjAzOzEyNDk4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI0OTgpKQotICAgRml4IGludmFsaWQgJ2tpbmQnIHJlZmVyZW5jZSBpbiBmbGF0IGluZGV4IGRvY3MgKFsjJiM4MjAzOzEyNTgzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI1ODMpKQoKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5PnBldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucyAobmV0Ym94LXBsdWdpbi1kbnMpPC9zdW1tYXJ5PgoKIyMjIFtgdjEuMi43YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9yZWxlYXNlcy90YWcvMS4yLjcpOiBGZWF0dXJlL0J1Z2ZpeCBSZWxlYXNlIDEuMi43CgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvY29tcGFyZS8xLjIuNi4uLjEuMi43KQoKIyMjIyBETlNTRUMKClRoaXMgaXMgcmVsZWFzZSBhZGRzIEROU1NFQyBzdXBwb3J0IGZvciBOZXRCb3ggRE5TLgoKTmV0Qm94IEROUyBzdXBwb3J0cyB0aGUgbWFuYWdlbWVudCBvZiBETlNTRUMgaW4gYXMgbXVjaCBhcyBETlNTRUMgS2V5IFRlbXBsYXRlcyBhbmQgRE5TU0VDIFBvbGljaWVzIGNhbiBiZSBzdG9yZWQgaW4gTmV0Qm94IEROUyBhbmQgYXNzaWduZWQgdG8gem9uZXMuIEl0IGRvZXMgbm90LCBob3dldmVyLCBzdXBwb3J0IHpvbmUgc2lnbmluZyBub3Igc3RvcmluZyBjcnlwdG9ncmFwaGljIG1hdGVyaWFsIGluIHRoZSBOZXRCb3ggZGF0YWJhc2UuIFRoZXJlIGFyZSB0d28gbWFpbiByZWFzb25zIGZvciB0aGlzIGNvbmNlcHQ6CgoxLiAgU3RvcmluZyBjcnlwdG9ncmFwaGljIG1hdGVyaWFsIGluIGEgZGF0YSBzb3VyY2UgZm9yIGF1dG9tYXRpb24gaXMgZ2VuZXJhbGx5IHByb2JsZW1hdGljLiBXaGlsZSB0aGVyZSBpcyB0aGUgTmV0Qm94IFNlY3JldHMgcGx1Z2luLCBpdCBpcyBiZXR0ZXIgcHJhY3RpY2UgdG8gc3RvcmUgY29uZmlkZW50aWFsIGRhdGEgaW4gdmF1bHQgc3lzdGVtcyBzcGVjaWZpY2FsbHkgY3JlYXRlZCBmb3IgdGhpcyBwdXJwb3NlLiAoSW4gc29tZSBjYXNlcyB0aGUga2V5cyBhcmUgc3RvcmVkIGluIEhTTXMgYXMgYW4gYWRkZWQgbWV0aG9kIG9mIHByb3RlY3Rpb24uKQoyLiAgSW4gdHlwaWNhbCBtb2Rlcm4gc2NlbmFyaW9zLCBzaWduaW5nIHNlcnZlcnMgbWFpbnRhaW4ga2V5cyBhbmQgc2lnbiByZWNvcmRzLCBzbyBzdWNoIGNvbmZpZ3VyYXRpb25zIGRvIG5vdCBldmVuIHJlcXVpcmUgaGF2aW5nIE5ldEJveCBETlMgcHJvdmlkZSBrZXlzIG9yIGNyZWF0ZSB0aGUgc2lnbmF0dXJlcyBmcm9tIHdpdGhpbiBOZXRCb3ggRE5TLgoKQWRkaXRpb25hbGx5LCB0aGVyZSBpcyBubyBkaXJlY3QgaW50ZWdyYXRpb24gYmV0d2VlbiBOZXRCb3ggYW5kIGFueSBnaXZlbiBuYW1lIHNlcnZlciBpbXBsZW1lbnRhdGlvbiwgc28gYW4gaW50ZXJmYWNlIGZvciBwcm92aWRpbmcgc2lnbmVkIHpvbmVzIHRvIGEgbmFtZSBzZXJ2ZXIgaXMgZ2VuZXJhbGx5IG91dCBvZiBzY29wZSBmb3IgTmV0Qm94IEROUywganVzdCBhcyBpdCBpcyB0aGUgY2FzZSBmb3Igc2VydmluZyBwbGFpbiBETlMuIFRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIHNwZWNpZmljIHNvbHV0aW9ucyBhZGFwdGVkIHRvIHRoZSB1c2UgY2FzZSBhbmQgdGhlIG5hbWUgc2VydmVyIGltcGxlbWVudGF0aW9uIHVzZWQuCgpBcyBub3RlZCBlYXJsaWVyIHRoZXJlIGFyZSB0d28gZGF0YSBtb2RlbHMgZm9yIEROU1NFQyBpbiBOZXRCb3ggRE5TOiBETlNTRUMgS2V5IFRlbXBsYXRlcyBhbmQgRE5TU0VDIFBvbGljaWVzLiBUaGUgZm9ybWVyIGFyZSB1c2VkIGZvciBzdG9yaW5nIHBhcmFtZXRlcnMgZm9yIEROU1NFQyBLZXlzIHN1Y2ggYXMgdGhlIHR5cGUsIGFsZ29yaXRobSBhbmQgbGlmZXRpbWUsIGFuZCB0aGUgbGF0dGVyIHRvIGRlZmluZSBwb2xpY2llcyB0aGF0IGRldGVybWluZSBob3cgb2Z0ZW4gc2lnbmF0dXJlcyBhcmUgcmVnZW5lcmF0ZWQsIERTIHJlY29yZHMgYXJlIHByb3BhZ2F0ZWQgZXRjLgoKV2hpbGUgdGhlIGltcGxlbWVudGF0aW9uIGlzIG9yaWVudGVkIGxhcmdlbHkgdG93YXJkcyBvcHRpb25zIEJJTkQgOSBwcm92aWRlcywgdGhpcyBpcyBtYWlubHkgYmVjYXVzZSB0aGF0IHNvZnR3YXJlIGhhcyBhIGh1Z2Ugc2V0IG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgb3RoZXIgcHJvZHVjdHMgYXJlIHVzdWFsbHkgbm90IHZlcnkgZGlmZmVyZW50LCBpbiBtb3N0IGNhc2VzIG1vcmUgbGltaXRlZCB0aGFuIEJJTkQgOS4gR2l2ZW4gdGhlIGxhcmdlIGluc3RhbGxlZCBiYXNlIG9mIEJJTkQgOSwgdGhpcyBpcyBjb25zaWRlcmVkIGEgZ29vZCBiYXNpcy4gKFRoZXJlIGlzLCBob3dldmVyLCBubyByZWFzb24gd2h5IE5ldEJveCBETlMgY2Fubm90IGJlIHVzZWQgdG8gbWFpbnRhaW4gZGF0YSBmb3IsIHNheSwgS25vdC1ETlMgb3IgUG93ZXJETlMuKQoKRm9yIGEgc3VtbWFyeSBvZiB0aGUgbmV3IGZ1bmN0aW9uYWxpdHksIHNlZSBbdGhpcyBibG9ncG9zdF0oaHR0cHM6Ly9qcG1lbnMubmV0LzIwMjUvMDMvMTYvZG5zc2VjLXBvbGljeS1hbmQta2V5LXRlbXBsYXRlLXN1cHBvcnQtaW4tbmV0Ym94LWRucy8pIGJ5IFtAJiM4MjAzO2pwbWVuc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2pwbWVucykuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgU09BIE1OQU1FIG11c3QgYmUgY2hlY2tlZCBpbiB6b25lIGZvcm1zIGlmIHpvbmUgdGVtcGxhdGUgaXMgbm90IHNldCBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTg5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTg5KQotICAgY29tcGxldGUgZnIgdHJhbnNsYXRpb24gYnkgW0AmIzgyMDM7amVhbjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9qZWFuMSkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTIpCi0gICBDaGVjayB3aGV0aGVyIHpvbmUgd2FzIHBhc3NlZCB2aWEgZGljdCBiZWZvcmUgcmVzb2x2aW5nIHRlbXBsYXRlcyBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk0KQotICAgQWRkIEROU1NFQyBzdXBwb3J0IGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81NjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81NjMpCi0gICBBZGQgZG9tYWluIHJlZ2lzdHJhdGlvbiBleHBpcmF0aW9uIGRhdGUgYW5kIEVQUCBzdGF0dXMgZmllbGRzIGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTApCi0gICBBZGQgdGVzdHMgZm9yIE5ldEJveCBETlMgb2JqZWN0cyBhcyBjdXN0b20gZmllbGQgdGFyZ2V0cyBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk1KQotICAgSW5pdGlhbGlzZSB2aWV3cyBpbiBgdXJscy5weWAgaW5zdGVhZCBvZiBgcmVhZHkoKWAgYnkgW0AmIzgyMDM7cGV0ZWVja2VsXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzU5Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzU5NikKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9jb21wYXJlLzEuMi42Li4uMS4yLjcKCjwvZGV0YWlscz4KCi0tLQoKIyMjIENvbmZpZ3VyYXRpb24KCvCfk4UgKipTY2hlZHVsZSoqOiBCcmFuY2ggY3JlYXRpb24gLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCksIEF1dG9tZXJnZSAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKS4KCvCfmqYgKipBdXRvbWVyZ2UqKjogRGlzYWJsZWQgYnkgY29uZmlnLiBQbGVhc2UgbWVyZ2UgdGhpcyBtYW51YWxseSBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkLgoK4pm7ICoqUmViYXNpbmcqKjogV2hlbmV2ZXIgUFIgYmVjb21lcyBjb25mbGljdGVkLCBvciB5b3UgdGljayB0aGUgcmViYXNlL3JldHJ5IGNoZWNrYm94LgoK8J+RuyAqKkltbW9ydGFsKio6IFRoaXMgUFIgd2lsbCBiZSByZWNyZWF0ZWQgaWYgY2xvc2VkIHVubWVyZ2VkLiBHZXQgW2NvbmZpZyBoZWxwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcmVub3ZhdGVib3QvcmVub3ZhdGUvZGlzY3Vzc2lvbnMpIGlmIHRoYXQncyB1bmRlc2lyZWQuCgotLS0KCiAtIFsgXSA8IS0tIHJlYmFzZS1jaGVjayAtLT5JZiB5b3Ugd2FudCB0byByZWJhc2UvcmV0cnkgdGhpcyBQUiwgY2hlY2sgdGhpcyBib3gKCi0tLQoKVGhpcyBQUiB3YXMgZ2VuZXJhdGVkIGJ5IFtNZW5kIFJlbm92YXRlXShodHRwczovL21lbmQuaW8vcmVub3ZhdGUvKS4gVmlldyB0aGUgW3JlcG9zaXRvcnkgam9iIGxvZ10oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9naXRodWIvb3Npc20vY29udGFpbmVyLWltYWdlcykuCjwhLS1yZW5vdmF0ZS1kZWJ1ZzpleUpqY21WaGRHVmtTVzVXWlhJaU9pSXpPUzR5TURjdU1TSXNJblZ3WkdGMFpXUkpibFpsY2lJNklqTTVMakl6T0M0d0lpd2lkR0Z5WjJWMFFuSmhibU5vSWpvaWJXRnBiaUlzSW14aFltVnNjeUk2V3lKeVpXNXZkbUYwWlNKZGZRPT0tLT4K
      patchset: 9116f03a85f60739fff1e903e4d76b1ec92fd776
      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: 35410214c5e2732961503cd3d67869637ac683e2
          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: 35410214c5e2732961503cd3d67869637ac683e2
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/hadolint/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/container-images
        name: osism/container-images
        short_name: container-images
        src_dir: src/github.com/osism/container-images
      projects:
        github.com/osism/container-images:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          checkout: main
          checkout_description: zuul branch
          commit: 432471b4ec149ee1c2e367745bc795389469798d
          name: osism/container-images
          required: false
          short_name: container-images
          src_dir: src/github.com/osism/container-images
      ref: refs/pull/709/head
      resources: {}
      tenant: osism
      timeout: 1800
      voting: true
