all:
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 81.163.192.27
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 94fe697c-bf14-4d95-9462-9492c6250f14
        host_id: d2c528664e1bd332192bb574345deb0c6c7158061222e4a6c036b5ef
        interface_ip: 81.163.192.27
        label: ubuntu-noble
        private_ipv4: 10.128.0.106
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.27
        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 yamllint branches: None source: osism/zuul-jobs/.zuul.yaml@main#59>'
      - '<Job yamllint branches: None source: osism/release/.zuul.yaml@main#2>'
      ansible_version: '8'
      attempts: 1
      branch: main
      build: 7be916cd4e554850a3619588f8128cb3
      buildset: dc5fef2d2b3540f49f7b64e5c0508569
      change: '1807'
      change_message: "chore(deps): update dependency moby/moby to v28\n\nThis PR\
        \ contains the following updates:\n\n| Package | Update | Change |\n|---|---|---|\n\
        | [moby/moby](https://redirect.github.com/moby/moby) | major | `5:27.5.1`\
        \ -> `v28.0.4` |\n| [moby/moby](https://redirect.github.com/moby/moby) | major\
        \ | `27.5.1` -> `28.0.4` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>moby/moby\
        \ (moby/moby)</summary>\n\n### [`v28.0.4`](https://redirect.github.com/moby/moby/releases/tag/v28.0.4)\n\
        \n[Compare Source](https://redirect.github.com/moby/moby/compare/v28.0.3...v28.0.4)\n\
        \n#### 28.0.4\n\nFor a full list of pull requests and changes in this release,\
        \ refer to the relevant GitHub milestones:\n\n-   [docker/cli, 28.0.4 milestone](https://redirect.github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.0.4)\n\
        -   [moby/moby, 28.0.4 milestone](https://redirect.github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.0.4)\n\
        \n##### Bug fixes and enhancements\n\n-   Fix a regression causing `docker\
        \ pull/push` to fail when interacting with a private repository. [docker/cli#5964](https://redirect.github.com/docker/cli/pull/5964)\n\
        \n### [`v28.0.3`](https://redirect.github.com/moby/moby/releases/tag/v28.0.3)\n\
        \n[Compare Source](https://redirect.github.com/moby/moby/compare/v28.0.2...v28.0.3)\n\
        \n#### 28.0.3\n\nFor a full list of pull requests and changes in this release,\
        \ refer to the relevant GitHub milestones:\n\n-   [docker/cli, 28.0.3 milestone](https://redirect.github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.0.3)\n\
        -   [moby/moby, 28.0.3 milestone](https://redirect.github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.0.3)\n\
        \n##### Bug fixes and enhancements\n\n-   Fix `docker run` truncating the\
        \ `STDOUT`/`STDERR` prematurely when the container exits before the data is\
        \ consumed. [docker/cli#5957](https://redirect.github.com/docker/cli/pull/5957)\n\
        \n##### Packaging updates\n\n-   Update BuildKit to [v0.20.2](https://redirect.github.com/moby/buildkit/releases/tag/v0.20.2).\
        \ [moby/moby#49698](https://redirect.github.com/moby/moby/pull/49698)\n- \
        \  Update `runc` to [v1.2.6](https://redirect.github.com/opencontainers/runc/releases/tag/v1.2.6)\
        \ (static packages only). [moby/moby#49682](https://redirect.github.com/moby/moby/pull/49682)\n\
        -   Update containerd to [v1.7.26](https://redirect.github.com/containerd/containerd/releases/tag/v1.7.26).\
        \ [docker/containerd-packaging#409](https://redirect.github.com/docker/containerd-packaging/pull/409)\n\
        \n### [`v28.0.2`](https://redirect.github.com/moby/moby/releases/tag/v28.0.2)\n\
        \n[Compare Source](https://redirect.github.com/moby/moby/compare/v28.0.1...v28.0.2)\n\
        \n#### 28.0.2\n\nFor a full list of pull requests and changes in this release,\
        \ refer to the relevant GitHub milestones:\n\n-   [docker/cli, 28.0.2 milestone](https://redirect.github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.0.2)\n\
        -   [moby/moby, 28.0.2 milestone](https://redirect.github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.0.2)\n\
        \n##### Bug fixes and enhancements\n\n-   Fix CLI-specific attributes (`docker.cli.*`)\
        \ being unintentionally passed to downstream OTel services. [docker/cli#5842](https://redirect.github.com/docker/cli/pull/5842)\n\
        -   Fix an issue where user-specified `OTEL_RESOURCE_ATTRIBUTES` were being\
        \ overridden by CLI's internal telemetry attributes. The CLI now properly\
        \ merges user-specified attributes with internal ones, allowing both to coexist.\
        \ [docker/cli#5842](https://redirect.github.com/docker/cli/pull/5842)\n- \
        \  Fix daemon failing to start on Windows when a container created before\
        \ v28.0.0 was present. [moby/moby#49626](https://redirect.github.com/moby/moby/pull/49626)\n\
        -   Fix possible error on `docker buildx prune` with the `--min-free-space`.\
        \ [moby/moby#49623](https://redirect.github.com/moby/moby/pull/49623)\n- \
        \  Fix spurious `io: read/write on closed pipe` error in the daemon log when\
        \ closing container. [moby/moby#49590](https://redirect.github.com/moby/moby/pull/49590)\n\
        -   Fix the Docker daemon failing too early if the containerd socket isn't\
        \ immediately available. [moby/moby#49603](https://redirect.github.com/moby/moby/pull/49603)\n\
        -   Mask Linux thermal interrupt info in a container's `/proc` and `/sys`\
        \ by default. [moby/moby#49560](https://redirect.github.com/moby/moby/pull/49560)\n\
        -   Update `contrib/check-config.sh` to check for more kernel modules related\
        \ to iptables. [moby/moby#49622](https://redirect.github.com/moby/moby/pull/49622)\n\
        -   containerd image store: Fix integer overflow in User ID handling passed\
        \ via `--user`. [moby/moby#49652](https://redirect.github.com/moby/moby/pull/49652)\n\
        -   containerd image store: Fix spurious `reference for unknown type: application/vnd.in-toto+json`\
        \ warning being logged to the daemon's log. [moby/moby#49652](https://redirect.github.com/moby/moby/pull/49652)\n\
        -   containerd image store: Improve performance of `docker ps` when running\
        \ large number of containers. [moby/moby#49365](https://redirect.github.com/moby/moby/pull/49365)\n\
        \n##### Packaging updates\n\n-   Update BuildKit to [v0.20.1](https://redirect.github.com/moby/buildkit/releases/tag/v0.20.1).\
        \ [moby/moby#49587](https://redirect.github.com/moby/moby/pull/49587)\n- \
        \  Update Buildx to [v0.22.0](https://redirect.github.com/docker/buildx/releases/tag/v0.22.0).\
        \ [docker/docker-ce-packaging#1175](https://redirect.github.com/docker/docker-ce-packaging/pull/1175)\n\
        -   Update Compose to [v2.34.0](https://redirect.github.com/docker/compose/releases/tag/v2.34.0).\
        \ [docker/docker-ce-packaging#1172](https://redirect.github.com/docker/docker-ce-packaging/pull/1172)\n\
        -   Update Go runtime to [1.23.7](https://go.dev/doc/devel/release#go1.23.7).\
        \ [docker/cli#5890](https://redirect.github.com/docker/cli/pull/5890), [docker/docker-ce-packaging#1171](https://redirect.github.com/docker/docker-ce-packaging/pull/1171),\
        \ [moby/moby#49580](https://redirect.github.com/moby/moby/pull/49580)\n- \
        \  Update RootlessKit to [v2.3.4](https://redirect.github.com/rootless-containers/rootlesskit/releases/tag/v2.3.4).\
        \ [moby/moby#49614](https://redirect.github.com/moby/moby/pull/49614)\n- \
        \  Update containerd (static binaries only) to [v1.7.27](https://www.github.com/containerd/containerd/releases/tag/v1.7.27).\
        \ [moby/moby#49656](https://redirect.github.com/moby/moby/pull/49656)\n\n\
        ##### Networking\n\n-   Add environment variable `DOCKER_INSECURE_NO_IPTABLES_RAW=1`\
        \ to allow Docker to run on systems where the Linux kernel can't provide `CONFIG_IP_NF_RAW`\
        \ support. When enabled, Docker will not create rules in the iptables `raw`\
        \ table. Warning: This is not recommended for production environments as it\
        \ reduces security by allowing other hosts on the local network to route to\
        \ ports published to host addresses, even when they are published to `127.0.0.1.`\
        \ This option bypasses some of the security hardening introduced in Docker\
        \ Engine 28.0.0. [moby/moby#49621](https://redirect.github.com/moby/moby/pull/49621)\n\
        -   Allow container startup when an endpoint is attached to a macvlan network\
        \ where the parent interface is down. [moby/moby#49630](https://redirect.github.com/moby/moby/pull/49630)\n\
        -   Do not skip DNAT for packets originating in a gateway_mode=routed network.\
        \ [moby/moby#49577](https://redirect.github.com/moby/moby/pull/49577)\n- \
        \  Fix a bug causing `docker ps` to inconsistently report dual-stack port\
        \ mappings. [moby/moby#49657](https://redirect.github.com/moby/moby/pull/49657)\n\
        -   Fix a bug that could cause `docker-proxy` to stop forwarding UDP datagrams\
        \ to containers. [moby/moby#49649](https://redirect.github.com/moby/moby/pull/49649)\n\
        -   Fix a bug that was causing `docker-proxy` to close UDP connections to\
        \ containers eagerly and resulting in the source address to change needlessly.\
        \ [moby/moby#49649](https://redirect.github.com/moby/moby/pull/49649)\n\n\
        ##### Go SDK\n\n-   Move various types and consts from `cli-plugins/manager`\
        \ to a separate package. [docker/cli#5902](https://redirect.github.com/docker/cli/pull/5902)\n\
        -   Update minimum required Go version to go1.23. [moby/moby#49541](https://redirect.github.com/moby/moby/pull/49541)\n\
        -   `cli/command`: Move `PrettyPrint` utility to `cli/command/formatter`.\
        \ [docker/cli#5916](https://redirect.github.com/docker/cli/pull/5916)\n- \
        \  runconfig/errors: split `ErrConflictHostNetwork` into `ErrConflictConnectToHostNetwork`\
        \ and `ErrConflictDisconnectFromHostNetwork`. [moby/moby#49605](https://redirect.github.com/moby/moby/pull/49605)\n\
        \n##### Deprecations\n\n-   Go-SDK: Deprecate `cli-plugins/manager.ResourceAttributesEnvvar`\
        \ constant. It was used internally, but holds the `OTEL_RESOURCE_ATTRIBUTES`\
        \ name, which is part of the OpenTelemetry specification. Users of this constant\
        \ should define their own. It will be removed in the next release. [docker/cli#5881](https://redirect.github.com/docker/cli/pull/5881)\n\
        -   Go-SDK: Deprecate `opts.PortOpt`, `opts.ConfigOpt` and `opts.SecretOpt`.\
        \ These types were moved to the `opts/swarmopts` package. [docker/cli#5907](https://redirect.github.com/docker/cli/pull/5907)\n\
        -   Go-SDK: Remove `service/logs` package. [docker/cli#5910](https://redirect.github.com/docker/cli/pull/5910)\n\
        -   Go-SDK: `cli/command/image`: Deprecate `PushTrustedReference` and move\
        \ to `cli/trust`. [docker/cli#5894](https://redirect.github.com/docker/cli/pull/5894)\n\
        -   Go-SDK: `cli/command/image`: Deprecate and internalize `TrustedPush`.\
        \ [docker/cli#5894](https://redirect.github.com/docker/cli/pull/5894)\n- \
        \  Go-SDK: `cli/command`: deprecate `Cli.NotaryClient`: use [`trust.GetNotaryRepository`](https://pkg.go.dev/github.com/docker/cli@v28.0.1+incompatible/cli/trust#GetNotaryRepository)\
        \ instead. This method is no longer used and will be removed in the next release.\
        \ [docker/cli#5885](https://redirect.github.com/docker/cli/pull/5885)\n- \
        \  Go-SDK: `cli/command`: deprecate `Cli.RegistryClient`. This method was\
        \ only used internally and will be removed in the next release. Use [`client.NewRegistryClient`](https://pkg.go.dev/github.com/docker/cli@v28.0.1+incompatible/cli/registry/client#NewRegistryClient)\
        \ instead. [docker/cli#5889](https://redirect.github.com/docker/cli/pull/5889),\
        \ [docker/cli#5889](https://redirect.github.com/docker/cli/pull/5889)\n- \
        \  Go-SDK: `registry`: Deprecate `RepositoryInfo.Official` field. [moby/moby#49567](https://redirect.github.com/moby/moby/pull/49567)\n\
        -   Go-SDK: `registry`: deprecate `HostCertsDir`: this function was only used\
        \ internally and will be removed in the next release. [moby/moby#49612](https://redirect.github.com/moby/moby/pull/49612)\n\
        -   Go-SDK: `registry`: deprecate `SetCertsDir`: the cert-directory is now\
        \ automatically selected when running with RootlessKit, and should no longer\
        \ be set manually. [moby/moby#49612](https://redirect.github.com/moby/moby/pull/49612)\n\
        \n### [`v28.0.1`](https://redirect.github.com/moby/moby/releases/tag/v28.0.1)\n\
        \n[Compare Source](https://redirect.github.com/moby/moby/compare/v28.0.0...v28.0.1)\n\
        \n### 28.0.1\n\nFor a full list of pull requests and changes in this release,\
        \ refer to the relevant GitHub milestones:\n\n-   [docker/cli, 28.0.1 milestone](https://redirect.github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.0.1)\n\
        -   [moby/moby, 28.0.1 milestone](https://redirect.github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.0.1)\n\
        \n#### Networking\n\n-   Remove dependency on kernel modules `ip_set`, `ip_set_hash_net`\
        \ and `netfilter_xt_set`.\n    -   The dependency was introduced in release\
        \ 28.0.0 but proved too disruptive. The iptables rules using these modules\
        \ have been replaced. [moby/moby#49530](https://redirect.github.com/moby/moby/pull/49530)\n\
        -   Allow daemon startup on a host with IPv6 disabled without requiring `--ip6tables=false`.\
        \ [moby/moby#49525](https://redirect.github.com/moby/moby/pull/49525)\n- \
        \  Fix a bug that was causing containers with `--restart=always` and a published\
        \ port already in use to restart in a tight loop. [moby/moby#49507](https://redirect.github.com/moby/moby/pull/49507)\n\
        -   Fix an issue with Swarm ingress, caused by incorrect ordering of iptables\
        \ rules. [moby/moby#49538](https://redirect.github.com/moby/moby/pull/49538)\n\
        -   Fix creation of a swarm-scoped network from a `--config-only` network.\
        \ [moby/moby#49521](https://redirect.github.com/moby/moby/pull/49521)\n- \
        \  Fix `docker network inspect` reporting an IPv6 gateway with CIDR suffix\
        \ for a newly created network with no specific IPAM config, until a daemon\
        \ restart. [moby/moby#49520](https://redirect.github.com/moby/moby/pull/49520)\n\
        -   Improve the error reported when kernel modules `ip_set`, `ip_set_hash_net`\
        \ and `netilter_xt_set` are not available. [moby/moby#49524](https://redirect.github.com/moby/moby/pull/49524)\n\
        -   Move most of Docker's iptables rules out of the filter-FORWARD chain,\
        \ so that other applications are free to append rules that must follow Docker's\
        \ rules. [moby/moby#49518](https://redirect.github.com/moby/moby/pull/49518)\n\
        -   Update `--help` output and man page lo state which options only apply\
        \ to the default bridge network. [moby/moby#49522](https://redirect.github.com/moby/moby/pull/49522)\n\
        \n#### Bug fixes and enhancements\n\n-   Fix `docker context create` always\
        \ returning an error when using the `\"skip-tls-verify\"` option. [docker/cli#5850](https://redirect.github.com/docker/cli/pull/5850)\n\
        -   Fix shell completion suggesting IDs instead of names for services and\
        \ nodes. [docker/cli#5848](https://redirect.github.com/docker/cli/pull/5848)\n\
        -   Fix unintentionally printing exit status to standard error output when\
        \ `docker exec/run` returns a non-zero status. [docker/cli#5854](https://redirect.github.com/docker/cli/pull/5854)\n\
        -   Fix regression `protocol \"tcp\" is not supported by the RootlessKit port\
        \ driver \"slirp4netns\"`. [moby/moby#49514](https://redirect.github.com/moby/moby/pull/49514)\n\
        -   containerd image store: Fix `docker inspect` not being able to show multi-platform\
        \ images with missing layers for all platforms. [moby/moby#49533](https://redirect.github.com/moby/moby/pull/49533)\n\
        -   containerd image store: Fix `docker images --tree` reporting wrong content\
        \ size. [moby/moby#49535](https://redirect.github.com/moby/moby/pull/49535)\n\
        -   Fix compilation on i386 [moby/moby#49526](https://redirect.github.com/moby/moby/pull/49526)\n\
        \n#### Packaging updates\n\n-   Update `github.com/go-jose/go-jose/v4` to\
        \ v4.0.5 to address. [GHSA-c6gw-w398-hv78](https://redirect.github.com/go-jose/go-jose/security/advisories/GHSA-c6gw-w398-hv78)\
        \ / [CVE-2025-27144](https://www.cve.org/CVERecord?id=CVE-2025-27144) [docker/cli#5867](https://redirect.github.com/docker/cli/pull/5867)\n\
        -   Update Buildx to [v0.21.1](https://redirect.github.com/docker/buildx/releases/tag/v0.21.1).\
        \ [docker/docker-ce-packaging#1167](https://redirect.github.com/docker/docker-ce-packaging/pull/1167)\n\
        -   Update Compose to [v2.33.1](https://redirect.github.com/docker/compose/releases/tag/v2.33.1).\
        \ [docker/docker-ce-packaging#1168](https://redirect.github.com/docker/docker-ce-packaging/pull/1168)\n\
        \n#### API\n\n-   containerd image store: Fix `GET /images/json?manifests=1`\
        \ not filling `Manifests` for index-only images. [moby/moby#49533](https://redirect.github.com/moby/moby/pull/49533)\n\
        -   containerd image store: Fix `GET /images/json and /images/<name>/json`\
        \ `Size.Content` field including the size of content that's not available\
        \ locally. [moby/moby#49535](https://redirect.github.com/moby/moby/pull/49535)\n\
        \n### [`v28.0.0`](https://redirect.github.com/moby/moby/releases/tag/v28.0.0)\n\
        \n[Compare Source](https://redirect.github.com/moby/moby/compare/v27.5.1...v28.0.0)\n\
        \n### 28.0.0\n\nFor a full list of pull requests and changes in this release,\
        \ refer to the relevant GitHub milestones:\n\n-   [docker/cli, 28.0.0 milestone](https://redirect.github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.0.0)\n\
        -   [moby/moby, 28.0.0 milestone](https://redirect.github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.0.0)\n\
        -   Deprecated and removed features, see [Deprecated Features](https://redirect.github.com/docker/cli/blob/v28.0.0/docs/deprecated.md).\n\
        -   Changes to the Engine API, see [API version history](https://redirect.github.com/moby/moby/blob/v28.0.0/docs/api/version-history.md).\n\
        \n#### New\n\n-   Add ability to mount an image inside a container via `--mount\
        \ type=image`. [moby/moby#48798](https://redirect.github.com/moby/moby/pull/48798)\n\
        \    -   You can also specify `--mount type=image,image-subpath=[subpath],...`\
        \ option to mount a specific path from the image. [docker/cli#5755](https://redirect.github.com/docker/cli/pull/5755)\n\
        -   `docker images --tree` now shows metadata badges. [docker/cli#5744](https://redirect.github.com/docker/cli/pull/5744)\n\
        -   `docker load`, `docker save`, and `docker history` now support a `--platform`\
        \ flag allowing you to choose a specific platform for single-platform operations\
        \ on multi-platform images. [docker/cli#5331](https://redirect.github.com/docker/cli/pull/5331)\n\
        -   Add `OOMScoreAdj` to `docker service create` and `docker stack`. [docker/cli#5145](https://redirect.github.com/docker/cli/pull/5145)\n\
        -   `docker buildx prune` now supports `reserved-space`, `max-used-space`,\
        \ `min-free-space` and `keep-bytes` filters. [moby/moby#48720](https://redirect.github.com/moby/moby/pull/48720)\n\
        -   Windows: Add support for running containerd as a child process of the\
        \ daemon, instead of using a system-installed containerd. [moby/moby#47955](https://redirect.github.com/moby/moby/pull/47955)\n\
        \n#### Networking\n\n-   The `docker-proxy` binary has been updated, older\
        \ versions will not work with the updated `dockerd`. [moby/moby#48132](https://redirect.github.com/moby/moby/pull/48132)\n\
        \    -   Close a window in which the userland proxy (`docker-proxy`) could\
        \ accept TCP connections, that would then fail after `iptables` NAT rules\
        \ were set up.\n    -   The executable `rootlesskit-docker-proxy` is no longer\
        \ used, it has been removed from the build and distribution.\n-   DNS nameservers\
        \ read from the host's `/etc/resolv.conf` are now always accessed from the\
        \ host's network namespace. [moby/moby#48290](https://redirect.github.com/moby/moby/pull/48290)\n\
        \    -   When the host's `/etc/resolv.conf` contains no nameservers and there\
        \ are no `--dns` overrides, Google's DNS servers are no longer used, apart\
        \ from by the default bridge network and in build containers.\n-   Container\
        \ interfaces in bridge and macvlan networks now use randomly generated MAC\
        \ addresses. [moby/moby#48808](https://redirect.github.com/moby/moby/pull/48808)\n\
        \    -   Gratuitous ARP / Neighbour Advertisement messages will be sent when\
        \ the interfaces are started so that, when IP addresses are reused, they're\
        \ associated with the newly generated MAC address.\n    -   IPv6 addresses\
        \ in the default bridge network are now IPAM-assigned, rather than being derived\
        \ from the MAC address.\n-   The deprecated OCI `prestart` hook is now only\
        \ used by build containers. For other containers, network interfaces are added\
        \ to the network namespace after task creation is complete, before the container\
        \ task is started. [moby/moby#47406](https://redirect.github.com/moby/moby/pull/47406)\n\
        -   Add a new `gw-priority` option to `docker run`, `docker container create`,\
        \ and `docker network connect`. This option will be used by the Engine to\
        \ determine which network provides the default gateway for a container. On\
        \ `docker run`, this option is only available through the extended `--network`\
        \ syntax. [docker/cli#5664](https://redirect.github.com/docker/cli/pull/5664)\n\
        -   Add a new netlabel `com.docker.network.endpoint.ifname` to customize the\
        \ interface name used when connecting a container to a network. It's supported\
        \ by all built-in network drivers on Linux. [moby/moby#49155](https://redirect.github.com/moby/moby/pull/49155)\n\
        \    -   When a container is created with multiple networks specified, there's\
        \ no guarantee on the order networks will be connected to the container. So,\
        \ if a custom interface name uses the same prefix as the auto-generated names,\
        \ for example `eth`, the container might fail to start.\n    -   The recommended\
        \ practice is to use a different prefix, for example `en0`, or a numerical\
        \ suffix high enough to never collide, for example `eth100`.\n    -   This\
        \ label can be specified on `docker network connect` via the `--driver-opt`\
        \ flag, for example `docker network connect --driver-opt=com.docker.network.endpoint.ifname=foobar\
        \ \u2026`.\n    -   Or via the long-form `--network` flag on `docker run`,\
        \ for example `docker run --network=name=bridge,driver-opt=com.docker.network.endpoint.ifname=foobar\
        \ \u2026`\n-   If a custom network driver reports capability `GwAllocChecker`\
        \ then, before a network is created, it will get a `GwAllocCheckerRequest`\
        \ with the network's options. The custom driver may then reply that no gateway\
        \ IP address should be allocated. [moby/moby#49372](https://redirect.github.com/moby/moby/pull/49372)\n\
        \n#### Port publishing in bridge networks\n\n-   `dockerd` now requires `ipset`\
        \ support in the Linux kernel. [moby/moby#48596](https://redirect.github.com/moby/moby/pull/48596)\n\
        \    -   The `iptables` and `ip6tables` rules used to implement port publishing\
        \ and network isolation have been extensively modified. This enables some\
        \ of the following functional changes, and is a first step in refactoring\
        \ to enable native `nftables` support in a future release. [moby/moby#48815](https://redirect.github.com/moby/moby/issues/48815)\n\
        \    -   If it becomes necessary to downgrade to an earlier version of the\
        \ daemon, some manual cleanup of the new rules will be necessary. The simplest\
        \ and surest approach is to reboot the host, or use `iptables -F` and `ip6tables\
        \ -F` to flush all existing `iptables` rules from the `filter` table before\
        \ starting the older version of the daemon. When that is not possible, run\
        \ the following commands as root:\n        -   `iptables -D FORWARD -m set\
        \ --match-set docker-ext-bridges-v4 dst -m conntrack --ctstate RELATED,ESTABLISHED\
        \ -j ACCEPT; ip6tables -D FORWARD -m set --match-set docker-ext-bridges-v6\
        \ dst -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT`\n        -   `iptables\
        \ -D FORWARD -m set --match-set docker-ext-bridges-v4 dst -j DOCKER; ip6tables\
        \ -D FORWARD -m set --match-set docker-ext-bridges-v6 dst -j DOCKER`\n   \
        \     -   If you were previously running with the iptables filter-FORWARD\
        \ policy set to `ACCEPT` and need to restore access to unpublished ports,\
        \ also delete per-bridge-network rules from the `DOCKER` chains. For example,\
        \ `iptables -D DOCKER ! -i docker0 -o docker0 -j DROP`.\n-   Fix a security\
        \ issue that was allowing remote hosts to connect directly to a container\
        \ on its published ports. [moby/moby#49325](https://redirect.github.com/moby/moby/pull/49325)\n\
        -   Fix a security issue that was allowing neighbor hosts to connect to ports\
        \ mapped on a loopback address. [moby/moby#49325](https://redirect.github.com/moby/moby/pull/49325)\n\
        -   Fix an issue that prevented port publishing to link-local addresses. [moby/moby#48570](https://redirect.github.com/moby/moby/pull/48570)\n\
        -   UDP ports published by a container are now reliably accessible by containers\
        \ on other networks, via the host's public IP address. [moby/moby#48571](https://redirect.github.com/moby/moby/pull/48571)\n\
        -   Docker will now only set the `ip6tables` policy for the `FORWARD` chain\
        \ in the `filter` table to `DROP` if it enables IP forwarding on the host\
        \ itself (sysctls `net.ipv6.conf.all.forwarding` and `net.ipv6.conf.default.forwarding`).\
        \ This is now aligned with existing IPv4 behaviour. [moby/moby#48594](https://redirect.github.com/moby/moby/pull/48594)\n\
        \    -   If IPv6 forwarding is enabled on your host, but you were depending\
        \ on Docker to set the ip6tables filter-FORWARD policy to `DROP`, you may\
        \ need to update your host's configuration to make sure it is secure.\n- \
        \  Direct routed access to container ports that are not exposed using `p`/`-publish`\
        \ is now blocked in the `DOCKER` iptables chain. [moby/moby#48724](https://redirect.github.com/moby/moby/pull/48724)\n\
        \    -   If the default iptables filter-FORWARD policy was previously left\
        \ at `ACCEPT` on your host, and direct routed access to a container's unpublished\
        \ ports from a remote host is still required, options are:\n        -   Publish\
        \ the ports you need.\n        -   Use the new `gateway_mode_ipv[46]=nat-unprotected`,\
        \ described below.\n    -   Container ports published to host addresses will\
        \ continue to be accessible via those host addresses, using NAT or the userland\
        \ proxy.\n    -   Unpublished container ports continue to be directly accessible\
        \ from the Docker host via the container's IP address.\n-   Networks created\
        \ with `gateway_mode_ipv[46]=routed` are now accessible from other bridge\
        \ networks running on the same Docker host, as well as from outside the host.\
        \ [moby/moby#48596](https://redirect.github.com/moby/moby/pull/48596)\n- \
        \  Bridge driver options `com.docker.network.bridge.gateway_mode_ipv4` and\
        \ `com.docker.network.bridge.gateway_mode_ipv6` now accept mode `nat-unprotected`.\
        \ [moby/moby#48597](https://redirect.github.com/moby/moby/pull/48597)\n  \
        \  -   `nat-unprotected` is similar to the default `nat` mode, but no per\
        \ port/protocol rules are set up. This means any port on a container can be\
        \ accessed by direct-routing from a remote host.\n-   Bridge driver options\
        \ `com.docker.network.bridge.gateway_mode_ipv4` and `com.docker.network.bridge.gateway_mode_ipv6`\
        \ now accept mode `isolated`, when the network is also `internal`. [moby/moby#49262](https://redirect.github.com/moby/moby/pull/49262)\n\
        \    -   An address is normally assigned to the bridge device in an `internal`\
        \ network. So, processes on the Docker host can access the network, and containers\
        \ in the network can access host services listening on that bridge address\
        \ (including services listening on \"any\" host address, `0.0.0.0` or `::`).\n\
        \    -   An `internal` bridge network created with gateway mode `isolated`\
        \ does not have an address on the Docker host.\n-   When a port mapping includes\
        \ a host IP address or port number that cannot be used because NAT from the\
        \ host is disabled using `--gateway_mode_ipv[46]`, container creation will\
        \ no longer fail. The unused fields may be needed if the gateway endpoint\
        \ changes when networks are connected or disconnected. A message about the\
        \ unused fields will be logged. [moby/moby#48575](https://redirect.github.com/moby/moby/pull/48575)\n\
        -   Do not create iptables nat-POSTROUTING masquerade rules for a container's\
        \ own published ports, when the userland proxy is enabled. [moby/moby#48854](https://redirect.github.com/moby/moby/pull/48854)\n\
        \n#### IPv6\n\n-   Add `docker network create` option `--ipv4`. To disable\
        \ IPv4 address assignment for a network, use `docker network create --ipv4=false\
        \ [...]`. [docker/cli#5599](https://redirect.github.com/docker/cli/pull/5599)\n\
        -   Daemon option `--ipv6` (`\"ipv6\": true` in `daemon.json`) can now be\
        \ used without `fixed-cidr-v6`. [moby/moby#48319](https://redirect.github.com/moby/moby/pull/48319)\n\
        -   IPAM now handles subnets bigger than \"/64\". [moby/moby#49223](https://redirect.github.com/moby/moby/pull/49223)\n\
        -   Duplicate address detection (DAD) is now disabled for addresses assigned\
        \ to the bridges belonging to bridge networks. [moby/moby#48609](https://redirect.github.com/moby/moby/pull/48609)\n\
        -   Modifications to `host-gateway`, for compatibility with IPv6-only networks.\
        \ [moby/moby#48807](https://redirect.github.com/moby/moby/pull/48807)\n  \
        \  -   When special value `host-gateway` is used in an `--add-host` option\
        \ in place of an address, it's replaced by an address on the Docker host to\
        \ make it possible to refer to the host by name. The address used belongs\
        \ to the default bridge (normally `docker0`). Until now it's always been an\
        \ IPv4 address, because all containers on bridge networks had IPv4 addresses.\n\
        \    -   Now, if IPv6 is enabled on the default bridge network, `/etc/hosts`\
        \ entries will be created for IPv4 and IPv6 addresses. So, a container that's\
        \ only connected to IPv6-only networks can access the host by name.\n    -\
        \   The `--host-gateway-ip` option overrides the address used to replace `host-gateway`.\
        \ Two of these options are now allowed on the command line, for one IPv4 gateway\
        \ and one IPv6.\n    -   In the `daemon.json` file, to provide two addresses,\
        \ use `\"host-gateway-ips\"`. For example, `\"host-gateway-ips\": [\"192.0.2.1\"\
        , \"2001:db8::1111\"]`.\n\n#### Bug fixes and enhancements\n\n-   Add IPv6\
        \ loopback address as an insecure registry by default. [moby/moby#48540](https://redirect.github.com/moby/moby/pull/48540)\n\
        -   Add support for Cobra-generated completion scripts for `dockerd`. [moby/moby#49339](https://redirect.github.com/moby/moby/pull/49339)\n\
        -   Fix DNS queries failing when containers are launched via `systemd` auto-start\
        \ on boot [moby/moby#48812](https://redirect.github.com/moby/moby/pull/48812)\n\
        -   Fix Docker Swarm mode ignoring `volume.subpath` [docker/cli#5833](https://redirect.github.com/docker/cli/pull/5833)\n\
        -   Fix `docker export` continuing the export after the operation is canceled.\
        \ [moby/moby#49265](https://redirect.github.com/moby/moby/pull/49265)\n- \
        \  Fix `docker export` not releasing the container's writable layer after\
        \ a failure. [moby/moby#48517](https://redirect.github.com/moby/moby/pull/48517)\n\
        -   Fix `docker images --tree` unnecessary truncating long image names when\
        \ multiple names are available [docker/cli#5757](https://redirect.github.com/docker/cli/pull/5757)\n\
        -   Fix a bug where a container with a name matching another container's ID\
        \ is not restored on daemon startup. [moby/moby#48669](https://redirect.github.com/moby/moby/pull/48669)\n\
        -   Fix an issue preventing some IPv6 addresses shown by `docker ps` to be\
        \ properly bracketed [docker/cli#5468](https://redirect.github.com/docker/cli/pull/5468)\n\
        -   Fix bug preventing image pulls from being cancelled during `docker run`.\
        \ [docker/cli#5645](https://redirect.github.com/docker/cli/pull/5645)\n- \
        \  Fix error-handling when running the daemon as a Windows service to prevent\
        \ unclean exits. [moby/moby#48518](https://redirect.github.com/moby/moby/pull/48518)\n\
        -   Fix issue causing output of `docker run` to be inconsistent when using\
        \ `--attach stdout` or `--attach stderr` versus `stdin`.  `docker run --attach\
        \ stdin` now exits if the container exits. [docker/cli#5662](https://redirect.github.com/docker/cli/pull/5662)\n\
        -   Fix rootless Docker setup with `subid` backed by NSS modules. [moby/moby#49036](https://redirect.github.com/moby/moby/pull/49036)\n\
        -   Generated completion scripts from the CLI now show descriptions next to\
        \ each command/flag suggestion. [docker/cli#5756](https://redirect.github.com/docker/cli/pull/5756)\n\
        -   IPv6 addresses shown by `docker ps` in port bindings are now bracketed\
        \ [docker/cli#5363](https://redirect.github.com/docker/cli/pull/5363)\n- \
        \  Implement the ports validation method for Compose [docker/cli#5524](https://redirect.github.com/docker/cli/pull/5524)\n\
        -   Improve error-output for invalid flags on the command line. [docker/cli#5233](https://redirect.github.com/docker/cli/pull/5233)\n\
        -   Improve errors when failing to start a container using anther container's\
        \ network namespace. [moby/moby#49367](https://redirect.github.com/moby/moby/pull/49367)\n\
        -   Improve handling of invalid API errors that could result in an empty error\
        \ message being shown. [moby/moby#49373](https://redirect.github.com/moby/moby/pull/49373)\n\
        -   Improve output and consistency for unknown (sub)commands and invalid arguments\
        \ [docker/cli#5234](https://redirect.github.com/docker/cli/pull/5234)\n- \
        \  Improve validation of `exec-opts` in daemon configuration. [moby/moby#48979](https://redirect.github.com/moby/moby/pull/48979)\n\
        -   Update the handling of the `--gpus=0` flag to be consistent with the NVIDIA\
        \ Container Runtime. [moby/moby#48482](https://redirect.github.com/moby/moby/pull/48482)\n\
        -   `client.ContainerCreate` now normalizes `CapAdd` and `CapDrop` fields\
        \ in `HostConfig` to their canonical form. [moby/moby#48551](https://redirect.github.com/moby/moby/pull/48551)\n\
        -   `docker image save` now produces stable timestamps. [moby/moby#48611](https://redirect.github.com/moby/moby/pull/48611)\n\
        -   `docker inspect` now lets you inspect Swarm configs [docker/cli#5573](https://redirect.github.com/docker/cli/pull/5573)\n\
        -   containerd image store: Add support for `Extracting` layer status in `docker\
        \ pull`. [moby/moby#49064](https://redirect.github.com/moby/moby/pull/49064)\n\
        -   containerd image store: Fix `commit`, `import`, and `build` not preserving\
        \ a replaced image as a dangling image. [moby/moby#48316](https://redirect.github.com/moby/moby/pull/48316)\n\
        -   containerd image store: Make `docker load --platform` return an error\
        \ when the requested platform isn't loaded. [moby/moby#48718](https://redirect.github.com/moby/moby/pull/48718)\n\
        -   Fix validation of `--link` option. [docker/cli#5739](https://redirect.github.com/docker/cli/pull/5739)\n\
        -   Add validation of network-diagnostic-port daemon configuration option.\
        \ [moby/moby#49305](https://redirect.github.com/moby/moby/pull/49305)\n- \
        \  Unless explicitly configured, an IP address is no longer reserved for a\
        \ gateway in cases where it is not required. Namely, \u201Cinternal\u201D\
        \ bridge networks with option `com.docker.network.bridge.inhibit_ipv4`, `ipvlan`\
        \ or `macvlan` networks with no parent interface, and L3 IPvlan modes. [moby/moby#49261](https://redirect.github.com/moby/moby/pull/49261)\n\
        -   If a custom network driver reports capability `GwAllocChecker` then, before\
        \ a network is created, it will get a `GwAllocCheckerRequest` with the network's\
        \ options. The custom driver may then reply that no gateway IP address should\
        \ be allocated. [moby/moby#49372](https://redirect.github.com/moby/moby/pull/49372)\n\
        -   Fixed an issue that meant a container could not be attached to an L3 IPvlan\
        \ at the same time as other network types. [moby/moby#49130](https://redirect.github.com/moby/moby/pull/49130)\n\
        -   Remove the correct `/etc/hosts` entries when disconnecting a container\
        \ from a network. [moby/moby#48857](https://redirect.github.com/moby/moby/pull/48857)\n\
        -   Fix duplicate network disconnect events. [moby/moby#48800](https://redirect.github.com/moby/moby/pull/48800)\n\
        -   Resolve issues related to changing `fixed-cidr` for `docker0`, and inferring\
        \ configuration from a user-managed default bridge (`--bridge`). [moby/moby#48319](https://redirect.github.com/moby/moby/pull/48319)\n\
        -   Remove feature flag `windows-dns-proxy`, introduced in release 26.1.0\
        \ to control forwarding to external DNS resolvers from Windows containers,\
        \ to make `nslookup` work. It was enabled by default in release 27.0.0. [moby/moby#48738](https://redirect.github.com/moby/moby/pull/48738)\n\
        -   Remove an `iptables` mangle rule for checksumming SCTP. The rule can be\
        \ re-enabled by setting `DOCKER_IPTABLES_SCTP_CHECKSUM=1` in the daemon's\
        \ environment. This override will be removed in a future release. [moby/moby#48149](https://redirect.github.com/moby/moby/pull/48149)\n\
        -   Faster connection to bridge networks, in most cases. [moby/moby#49302](https://redirect.github.com/moby/moby/pull/49302)\n\
        \n#### Packaging updates\n\n-   Update Go runtime to [1.23.6](https://go.dev/doc/devel/release#go1.23.6).\
        \ [docker/cli#5795](https://redirect.github.com/docker/cli/pull/5795), [moby/moby#49393](https://redirect.github.com/moby/moby/pull/49393),\
        \ [docker/docker-ce-packaging#1161](https://redirect.github.com/docker/docker-ce-packaging/pull/1161)\n\
        -   Update `runc` to [v1.2.5](https://redirect.github.com/opencontainers/runc/releases/tag/v1.2.5)\
        \ (static binaries only). [moby/moby#49464](https://redirect.github.com/moby/moby/pull/49464)\n\
        -   Update containerd to [v1.7.25](https://redirect.github.com/containerd/containerd/releases/tag/v1.7.25).\
        \ [moby/moby#49252](https://redirect.github.com/moby/moby/pull/49252)\n- \
        \  Update BuildKit to [v0.20.0](https://redirect.github.com/moby/buildkit/releases/tag/v0.20.0).\
        \ [moby/moby#49495](https://redirect.github.com/moby/moby/pull/49495)\n- \
        \  Update Buildx to [v0.21.0](https://redirect.github.com/docker/buildx/releases/tag/v0.21.0).\
        \ [docker/docker-ce-packaging#1166](https://redirect.github.com/docker/docker-ce-packaging/pull/1166)\n\
        -   Update Compose to [v2.32.4](https://redirect.github.com/docker/compose/releases/tag/v2.32.3).\
        \ [docker/docker-ce-packaging#1143](https://redirect.github.com/docker/docker-ce-packaging/pull/1143)\n\
        -   The canonical source for the `dockerd(8)` man page has been moved back\
        \ to the `moby/moby` repository itself. [moby/moby#48298](https://redirect.github.com/moby/moby/pull/48298)\n\
        \n#### Go SDK\n\n-   Improve validation of empty object IDs. The client now\
        \ returns an \"Invalid Parameter\" error when trying to use an empty ID or\
        \ name. This changes the error returned by some \"Inspect\" functions from\
        \ a \"Not found\" error to an \"Invalid Parameter\". [moby/moby#49381](https://redirect.github.com/moby/moby/pull/49381)\n\
        -   `Client.ImageBuild()` now omits default values from the API request's\
        \ query string. [moby/moby#48651](https://redirect.github.com/moby/moby/pull/48651)\n\
        -   `api/types/container`: Merge `Stats` and `StatsResponse` [moby/moby#49287](https://redirect.github.com/moby/moby/pull/49287)\n\
        -   `client.WithVersion`: Strip v-prefix when setting API version [moby/moby#49352](https://redirect.github.com/moby/moby/pull/49352)\n\
        -   `client`: Add `WithTraceOptions` allowing to specify custom OTe1 trace\
        \ options. [moby/moby#49415](https://redirect.github.com/moby/moby/pull/49415)\n\
        -   `client`: Add `HijackDialer` interface. [moby/moby#49388](https://redirect.github.com/moby/moby/pull/49388)\n\
        -   `client`: Add `SwarmManagementAPIClient` interface to describe all API\
        \ client methods related to Swarm-specific objects. [moby/moby#49388](https://redirect.github.com/moby/moby/pull/49388)\n\
        -   `client`: Add `WithTraceOptions` allowing to specify custom OTel trace\
        \ options. [moby/moby#49415](https://redirect.github.com/moby/moby/pull/49415)\n\
        -   `client`: `ImageHistory`, `ImageLoad` and `ImageSave` now use variadic\
        \ functional options [moby/moby#49466](https://redirect.github.com/moby/moby/pull/49466)\n\
        -   `pkg/containerfs`: Move to internal [moby/moby#48097](https://redirect.github.com/moby/moby/pull/48097)\n\
        -   `pkg/reexec`: Can now be used on platforms other than Linux, Windows,\
        \ macOS and FreeBSD [moby/moby#49118](https://redirect.github.com/moby/moby/pull/49118)\n\
        -   `api/types/container`: introduce `CommitResponse` type. This is currently\
        \ an alias for `IDResponse`, but may become a distinct type in a future release.\
        \ [moby/moby#49444](https://redirect.github.com/moby/moby/pull/49444)\n- \
        \  `api/types/container`: introduce `ExecCreateResponse` type. This is currently\
        \ an alias for `IDResponse`, but may become a distinct type in a future release.\
        \ [moby/moby#49444](https://redirect.github.com/moby/moby/pull/49444)\n\n\
        #### API\n\n-   Update API version to [v1.48](https://docs.docker.com/engine/api/v1.48/)\
        \ [moby/moby#48476](https://redirect.github.com/moby/moby/pull/48476)\n- \
        \  `GET /images/{name}/json` response now returns the `Manifests` field containing\
        \ information about the sub-manifests contained in the image index. This includes\
        \ things like platform-specific manifests and build attestations. [moby/moby#48264](https://redirect.github.com/moby/moby/pull/48264)\n\
        -   `POST /containers/create` now supports `Mount` of type `image` for mounting\
        \ an image inside a container. [moby/moby#48798](https://redirect.github.com/moby/moby/pull/48798)\n\
        -   `GET /images/{name}/history` now supports a `platform` parameter (JSON\
        \ encoded OCI Platform type) that lets you specify a platform to show the\
        \ history of. [moby/moby#48295](https://redirect.github.com/moby/moby/pull/48295)\n\
        -   `POST /images/{name}/load` and `GET /images/{name}/get` now supports a\
        \ `platform` parameter (JSON encoded OCI Platform type) that lets you specify\
        \ a platform to load/save. Not passing this parameter results in loading/saving\
        \ the full multi-platform image. [moby/moby#48295](https://redirect.github.com/moby/moby/pull/48295)\n\
        -   Improve errors for invalid width/height on container resize and exec resize\
        \ [moby/moby#48679](https://redirect.github.com/moby/moby/pull/48679)\n- \
        \  The `POST /containers/create` endpoint now includes a warning in the response\
        \ when setting the container-wide `VolumeDriver` option in combination with\
        \ volumes defined through `Mounts` because the `VolumeDriver` option has no\
        \ effect on those volumes. This warning was previously generated by the CLI.\
        \ [moby/moby#48789](https://redirect.github.com/moby/moby/pull/48789)\n- \
        \  containerd image store: `GET /images/json` and `GET /images/{name}/json`\
        \ responses now includes `Descriptor` field, which contains an OCI descriptor\
        \ of the image target. The new field is only populated if the daemon provides\
        \ a multi-platform image store. [moby/moby#48894](https://redirect.github.com/moby/moby/pull/48894)\n\
        -   containerd image store: `GET /containers/{name}/json` now returns an `ImageManifestDescriptor`\
        \ field containing the OCI descriptor of the platform-specific image manifest\
        \ of the image that was used to create the container. [moby/moby#48855](https://redirect.github.com/moby/moby/pull/48855)\n\
        -   Add debug endpoints (`GET /debug/vars`, `GET /debug/pprof/`, `GET /debug/pprof/cmdline`,\
        \ `GET /debug/pprof/profile`, `GET /debug/pprof/symbol`, `GET /debug/pprof/trace`,\
        \ `GET /debug/pprof/{name}`) are now also accessible through the versioned-API\
        \ paths (`/v<API-version>/<endpoint>`). [moby/moby#49051](https://redirect.github.com/moby/moby/pull/49051)\n\
        -   Fix API returning a `500` status code instead of `400` for validation\
        \ errors. [moby/moby#49217](https://redirect.github.com/moby/moby/pull/49217)\n\
        -   Fix status codes for archive endpoints `HEAD /containers/{name:.*}/archive`,\
        \ `GET /containers/{name:.*}/archive`, `PUT /containers/{name:.*}/archive`\
        \ returning a `500` status instead of a `400` status. [moby/moby#49219](https://redirect.github.com/moby/moby/pull/49219)\n\
        -   `POST /containers/create` now accepts a `writable-cgroups=true` option\
        \ in `HostConfig.SecurityOpt` to mount the container's cgroups writable. This\
        \ provides a more granular approach than `HostConfig.Privileged`. [moby/moby#48828](https://redirect.github.com/moby/moby/pull/48828)\n\
        -   `POST /build/prune` renames `keep-bytes` to `reserved-space` and now supports\
        \ additional prune parameters `max-used-space` and `min-free-space`. [moby/moby#48720](https://redirect.github.com/moby/moby/pull/48720)\n\
        -   `POST /networks/create` now has an `EnableIPv4` field. Setting it to `false`\
        \ disables IPv4 IPAM for the network. [moby/moby#48271](https://redirect.github.com/moby/moby/pull/48271)\n\
        \    -   `GET /networks/{id}` now returns an `EnableIPv4` field showing whether\
        \ the network has IPv4 IPAM enabled. [moby/moby#48271](https://redirect.github.com/moby/moby/pull/48271)\n\
        \    -   User-defined bridge networks require either IPv4 or IPv6 address\
        \ assignment to be enabled. IPv4 cannot be disabled for the default bridge\
        \ network (`docker0`). [moby/moby#48323](https://redirect.github.com/moby/moby/pull/48323)\n\
        \    -   `macvlan` and `ipvlan` networks can be created with address assignment\
        \ disabled for IPv4, IPv6, or both address families. [moby/moby#48299](https://redirect.github.com/moby/moby/pull/48299)\n\
        \    -   IPv4 cannot be disabled for Windows or Swarm networks. [moby/moby#48278](https://redirect.github.com/moby/moby/pull/48278)\n\
        -   Add a way to specify which network should provide the default gateway\
        \ for a container. [moby/moby#48936](https://redirect.github.com/moby/moby/pull/48936)\n\
        \    -   `POST /networks/{id}/connect` and `POST /containers/create` now accept\
        \ a `GwPriority` field in `EndpointsConfig`. This value is used to determine\
        \ which network endpoint provides the default gateway for the container. The\
        \ endpoint with the highest priority is selected. If multiple endpoints have\
        \ the same priority, endpoints are sorted lexicographically by their network\
        \ name, and the one that sorts first is picked. [moby/moby#48746](https://redirect.github.com/moby/moby/pull/48746)\n\
        \    -   `GET /containers/json` now returns a `GwPriority` field in `NetworkSettings`\
        \ for each network endpoint. The `GwPriority` field is used by the CLI\u2019\
        s new `gw-priority` option for `docker run` and `docker network connect`.\
        \ [moby/moby#48746](https://redirect.github.com/moby/moby/pull/48746)\n- \
        \  Settings for `eth0` in `--sysctl` options are no longer automatically migrated\
        \ to the network endpoint. [moby/moby#48746](https://redirect.github.com/moby/moby/pull/48746)\n\
        \    -   For example, in the Docker CLI, `docker run --network mynet --sysctl\
        \ net.ipv4.conf.eth0.log_martians=1 ...` is rejected. Instead, you must use\
        \ `docker run --network name=mynet,driver-opt=com.docker.network.endpoint.sysctls=net.ipv4.conf.IFNAME.log_martians=1\
        \ ...`\n-   `GET /containers/json` now returns an `ImageManifestDescriptor`\
        \ field matching the same field in `/containers/{name}/json`. This field is\
        \ only populated if the daemon provides a multi-platform image store. [moby/moby#49407](https://redirect.github.com/moby/moby/pull/49407)\n\
        \n#### Removed\n\n-   The Fluent logger option `fluentd-async-connect` has\
        \ been deprecated in v20.10 and is now removed. [moby/moby#46114](https://redirect.github.com/moby/moby/pull/46114)\n\
        -   The `--time` option on `docker stop` and `docker restart` is deprecated\
        \ and renamed to `--timeout`. [docker/cli#5485](https://redirect.github.com/docker/cli/pull/5485)\n\
        -   Go-SDK: `pkg/ioutils`: Remove `NewReaderErrWrapper` as it was never used.\
        \ [moby/moby#49258](https://redirect.github.com/moby/moby/pull/49258)\n- \
        \  Go-SDK: `pkg/ioutils`: Remove deprecated `BytesPipe`, `NewBytesPipe`, `ErrClosed`,\
        \ `WriteCounter`, `NewWriteCounter`, `NewReaderErrWrapper`, `NopFlusher`.\
        \ [moby/moby#49245](https://redirect.github.com/moby/moby/pull/49245)\n- \
        \  Go-SDK: `pkg/ioutils`: Remove deprecated `NopWriter` and `NopWriteCloser`.\
        \ [moby/moby#49256](https://redirect.github.com/moby/moby/pull/49256)\n- \
        \  Go-SDK: `pkg/sysinfo`: Remove deprecated NumCPU. [moby/moby#49242](https://redirect.github.com/moby/moby/pull/49242)\n\
        -   Go-SDK: Remove `pkg/broadcaster`, as it was only used internally [moby/moby#49172](https://redirect.github.com/moby/moby/pull/49172)\n\
        -   Go-SDK: Remove deprecated `cli.Errors` type [docker/cli#5549](https://redirect.github.com/docker/cli/pull/5549)\n\
        -   Remove `pkg/ioutils.ReadCloserWrapper`, as it was only used in tests.\
        \ [moby/moby#49237](https://redirect.github.com/moby/moby/pull/49237)\n- \
        \  Remove deprecated `api-cors-header` config parameter and the `dockerd`\
        \ `--api-cors-header` option [moby/moby#48209](https://redirect.github.com/moby/moby/pull/48209)\n\
        -   Remove deprecated `APIEndpoint.Version` field, `APIVersion` type, and\
        \ `APIVersion1` and `APIVersion2` consts. [moby/moby#49004](https://redirect.github.com/moby/moby/pull/49004)\n\
        -   Remove deprecated `api-cors-header` config parameter and the Docker daemon's\
        \ `--api-cors-header` option. [docker/cli#5437](https://redirect.github.com/docker/cli/pull/5437)\n\
        -   Remove deprecated `pkg/directory` package [moby/moby#48779](https://redirect.github.com/moby/moby/pull/48779)\n\
        -   Remove deprecated `pkg/dmsg.Dmesg()` [moby/moby#48109](https://redirect.github.com/moby/moby/pull/48109)\n\
        -   Remove deprecated image/spec package, which was moved to a separate module\
        \ (`github.com/moby/docker-image-spec`) [moby/moby#48460](https://redirect.github.com/moby/moby/pull/48460)\n\
        -   Remove migration code and errors for the deprecated `logentries` logging\
        \ driver. [moby/moby#48891](https://redirect.github.com/moby/moby/pull/48891)\n\
        -   Remove support for deprecated external graph-driver plugins. [moby/moby#48072](https://redirect.github.com/moby/moby/pull/48072)\n\
        -   `api/types`: Remove deprecated `container.ContainerNode` and `ContainerJSONBase.Node`\
        \ field. [moby/moby#48107](https://redirect.github.com/moby/moby/pull/48107)\n\
        -   `api/types`: Remove deprecated aliases: `ImagesPruneReport`, `VolumesPruneReport`,\
        \ `NetworkCreateRequest`, `NetworkCreate`, `NetworkListOptions`, `NetworkCreateResponse`,\
        \ `NetworkInspectOptions`, `NetworkConnect`, `NetworkDisconnect`, `EndpointResource`,\
        \ `NetworkResource`, `NetworksPruneReport`, `ExecConfig`, `ExecStartCheck`,\
        \ `ContainerExecInspect`, `ContainersPruneReport`, `ContainerPathStat`, `CopyToContainerOptions`,\
        \ `ContainerStats`, `ImageSearchOptions`, `ImageImportSource`, `ImageLoadResponse`,\
        \ `ContainerNode`. [moby/moby#48107](https://redirect.github.com/moby/moby/pull/48107)\n\
        -   `libnetwork/iptables`: Remove deprecated `IPV`, `Iptables`, `IP6Tables`\
        \ and `Passthrough()`. [moby/moby#49121](https://redirect.github.com/moby/moby/pull/49121)\n\
        -   `pkg/archive`: Remove deprecated `CanonicalTarNameForPath`, `NewTempArchive`,\
        \ `TempArchive` [moby/moby#48708](https://redirect.github.com/moby/moby/pull/48708)\n\
        -   `pkg/fileutils`: Remove deprecated `GetTotalUsedFds` [moby/moby#49210](https://redirect.github.com/moby/moby/pull/49210)\n\
        -   `pkg/ioutils`: Remove `OnEOFReader`, which was only used internally [moby/moby#49170](https://redirect.github.com/moby/moby/pull/49170)\n\
        -   `pkg/longpath`: Remove deprecated `Prefix` constant. [moby/moby#48779](https://redirect.github.com/moby/moby/pull/48779)\n\
        -   `pkg/stringid`: Remove deprecated `IsShortID` and  `ValidateID` functions\
        \ [moby/moby#48705](https://redirect.github.com/moby/moby/pull/48705)\n- \
        \  `runconfig/opts`: Remove deprecated `ConvertKVStringsToMap` [moby/moby#48102](https://redirect.github.com/moby/moby/pull/48102)\n\
        -   `runconfig`: Remove deprecated `ContainerConfigWrapper`, `SetDefaultNetModeIfBlank`,\
        \ `DefaultDaemonNetworkMode`, `IsPreDefinedNetwork` [moby/moby#48102](https://redirect.github.com/moby/moby/pull/48102)\n\
        -   `container`: Remove deprecated `ErrNameReserved`, `ErrNameNotReserved`.\
        \ [moby/moby#48728](https://redirect.github.com/moby/moby/pull/48728)\n- \
        \  Remove `Daemon.ContainerInspectCurrent()` method and change `Daemon.ContainerInspect()`\
        \ signature to accept a `backend.ContainerInspectOptions` struct [moby/moby#48672](https://redirect.github.com/moby/moby/pull/48672)\n\
        -   Remove deprecated `Daemon.Exists()` and `Daemon.IsPaused()` methods. [moby/moby#48723](https://redirect.github.com/moby/moby/pull/48723)\n\
        \n#### Deprecations\n\n-   API: The `BridgeNfIptables` and `BridgeNfIp6tables`\
        \ fields in the `GET /info` response are now always be `false` and will be\
        \ omitted in API v1.49. The netfilter module is now loaded on-demand, and\
        \ no longer during daemon startup, making these fields obsolete. [moby/moby#49114](https://redirect.github.com/moby/moby/pull/49114)\n\
        -   API: The `error` and `progress` fields in streaming responses for endpoints\
        \ that return a JSON progress response, such as `POST /images/create`, `POST\
        \ /images/{name}/push`, and `POST /build` are deprecated.  [moby/moby#49447](https://redirect.github.com/moby/moby/pull/49447)\n\
        \    -   Users should use the information in the `errorDetail` and `progressDetail`\
        \ fields instead.\n    -   These fields were marked deprecated in API v1.4\
        \ (docker v0.6.0) and API v1.8 (docker v0.7.1) respectively, but still returned.\n\
        \    -   These fields will be left empty or will be omitted in a future API\
        \ version.\n-   Deprecate `Daemon.Register()`. This function is unused and\
        \ will be removed in the next release. [moby/moby#48702](https://redirect.github.com/moby/moby/pull/48702)\n\
        -   Deprecate `client.ImageInspectWithRaw` function in favor of the new `client.ImageInspect`.\
        \ [moby/moby#48264](https://redirect.github.com/moby/moby/pull/48264)\n- \
        \  Deprecate `daemon/config.Config.ValidatePlatformConfig()`. This method\
        \ was used as helper for `config.Validate`, which should be used instead.\
        \ [moby/moby#48985](https://redirect.github.com/moby/moby/pull/48985)\n- \
        \  Deprecate `pkg/reexec`. This package is deprecated and moved to a separate\
        \ module. Use `github.com/moby/sys/reexec` instead. [moby/moby#49129](https://redirect.github.com/moby/moby/pull/49129)\n\
        -   Deprecate configuration for pushing non-distributable artifacts [docker/cli#5724](https://redirect.github.com/docker/cli/pull/5724)\n\
        -   Deprecate the `--allow-nondistributable-artifacts` daemon flag and corresponding\
        \ `allow-nondistributable-artifacts` field in `daemon.json`. Setting either\
        \ option will no longer take an effect, but a deprecation warning log is added.\
        \ [moby/moby#49065](https://redirect.github.com/moby/moby/pull/49065)\n- \
        \  Deprecate the `RegistryConfig.AllowNondistributableArtifactsCIDRs` and\
        \ `RegistryConfig.AllowNondistributableArtifactsHostnames` fields in the `GET\
        \ /info` API response. For API version v1.48 and older, the fields are still\
        \ included in the response, but always `null`. In API version v1.49 and later,\
        \ the field will be omitted entirely. [moby/moby#49065](https://redirect.github.com/moby/moby/pull/49065)\n\
        -   Go-SDK: Deprecate `registry.ServiceOptions.AllowNondistributableArtifacts`\
        \ field. [moby/moby#49065](https://redirect.github.com/moby/moby/pull/49065)\n\
        -   Go-SDK: The `BridgeNfIptables`, `BridgeNfIp6tables` fields in `api/types/system.Info`\
        \ and `BridgeNFCallIPTablesDisabled`, `BridgeNFCallIP6TablesDisabled` fields\
        \ in `pkg/sysinfo.SysInfo` are deprecated and will be removed in the next\
        \ release. [moby/moby#49114](https://redirect.github.com/moby/moby/pull/49114)\n\
        -   Go-SDK: `client`: Deprecate `CommonAPIClient` interface in favor of the\
        \ `APIClient` interface. The `CommonAPIClient` will be changed to an alias\
        \ for `APIClient` in the next release, and removed in the release after. [moby/moby#49388](https://redirect.github.com/moby/moby/pull/49388)\n\
        -   Go-SDK: `client`: Deprecate `ErrorConnectionFailed` helper. This function\
        \ was only used internally, and will be removed in the next release. [moby/moby#49389](https://redirect.github.com/moby/moby/pull/49389)\n\
        -   Go-SDK: `pkg/ioutils`: Deprecate `NewAtomicFileWriter`, `AtomicWriteFile`,\
        \ `AtomicWriteSet`, `NewAtomicWriteSet` in favor of `pkg/atomicwriter` equivalents.\
        \ [moby/moby#49171](https://redirect.github.com/moby/moby/pull/49171)\n- \
        \  Go-SDK: `pkg/sysinfo`: Deprecate `NumCPU`. This utility has the same behavior\
        \ as `runtime.NumCPU`. [moby/moby#49241](https://redirect.github.com/moby/moby/pull/49241)\n\
        -   Go-SDK: `pkg/system`: Deprecate `MkdirAll`. This function provided custom\
        \ handling for Windows GUID volume paths. Handling for such paths is now supported\
        \ by Go standard library in go1.22 and newer, and this function is now an\
        \ alias for `os.MkdirAll`, which should be used instead. This alias will be\
        \ removed in the next release. [moby/moby#49162](https://redirect.github.com/moby/moby/pull/49162)\n\
        -   Go-SDK: Deprecate `pkg/parsers.ParseKeyValueOpt`. [moby/moby#49177](https://redirect.github.com/moby/moby/pull/49177)\n\
        -   Go-SDK: Deprecate `pkg/parsers.ParseUintListMaximum`, `pkg/parsers.ParseUintList`.\
        \ These utilities were only used internally and will be removed in the next\
        \ release. [moby/moby#49222](https://redirect.github.com/moby/moby/pull/49222)\n\
        -   Go-SDK: Deprecate `api/type.IDResponse` in favor of `container.CommitResponse`\
        \ and `container.ExecCreateResponse`, which are currently an alias, but may\
        \ become distinct types in a future release. This type will be removed in\
        \ the next release. [moby/moby#49446](https://redirect.github.com/moby/moby/pull/49446)\n\
        -   Go-SDK: Deprecate `api/types/container.ContainerUpdateOKBody` in favor\
        \ of `UpdateResponse`. This type will be removed in the next release. [moby/moby#49442](https://redirect.github.com/moby/moby/pull/49442)\n\
        -   Go-SDK: Deprecate `api/types/container.ContainerTopOKBody` in favor of\
        \ `TopResponse`. This type will be removed in the next release. [moby/moby#49442](https://redirect.github.com/moby/moby/pull/49442)\n\
        -   Go-SDK: `pkg/jsonmessage`: Fix deprecation of `ProgressMessage`, `ErrorMessage`,\
        \ which were deprecated in Docker v0.6.0 and v0.7.1 respectively. [moby/moby#49447](https://redirect.github.com/moby/moby/pull/49447)\n\
        -   Move `GraphDriverData` from `api/types` to `api/types/storage`. The old\
        \ type is deprecated and will be removed in the next release. [moby/moby#48108](https://redirect.github.com/moby/moby/pull/48108)\n\
        -   Move `RequestPrivilegeFunc` from `api/types` to `api/types/registry`.\
        \ The old type is deprecated and will be removed in the next release. [moby/moby#48119](https://redirect.github.com/moby/moby/pull/48119)\n\
        -   Move from `api/types` to `api/types/container` - `NetworkSettings`, `NetworkSettingsBase`,\
        \ `DefaultNetworkSettings`, `SummaryNetworkSettings`, `Health`, `HealthcheckResult`,\
        \ `NoHealthcheck`, `Starting`, `Healthy`, and `Unhealthy` constants, `MountPoint`,\
        \ `Port`, `ContainerState`, `Container`, `ContainerJSONBase`, `ContainerJSON`,\
        \ `ContainerNode`. The old types are deprecated and will be removed in the\
        \ next release. [moby/moby#48108](https://redirect.github.com/moby/moby/pull/48108)\n\
        -   Move from `api/types` to `api/types/image` - `ImageInspect`, `RootFS`.\
        \ The old types are deprecated and will be removed in the next release. [moby/moby#48108](https://redirect.github.com/moby/moby/pull/48108)\n\
        -   `ContainerdCommit.Expected`, `RuncCommit.Expected`, and `InitCommit.Expected`\
        \ fields in the `GET /info` endpoint are deprecated and will be omitted in\
        \ API v1.49. [moby/moby#48478](https://redirect.github.com/moby/moby/pull/48478)\n\
        -   `api/types/registry`: Deprecate `ServiceConfig.AllowNondistributableArtifactsCIDRs`\
        \ and `ServiceConfig.AllowNondistributableArtifactsHostnames` fields. These\
        \ fields will be removed in the next release. [moby/moby#49065](https://redirect.github.com/moby/moby/pull/49065)\n\
        -   `api/types/system/Commit.Expected` field is deprecated and should no longer\
        \ be used. [moby/moby#48478](https://redirect.github.com/moby/moby/pull/48478)\n\
        -   `daemon/graphdriver`: Deprecate `GetDriver()` [moby/moby#48079](https://redirect.github.com/moby/moby/pull/48079)\n\
        -   `libnetwork/iptables`: Deprecate `Passthrough`. This function was only\
        \ used internally, and will be removed in the next release. [moby/moby#49115](https://redirect.github.com/moby/moby/pull/49115)\n\
        -   `pkg/directory.Size()` function is deprecated, an will be removed in the\
        \ next release. [moby/moby#48057](https://redirect.github.com/moby/moby/pull/48057)\n\
        -   `registry`: Deprecate `APIEndpoint.TrimHostName`; hostname is now trimmed\
        \ unconditionally for remote names. This field will be removed in the next\
        \ release. [moby/moby#49005](https://redirect.github.com/moby/moby/pull/49005)\n\
        -   `allow-nondistributable-artifacts` field in `daemon.json`. Setting either\
        \ option will no longer take effect, but a deprecation warning log is added\
        \ to raise awareness about the deprecation. This warning is planned to become\
        \ an error in the next release. [moby/moby#49065](https://redirect.github.com/moby/moby/pull/49065)\n\
        \n### [`v27.5.1`](https://redirect.github.com/moby/moby/releases/tag/v27.5.1)\n\
        \n[Compare Source](https://redirect.github.com/moby/moby/compare/v27.5.0...v27.5.1)\n\
        \n### 27.5.1\n\nFor a full list of pull requests and changes in this release,\
        \ refer to the relevant GitHub milestones:\n\n-   [docker/cli, 27.5.1 milestone](https://redirect.github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A27.5.1)\n\
        -   [moby/moby, 27.5.1 milestone](https://redirect.github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A27.5.1)\n\
        \n#### Bug fixes and enhancements\n\n-   Fixed an issue that could persistently\
        \ prevent daemon startup after failure to initialize the default bridge. [moby/moby#49307](https://redirect.github.com/moby/moby/pull/49307)\n\
        -   Add a `DOCKER_IGNORE_BR_NETFILTER_ERROR` environment variable. Setting\
        \ it to `1` allows running on hosts that cannot load `br_netfilter`. Some\
        \ things won't work, including disabling inter-container communication in\
        \ a bridge network. With the userland proxy disabled, it won't be possible\
        \ to ac\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 these\
        \ updates 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/release).\n\
        <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIyNy4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/release/pull/1807
      child_jobs: []
      commit_id: 8d8d5630dd3f704867cc2c7bf6548d7f61596c91
      event_id: 773735a0-13e9-11f0-8767-6b327a027272
      executor:
        hostname: 7d211f194f6a
        inventory_file: /var/lib/zuul/builds/7be916cd4e554850a3619588f8128cb3/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/7be916cd4e554850a3619588f8128cb3/work/logs
        result_data_file: /var/lib/zuul/builds/7be916cd4e554850a3619588f8128cb3/work/results.json
        src_root: /var/lib/zuul/builds/7be916cd4e554850a3619588f8128cb3/work/src
        work_root: /var/lib/zuul/builds/7be916cd4e554850a3619588f8128cb3/work
      items:
      - branch: main
        change: '1807'
        change_url: https://github.com/osism/release/pull/1807
        patchset: 8d8d5630dd3f704867cc2c7bf6548d7f61596c91
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/release
          name: osism/release
          short_name: release
          src_dir: src/github.com/osism/release
      job: yamllint
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBkZXBlbmRlbmN5IG1vYnkvbW9ieSB0byB2MjgKClRoaXMgUFIgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1cGRhdGVzOgoKfCBQYWNrYWdlIHwgVXBkYXRlIHwgQ2hhbmdlIHwKfC0tLXwtLS18LS0tfAp8IFttb2J5L21vYnldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkpIHwgbWFqb3IgfCBgNToyNy41LjFgIC0+IGB2MjguMC40YCB8CnwgW21vYnkvbW9ieV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieSkgfCBtYWpvciB8IGAyNy41LjFgIC0+IGAyOC4wLjRgIHwKCi0tLQoKIyMjIFJlbGVhc2UgTm90ZXMKCjxkZXRhaWxzPgo8c3VtbWFyeT5tb2J5L21vYnkgKG1vYnkvbW9ieSk8L3N1bW1hcnk+CgojIyMgW2B2MjguMC40YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9yZWxlYXNlcy90YWcvdjI4LjAuNCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9jb21wYXJlL3YyOC4wLjMuLi52MjguMC40KQoKIyMjIyAyOC4wLjQKCkZvciBhIGZ1bGwgbGlzdCBvZiBwdWxsIHJlcXVlc3RzIGFuZCBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgcmVmZXIgdG8gdGhlIHJlbGV2YW50IEdpdEh1YiBtaWxlc3RvbmVzOgoKLSAgIFtkb2NrZXIvY2xpLCAyOC4wLjQgbWlsZXN0b25lXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9pc3N1ZXM/cT1pcyUzQWNsb3NlZCttaWxlc3RvbmUlM0EyOC4wLjQpCi0gICBbbW9ieS9tb2J5LCAyOC4wLjQgbWlsZXN0b25lXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L2lzc3Vlcz9xPWlzJTNBY2xvc2VkK21pbGVzdG9uZSUzQTI4LjAuNCkKCiMjIyMjIEJ1ZyBmaXhlcyBhbmQgZW5oYW5jZW1lbnRzCgotICAgRml4IGEgcmVncmVzc2lvbiBjYXVzaW5nIGBkb2NrZXIgcHVsbC9wdXNoYCB0byBmYWlsIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBhIHByaXZhdGUgcmVwb3NpdG9yeS4gW2RvY2tlci9jbGkjNTk2NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81OTY0KQoKIyMjIFtgdjI4LjAuM2BdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcmVsZWFzZXMvdGFnL3YyOC4wLjMpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvY29tcGFyZS92MjguMC4yLi4udjI4LjAuMykKCiMjIyMgMjguMC4zCgpGb3IgYSBmdWxsIGxpc3Qgb2YgcHVsbCByZXF1ZXN0cyBhbmQgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHJlZmVyIHRvIHRoZSByZWxldmFudCBHaXRIdWIgbWlsZXN0b25lczoKCi0gICBbZG9ja2VyL2NsaSwgMjguMC4zIG1pbGVzdG9uZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvaXNzdWVzP3E9aXMlM0FjbG9zZWQrbWlsZXN0b25lJTNBMjguMC4zKQotICAgW21vYnkvbW9ieSwgMjguMC4zIG1pbGVzdG9uZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9pc3N1ZXM/cT1pcyUzQWNsb3NlZCttaWxlc3RvbmUlM0EyOC4wLjMpCgojIyMjIyBCdWcgZml4ZXMgYW5kIGVuaGFuY2VtZW50cwoKLSAgIEZpeCBgZG9ja2VyIHJ1bmAgdHJ1bmNhdGluZyB0aGUgYFNURE9VVGAvYFNUREVSUmAgcHJlbWF0dXJlbHkgd2hlbiB0aGUgY29udGFpbmVyIGV4aXRzIGJlZm9yZSB0aGUgZGF0YSBpcyBjb25zdW1lZC4gW2RvY2tlci9jbGkjNTk1N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81OTU3KQoKIyMjIyMgUGFja2FnaW5nIHVwZGF0ZXMKCi0gICBVcGRhdGUgQnVpbGRLaXQgdG8gW3YwLjIwLjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L2J1aWxka2l0L3JlbGVhc2VzL3RhZy92MC4yMC4yKS4gW21vYnkvbW9ieSM0OTY5OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5Njk4KQotICAgVXBkYXRlIGBydW5jYCB0byBbdjEuMi42XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYy9yZWxlYXNlcy90YWcvdjEuMi42KSAoc3RhdGljIHBhY2thZ2VzIG9ubHkpLiBbbW9ieS9tb2J5IzQ5NjgyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk2ODIpCi0gICBVcGRhdGUgY29udGFpbmVyZCB0byBbdjEuNy4yNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NvbnRhaW5lcmQvY29udGFpbmVyZC9yZWxlYXNlcy90YWcvdjEuNy4yNikuIFtkb2NrZXIvY29udGFpbmVyZC1wYWNrYWdpbmcjNDA5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NvbnRhaW5lcmQtcGFja2FnaW5nL3B1bGwvNDA5KQoKIyMjIFtgdjI4LjAuMmBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcmVsZWFzZXMvdGFnL3YyOC4wLjIpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvY29tcGFyZS92MjguMC4xLi4udjI4LjAuMikKCiMjIyMgMjguMC4yCgpGb3IgYSBmdWxsIGxpc3Qgb2YgcHVsbCByZXF1ZXN0cyBhbmQgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHJlZmVyIHRvIHRoZSByZWxldmFudCBHaXRIdWIgbWlsZXN0b25lczoKCi0gICBbZG9ja2VyL2NsaSwgMjguMC4yIG1pbGVzdG9uZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvaXNzdWVzP3E9aXMlM0FjbG9zZWQrbWlsZXN0b25lJTNBMjguMC4yKQotICAgW21vYnkvbW9ieSwgMjguMC4yIG1pbGVzdG9uZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9pc3N1ZXM/cT1pcyUzQWNsb3NlZCttaWxlc3RvbmUlM0EyOC4wLjIpCgojIyMjIyBCdWcgZml4ZXMgYW5kIGVuaGFuY2VtZW50cwoKLSAgIEZpeCBDTEktc3BlY2lmaWMgYXR0cmlidXRlcyAoYGRvY2tlci5jbGkuKmApIGJlaW5nIHVuaW50ZW50aW9uYWxseSBwYXNzZWQgdG8gZG93bnN0cmVhbSBPVGVsIHNlcnZpY2VzLiBbZG9ja2VyL2NsaSM1ODQyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU4NDIpCi0gICBGaXggYW4gaXNzdWUgd2hlcmUgdXNlci1zcGVjaWZpZWQgYE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFU2Agd2VyZSBiZWluZyBvdmVycmlkZGVuIGJ5IENMSSdzIGludGVybmFsIHRlbGVtZXRyeSBhdHRyaWJ1dGVzLiBUaGUgQ0xJIG5vdyBwcm9wZXJseSBtZXJnZXMgdXNlci1zcGVjaWZpZWQgYXR0cmlidXRlcyB3aXRoIGludGVybmFsIG9uZXMsIGFsbG93aW5nIGJvdGggdG8gY29leGlzdC4gW2RvY2tlci9jbGkjNTg0Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODQyKQotICAgRml4IGRhZW1vbiBmYWlsaW5nIHRvIHN0YXJ0IG9uIFdpbmRvd3Mgd2hlbiBhIGNvbnRhaW5lciBjcmVhdGVkIGJlZm9yZSB2MjguMC4wIHdhcyBwcmVzZW50LiBbbW9ieS9tb2J5IzQ5NjI2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk2MjYpCi0gICBGaXggcG9zc2libGUgZXJyb3Igb24gYGRvY2tlciBidWlsZHggcHJ1bmVgIHdpdGggdGhlIGAtLW1pbi1mcmVlLXNwYWNlYC4gW21vYnkvbW9ieSM0OTYyM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NjIzKQotICAgRml4IHNwdXJpb3VzIGBpbzogcmVhZC93cml0ZSBvbiBjbG9zZWQgcGlwZWAgZXJyb3IgaW4gdGhlIGRhZW1vbiBsb2cgd2hlbiBjbG9zaW5nIGNvbnRhaW5lci4gW21vYnkvbW9ieSM0OTU5MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTkwKQotICAgRml4IHRoZSBEb2NrZXIgZGFlbW9uIGZhaWxpbmcgdG9vIGVhcmx5IGlmIHRoZSBjb250YWluZXJkIHNvY2tldCBpc24ndCBpbW1lZGlhdGVseSBhdmFpbGFibGUuIFttb2J5L21vYnkjNDk2MDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTYwMykKLSAgIE1hc2sgTGludXggdGhlcm1hbCBpbnRlcnJ1cHQgaW5mbyBpbiBhIGNvbnRhaW5lcidzIGAvcHJvY2AgYW5kIGAvc3lzYCBieSBkZWZhdWx0LiBbbW9ieS9tb2J5IzQ5NTYwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1NjApCi0gICBVcGRhdGUgYGNvbnRyaWIvY2hlY2stY29uZmlnLnNoYCB0byBjaGVjayBmb3IgbW9yZSBrZXJuZWwgbW9kdWxlcyByZWxhdGVkIHRvIGlwdGFibGVzLiBbbW9ieS9tb2J5IzQ5NjIyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk2MjIpCi0gICBjb250YWluZXJkIGltYWdlIHN0b3JlOiBGaXggaW50ZWdlciBvdmVyZmxvdyBpbiBVc2VyIElEIGhhbmRsaW5nIHBhc3NlZCB2aWEgYC0tdXNlcmAuIFttb2J5L21vYnkjNDk2NTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTY1MikKLSAgIGNvbnRhaW5lcmQgaW1hZ2Ugc3RvcmU6IEZpeCBzcHVyaW91cyBgcmVmZXJlbmNlIGZvciB1bmtub3duIHR5cGU6IGFwcGxpY2F0aW9uL3ZuZC5pbi10b3RvK2pzb25gIHdhcm5pbmcgYmVpbmcgbG9nZ2VkIHRvIHRoZSBkYWVtb24ncyBsb2cuIFttb2J5L21vYnkjNDk2NTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTY1MikKLSAgIGNvbnRhaW5lcmQgaW1hZ2Ugc3RvcmU6IEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgYGRvY2tlciBwc2Agd2hlbiBydW5uaW5nIGxhcmdlIG51bWJlciBvZiBjb250YWluZXJzLiBbbW9ieS9tb2J5IzQ5MzY1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkzNjUpCgojIyMjIyBQYWNrYWdpbmcgdXBkYXRlcwoKLSAgIFVwZGF0ZSBCdWlsZEtpdCB0byBbdjAuMjAuMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvYnVpbGRraXQvcmVsZWFzZXMvdGFnL3YwLjIwLjEpLiBbbW9ieS9tb2J5IzQ5NTg3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1ODcpCi0gICBVcGRhdGUgQnVpbGR4IHRvIFt2MC4yMi4wXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2J1aWxkeC9yZWxlYXNlcy90YWcvdjAuMjIuMCkuIFtkb2NrZXIvZG9ja2VyLWNlLXBhY2thZ2luZyMxMTc1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcvcHVsbC8xMTc1KQotICAgVXBkYXRlIENvbXBvc2UgdG8gW3YyLjM0LjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY29tcG9zZS9yZWxlYXNlcy90YWcvdjIuMzQuMCkuIFtkb2NrZXIvZG9ja2VyLWNlLXBhY2thZ2luZyMxMTcyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcvcHVsbC8xMTcyKQotICAgVXBkYXRlIEdvIHJ1bnRpbWUgdG8gWzEuMjMuN10oaHR0cHM6Ly9nby5kZXYvZG9jL2RldmVsL3JlbGVhc2UjZ28xLjIzLjcpLiBbZG9ja2VyL2NsaSM1ODkwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU4OTApLCBbZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcjMTE3MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9kb2NrZXItY2UtcGFja2FnaW5nL3B1bGwvMTE3MSksIFttb2J5L21vYnkjNDk1ODBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTU4MCkKLSAgIFVwZGF0ZSBSb290bGVzc0tpdCB0byBbdjIuMy40XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcm9vdGxlc3MtY29udGFpbmVycy9yb290bGVzc2tpdC9yZWxlYXNlcy90YWcvdjIuMy40KS4gW21vYnkvbW9ieSM0OTYxNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NjE0KQotICAgVXBkYXRlIGNvbnRhaW5lcmQgKHN0YXRpYyBiaW5hcmllcyBvbmx5KSB0byBbdjEuNy4yN10oaHR0cHM6Ly93d3cuZ2l0aHViLmNvbS9jb250YWluZXJkL2NvbnRhaW5lcmQvcmVsZWFzZXMvdGFnL3YxLjcuMjcpLiBbbW9ieS9tb2J5IzQ5NjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk2NTYpCgojIyMjIyBOZXR3b3JraW5nCgotICAgQWRkIGVudmlyb25tZW50IHZhcmlhYmxlIGBET0NLRVJfSU5TRUNVUkVfTk9fSVBUQUJMRVNfUkFXPTFgIHRvIGFsbG93IERvY2tlciB0byBydW4gb24gc3lzdGVtcyB3aGVyZSB0aGUgTGludXgga2VybmVsIGNhbid0IHByb3ZpZGUgYENPTkZJR19JUF9ORl9SQVdgIHN1cHBvcnQuIFdoZW4gZW5hYmxlZCwgRG9ja2VyIHdpbGwgbm90IGNyZWF0ZSBydWxlcyBpbiB0aGUgaXB0YWJsZXMgYHJhd2AgdGFibGUuIFdhcm5pbmc6IFRoaXMgaXMgbm90IHJlY29tbWVuZGVkIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyBhcyBpdCByZWR1Y2VzIHNlY3VyaXR5IGJ5IGFsbG93aW5nIG90aGVyIGhvc3RzIG9uIHRoZSBsb2NhbCBuZXR3b3JrIHRvIHJvdXRlIHRvIHBvcnRzIHB1Ymxpc2hlZCB0byBob3N0IGFkZHJlc3NlcywgZXZlbiB3aGVuIHRoZXkgYXJlIHB1Ymxpc2hlZCB0byBgMTI3LjAuMC4xLmAgVGhpcyBvcHRpb24gYnlwYXNzZXMgc29tZSBvZiB0aGUgc2VjdXJpdHkgaGFyZGVuaW5nIGludHJvZHVjZWQgaW4gRG9ja2VyIEVuZ2luZSAyOC4wLjAuIFttb2J5L21vYnkjNDk2MjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTYyMSkKLSAgIEFsbG93IGNvbnRhaW5lciBzdGFydHVwIHdoZW4gYW4gZW5kcG9pbnQgaXMgYXR0YWNoZWQgdG8gYSBtYWN2bGFuIG5ldHdvcmsgd2hlcmUgdGhlIHBhcmVudCBpbnRlcmZhY2UgaXMgZG93bi4gW21vYnkvbW9ieSM0OTYzMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NjMwKQotICAgRG8gbm90IHNraXAgRE5BVCBmb3IgcGFja2V0cyBvcmlnaW5hdGluZyBpbiBhIGdhdGV3YXlfbW9kZT1yb3V0ZWQgbmV0d29yay4gW21vYnkvbW9ieSM0OTU3N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTc3KQotICAgRml4IGEgYnVnIGNhdXNpbmcgYGRvY2tlciBwc2AgdG8gaW5jb25zaXN0ZW50bHkgcmVwb3J0IGR1YWwtc3RhY2sgcG9ydCBtYXBwaW5ncy4gW21vYnkvbW9ieSM0OTY1N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NjU3KQotICAgRml4IGEgYnVnIHRoYXQgY291bGQgY2F1c2UgYGRvY2tlci1wcm94eWAgdG8gc3RvcCBmb3J3YXJkaW5nIFVEUCBkYXRhZ3JhbXMgdG8gY29udGFpbmVycy4gW21vYnkvbW9ieSM0OTY0OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NjQ5KQotICAgRml4IGEgYnVnIHRoYXQgd2FzIGNhdXNpbmcgYGRvY2tlci1wcm94eWAgdG8gY2xvc2UgVURQIGNvbm5lY3Rpb25zIHRvIGNvbnRhaW5lcnMgZWFnZXJseSBhbmQgcmVzdWx0aW5nIGluIHRoZSBzb3VyY2UgYWRkcmVzcyB0byBjaGFuZ2UgbmVlZGxlc3NseS4gW21vYnkvbW9ieSM0OTY0OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NjQ5KQoKIyMjIyMgR28gU0RLCgotICAgTW92ZSB2YXJpb3VzIHR5cGVzIGFuZCBjb25zdHMgZnJvbSBgY2xpLXBsdWdpbnMvbWFuYWdlcmAgdG8gYSBzZXBhcmF0ZSBwYWNrYWdlLiBbZG9ja2VyL2NsaSM1OTAyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU5MDIpCi0gICBVcGRhdGUgbWluaW11bSByZXF1aXJlZCBHbyB2ZXJzaW9uIHRvIGdvMS4yMy4gW21vYnkvbW9ieSM0OTU0MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTQxKQotICAgYGNsaS9jb21tYW5kYDogTW92ZSBgUHJldHR5UHJpbnRgIHV0aWxpdHkgdG8gYGNsaS9jb21tYW5kL2Zvcm1hdHRlcmAuIFtkb2NrZXIvY2xpIzU5MTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTkxNikKLSAgIHJ1bmNvbmZpZy9lcnJvcnM6IHNwbGl0IGBFcnJDb25mbGljdEhvc3ROZXR3b3JrYCBpbnRvIGBFcnJDb25mbGljdENvbm5lY3RUb0hvc3ROZXR3b3JrYCBhbmQgYEVyckNvbmZsaWN0RGlzY29ubmVjdEZyb21Ib3N0TmV0d29ya2AuIFttb2J5L21vYnkjNDk2MDVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTYwNSkKCiMjIyMjIERlcHJlY2F0aW9ucwoKLSAgIEdvLVNESzogRGVwcmVjYXRlIGBjbGktcGx1Z2lucy9tYW5hZ2VyLlJlc291cmNlQXR0cmlidXRlc0VudnZhcmAgY29uc3RhbnQuIEl0IHdhcyB1c2VkIGludGVybmFsbHksIGJ1dCBob2xkcyB0aGUgYE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFU2AgbmFtZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgT3BlblRlbGVtZXRyeSBzcGVjaWZpY2F0aW9uLiBVc2VycyBvZiB0aGlzIGNvbnN0YW50IHNob3VsZCBkZWZpbmUgdGhlaXIgb3duLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW2RvY2tlci9jbGkjNTg4MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODgxKQotICAgR28tU0RLOiBEZXByZWNhdGUgYG9wdHMuUG9ydE9wdGAsIGBvcHRzLkNvbmZpZ09wdGAgYW5kIGBvcHRzLlNlY3JldE9wdGAuIFRoZXNlIHR5cGVzIHdlcmUgbW92ZWQgdG8gdGhlIGBvcHRzL3N3YXJtb3B0c2AgcGFja2FnZS4gW2RvY2tlci9jbGkjNTkwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81OTA3KQotICAgR28tU0RLOiBSZW1vdmUgYHNlcnZpY2UvbG9nc2AgcGFja2FnZS4gW2RvY2tlci9jbGkjNTkxMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81OTEwKQotICAgR28tU0RLOiBgY2xpL2NvbW1hbmQvaW1hZ2VgOiBEZXByZWNhdGUgYFB1c2hUcnVzdGVkUmVmZXJlbmNlYCBhbmQgbW92ZSB0byBgY2xpL3RydXN0YC4gW2RvY2tlci9jbGkjNTg5NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODk0KQotICAgR28tU0RLOiBgY2xpL2NvbW1hbmQvaW1hZ2VgOiBEZXByZWNhdGUgYW5kIGludGVybmFsaXplIGBUcnVzdGVkUHVzaGAuIFtkb2NrZXIvY2xpIzU4OTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTg5NCkKLSAgIEdvLVNESzogYGNsaS9jb21tYW5kYDogZGVwcmVjYXRlIGBDbGkuTm90YXJ5Q2xpZW50YDogdXNlIFtgdHJ1c3QuR2V0Tm90YXJ5UmVwb3NpdG9yeWBdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL2RvY2tlci9jbGlAdjI4LjAuMStpbmNvbXBhdGlibGUvY2xpL3RydXN0I0dldE5vdGFyeVJlcG9zaXRvcnkpIGluc3RlYWQuIFRoaXMgbWV0aG9kIGlzIG5vIGxvbmdlciB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW2RvY2tlci9jbGkjNTg4NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODg1KQotICAgR28tU0RLOiBgY2xpL2NvbW1hbmRgOiBkZXByZWNhdGUgYENsaS5SZWdpc3RyeUNsaWVudGAuIFRoaXMgbWV0aG9kIHdhcyBvbmx5IHVzZWQgaW50ZXJuYWxseSBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFVzZSBbYGNsaWVudC5OZXdSZWdpc3RyeUNsaWVudGBdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL2RvY2tlci9jbGlAdjI4LjAuMStpbmNvbXBhdGlibGUvY2xpL3JlZ2lzdHJ5L2NsaWVudCNOZXdSZWdpc3RyeUNsaWVudCkgaW5zdGVhZC4gW2RvY2tlci9jbGkjNTg4OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODg5KSwgW2RvY2tlci9jbGkjNTg4OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODg5KQotICAgR28tU0RLOiBgcmVnaXN0cnlgOiBEZXByZWNhdGUgYFJlcG9zaXRvcnlJbmZvLk9mZmljaWFsYCBmaWVsZC4gW21vYnkvbW9ieSM0OTU2N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTY3KQotICAgR28tU0RLOiBgcmVnaXN0cnlgOiBkZXByZWNhdGUgYEhvc3RDZXJ0c0RpcmA6IHRoaXMgZnVuY3Rpb24gd2FzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0OTYxMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NjEyKQotICAgR28tU0RLOiBgcmVnaXN0cnlgOiBkZXByZWNhdGUgYFNldENlcnRzRGlyYDogdGhlIGNlcnQtZGlyZWN0b3J5IGlzIG5vdyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIHdoZW4gcnVubmluZyB3aXRoIFJvb3RsZXNzS2l0LCBhbmQgc2hvdWxkIG5vIGxvbmdlciBiZSBzZXQgbWFudWFsbHkuIFttb2J5L21vYnkjNDk2MTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTYxMikKCiMjIyBbYHYyOC4wLjFgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3JlbGVhc2VzL3RhZy92MjguMC4xKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L2NvbXBhcmUvdjI4LjAuMC4uLnYyOC4wLjEpCgojIyMgMjguMC4xCgpGb3IgYSBmdWxsIGxpc3Qgb2YgcHVsbCByZXF1ZXN0cyBhbmQgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHJlZmVyIHRvIHRoZSByZWxldmFudCBHaXRIdWIgbWlsZXN0b25lczoKCi0gICBbZG9ja2VyL2NsaSwgMjguMC4xIG1pbGVzdG9uZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvaXNzdWVzP3E9aXMlM0FjbG9zZWQrbWlsZXN0b25lJTNBMjguMC4xKQotICAgW21vYnkvbW9ieSwgMjguMC4xIG1pbGVzdG9uZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9pc3N1ZXM/cT1pcyUzQWNsb3NlZCttaWxlc3RvbmUlM0EyOC4wLjEpCgojIyMjIE5ldHdvcmtpbmcKCi0gICBSZW1vdmUgZGVwZW5kZW5jeSBvbiBrZXJuZWwgbW9kdWxlcyBgaXBfc2V0YCwgYGlwX3NldF9oYXNoX25ldGAgYW5kIGBuZXRmaWx0ZXJfeHRfc2V0YC4KICAgIC0gICBUaGUgZGVwZW5kZW5jeSB3YXMgaW50cm9kdWNlZCBpbiByZWxlYXNlIDI4LjAuMCBidXQgcHJvdmVkIHRvbyBkaXNydXB0aXZlLiBUaGUgaXB0YWJsZXMgcnVsZXMgdXNpbmcgdGhlc2UgbW9kdWxlcyBoYXZlIGJlZW4gcmVwbGFjZWQuIFttb2J5L21vYnkjNDk1MzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTUzMCkKLSAgIEFsbG93IGRhZW1vbiBzdGFydHVwIG9uIGEgaG9zdCB3aXRoIElQdjYgZGlzYWJsZWQgd2l0aG91dCByZXF1aXJpbmcgYC0taXA2dGFibGVzPWZhbHNlYC4gW21vYnkvbW9ieSM0OTUyNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTI1KQotICAgRml4IGEgYnVnIHRoYXQgd2FzIGNhdXNpbmcgY29udGFpbmVycyB3aXRoIGAtLXJlc3RhcnQ9YWx3YXlzYCBhbmQgYSBwdWJsaXNoZWQgcG9ydCBhbHJlYWR5IGluIHVzZSB0byByZXN0YXJ0IGluIGEgdGlnaHQgbG9vcC4gW21vYnkvbW9ieSM0OTUwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTA3KQotICAgRml4IGFuIGlzc3VlIHdpdGggU3dhcm0gaW5ncmVzcywgY2F1c2VkIGJ5IGluY29ycmVjdCBvcmRlcmluZyBvZiBpcHRhYmxlcyBydWxlcy4gW21vYnkvbW9ieSM0OTUzOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTM4KQotICAgRml4IGNyZWF0aW9uIG9mIGEgc3dhcm0tc2NvcGVkIG5ldHdvcmsgZnJvbSBhIGAtLWNvbmZpZy1vbmx5YCBuZXR3b3JrLiBbbW9ieS9tb2J5IzQ5NTIxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1MjEpCi0gICBGaXggYGRvY2tlciBuZXR3b3JrIGluc3BlY3RgIHJlcG9ydGluZyBhbiBJUHY2IGdhdGV3YXkgd2l0aCBDSURSIHN1ZmZpeCBmb3IgYSBuZXdseSBjcmVhdGVkIG5ldHdvcmsgd2l0aCBubyBzcGVjaWZpYyBJUEFNIGNvbmZpZywgdW50aWwgYSBkYWVtb24gcmVzdGFydC4gW21vYnkvbW9ieSM0OTUyMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTIwKQotICAgSW1wcm92ZSB0aGUgZXJyb3IgcmVwb3J0ZWQgd2hlbiBrZXJuZWwgbW9kdWxlcyBgaXBfc2V0YCwgYGlwX3NldF9oYXNoX25ldGAgYW5kIGBuZXRpbHRlcl94dF9zZXRgIGFyZSBub3QgYXZhaWxhYmxlLiBbbW9ieS9tb2J5IzQ5NTI0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1MjQpCi0gICBNb3ZlIG1vc3Qgb2YgRG9ja2VyJ3MgaXB0YWJsZXMgcnVsZXMgb3V0IG9mIHRoZSBmaWx0ZXItRk9SV0FSRCBjaGFpbiwgc28gdGhhdCBvdGhlciBhcHBsaWNhdGlvbnMgYXJlIGZyZWUgdG8gYXBwZW5kIHJ1bGVzIHRoYXQgbXVzdCBmb2xsb3cgRG9ja2VyJ3MgcnVsZXMuIFttb2J5L21vYnkjNDk1MThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTUxOCkKLSAgIFVwZGF0ZSBgLS1oZWxwYCBvdXRwdXQgYW5kIG1hbiBwYWdlIGxvIHN0YXRlIHdoaWNoIG9wdGlvbnMgb25seSBhcHBseSB0byB0aGUgZGVmYXVsdCBicmlkZ2UgbmV0d29yay4gW21vYnkvbW9ieSM0OTUyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTIyKQoKIyMjIyBCdWcgZml4ZXMgYW5kIGVuaGFuY2VtZW50cwoKLSAgIEZpeCBgZG9ja2VyIGNvbnRleHQgY3JlYXRlYCBhbHdheXMgcmV0dXJuaW5nIGFuIGVycm9yIHdoZW4gdXNpbmcgdGhlIGAic2tpcC10bHMtdmVyaWZ5ImAgb3B0aW9uLiBbZG9ja2VyL2NsaSM1ODUwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU4NTApCi0gICBGaXggc2hlbGwgY29tcGxldGlvbiBzdWdnZXN0aW5nIElEcyBpbnN0ZWFkIG9mIG5hbWVzIGZvciBzZXJ2aWNlcyBhbmQgbm9kZXMuIFtkb2NrZXIvY2xpIzU4NDhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTg0OCkKLSAgIEZpeCB1bmludGVudGlvbmFsbHkgcHJpbnRpbmcgZXhpdCBzdGF0dXMgdG8gc3RhbmRhcmQgZXJyb3Igb3V0cHV0IHdoZW4gYGRvY2tlciBleGVjL3J1bmAgcmV0dXJucyBhIG5vbi16ZXJvIHN0YXR1cy4gW2RvY2tlci9jbGkjNTg1NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODU0KQotICAgRml4IHJlZ3Jlc3Npb24gYHByb3RvY29sICJ0Y3AiIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIFJvb3RsZXNzS2l0IHBvcnQgZHJpdmVyICJzbGlycDRuZXRucyJgLiBbbW9ieS9tb2J5IzQ5NTE0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1MTQpCi0gICBjb250YWluZXJkIGltYWdlIHN0b3JlOiBGaXggYGRvY2tlciBpbnNwZWN0YCBub3QgYmVpbmcgYWJsZSB0byBzaG93IG11bHRpLXBsYXRmb3JtIGltYWdlcyB3aXRoIG1pc3NpbmcgbGF5ZXJzIGZvciBhbGwgcGxhdGZvcm1zLiBbbW9ieS9tb2J5IzQ5NTMzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1MzMpCi0gICBjb250YWluZXJkIGltYWdlIHN0b3JlOiBGaXggYGRvY2tlciBpbWFnZXMgLS10cmVlYCByZXBvcnRpbmcgd3JvbmcgY29udGVudCBzaXplLiBbbW9ieS9tb2J5IzQ5NTM1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1MzUpCi0gICBGaXggY29tcGlsYXRpb24gb24gaTM4NiBbbW9ieS9tb2J5IzQ5NTI2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1MjYpCgojIyMjIFBhY2thZ2luZyB1cGRhdGVzCgotICAgVXBkYXRlIGBnaXRodWIuY29tL2dvLWpvc2UvZ28tam9zZS92NGAgdG8gdjQuMC41IHRvIGFkZHJlc3MuIFtHSFNBLWM2Z3ctdzM5OC1odjc4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ28tam9zZS9nby1qb3NlL3NlY3VyaXR5L2Fkdmlzb3JpZXMvR0hTQS1jNmd3LXczOTgtaHY3OCkgLyBbQ1ZFLTIwMjUtMjcxNDRdKGh0dHBzOi8vd3d3LmN2ZS5vcmcvQ1ZFUmVjb3JkP2lkPUNWRS0yMDI1LTI3MTQ0KSBbZG9ja2VyL2NsaSM1ODY3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU4NjcpCi0gICBVcGRhdGUgQnVpbGR4IHRvIFt2MC4yMS4xXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2J1aWxkeC9yZWxlYXNlcy90YWcvdjAuMjEuMSkuIFtkb2NrZXIvZG9ja2VyLWNlLXBhY2thZ2luZyMxMTY3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcvcHVsbC8xMTY3KQotICAgVXBkYXRlIENvbXBvc2UgdG8gW3YyLjMzLjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY29tcG9zZS9yZWxlYXNlcy90YWcvdjIuMzMuMSkuIFtkb2NrZXIvZG9ja2VyLWNlLXBhY2thZ2luZyMxMTY4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcvcHVsbC8xMTY4KQoKIyMjIyBBUEkKCi0gICBjb250YWluZXJkIGltYWdlIHN0b3JlOiBGaXggYEdFVCAvaW1hZ2VzL2pzb24/bWFuaWZlc3RzPTFgIG5vdCBmaWxsaW5nIGBNYW5pZmVzdHNgIGZvciBpbmRleC1vbmx5IGltYWdlcy4gW21vYnkvbW9ieSM0OTUzM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTMzKQotICAgY29udGFpbmVyZCBpbWFnZSBzdG9yZTogRml4IGBHRVQgL2ltYWdlcy9qc29uIGFuZCAvaW1hZ2VzLzxuYW1lPi9qc29uYCBgU2l6ZS5Db250ZW50YCBmaWVsZCBpbmNsdWRpbmcgdGhlIHNpemUgb2YgY29udGVudCB0aGF0J3Mgbm90IGF2YWlsYWJsZSBsb2NhbGx5LiBbbW9ieS9tb2J5IzQ5NTM1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1MzUpCgojIyMgW2B2MjguMC4wYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9yZWxlYXNlcy90YWcvdjI4LjAuMCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9jb21wYXJlL3YyNy41LjEuLi52MjguMC4wKQoKIyMjIDI4LjAuMAoKRm9yIGEgZnVsbCBsaXN0IG9mIHB1bGwgcmVxdWVzdHMgYW5kIGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlLCByZWZlciB0byB0aGUgcmVsZXZhbnQgR2l0SHViIG1pbGVzdG9uZXM6CgotICAgW2RvY2tlci9jbGksIDI4LjAuMCBtaWxlc3RvbmVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL2lzc3Vlcz9xPWlzJTNBY2xvc2VkK21pbGVzdG9uZSUzQTI4LjAuMCkKLSAgIFttb2J5L21vYnksIDI4LjAuMCBtaWxlc3RvbmVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvaXNzdWVzP3E9aXMlM0FjbG9zZWQrbWlsZXN0b25lJTNBMjguMC4wKQotICAgRGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCBmZWF0dXJlcywgc2VlIFtEZXByZWNhdGVkIEZlYXR1cmVzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9ibG9iL3YyOC4wLjAvZG9jcy9kZXByZWNhdGVkLm1kKS4KLSAgIENoYW5nZXMgdG8gdGhlIEVuZ2luZSBBUEksIHNlZSBbQVBJIHZlcnNpb24gaGlzdG9yeV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9ibG9iL3YyOC4wLjAvZG9jcy9hcGkvdmVyc2lvbi1oaXN0b3J5Lm1kKS4KCiMjIyMgTmV3CgotICAgQWRkIGFiaWxpdHkgdG8gbW91bnQgYW4gaW1hZ2UgaW5zaWRlIGEgY29udGFpbmVyIHZpYSBgLS1tb3VudCB0eXBlPWltYWdlYC4gW21vYnkvbW9ieSM0ODc5OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4Nzk4KQogICAgLSAgIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGAtLW1vdW50IHR5cGU9aW1hZ2UsaW1hZ2Utc3VicGF0aD1bc3VicGF0aF0sLi4uYCBvcHRpb24gdG8gbW91bnQgYSBzcGVjaWZpYyBwYXRoIGZyb20gdGhlIGltYWdlLiBbZG9ja2VyL2NsaSM1NzU1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU3NTUpCi0gICBgZG9ja2VyIGltYWdlcyAtLXRyZWVgIG5vdyBzaG93cyBtZXRhZGF0YSBiYWRnZXMuIFtkb2NrZXIvY2xpIzU3NDRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTc0NCkKLSAgIGBkb2NrZXIgbG9hZGAsIGBkb2NrZXIgc2F2ZWAsIGFuZCBgZG9ja2VyIGhpc3RvcnlgIG5vdyBzdXBwb3J0IGEgYC0tcGxhdGZvcm1gIGZsYWcgYWxsb3dpbmcgeW91IHRvIGNob29zZSBhIHNwZWNpZmljIHBsYXRmb3JtIGZvciBzaW5nbGUtcGxhdGZvcm0gb3BlcmF0aW9ucyBvbiBtdWx0aS1wbGF0Zm9ybSBpbWFnZXMuIFtkb2NrZXIvY2xpIzUzMzFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTMzMSkKLSAgIEFkZCBgT09NU2NvcmVBZGpgIHRvIGBkb2NrZXIgc2VydmljZSBjcmVhdGVgIGFuZCBgZG9ja2VyIHN0YWNrYC4gW2RvY2tlci9jbGkjNTE0NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81MTQ1KQotICAgYGRvY2tlciBidWlsZHggcHJ1bmVgIG5vdyBzdXBwb3J0cyBgcmVzZXJ2ZWQtc3BhY2VgLCBgbWF4LXVzZWQtc3BhY2VgLCBgbWluLWZyZWUtc3BhY2VgIGFuZCBga2VlcC1ieXRlc2AgZmlsdGVycy4gW21vYnkvbW9ieSM0ODcyMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NzIwKQotICAgV2luZG93czogQWRkIHN1cHBvcnQgZm9yIHJ1bm5pbmcgY29udGFpbmVyZCBhcyBhIGNoaWxkIHByb2Nlc3Mgb2YgdGhlIGRhZW1vbiwgaW5zdGVhZCBvZiB1c2luZyBhIHN5c3RlbS1pbnN0YWxsZWQgY29udGFpbmVyZC4gW21vYnkvbW9ieSM0Nzk1NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ3OTU1KQoKIyMjIyBOZXR3b3JraW5nCgotICAgVGhlIGBkb2NrZXItcHJveHlgIGJpbmFyeSBoYXMgYmVlbiB1cGRhdGVkLCBvbGRlciB2ZXJzaW9ucyB3aWxsIG5vdCB3b3JrIHdpdGggdGhlIHVwZGF0ZWQgYGRvY2tlcmRgLiBbbW9ieS9tb2J5IzQ4MTMyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgxMzIpCiAgICAtICAgQ2xvc2UgYSB3aW5kb3cgaW4gd2hpY2ggdGhlIHVzZXJsYW5kIHByb3h5IChgZG9ja2VyLXByb3h5YCkgY291bGQgYWNjZXB0IFRDUCBjb25uZWN0aW9ucywgdGhhdCB3b3VsZCB0aGVuIGZhaWwgYWZ0ZXIgYGlwdGFibGVzYCBOQVQgcnVsZXMgd2VyZSBzZXQgdXAuCiAgICAtICAgVGhlIGV4ZWN1dGFibGUgYHJvb3RsZXNza2l0LWRvY2tlci1wcm94eWAgaXMgbm8gbG9uZ2VyIHVzZWQsIGl0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgYnVpbGQgYW5kIGRpc3RyaWJ1dGlvbi4KLSAgIEROUyBuYW1lc2VydmVycyByZWFkIGZyb20gdGhlIGhvc3QncyBgL2V0Yy9yZXNvbHYuY29uZmAgYXJlIG5vdyBhbHdheXMgYWNjZXNzZWQgZnJvbSB0aGUgaG9zdCdzIG5ldHdvcmsgbmFtZXNwYWNlLiBbbW9ieS9tb2J5IzQ4MjkwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgyOTApCiAgICAtICAgV2hlbiB0aGUgaG9zdCdzIGAvZXRjL3Jlc29sdi5jb25mYCBjb250YWlucyBubyBuYW1lc2VydmVycyBhbmQgdGhlcmUgYXJlIG5vIGAtLWRuc2Agb3ZlcnJpZGVzLCBHb29nbGUncyBETlMgc2VydmVycyBhcmUgbm8gbG9uZ2VyIHVzZWQsIGFwYXJ0IGZyb20gYnkgdGhlIGRlZmF1bHQgYnJpZGdlIG5ldHdvcmsgYW5kIGluIGJ1aWxkIGNvbnRhaW5lcnMuCi0gICBDb250YWluZXIgaW50ZXJmYWNlcyBpbiBicmlkZ2UgYW5kIG1hY3ZsYW4gbmV0d29ya3Mgbm93IHVzZSByYW5kb21seSBnZW5lcmF0ZWQgTUFDIGFkZHJlc3Nlcy4gW21vYnkvbW9ieSM0ODgwOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4ODA4KQogICAgLSAgIEdyYXR1aXRvdXMgQVJQIC8gTmVpZ2hib3VyIEFkdmVydGlzZW1lbnQgbWVzc2FnZXMgd2lsbCBiZSBzZW50IHdoZW4gdGhlIGludGVyZmFjZXMgYXJlIHN0YXJ0ZWQgc28gdGhhdCwgd2hlbiBJUCBhZGRyZXNzZXMgYXJlIHJldXNlZCwgdGhleSdyZSBhc3NvY2lhdGVkIHdpdGggdGhlIG5ld2x5IGdlbmVyYXRlZCBNQUMgYWRkcmVzcy4KICAgIC0gICBJUHY2IGFkZHJlc3NlcyBpbiB0aGUgZGVmYXVsdCBicmlkZ2UgbmV0d29yayBhcmUgbm93IElQQU0tYXNzaWduZWQsIHJhdGhlciB0aGFuIGJlaW5nIGRlcml2ZWQgZnJvbSB0aGUgTUFDIGFkZHJlc3MuCi0gICBUaGUgZGVwcmVjYXRlZCBPQ0kgYHByZXN0YXJ0YCBob29rIGlzIG5vdyBvbmx5IHVzZWQgYnkgYnVpbGQgY29udGFpbmVycy4gRm9yIG90aGVyIGNvbnRhaW5lcnMsIG5ldHdvcmsgaW50ZXJmYWNlcyBhcmUgYWRkZWQgdG8gdGhlIG5ldHdvcmsgbmFtZXNwYWNlIGFmdGVyIHRhc2sgY3JlYXRpb24gaXMgY29tcGxldGUsIGJlZm9yZSB0aGUgY29udGFpbmVyIHRhc2sgaXMgc3RhcnRlZC4gW21vYnkvbW9ieSM0NzQwNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ3NDA2KQotICAgQWRkIGEgbmV3IGBndy1wcmlvcml0eWAgb3B0aW9uIHRvIGBkb2NrZXIgcnVuYCwgYGRvY2tlciBjb250YWluZXIgY3JlYXRlYCwgYW5kIGBkb2NrZXIgbmV0d29yayBjb25uZWN0YC4gVGhpcyBvcHRpb24gd2lsbCBiZSB1c2VkIGJ5IHRoZSBFbmdpbmUgdG8gZGV0ZXJtaW5lIHdoaWNoIG5ldHdvcmsgcHJvdmlkZXMgdGhlIGRlZmF1bHQgZ2F0ZXdheSBmb3IgYSBjb250YWluZXIuIE9uIGBkb2NrZXIgcnVuYCwgdGhpcyBvcHRpb24gaXMgb25seSBhdmFpbGFibGUgdGhyb3VnaCB0aGUgZXh0ZW5kZWQgYC0tbmV0d29ya2Agc3ludGF4LiBbZG9ja2VyL2NsaSM1NjY0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU2NjQpCi0gICBBZGQgYSBuZXcgbmV0bGFiZWwgYGNvbS5kb2NrZXIubmV0d29yay5lbmRwb2ludC5pZm5hbWVgIHRvIGN1c3RvbWl6ZSB0aGUgaW50ZXJmYWNlIG5hbWUgdXNlZCB3aGVuIGNvbm5lY3RpbmcgYSBjb250YWluZXIgdG8gYSBuZXR3b3JrLiBJdCdzIHN1cHBvcnRlZCBieSBhbGwgYnVpbHQtaW4gbmV0d29yayBkcml2ZXJzIG9uIExpbnV4LiBbbW9ieS9tb2J5IzQ5MTU1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkxNTUpCiAgICAtICAgV2hlbiBhIGNvbnRhaW5lciBpcyBjcmVhdGVkIHdpdGggbXVsdGlwbGUgbmV0d29ya3Mgc3BlY2lmaWVkLCB0aGVyZSdzIG5vIGd1YXJhbnRlZSBvbiB0aGUgb3JkZXIgbmV0d29ya3Mgd2lsbCBiZSBjb25uZWN0ZWQgdG8gdGhlIGNvbnRhaW5lci4gU28sIGlmIGEgY3VzdG9tIGludGVyZmFjZSBuYW1lIHVzZXMgdGhlIHNhbWUgcHJlZml4IGFzIHRoZSBhdXRvLWdlbmVyYXRlZCBuYW1lcywgZm9yIGV4YW1wbGUgYGV0aGAsIHRoZSBjb250YWluZXIgbWlnaHQgZmFpbCB0byBzdGFydC4KICAgIC0gICBUaGUgcmVjb21tZW5kZWQgcHJhY3RpY2UgaXMgdG8gdXNlIGEgZGlmZmVyZW50IHByZWZpeCwgZm9yIGV4YW1wbGUgYGVuMGAsIG9yIGEgbnVtZXJpY2FsIHN1ZmZpeCBoaWdoIGVub3VnaCB0byBuZXZlciBjb2xsaWRlLCBmb3IgZXhhbXBsZSBgZXRoMTAwYC4KICAgIC0gICBUaGlzIGxhYmVsIGNhbiBiZSBzcGVjaWZpZWQgb24gYGRvY2tlciBuZXR3b3JrIGNvbm5lY3RgIHZpYSB0aGUgYC0tZHJpdmVyLW9wdGAgZmxhZywgZm9yIGV4YW1wbGUgYGRvY2tlciBuZXR3b3JrIGNvbm5lY3QgLS1kcml2ZXItb3B0PWNvbS5kb2NrZXIubmV0d29yay5lbmRwb2ludC5pZm5hbWU9Zm9vYmFyIOKApmAuCiAgICAtICAgT3IgdmlhIHRoZSBsb25nLWZvcm0gYC0tbmV0d29ya2AgZmxhZyBvbiBgZG9ja2VyIHJ1bmAsIGZvciBleGFtcGxlIGBkb2NrZXIgcnVuIC0tbmV0d29yaz1uYW1lPWJyaWRnZSxkcml2ZXItb3B0PWNvbS5kb2NrZXIubmV0d29yay5lbmRwb2ludC5pZm5hbWU9Zm9vYmFyIOKApmAKLSAgIElmIGEgY3VzdG9tIG5ldHdvcmsgZHJpdmVyIHJlcG9ydHMgY2FwYWJpbGl0eSBgR3dBbGxvY0NoZWNrZXJgIHRoZW4sIGJlZm9yZSBhIG5ldHdvcmsgaXMgY3JlYXRlZCwgaXQgd2lsbCBnZXQgYSBgR3dBbGxvY0NoZWNrZXJSZXF1ZXN0YCB3aXRoIHRoZSBuZXR3b3JrJ3Mgb3B0aW9ucy4gVGhlIGN1c3RvbSBkcml2ZXIgbWF5IHRoZW4gcmVwbHkgdGhhdCBubyBnYXRld2F5IElQIGFkZHJlc3Mgc2hvdWxkIGJlIGFsbG9jYXRlZC4gW21vYnkvbW9ieSM0OTM3Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzcyKQoKIyMjIyBQb3J0IHB1Ymxpc2hpbmcgaW4gYnJpZGdlIG5ldHdvcmtzCgotICAgYGRvY2tlcmRgIG5vdyByZXF1aXJlcyBgaXBzZXRgIHN1cHBvcnQgaW4gdGhlIExpbnV4IGtlcm5lbC4gW21vYnkvbW9ieSM0ODU5Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NTk2KQogICAgLSAgIFRoZSBgaXB0YWJsZXNgIGFuZCBgaXA2dGFibGVzYCBydWxlcyB1c2VkIHRvIGltcGxlbWVudCBwb3J0IHB1Ymxpc2hpbmcgYW5kIG5ldHdvcmsgaXNvbGF0aW9uIGhhdmUgYmVlbiBleHRlbnNpdmVseSBtb2RpZmllZC4gVGhpcyBlbmFibGVzIHNvbWUgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbmFsIGNoYW5nZXMsIGFuZCBpcyBhIGZpcnN0IHN0ZXAgaW4gcmVmYWN0b3JpbmcgdG8gZW5hYmxlIG5hdGl2ZSBgbmZ0YWJsZXNgIHN1cHBvcnQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gW21vYnkvbW9ieSM0ODgxNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9pc3N1ZXMvNDg4MTUpCiAgICAtICAgSWYgaXQgYmVjb21lcyBuZWNlc3NhcnkgdG8gZG93bmdyYWRlIHRvIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGUgZGFlbW9uLCBzb21lIG1hbnVhbCBjbGVhbnVwIG9mIHRoZSBuZXcgcnVsZXMgd2lsbCBiZSBuZWNlc3NhcnkuIFRoZSBzaW1wbGVzdCBhbmQgc3VyZXN0IGFwcHJvYWNoIGlzIHRvIHJlYm9vdCB0aGUgaG9zdCwgb3IgdXNlIGBpcHRhYmxlcyAtRmAgYW5kIGBpcDZ0YWJsZXMgLUZgIHRvIGZsdXNoIGFsbCBleGlzdGluZyBgaXB0YWJsZXNgIHJ1bGVzIGZyb20gdGhlIGBmaWx0ZXJgIHRhYmxlIGJlZm9yZSBzdGFydGluZyB0aGUgb2xkZXIgdmVyc2lvbiBvZiB0aGUgZGFlbW9uLiBXaGVuIHRoYXQgaXMgbm90IHBvc3NpYmxlLCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kcyBhcyByb290OgogICAgICAgIC0gICBgaXB0YWJsZXMgLUQgRk9SV0FSRCAtbSBzZXQgLS1tYXRjaC1zZXQgZG9ja2VyLWV4dC1icmlkZ2VzLXY0IGRzdCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIFJFTEFURUQsRVNUQUJMSVNIRUQgLWogQUNDRVBUOyBpcDZ0YWJsZXMgLUQgRk9SV0FSRCAtbSBzZXQgLS1tYXRjaC1zZXQgZG9ja2VyLWV4dC1icmlkZ2VzLXY2IGRzdCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIFJFTEFURUQsRVNUQUJMSVNIRUQgLWogQUNDRVBUYAogICAgICAgIC0gICBgaXB0YWJsZXMgLUQgRk9SV0FSRCAtbSBzZXQgLS1tYXRjaC1zZXQgZG9ja2VyLWV4dC1icmlkZ2VzLXY0IGRzdCAtaiBET0NLRVI7IGlwNnRhYmxlcyAtRCBGT1JXQVJEIC1tIHNldCAtLW1hdGNoLXNldCBkb2NrZXItZXh0LWJyaWRnZXMtdjYgZHN0IC1qIERPQ0tFUmAKICAgICAgICAtICAgSWYgeW91IHdlcmUgcHJldmlvdXNseSBydW5uaW5nIHdpdGggdGhlIGlwdGFibGVzIGZpbHRlci1GT1JXQVJEIHBvbGljeSBzZXQgdG8gYEFDQ0VQVGAgYW5kIG5lZWQgdG8gcmVzdG9yZSBhY2Nlc3MgdG8gdW5wdWJsaXNoZWQgcG9ydHMsIGFsc28gZGVsZXRlIHBlci1icmlkZ2UtbmV0d29yayBydWxlcyBmcm9tIHRoZSBgRE9DS0VSYCBjaGFpbnMuIEZvciBleGFtcGxlLCBgaXB0YWJsZXMgLUQgRE9DS0VSICEgLWkgZG9ja2VyMCAtbyBkb2NrZXIwIC1qIERST1BgLgotICAgRml4IGEgc2VjdXJpdHkgaXNzdWUgdGhhdCB3YXMgYWxsb3dpbmcgcmVtb3RlIGhvc3RzIHRvIGNvbm5lY3QgZGlyZWN0bHkgdG8gYSBjb250YWluZXIgb24gaXRzIHB1Ymxpc2hlZCBwb3J0cy4gW21vYnkvbW9ieSM0OTMyNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzI1KQotICAgRml4IGEgc2VjdXJpdHkgaXNzdWUgdGhhdCB3YXMgYWxsb3dpbmcgbmVpZ2hib3IgaG9zdHMgdG8gY29ubmVjdCB0byBwb3J0cyBtYXBwZWQgb24gYSBsb29wYmFjayBhZGRyZXNzLiBbbW9ieS9tb2J5IzQ5MzI1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkzMjUpCi0gICBGaXggYW4gaXNzdWUgdGhhdCBwcmV2ZW50ZWQgcG9ydCBwdWJsaXNoaW5nIHRvIGxpbmstbG9jYWwgYWRkcmVzc2VzLiBbbW9ieS9tb2J5IzQ4NTcwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg1NzApCi0gICBVRFAgcG9ydHMgcHVibGlzaGVkIGJ5IGEgY29udGFpbmVyIGFyZSBub3cgcmVsaWFibHkgYWNjZXNzaWJsZSBieSBjb250YWluZXJzIG9uIG90aGVyIG5ldHdvcmtzLCB2aWEgdGhlIGhvc3QncyBwdWJsaWMgSVAgYWRkcmVzcy4gW21vYnkvbW9ieSM0ODU3MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NTcxKQotICAgRG9ja2VyIHdpbGwgbm93IG9ubHkgc2V0IHRoZSBgaXA2dGFibGVzYCBwb2xpY3kgZm9yIHRoZSBgRk9SV0FSRGAgY2hhaW4gaW4gdGhlIGBmaWx0ZXJgIHRhYmxlIHRvIGBEUk9QYCBpZiBpdCBlbmFibGVzIElQIGZvcndhcmRpbmcgb24gdGhlIGhvc3QgaXRzZWxmIChzeXNjdGxzIGBuZXQuaXB2Ni5jb25mLmFsbC5mb3J3YXJkaW5nYCBhbmQgYG5ldC5pcHY2LmNvbmYuZGVmYXVsdC5mb3J3YXJkaW5nYCkuIFRoaXMgaXMgbm93IGFsaWduZWQgd2l0aCBleGlzdGluZyBJUHY0IGJlaGF2aW91ci4gW21vYnkvbW9ieSM0ODU5NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NTk0KQogICAgLSAgIElmIElQdjYgZm9yd2FyZGluZyBpcyBlbmFibGVkIG9uIHlvdXIgaG9zdCwgYnV0IHlvdSB3ZXJlIGRlcGVuZGluZyBvbiBEb2NrZXIgdG8gc2V0IHRoZSBpcDZ0YWJsZXMgZmlsdGVyLUZPUldBUkQgcG9saWN5IHRvIGBEUk9QYCwgeW91IG1heSBuZWVkIHRvIHVwZGF0ZSB5b3VyIGhvc3QncyBjb25maWd1cmF0aW9uIHRvIG1ha2Ugc3VyZSBpdCBpcyBzZWN1cmUuCi0gICBEaXJlY3Qgcm91dGVkIGFjY2VzcyB0byBjb250YWluZXIgcG9ydHMgdGhhdCBhcmUgbm90IGV4cG9zZWQgdXNpbmcgYHBgL2AtcHVibGlzaGAgaXMgbm93IGJsb2NrZWQgaW4gdGhlIGBET0NLRVJgIGlwdGFibGVzIGNoYWluLiBbbW9ieS9tb2J5IzQ4NzI0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg3MjQpCiAgICAtICAgSWYgdGhlIGRlZmF1bHQgaXB0YWJsZXMgZmlsdGVyLUZPUldBUkQgcG9saWN5IHdhcyBwcmV2aW91c2x5IGxlZnQgYXQgYEFDQ0VQVGAgb24geW91ciBob3N0LCBhbmQgZGlyZWN0IHJvdXRlZCBhY2Nlc3MgdG8gYSBjb250YWluZXIncyB1bnB1Ymxpc2hlZCBwb3J0cyBmcm9tIGEgcmVtb3RlIGhvc3QgaXMgc3RpbGwgcmVxdWlyZWQsIG9wdGlvbnMgYXJlOgogICAgICAgIC0gICBQdWJsaXNoIHRoZSBwb3J0cyB5b3UgbmVlZC4KICAgICAgICAtICAgVXNlIHRoZSBuZXcgYGdhdGV3YXlfbW9kZV9pcHZbNDZdPW5hdC11bnByb3RlY3RlZGAsIGRlc2NyaWJlZCBiZWxvdy4KICAgIC0gICBDb250YWluZXIgcG9ydHMgcHVibGlzaGVkIHRvIGhvc3QgYWRkcmVzc2VzIHdpbGwgY29udGludWUgdG8gYmUgYWNjZXNzaWJsZSB2aWEgdGhvc2UgaG9zdCBhZGRyZXNzZXMsIHVzaW5nIE5BVCBvciB0aGUgdXNlcmxhbmQgcHJveHkuCiAgICAtICAgVW5wdWJsaXNoZWQgY29udGFpbmVyIHBvcnRzIGNvbnRpbnVlIHRvIGJlIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB0aGUgRG9ja2VyIGhvc3QgdmlhIHRoZSBjb250YWluZXIncyBJUCBhZGRyZXNzLgotICAgTmV0d29ya3MgY3JlYXRlZCB3aXRoIGBnYXRld2F5X21vZGVfaXB2WzQ2XT1yb3V0ZWRgIGFyZSBub3cgYWNjZXNzaWJsZSBmcm9tIG90aGVyIGJyaWRnZSBuZXR3b3JrcyBydW5uaW5nIG9uIHRoZSBzYW1lIERvY2tlciBob3N0LCBhcyB3ZWxsIGFzIGZyb20gb3V0c2lkZSB0aGUgaG9zdC4gW21vYnkvbW9ieSM0ODU5Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NTk2KQotICAgQnJpZGdlIGRyaXZlciBvcHRpb25zIGBjb20uZG9ja2VyLm5ldHdvcmsuYnJpZGdlLmdhdGV3YXlfbW9kZV9pcHY0YCBhbmQgYGNvbS5kb2NrZXIubmV0d29yay5icmlkZ2UuZ2F0ZXdheV9tb2RlX2lwdjZgIG5vdyBhY2NlcHQgbW9kZSBgbmF0LXVucHJvdGVjdGVkYC4gW21vYnkvbW9ieSM0ODU5N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NTk3KQogICAgLSAgIGBuYXQtdW5wcm90ZWN0ZWRgIGlzIHNpbWlsYXIgdG8gdGhlIGRlZmF1bHQgYG5hdGAgbW9kZSwgYnV0IG5vIHBlciBwb3J0L3Byb3RvY29sIHJ1bGVzIGFyZSBzZXQgdXAuIFRoaXMgbWVhbnMgYW55IHBvcnQgb24gYSBjb250YWluZXIgY2FuIGJlIGFjY2Vzc2VkIGJ5IGRpcmVjdC1yb3V0aW5nIGZyb20gYSByZW1vdGUgaG9zdC4KLSAgIEJyaWRnZSBkcml2ZXIgb3B0aW9ucyBgY29tLmRvY2tlci5uZXR3b3JrLmJyaWRnZS5nYXRld2F5X21vZGVfaXB2NGAgYW5kIGBjb20uZG9ja2VyLm5ldHdvcmsuYnJpZGdlLmdhdGV3YXlfbW9kZV9pcHY2YCBub3cgYWNjZXB0IG1vZGUgYGlzb2xhdGVkYCwgd2hlbiB0aGUgbmV0d29yayBpcyBhbHNvIGBpbnRlcm5hbGAuIFttb2J5L21vYnkjNDkyNjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTI2MikKICAgIC0gICBBbiBhZGRyZXNzIGlzIG5vcm1hbGx5IGFzc2lnbmVkIHRvIHRoZSBicmlkZ2UgZGV2aWNlIGluIGFuIGBpbnRlcm5hbGAgbmV0d29yay4gU28sIHByb2Nlc3NlcyBvbiB0aGUgRG9ja2VyIGhvc3QgY2FuIGFjY2VzcyB0aGUgbmV0d29yaywgYW5kIGNvbnRhaW5lcnMgaW4gdGhlIG5ldHdvcmsgY2FuIGFjY2VzcyBob3N0IHNlcnZpY2VzIGxpc3RlbmluZyBvbiB0aGF0IGJyaWRnZSBhZGRyZXNzIChpbmNsdWRpbmcgc2VydmljZXMgbGlzdGVuaW5nIG9uICJhbnkiIGhvc3QgYWRkcmVzcywgYDAuMC4wLjBgIG9yIGA6OmApLgogICAgLSAgIEFuIGBpbnRlcm5hbGAgYnJpZGdlIG5ldHdvcmsgY3JlYXRlZCB3aXRoIGdhdGV3YXkgbW9kZSBgaXNvbGF0ZWRgIGRvZXMgbm90IGhhdmUgYW4gYWRkcmVzcyBvbiB0aGUgRG9ja2VyIGhvc3QuCi0gICBXaGVuIGEgcG9ydCBtYXBwaW5nIGluY2x1ZGVzIGEgaG9zdCBJUCBhZGRyZXNzIG9yIHBvcnQgbnVtYmVyIHRoYXQgY2Fubm90IGJlIHVzZWQgYmVjYXVzZSBOQVQgZnJvbSB0aGUgaG9zdCBpcyBkaXNhYmxlZCB1c2luZyBgLS1nYXRld2F5X21vZGVfaXB2WzQ2XWAsIGNvbnRhaW5lciBjcmVhdGlvbiB3aWxsIG5vIGxvbmdlciBmYWlsLiBUaGUgdW51c2VkIGZpZWxkcyBtYXkgYmUgbmVlZGVkIGlmIHRoZSBnYXRld2F5IGVuZHBvaW50IGNoYW5nZXMgd2hlbiBuZXR3b3JrcyBhcmUgY29ubmVjdGVkIG9yIGRpc2Nvbm5lY3RlZC4gQSBtZXNzYWdlIGFib3V0IHRoZSB1bnVzZWQgZmllbGRzIHdpbGwgYmUgbG9nZ2VkLiBbbW9ieS9tb2J5IzQ4NTc1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg1NzUpCi0gICBEbyBub3QgY3JlYXRlIGlwdGFibGVzIG5hdC1QT1NUUk9VVElORyBtYXNxdWVyYWRlIHJ1bGVzIGZvciBhIGNvbnRhaW5lcidzIG93biBwdWJsaXNoZWQgcG9ydHMsIHdoZW4gdGhlIHVzZXJsYW5kIHByb3h5IGlzIGVuYWJsZWQuIFttb2J5L21vYnkjNDg4NTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODg1NCkKCiMjIyMgSVB2NgoKLSAgIEFkZCBgZG9ja2VyIG5ldHdvcmsgY3JlYXRlYCBvcHRpb24gYC0taXB2NGAuIFRvIGRpc2FibGUgSVB2NCBhZGRyZXNzIGFzc2lnbm1lbnQgZm9yIGEgbmV0d29yaywgdXNlIGBkb2NrZXIgbmV0d29yayBjcmVhdGUgLS1pcHY0PWZhbHNlIFsuLi5dYC4gW2RvY2tlci9jbGkjNTU5OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81NTk5KQotICAgRGFlbW9uIG9wdGlvbiBgLS1pcHY2YCAoYCJpcHY2IjogdHJ1ZWAgaW4gYGRhZW1vbi5qc29uYCkgY2FuIG5vdyBiZSB1c2VkIHdpdGhvdXQgYGZpeGVkLWNpZHItdjZgLiBbbW9ieS9tb2J5IzQ4MzE5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgzMTkpCi0gICBJUEFNIG5vdyBoYW5kbGVzIHN1Ym5ldHMgYmlnZ2VyIHRoYW4gIi82NCIuIFttb2J5L21vYnkjNDkyMjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTIyMykKLSAgIER1cGxpY2F0ZSBhZGRyZXNzIGRldGVjdGlvbiAoREFEKSBpcyBub3cgZGlzYWJsZWQgZm9yIGFkZHJlc3NlcyBhc3NpZ25lZCB0byB0aGUgYnJpZGdlcyBiZWxvbmdpbmcgdG8gYnJpZGdlIG5ldHdvcmtzLiBbbW9ieS9tb2J5IzQ4NjA5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg2MDkpCi0gICBNb2RpZmljYXRpb25zIHRvIGBob3N0LWdhdGV3YXlgLCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIElQdjYtb25seSBuZXR3b3Jrcy4gW21vYnkvbW9ieSM0ODgwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4ODA3KQogICAgLSAgIFdoZW4gc3BlY2lhbCB2YWx1ZSBgaG9zdC1nYXRld2F5YCBpcyB1c2VkIGluIGFuIGAtLWFkZC1ob3N0YCBvcHRpb24gaW4gcGxhY2Ugb2YgYW4gYWRkcmVzcywgaXQncyByZXBsYWNlZCBieSBhbiBhZGRyZXNzIG9uIHRoZSBEb2NrZXIgaG9zdCB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHJlZmVyIHRvIHRoZSBob3N0IGJ5IG5hbWUuIFRoZSBhZGRyZXNzIHVzZWQgYmVsb25ncyB0byB0aGUgZGVmYXVsdCBicmlkZ2UgKG5vcm1hbGx5IGBkb2NrZXIwYCkuIFVudGlsIG5vdyBpdCdzIGFsd2F5cyBiZWVuIGFuIElQdjQgYWRkcmVzcywgYmVjYXVzZSBhbGwgY29udGFpbmVycyBvbiBicmlkZ2UgbmV0d29ya3MgaGFkIElQdjQgYWRkcmVzc2VzLgogICAgLSAgIE5vdywgaWYgSVB2NiBpcyBlbmFibGVkIG9uIHRoZSBkZWZhdWx0IGJyaWRnZSBuZXR3b3JrLCBgL2V0Yy9ob3N0c2AgZW50cmllcyB3aWxsIGJlIGNyZWF0ZWQgZm9yIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLiBTbywgYSBjb250YWluZXIgdGhhdCdzIG9ubHkgY29ubmVjdGVkIHRvIElQdjYtb25seSBuZXR3b3JrcyBjYW4gYWNjZXNzIHRoZSBob3N0IGJ5IG5hbWUuCiAgICAtICAgVGhlIGAtLWhvc3QtZ2F0ZXdheS1pcGAgb3B0aW9uIG92ZXJyaWRlcyB0aGUgYWRkcmVzcyB1c2VkIHRvIHJlcGxhY2UgYGhvc3QtZ2F0ZXdheWAuIFR3byBvZiB0aGVzZSBvcHRpb25zIGFyZSBub3cgYWxsb3dlZCBvbiB0aGUgY29tbWFuZCBsaW5lLCBmb3Igb25lIElQdjQgZ2F0ZXdheSBhbmQgb25lIElQdjYuCiAgICAtICAgSW4gdGhlIGBkYWVtb24uanNvbmAgZmlsZSwgdG8gcHJvdmlkZSB0d28gYWRkcmVzc2VzLCB1c2UgYCJob3N0LWdhdGV3YXktaXBzImAuIEZvciBleGFtcGxlLCBgImhvc3QtZ2F0ZXdheS1pcHMiOiBbIjE5Mi4wLjIuMSIsICIyMDAxOmRiODo6MTExMSJdYC4KCiMjIyMgQnVnIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMKCi0gICBBZGQgSVB2NiBsb29wYmFjayBhZGRyZXNzIGFzIGFuIGluc2VjdXJlIHJlZ2lzdHJ5IGJ5IGRlZmF1bHQuIFttb2J5L21vYnkjNDg1NDBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODU0MCkKLSAgIEFkZCBzdXBwb3J0IGZvciBDb2JyYS1nZW5lcmF0ZWQgY29tcGxldGlvbiBzY3JpcHRzIGZvciBgZG9ja2VyZGAuIFttb2J5L21vYnkjNDkzMzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTMzOSkKLSAgIEZpeCBETlMgcXVlcmllcyBmYWlsaW5nIHdoZW4gY29udGFpbmVycyBhcmUgbGF1bmNoZWQgdmlhIGBzeXN0ZW1kYCBhdXRvLXN0YXJ0IG9uIGJvb3QgW21vYnkvbW9ieSM0ODgxMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4ODEyKQotICAgRml4IERvY2tlciBTd2FybSBtb2RlIGlnbm9yaW5nIGB2b2x1bWUuc3VicGF0aGAgW2RvY2tlci9jbGkjNTgzM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODMzKQotICAgRml4IGBkb2NrZXIgZXhwb3J0YCBjb250aW51aW5nIHRoZSBleHBvcnQgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBpcyBjYW5jZWxlZC4gW21vYnkvbW9ieSM0OTI2NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MjY1KQotICAgRml4IGBkb2NrZXIgZXhwb3J0YCBub3QgcmVsZWFzaW5nIHRoZSBjb250YWluZXIncyB3cml0YWJsZSBsYXllciBhZnRlciBhIGZhaWx1cmUuIFttb2J5L21vYnkjNDg1MTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODUxNykKLSAgIEZpeCBgZG9ja2VyIGltYWdlcyAtLXRyZWVgIHVubmVjZXNzYXJ5IHRydW5jYXRpbmcgbG9uZyBpbWFnZSBuYW1lcyB3aGVuIG11bHRpcGxlIG5hbWVzIGFyZSBhdmFpbGFibGUgW2RvY2tlci9jbGkjNTc1N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81NzU3KQotICAgRml4IGEgYnVnIHdoZXJlIGEgY29udGFpbmVyIHdpdGggYSBuYW1lIG1hdGNoaW5nIGFub3RoZXIgY29udGFpbmVyJ3MgSUQgaXMgbm90IHJlc3RvcmVkIG9uIGRhZW1vbiBzdGFydHVwLiBbbW9ieS9tb2J5IzQ4NjY5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg2NjkpCi0gICBGaXggYW4gaXNzdWUgcHJldmVudGluZyBzb21lIElQdjYgYWRkcmVzc2VzIHNob3duIGJ5IGBkb2NrZXIgcHNgIHRvIGJlIHByb3Blcmx5IGJyYWNrZXRlZCBbZG9ja2VyL2NsaSM1NDY4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU0NjgpCi0gICBGaXggYnVnIHByZXZlbnRpbmcgaW1hZ2UgcHVsbHMgZnJvbSBiZWluZyBjYW5jZWxsZWQgZHVyaW5nIGBkb2NrZXIgcnVuYC4gW2RvY2tlci9jbGkjNTY0NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81NjQ1KQotICAgRml4IGVycm9yLWhhbmRsaW5nIHdoZW4gcnVubmluZyB0aGUgZGFlbW9uIGFzIGEgV2luZG93cyBzZXJ2aWNlIHRvIHByZXZlbnQgdW5jbGVhbiBleGl0cy4gW21vYnkvbW9ieSM0ODUxOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NTE4KQotICAgRml4IGlzc3VlIGNhdXNpbmcgb3V0cHV0IG9mIGBkb2NrZXIgcnVuYCB0byBiZSBpbmNvbnNpc3RlbnQgd2hlbiB1c2luZyBgLS1hdHRhY2ggc3Rkb3V0YCBvciBgLS1hdHRhY2ggc3RkZXJyYCB2ZXJzdXMgYHN0ZGluYC4gIGBkb2NrZXIgcnVuIC0tYXR0YWNoIHN0ZGluYCBub3cgZXhpdHMgaWYgdGhlIGNvbnRhaW5lciBleGl0cy4gW2RvY2tlci9jbGkjNTY2Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81NjYyKQotICAgRml4IHJvb3RsZXNzIERvY2tlciBzZXR1cCB3aXRoIGBzdWJpZGAgYmFja2VkIGJ5IE5TUyBtb2R1bGVzLiBbbW9ieS9tb2J5IzQ5MDM2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkwMzYpCi0gICBHZW5lcmF0ZWQgY29tcGxldGlvbiBzY3JpcHRzIGZyb20gdGhlIENMSSBub3cgc2hvdyBkZXNjcmlwdGlvbnMgbmV4dCB0byBlYWNoIGNvbW1hbmQvZmxhZyBzdWdnZXN0aW9uLiBbZG9ja2VyL2NsaSM1NzU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU3NTYpCi0gICBJUHY2IGFkZHJlc3NlcyBzaG93biBieSBgZG9ja2VyIHBzYCBpbiBwb3J0IGJpbmRpbmdzIGFyZSBub3cgYnJhY2tldGVkIFtkb2NrZXIvY2xpIzUzNjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTM2MykKLSAgIEltcGxlbWVudCB0aGUgcG9ydHMgdmFsaWRhdGlvbiBtZXRob2QgZm9yIENvbXBvc2UgW2RvY2tlci9jbGkjNTUyNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81NTI0KQotICAgSW1wcm92ZSBlcnJvci1vdXRwdXQgZm9yIGludmFsaWQgZmxhZ3Mgb24gdGhlIGNvbW1hbmQgbGluZS4gW2RvY2tlci9jbGkjNTIzM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81MjMzKQotICAgSW1wcm92ZSBlcnJvcnMgd2hlbiBmYWlsaW5nIHRvIHN0YXJ0IGEgY29udGFpbmVyIHVzaW5nIGFudGhlciBjb250YWluZXIncyBuZXR3b3JrIG5hbWVzcGFjZS4gW21vYnkvbW9ieSM0OTM2N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzY3KQotICAgSW1wcm92ZSBoYW5kbGluZyBvZiBpbnZhbGlkIEFQSSBlcnJvcnMgdGhhdCBjb3VsZCByZXN1bHQgaW4gYW4gZW1wdHkgZXJyb3IgbWVzc2FnZSBiZWluZyBzaG93bi4gW21vYnkvbW9ieSM0OTM3M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzczKQotICAgSW1wcm92ZSBvdXRwdXQgYW5kIGNvbnNpc3RlbmN5IGZvciB1bmtub3duIChzdWIpY29tbWFuZHMgYW5kIGludmFsaWQgYXJndW1lbnRzIFtkb2NrZXIvY2xpIzUyMzRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTIzNCkKLSAgIEltcHJvdmUgdmFsaWRhdGlvbiBvZiBgZXhlYy1vcHRzYCBpbiBkYWVtb24gY29uZmlndXJhdGlvbi4gW21vYnkvbW9ieSM0ODk3OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4OTc5KQotICAgVXBkYXRlIHRoZSBoYW5kbGluZyBvZiB0aGUgYC0tZ3B1cz0wYCBmbGFnIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgTlZJRElBIENvbnRhaW5lciBSdW50aW1lLiBbbW9ieS9tb2J5IzQ4NDgyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg0ODIpCi0gICBgY2xpZW50LkNvbnRhaW5lckNyZWF0ZWAgbm93IG5vcm1hbGl6ZXMgYENhcEFkZGAgYW5kIGBDYXBEcm9wYCBmaWVsZHMgaW4gYEhvc3RDb25maWdgIHRvIHRoZWlyIGNhbm9uaWNhbCBmb3JtLiBbbW9ieS9tb2J5IzQ4NTUxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg1NTEpCi0gICBgZG9ja2VyIGltYWdlIHNhdmVgIG5vdyBwcm9kdWNlcyBzdGFibGUgdGltZXN0YW1wcy4gW21vYnkvbW9ieSM0ODYxMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NjExKQotICAgYGRvY2tlciBpbnNwZWN0YCBub3cgbGV0cyB5b3UgaW5zcGVjdCBTd2FybSBjb25maWdzIFtkb2NrZXIvY2xpIzU1NzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTU3MykKLSAgIGNvbnRhaW5lcmQgaW1hZ2Ugc3RvcmU6IEFkZCBzdXBwb3J0IGZvciBgRXh0cmFjdGluZ2AgbGF5ZXIgc3RhdHVzIGluIGBkb2NrZXIgcHVsbGAuIFttb2J5L21vYnkjNDkwNjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTA2NCkKLSAgIGNvbnRhaW5lcmQgaW1hZ2Ugc3RvcmU6IEZpeCBgY29tbWl0YCwgYGltcG9ydGAsIGFuZCBgYnVpbGRgIG5vdCBwcmVzZXJ2aW5nIGEgcmVwbGFjZWQgaW1hZ2UgYXMgYSBkYW5nbGluZyBpbWFnZS4gW21vYnkvbW9ieSM0ODMxNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MzE2KQotICAgY29udGFpbmVyZCBpbWFnZSBzdG9yZTogTWFrZSBgZG9ja2VyIGxvYWQgLS1wbGF0Zm9ybWAgcmV0dXJuIGFuIGVycm9yIHdoZW4gdGhlIHJlcXVlc3RlZCBwbGF0Zm9ybSBpc24ndCBsb2FkZWQuIFttb2J5L21vYnkjNDg3MThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODcxOCkKLSAgIEZpeCB2YWxpZGF0aW9uIG9mIGAtLWxpbmtgIG9wdGlvbi4gW2RvY2tlci9jbGkjNTczOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81NzM5KQotICAgQWRkIHZhbGlkYXRpb24gb2YgbmV0d29yay1kaWFnbm9zdGljLXBvcnQgZGFlbW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBbbW9ieS9tb2J5IzQ5MzA1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkzMDUpCi0gICBVbmxlc3MgZXhwbGljaXRseSBjb25maWd1cmVkLCBhbiBJUCBhZGRyZXNzIGlzIG5vIGxvbmdlciByZXNlcnZlZCBmb3IgYSBnYXRld2F5IGluIGNhc2VzIHdoZXJlIGl0IGlzIG5vdCByZXF1aXJlZC4gTmFtZWx5LCDigJxpbnRlcm5hbOKAnSBicmlkZ2UgbmV0d29ya3Mgd2l0aCBvcHRpb24gYGNvbS5kb2NrZXIubmV0d29yay5icmlkZ2UuaW5oaWJpdF9pcHY0YCwgYGlwdmxhbmAgb3IgYG1hY3ZsYW5gIG5ldHdvcmtzIHdpdGggbm8gcGFyZW50IGludGVyZmFjZSwgYW5kIEwzIElQdmxhbiBtb2Rlcy4gW21vYnkvbW9ieSM0OTI2MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MjYxKQotICAgSWYgYSBjdXN0b20gbmV0d29yayBkcml2ZXIgcmVwb3J0cyBjYXBhYmlsaXR5IGBHd0FsbG9jQ2hlY2tlcmAgdGhlbiwgYmVmb3JlIGEgbmV0d29yayBpcyBjcmVhdGVkLCBpdCB3aWxsIGdldCBhIGBHd0FsbG9jQ2hlY2tlclJlcXVlc3RgIHdpdGggdGhlIG5ldHdvcmsncyBvcHRpb25zLiBUaGUgY3VzdG9tIGRyaXZlciBtYXkgdGhlbiByZXBseSB0aGF0IG5vIGdhdGV3YXkgSVAgYWRkcmVzcyBzaG91bGQgYmUgYWxsb2NhdGVkLiBbbW9ieS9tb2J5IzQ5MzcyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkzNzIpCi0gICBGaXhlZCBhbiBpc3N1ZSB0aGF0IG1lYW50IGEgY29udGFpbmVyIGNvdWxkIG5vdCBiZSBhdHRhY2hlZCB0byBhbiBMMyBJUHZsYW4gYXQgdGhlIHNhbWUgdGltZSBhcyBvdGhlciBuZXR3b3JrIHR5cGVzLiBbbW9ieS9tb2J5IzQ5MTMwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkxMzApCi0gICBSZW1vdmUgdGhlIGNvcnJlY3QgYC9ldGMvaG9zdHNgIGVudHJpZXMgd2hlbiBkaXNjb25uZWN0aW5nIGEgY29udGFpbmVyIGZyb20gYSBuZXR3b3JrLiBbbW9ieS9tb2J5IzQ4ODU3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg4NTcpCi0gICBGaXggZHVwbGljYXRlIG5ldHdvcmsgZGlzY29ubmVjdCBldmVudHMuIFttb2J5L21vYnkjNDg4MDBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODgwMCkKLSAgIFJlc29sdmUgaXNzdWVzIHJlbGF0ZWQgdG8gY2hhbmdpbmcgYGZpeGVkLWNpZHJgIGZvciBgZG9ja2VyMGAsIGFuZCBpbmZlcnJpbmcgY29uZmlndXJhdGlvbiBmcm9tIGEgdXNlci1tYW5hZ2VkIGRlZmF1bHQgYnJpZGdlIChgLS1icmlkZ2VgKS4gW21vYnkvbW9ieSM0ODMxOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MzE5KQotICAgUmVtb3ZlIGZlYXR1cmUgZmxhZyBgd2luZG93cy1kbnMtcHJveHlgLCBpbnRyb2R1Y2VkIGluIHJlbGVhc2UgMjYuMS4wIHRvIGNvbnRyb2wgZm9yd2FyZGluZyB0byBleHRlcm5hbCBETlMgcmVzb2x2ZXJzIGZyb20gV2luZG93cyBjb250YWluZXJzLCB0byBtYWtlIGBuc2xvb2t1cGAgd29yay4gSXQgd2FzIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiByZWxlYXNlIDI3LjAuMC4gW21vYnkvbW9ieSM0ODczOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NzM4KQotICAgUmVtb3ZlIGFuIGBpcHRhYmxlc2AgbWFuZ2xlIHJ1bGUgZm9yIGNoZWNrc3VtbWluZyBTQ1RQLiBUaGUgcnVsZSBjYW4gYmUgcmUtZW5hYmxlZCBieSBzZXR0aW5nIGBET0NLRVJfSVBUQUJMRVNfU0NUUF9DSEVDS1NVTT0xYCBpbiB0aGUgZGFlbW9uJ3MgZW52aXJvbm1lbnQuIFRoaXMgb3ZlcnJpZGUgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFttb2J5L21vYnkjNDgxNDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODE0OSkKLSAgIEZhc3RlciBjb25uZWN0aW9uIHRvIGJyaWRnZSBuZXR3b3JrcywgaW4gbW9zdCBjYXNlcy4gW21vYnkvbW9ieSM0OTMwMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzAyKQoKIyMjIyBQYWNrYWdpbmcgdXBkYXRlcwoKLSAgIFVwZGF0ZSBHbyBydW50aW1lIHRvIFsxLjIzLjZdKGh0dHBzOi8vZ28uZGV2L2RvYy9kZXZlbC9yZWxlYXNlI2dvMS4yMy42KS4gW2RvY2tlci9jbGkjNTc5NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81Nzk1KSwgW21vYnkvbW9ieSM0OTM5M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzkzKSwgW2RvY2tlci9kb2NrZXItY2UtcGFja2FnaW5nIzExNjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyLWNlLXBhY2thZ2luZy9wdWxsLzExNjEpCi0gICBVcGRhdGUgYHJ1bmNgIHRvIFt2MS4yLjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW5jL3JlbGVhc2VzL3RhZy92MS4yLjUpIChzdGF0aWMgYmluYXJpZXMgb25seSkuIFttb2J5L21vYnkjNDk0NjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTQ2NCkKLSAgIFVwZGF0ZSBjb250YWluZXJkIHRvIFt2MS43LjI1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY29udGFpbmVyZC9jb250YWluZXJkL3JlbGVhc2VzL3RhZy92MS43LjI1KS4gW21vYnkvbW9ieSM0OTI1Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MjUyKQotICAgVXBkYXRlIEJ1aWxkS2l0IHRvIFt2MC4yMC4wXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9idWlsZGtpdC9yZWxlYXNlcy90YWcvdjAuMjAuMCkuIFttb2J5L21vYnkjNDk0OTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTQ5NSkKLSAgIFVwZGF0ZSBCdWlsZHggdG8gW3YwLjIxLjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvYnVpbGR4L3JlbGVhc2VzL3RhZy92MC4yMS4wKS4gW2RvY2tlci9kb2NrZXItY2UtcGFja2FnaW5nIzExNjZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyLWNlLXBhY2thZ2luZy9wdWxsLzExNjYpCi0gICBVcGRhdGUgQ29tcG9zZSB0byBbdjIuMzIuNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jb21wb3NlL3JlbGVhc2VzL3RhZy92Mi4zMi4zKS4gW2RvY2tlci9kb2NrZXItY2UtcGFja2FnaW5nIzExNDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyLWNlLXBhY2thZ2luZy9wdWxsLzExNDMpCi0gICBUaGUgY2Fub25pY2FsIHNvdXJjZSBmb3IgdGhlIGBkb2NrZXJkKDgpYCBtYW4gcGFnZSBoYXMgYmVlbiBtb3ZlZCBiYWNrIHRvIHRoZSBgbW9ieS9tb2J5YCByZXBvc2l0b3J5IGl0c2VsZi4gW21vYnkvbW9ieSM0ODI5OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4Mjk4KQoKIyMjIyBHbyBTREsKCi0gICBJbXByb3ZlIHZhbGlkYXRpb24gb2YgZW1wdHkgb2JqZWN0IElEcy4gVGhlIGNsaWVudCBub3cgcmV0dXJucyBhbiAiSW52YWxpZCBQYXJhbWV0ZXIiIGVycm9yIHdoZW4gdHJ5aW5nIHRvIHVzZSBhbiBlbXB0eSBJRCBvciBuYW1lLiBUaGlzIGNoYW5nZXMgdGhlIGVycm9yIHJldHVybmVkIGJ5IHNvbWUgIkluc3BlY3QiIGZ1bmN0aW9ucyBmcm9tIGEgIk5vdCBmb3VuZCIgZXJyb3IgdG8gYW4gIkludmFsaWQgUGFyYW1ldGVyIi4gW21vYnkvbW9ieSM0OTM4MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzgxKQotICAgYENsaWVudC5JbWFnZUJ1aWxkKClgIG5vdyBvbWl0cyBkZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSBBUEkgcmVxdWVzdCdzIHF1ZXJ5IHN0cmluZy4gW21vYnkvbW9ieSM0ODY1MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NjUxKQotICAgYGFwaS90eXBlcy9jb250YWluZXJgOiBNZXJnZSBgU3RhdHNgIGFuZCBgU3RhdHNSZXNwb25zZWAgW21vYnkvbW9ieSM0OTI4N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5Mjg3KQotICAgYGNsaWVudC5XaXRoVmVyc2lvbmA6IFN0cmlwIHYtcHJlZml4IHdoZW4gc2V0dGluZyBBUEkgdmVyc2lvbiBbbW9ieS9tb2J5IzQ5MzUyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkzNTIpCi0gICBgY2xpZW50YDogQWRkIGBXaXRoVHJhY2VPcHRpb25zYCBhbGxvd2luZyB0byBzcGVjaWZ5IGN1c3RvbSBPVGUxIHRyYWNlIG9wdGlvbnMuIFttb2J5L21vYnkjNDk0MTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTQxNSkKLSAgIGBjbGllbnRgOiBBZGQgYEhpamFja0RpYWxlcmAgaW50ZXJmYWNlLiBbbW9ieS9tb2J5IzQ5Mzg4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkzODgpCi0gICBgY2xpZW50YDogQWRkIGBTd2FybU1hbmFnZW1lbnRBUElDbGllbnRgIGludGVyZmFjZSB0byBkZXNjcmliZSBhbGwgQVBJIGNsaWVudCBtZXRob2RzIHJlbGF0ZWQgdG8gU3dhcm0tc3BlY2lmaWMgb2JqZWN0cy4gW21vYnkvbW9ieSM0OTM4OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5Mzg4KQotICAgYGNsaWVudGA6IEFkZCBgV2l0aFRyYWNlT3B0aW9uc2AgYWxsb3dpbmcgdG8gc3BlY2lmeSBjdXN0b20gT1RlbCB0cmFjZSBvcHRpb25zLiBbbW9ieS9tb2J5IzQ5NDE1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk0MTUpCi0gICBgY2xpZW50YDogYEltYWdlSGlzdG9yeWAsIGBJbWFnZUxvYWRgIGFuZCBgSW1hZ2VTYXZlYCBub3cgdXNlIHZhcmlhZGljIGZ1bmN0aW9uYWwgb3B0aW9ucyBbbW9ieS9tb2J5IzQ5NDY2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk0NjYpCi0gICBgcGtnL2NvbnRhaW5lcmZzYDogTW92ZSB0byBpbnRlcm5hbCBbbW9ieS9tb2J5IzQ4MDk3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgwOTcpCi0gICBgcGtnL3JlZXhlY2A6IENhbiBub3cgYmUgdXNlZCBvbiBwbGF0Zm9ybXMgb3RoZXIgdGhhbiBMaW51eCwgV2luZG93cywgbWFjT1MgYW5kIEZyZWVCU0QgW21vYnkvbW9ieSM0OTExOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTE4KQotICAgYGFwaS90eXBlcy9jb250YWluZXJgOiBpbnRyb2R1Y2UgYENvbW1pdFJlc3BvbnNlYCB0eXBlLiBUaGlzIGlzIGN1cnJlbnRseSBhbiBhbGlhcyBmb3IgYElEUmVzcG9uc2VgLCBidXQgbWF5IGJlY29tZSBhIGRpc3RpbmN0IHR5cGUgaW4gYSBmdXR1cmUgcmVsZWFzZS4gW21vYnkvbW9ieSM0OTQ0NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NDQ0KQotICAgYGFwaS90eXBlcy9jb250YWluZXJgOiBpbnRyb2R1Y2UgYEV4ZWNDcmVhdGVSZXNwb25zZWAgdHlwZS4gVGhpcyBpcyBjdXJyZW50bHkgYW4gYWxpYXMgZm9yIGBJRFJlc3BvbnNlYCwgYnV0IG1heSBiZWNvbWUgYSBkaXN0aW5jdCB0eXBlIGluIGEgZnV0dXJlIHJlbGVhc2UuIFttb2J5L21vYnkjNDk0NDRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTQ0NCkKCiMjIyMgQVBJCgotICAgVXBkYXRlIEFQSSB2ZXJzaW9uIHRvIFt2MS40OF0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL2FwaS92MS40OC8pIFttb2J5L21vYnkjNDg0NzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODQ3NikKLSAgIGBHRVQgL2ltYWdlcy97bmFtZX0vanNvbmAgcmVzcG9uc2Ugbm93IHJldHVybnMgdGhlIGBNYW5pZmVzdHNgIGZpZWxkIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN1Yi1tYW5pZmVzdHMgY29udGFpbmVkIGluIHRoZSBpbWFnZSBpbmRleC4gVGhpcyBpbmNsdWRlcyB0aGluZ3MgbGlrZSBwbGF0Zm9ybS1zcGVjaWZpYyBtYW5pZmVzdHMgYW5kIGJ1aWxkIGF0dGVzdGF0aW9ucy4gW21vYnkvbW9ieSM0ODI2NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MjY0KQotICAgYFBPU1QgL2NvbnRhaW5lcnMvY3JlYXRlYCBub3cgc3VwcG9ydHMgYE1vdW50YCBvZiB0eXBlIGBpbWFnZWAgZm9yIG1vdW50aW5nIGFuIGltYWdlIGluc2lkZSBhIGNvbnRhaW5lci4gW21vYnkvbW9ieSM0ODc5OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4Nzk4KQotICAgYEdFVCAvaW1hZ2VzL3tuYW1lfS9oaXN0b3J5YCBub3cgc3VwcG9ydHMgYSBgcGxhdGZvcm1gIHBhcmFtZXRlciAoSlNPTiBlbmNvZGVkIE9DSSBQbGF0Zm9ybSB0eXBlKSB0aGF0IGxldHMgeW91IHNwZWNpZnkgYSBwbGF0Zm9ybSB0byBzaG93IHRoZSBoaXN0b3J5IG9mLiBbbW9ieS9tb2J5IzQ4Mjk1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgyOTUpCi0gICBgUE9TVCAvaW1hZ2VzL3tuYW1lfS9sb2FkYCBhbmQgYEdFVCAvaW1hZ2VzL3tuYW1lfS9nZXRgIG5vdyBzdXBwb3J0cyBhIGBwbGF0Zm9ybWAgcGFyYW1ldGVyIChKU09OIGVuY29kZWQgT0NJIFBsYXRmb3JtIHR5cGUpIHRoYXQgbGV0cyB5b3Ugc3BlY2lmeSBhIHBsYXRmb3JtIHRvIGxvYWQvc2F2ZS4gTm90IHBhc3NpbmcgdGhpcyBwYXJhbWV0ZXIgcmVzdWx0cyBpbiBsb2FkaW5nL3NhdmluZyB0aGUgZnVsbCBtdWx0aS1wbGF0Zm9ybSBpbWFnZS4gW21vYnkvbW9ieSM0ODI5NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4Mjk1KQotICAgSW1wcm92ZSBlcnJvcnMgZm9yIGludmFsaWQgd2lkdGgvaGVpZ2h0IG9uIGNvbnRhaW5lciByZXNpemUgYW5kIGV4ZWMgcmVzaXplIFttb2J5L21vYnkjNDg2NzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODY3OSkKLSAgIFRoZSBgUE9TVCAvY29udGFpbmVycy9jcmVhdGVgIGVuZHBvaW50IG5vdyBpbmNsdWRlcyBhIHdhcm5pbmcgaW4gdGhlIHJlc3BvbnNlIHdoZW4gc2V0dGluZyB0aGUgY29udGFpbmVyLXdpZGUgYFZvbHVtZURyaXZlcmAgb3B0aW9uIGluIGNvbWJpbmF0aW9uIHdpdGggdm9sdW1lcyBkZWZpbmVkIHRocm91Z2ggYE1vdW50c2AgYmVjYXVzZSB0aGUgYFZvbHVtZURyaXZlcmAgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhvc2Ugdm9sdW1lcy4gVGhpcyB3YXJuaW5nIHdhcyBwcmV2aW91c2x5IGdlbmVyYXRlZCBieSB0aGUgQ0xJLiBbbW9ieS9tb2J5IzQ4Nzg5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg3ODkpCi0gICBjb250YWluZXJkIGltYWdlIHN0b3JlOiBgR0VUIC9pbWFnZXMvanNvbmAgYW5kIGBHRVQgL2ltYWdlcy97bmFtZX0vanNvbmAgcmVzcG9uc2VzIG5vdyBpbmNsdWRlcyBgRGVzY3JpcHRvcmAgZmllbGQsIHdoaWNoIGNvbnRhaW5zIGFuIE9DSSBkZXNjcmlwdG9yIG9mIHRoZSBpbWFnZSB0YXJnZXQuIFRoZSBuZXcgZmllbGQgaXMgb25seSBwb3B1bGF0ZWQgaWYgdGhlIGRhZW1vbiBwcm92aWRlcyBhIG11bHRpLXBsYXRmb3JtIGltYWdlIHN0b3JlLiBbbW9ieS9tb2J5IzQ4ODk0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg4OTQpCi0gICBjb250YWluZXJkIGltYWdlIHN0b3JlOiBgR0VUIC9jb250YWluZXJzL3tuYW1lfS9qc29uYCBub3cgcmV0dXJucyBhbiBgSW1hZ2VNYW5pZmVzdERlc2NyaXB0b3JgIGZpZWxkIGNvbnRhaW5pbmcgdGhlIE9DSSBkZXNjcmlwdG9yIG9mIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBpbWFnZSBtYW5pZmVzdCBvZiB0aGUgaW1hZ2UgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIGNvbnRhaW5lci4gW21vYnkvbW9ieSM0ODg1NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4ODU1KQotICAgQWRkIGRlYnVnIGVuZHBvaW50cyAoYEdFVCAvZGVidWcvdmFyc2AsIGBHRVQgL2RlYnVnL3Bwcm9mL2AsIGBHRVQgL2RlYnVnL3Bwcm9mL2NtZGxpbmVgLCBgR0VUIC9kZWJ1Zy9wcHJvZi9wcm9maWxlYCwgYEdFVCAvZGVidWcvcHByb2Yvc3ltYm9sYCwgYEdFVCAvZGVidWcvcHByb2YvdHJhY2VgLCBgR0VUIC9kZWJ1Zy9wcHJvZi97bmFtZX1gKSBhcmUgbm93IGFsc28gYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSB2ZXJzaW9uZWQtQVBJIHBhdGhzIChgL3Y8QVBJLXZlcnNpb24+LzxlbmRwb2ludD5gKS4gW21vYnkvbW9ieSM0OTA1MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MDUxKQotICAgRml4IEFQSSByZXR1cm5pbmcgYSBgNTAwYCBzdGF0dXMgY29kZSBpbnN0ZWFkIG9mIGA0MDBgIGZvciB2YWxpZGF0aW9uIGVycm9ycy4gW21vYnkvbW9ieSM0OTIxN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MjE3KQotICAgRml4IHN0YXR1cyBjb2RlcyBmb3IgYXJjaGl2ZSBlbmRwb2ludHMgYEhFQUQgL2NvbnRhaW5lcnMve25hbWU6Lip9L2FyY2hpdmVgLCBgR0VUIC9jb250YWluZXJzL3tuYW1lOi4qfS9hcmNoaXZlYCwgYFBVVCAvY29udGFpbmVycy97bmFtZTouKn0vYXJjaGl2ZWAgcmV0dXJuaW5nIGEgYDUwMGAgc3RhdHVzIGluc3RlYWQgb2YgYSBgNDAwYCBzdGF0dXMuIFttb2J5L21vYnkjNDkyMTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTIxOSkKLSAgIGBQT1NUIC9jb250YWluZXJzL2NyZWF0ZWAgbm93IGFjY2VwdHMgYSBgd3JpdGFibGUtY2dyb3Vwcz10cnVlYCBvcHRpb24gaW4gYEhvc3RDb25maWcuU2VjdXJpdHlPcHRgIHRvIG1vdW50IHRoZSBjb250YWluZXIncyBjZ3JvdXBzIHdyaXRhYmxlLiBUaGlzIHByb3ZpZGVzIGEgbW9yZSBncmFudWxhciBhcHByb2FjaCB0aGFuIGBIb3N0Q29uZmlnLlByaXZpbGVnZWRgLiBbbW9ieS9tb2J5IzQ4ODI4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg4MjgpCi0gICBgUE9TVCAvYnVpbGQvcHJ1bmVgIHJlbmFtZXMgYGtlZXAtYnl0ZXNgIHRvIGByZXNlcnZlZC1zcGFjZWAgYW5kIG5vdyBzdXBwb3J0cyBhZGRpdGlvbmFsIHBydW5lIHBhcmFtZXRlcnMgYG1heC11c2VkLXNwYWNlYCBhbmQgYG1pbi1mcmVlLXNwYWNlYC4gW21vYnkvbW9ieSM0ODcyMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NzIwKQotICAgYFBPU1QgL25ldHdvcmtzL2NyZWF0ZWAgbm93IGhhcyBhbiBgRW5hYmxlSVB2NGAgZmllbGQuIFNldHRpbmcgaXQgdG8gYGZhbHNlYCBkaXNhYmxlcyBJUHY0IElQQU0gZm9yIHRoZSBuZXR3b3JrLiBbbW9ieS9tb2J5IzQ4MjcxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgyNzEpCiAgICAtICAgYEdFVCAvbmV0d29ya3Mve2lkfWAgbm93IHJldHVybnMgYW4gYEVuYWJsZUlQdjRgIGZpZWxkIHNob3dpbmcgd2hldGhlciB0aGUgbmV0d29yayBoYXMgSVB2NCBJUEFNIGVuYWJsZWQuIFttb2J5L21vYnkjNDgyNzFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODI3MSkKICAgIC0gICBVc2VyLWRlZmluZWQgYnJpZGdlIG5ldHdvcmtzIHJlcXVpcmUgZWl0aGVyIElQdjQgb3IgSVB2NiBhZGRyZXNzIGFzc2lnbm1lbnQgdG8gYmUgZW5hYmxlZC4gSVB2NCBjYW5ub3QgYmUgZGlzYWJsZWQgZm9yIHRoZSBkZWZhdWx0IGJyaWRnZSBuZXR3b3JrIChgZG9ja2VyMGApLiBbbW9ieS9tb2J5IzQ4MzIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgzMjMpCiAgICAtICAgYG1hY3ZsYW5gIGFuZCBgaXB2bGFuYCBuZXR3b3JrcyBjYW4gYmUgY3JlYXRlZCB3aXRoIGFkZHJlc3MgYXNzaWdubWVudCBkaXNhYmxlZCBmb3IgSVB2NCwgSVB2Niwgb3IgYm90aCBhZGRyZXNzIGZhbWlsaWVzLiBbbW9ieS9tb2J5IzQ4Mjk5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgyOTkpCiAgICAtICAgSVB2NCBjYW5ub3QgYmUgZGlzYWJsZWQgZm9yIFdpbmRvd3Mgb3IgU3dhcm0gbmV0d29ya3MuIFttb2J5L21vYnkjNDgyNzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODI3OCkKLSAgIEFkZCBhIHdheSB0byBzcGVjaWZ5IHdoaWNoIG5ldHdvcmsgc2hvdWxkIHByb3ZpZGUgdGhlIGRlZmF1bHQgZ2F0ZXdheSBmb3IgYSBjb250YWluZXIuIFttb2J5L21vYnkjNDg5MzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODkzNikKICAgIC0gICBgUE9TVCAvbmV0d29ya3Mve2lkfS9jb25uZWN0YCBhbmQgYFBPU1QgL2NvbnRhaW5lcnMvY3JlYXRlYCBub3cgYWNjZXB0IGEgYEd3UHJpb3JpdHlgIGZpZWxkIGluIGBFbmRwb2ludHNDb25maWdgLiBUaGlzIHZhbHVlIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIG5ldHdvcmsgZW5kcG9pbnQgcHJvdmlkZXMgdGhlIGRlZmF1bHQgZ2F0ZXdheSBmb3IgdGhlIGNvbnRhaW5lci4gVGhlIGVuZHBvaW50IHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgaXMgc2VsZWN0ZWQuIElmIG11bHRpcGxlIGVuZHBvaW50cyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LCBlbmRwb2ludHMgYXJlIHNvcnRlZCBsZXhpY29ncmFwaGljYWxseSBieSB0aGVpciBuZXR3b3JrIG5hbWUsIGFuZCB0aGUgb25lIHRoYXQgc29ydHMgZmlyc3QgaXMgcGlja2VkLiBbbW9ieS9tb2J5IzQ4NzQ2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg3NDYpCiAgICAtICAgYEdFVCAvY29udGFpbmVycy9qc29uYCBub3cgcmV0dXJucyBhIGBHd1ByaW9yaXR5YCBmaWVsZCBpbiBgTmV0d29ya1NldHRpbmdzYCBmb3IgZWFjaCBuZXR3b3JrIGVuZHBvaW50LiBUaGUgYEd3UHJpb3JpdHlgIGZpZWxkIGlzIHVzZWQgYnkgdGhlIENMSeKAmXMgbmV3IGBndy1wcmlvcml0eWAgb3B0aW9uIGZvciBgZG9ja2VyIHJ1bmAgYW5kIGBkb2NrZXIgbmV0d29yayBjb25uZWN0YC4gW21vYnkvbW9ieSM0ODc0Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NzQ2KQotICAgU2V0dGluZ3MgZm9yIGBldGgwYCBpbiBgLS1zeXNjdGxgIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdXRvbWF0aWNhbGx5IG1pZ3JhdGVkIHRvIHRoZSBuZXR3b3JrIGVuZHBvaW50LiBbbW9ieS9tb2J5IzQ4NzQ2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg3NDYpCiAgICAtICAgRm9yIGV4YW1wbGUsIGluIHRoZSBEb2NrZXIgQ0xJLCBgZG9ja2VyIHJ1biAtLW5ldHdvcmsgbXluZXQgLS1zeXNjdGwgbmV0LmlwdjQuY29uZi5ldGgwLmxvZ19tYXJ0aWFucz0xIC4uLmAgaXMgcmVqZWN0ZWQuIEluc3RlYWQsIHlvdSBtdXN0IHVzZSBgZG9ja2VyIHJ1biAtLW5ldHdvcmsgbmFtZT1teW5ldCxkcml2ZXItb3B0PWNvbS5kb2NrZXIubmV0d29yay5lbmRwb2ludC5zeXNjdGxzPW5ldC5pcHY0LmNvbmYuSUZOQU1FLmxvZ19tYXJ0aWFucz0xIC4uLmAKLSAgIGBHRVQgL2NvbnRhaW5lcnMvanNvbmAgbm93IHJldHVybnMgYW4gYEltYWdlTWFuaWZlc3REZXNjcmlwdG9yYCBmaWVsZCBtYXRjaGluZyB0aGUgc2FtZSBmaWVsZCBpbiBgL2NvbnRhaW5lcnMve25hbWV9L2pzb25gLiBUaGlzIGZpZWxkIGlzIG9ubHkgcG9wdWxhdGVkIGlmIHRoZSBkYWVtb24gcHJvdmlkZXMgYSBtdWx0aS1wbGF0Zm9ybSBpbWFnZSBzdG9yZS4gW21vYnkvbW9ieSM0OTQwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NDA3KQoKIyMjIyBSZW1vdmVkCgotICAgVGhlIEZsdWVudCBsb2dnZXIgb3B0aW9uIGBmbHVlbnRkLWFzeW5jLWNvbm5lY3RgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gdjIwLjEwIGFuZCBpcyBub3cgcmVtb3ZlZC4gW21vYnkvbW9ieSM0NjExNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ2MTE0KQotICAgVGhlIGAtLXRpbWVgIG9wdGlvbiBvbiBgZG9ja2VyIHN0b3BgIGFuZCBgZG9ja2VyIHJlc3RhcnRgIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbmFtZWQgdG8gYC0tdGltZW91dGAuIFtkb2NrZXIvY2xpIzU0ODVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTQ4NSkKLSAgIEdvLVNESzogYHBrZy9pb3V0aWxzYDogUmVtb3ZlIGBOZXdSZWFkZXJFcnJXcmFwcGVyYCBhcyBpdCB3YXMgbmV2ZXIgdXNlZC4gW21vYnkvbW9ieSM0OTI1OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MjU4KQotICAgR28tU0RLOiBgcGtnL2lvdXRpbHNgOiBSZW1vdmUgZGVwcmVjYXRlZCBgQnl0ZXNQaXBlYCwgYE5ld0J5dGVzUGlwZWAsIGBFcnJDbG9zZWRgLCBgV3JpdGVDb3VudGVyYCwgYE5ld1dyaXRlQ291bnRlcmAsIGBOZXdSZWFkZXJFcnJXcmFwcGVyYCwgYE5vcEZsdXNoZXJgLiBbbW9ieS9tb2J5IzQ5MjQ1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkyNDUpCi0gICBHby1TREs6IGBwa2cvaW91dGlsc2A6IFJlbW92ZSBkZXByZWNhdGVkIGBOb3BXcml0ZXJgIGFuZCBgTm9wV3JpdGVDbG9zZXJgLiBbbW9ieS9tb2J5IzQ5MjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkyNTYpCi0gICBHby1TREs6IGBwa2cvc3lzaW5mb2A6IFJlbW92ZSBkZXByZWNhdGVkIE51bUNQVS4gW21vYnkvbW9ieSM0OTI0Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MjQyKQotICAgR28tU0RLOiBSZW1vdmUgYHBrZy9icm9hZGNhc3RlcmAsIGFzIGl0IHdhcyBvbmx5IHVzZWQgaW50ZXJuYWxseSBbbW9ieS9tb2J5IzQ5MTcyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkxNzIpCi0gICBHby1TREs6IFJlbW92ZSBkZXByZWNhdGVkIGBjbGkuRXJyb3JzYCB0eXBlIFtkb2NrZXIvY2xpIzU1NDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTU0OSkKLSAgIFJlbW92ZSBgcGtnL2lvdXRpbHMuUmVhZENsb3NlcldyYXBwZXJgLCBhcyBpdCB3YXMgb25seSB1c2VkIGluIHRlc3RzLiBbbW9ieS9tb2J5IzQ5MjM3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkyMzcpCi0gICBSZW1vdmUgZGVwcmVjYXRlZCBgYXBpLWNvcnMtaGVhZGVyYCBjb25maWcgcGFyYW1ldGVyIGFuZCB0aGUgYGRvY2tlcmRgIGAtLWFwaS1jb3JzLWhlYWRlcmAgb3B0aW9uIFttb2J5L21vYnkjNDgyMDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODIwOSkKLSAgIFJlbW92ZSBkZXByZWNhdGVkIGBBUElFbmRwb2ludC5WZXJzaW9uYCBmaWVsZCwgYEFQSVZlcnNpb25gIHR5cGUsIGFuZCBgQVBJVmVyc2lvbjFgIGFuZCBgQVBJVmVyc2lvbjJgIGNvbnN0cy4gW21vYnkvbW9ieSM0OTAwNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MDA0KQotICAgUmVtb3ZlIGRlcHJlY2F0ZWQgYGFwaS1jb3JzLWhlYWRlcmAgY29uZmlnIHBhcmFtZXRlciBhbmQgdGhlIERvY2tlciBkYWVtb24ncyBgLS1hcGktY29ycy1oZWFkZXJgIG9wdGlvbi4gW2RvY2tlci9jbGkjNTQzN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81NDM3KQotICAgUmVtb3ZlIGRlcHJlY2F0ZWQgYHBrZy9kaXJlY3RvcnlgIHBhY2thZ2UgW21vYnkvbW9ieSM0ODc3OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4Nzc5KQotICAgUmVtb3ZlIGRlcHJlY2F0ZWQgYHBrZy9kbXNnLkRtZXNnKClgIFttb2J5L21vYnkjNDgxMDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODEwOSkKLSAgIFJlbW92ZSBkZXByZWNhdGVkIGltYWdlL3NwZWMgcGFja2FnZSwgd2hpY2ggd2FzIG1vdmVkIHRvIGEgc2VwYXJhdGUgbW9kdWxlIChgZ2l0aHViLmNvbS9tb2J5L2RvY2tlci1pbWFnZS1zcGVjYCkgW21vYnkvbW9ieSM0ODQ2MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NDYwKQotICAgUmVtb3ZlIG1pZ3JhdGlvbiBjb2RlIGFuZCBlcnJvcnMgZm9yIHRoZSBkZXByZWNhdGVkIGBsb2dlbnRyaWVzYCBsb2dnaW5nIGRyaXZlci4gW21vYnkvbW9ieSM0ODg5MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4ODkxKQotICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGRlcHJlY2F0ZWQgZXh0ZXJuYWwgZ3JhcGgtZHJpdmVyIHBsdWdpbnMuIFttb2J5L21vYnkjNDgwNzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODA3MikKLSAgIGBhcGkvdHlwZXNgOiBSZW1vdmUgZGVwcmVjYXRlZCBgY29udGFpbmVyLkNvbnRhaW5lck5vZGVgIGFuZCBgQ29udGFpbmVySlNPTkJhc2UuTm9kZWAgZmllbGQuIFttb2J5L21vYnkjNDgxMDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODEwNykKLSAgIGBhcGkvdHlwZXNgOiBSZW1vdmUgZGVwcmVjYXRlZCBhbGlhc2VzOiBgSW1hZ2VzUHJ1bmVSZXBvcnRgLCBgVm9sdW1lc1BydW5lUmVwb3J0YCwgYE5ldHdvcmtDcmVhdGVSZXF1ZXN0YCwgYE5ldHdvcmtDcmVhdGVgLCBgTmV0d29ya0xpc3RPcHRpb25zYCwgYE5ldHdvcmtDcmVhdGVSZXNwb25zZWAsIGBOZXR3b3JrSW5zcGVjdE9wdGlvbnNgLCBgTmV0d29ya0Nvbm5lY3RgLCBgTmV0d29ya0Rpc2Nvbm5lY3RgLCBgRW5kcG9pbnRSZXNvdXJjZWAsIGBOZXR3b3JrUmVzb3VyY2VgLCBgTmV0d29ya3NQcnVuZVJlcG9ydGAsIGBFeGVjQ29uZmlnYCwgYEV4ZWNTdGFydENoZWNrYCwgYENvbnRhaW5lckV4ZWNJbnNwZWN0YCwgYENvbnRhaW5lcnNQcnVuZVJlcG9ydGAsIGBDb250YWluZXJQYXRoU3RhdGAsIGBDb3B5VG9Db250YWluZXJPcHRpb25zYCwgYENvbnRhaW5lclN0YXRzYCwgYEltYWdlU2VhcmNoT3B0aW9uc2AsIGBJbWFnZUltcG9ydFNvdXJjZWAsIGBJbWFnZUxvYWRSZXNwb25zZWAsIGBDb250YWluZXJOb2RlYC4gW21vYnkvbW9ieSM0ODEwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MTA3KQotICAgYGxpYm5ldHdvcmsvaXB0YWJsZXNgOiBSZW1vdmUgZGVwcmVjYXRlZCBgSVBWYCwgYElwdGFibGVzYCwgYElQNlRhYmxlc2AgYW5kIGBQYXNzdGhyb3VnaCgpYC4gW21vYnkvbW9ieSM0OTEyMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTIxKQotICAgYHBrZy9hcmNoaXZlYDogUmVtb3ZlIGRlcHJlY2F0ZWQgYENhbm9uaWNhbFRhck5hbWVGb3JQYXRoYCwgYE5ld1RlbXBBcmNoaXZlYCwgYFRlbXBBcmNoaXZlYCBbbW9ieS9tb2J5IzQ4NzA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg3MDgpCi0gICBgcGtnL2ZpbGV1dGlsc2A6IFJlbW92ZSBkZXByZWNhdGVkIGBHZXRUb3RhbFVzZWRGZHNgIFttb2J5L21vYnkjNDkyMTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTIxMCkKLSAgIGBwa2cvaW91dGlsc2A6IFJlbW92ZSBgT25FT0ZSZWFkZXJgLCB3aGljaCB3YXMgb25seSB1c2VkIGludGVybmFsbHkgW21vYnkvbW9ieSM0OTE3MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTcwKQotICAgYHBrZy9sb25ncGF0aGA6IFJlbW92ZSBkZXByZWNhdGVkIGBQcmVmaXhgIGNvbnN0YW50LiBbbW9ieS9tb2J5IzQ4Nzc5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg3NzkpCi0gICBgcGtnL3N0cmluZ2lkYDogUmVtb3ZlIGRlcHJlY2F0ZWQgYElzU2hvcnRJRGAgYW5kICBgVmFsaWRhdGVJRGAgZnVuY3Rpb25zIFttb2J5L21vYnkjNDg3MDVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODcwNSkKLSAgIGBydW5jb25maWcvb3B0c2A6IFJlbW92ZSBkZXByZWNhdGVkIGBDb252ZXJ0S1ZTdHJpbmdzVG9NYXBgIFttb2J5L21vYnkjNDgxMDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODEwMikKLSAgIGBydW5jb25maWdgOiBSZW1vdmUgZGVwcmVjYXRlZCBgQ29udGFpbmVyQ29uZmlnV3JhcHBlcmAsIGBTZXREZWZhdWx0TmV0TW9kZUlmQmxhbmtgLCBgRGVmYXVsdERhZW1vbk5ldHdvcmtNb2RlYCwgYElzUHJlRGVmaW5lZE5ldHdvcmtgIFttb2J5L21vYnkjNDgxMDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODEwMikKLSAgIGBjb250YWluZXJgOiBSZW1vdmUgZGVwcmVjYXRlZCBgRXJyTmFtZVJlc2VydmVkYCwgYEVyck5hbWVOb3RSZXNlcnZlZGAuIFttb2J5L21vYnkjNDg3MjhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODcyOCkKLSAgIFJlbW92ZSBgRGFlbW9uLkNvbnRhaW5lckluc3BlY3RDdXJyZW50KClgIG1ldGhvZCBhbmQgY2hhbmdlIGBEYWVtb24uQ29udGFpbmVySW5zcGVjdCgpYCBzaWduYXR1cmUgdG8gYWNjZXB0IGEgYGJhY2tlbmQuQ29udGFpbmVySW5zcGVjdE9wdGlvbnNgIHN0cnVjdCBbbW9ieS9tb2J5IzQ4NjcyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg2NzIpCi0gICBSZW1vdmUgZGVwcmVjYXRlZCBgRGFlbW9uLkV4aXN0cygpYCBhbmQgYERhZW1vbi5Jc1BhdXNlZCgpYCBtZXRob2RzLiBbbW9ieS9tb2J5IzQ4NzIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg3MjMpCgojIyMjIERlcHJlY2F0aW9ucwoKLSAgIEFQSTogVGhlIGBCcmlkZ2VOZklwdGFibGVzYCBhbmQgYEJyaWRnZU5mSXA2dGFibGVzYCBmaWVsZHMgaW4gdGhlIGBHRVQgL2luZm9gIHJlc3BvbnNlIGFyZSBub3cgYWx3YXlzIGJlIGBmYWxzZWAgYW5kIHdpbGwgYmUgb21pdHRlZCBpbiBBUEkgdjEuNDkuIFRoZSBuZXRmaWx0ZXIgbW9kdWxlIGlzIG5vdyBsb2FkZWQgb24tZGVtYW5kLCBhbmQgbm8gbG9uZ2VyIGR1cmluZyBkYWVtb24gc3RhcnR1cCwgbWFraW5nIHRoZXNlIGZpZWxkcyBvYnNvbGV0ZS4gW21vYnkvbW9ieSM0OTExNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTE0KQotICAgQVBJOiBUaGUgYGVycm9yYCBhbmQgYHByb2dyZXNzYCBmaWVsZHMgaW4gc3RyZWFtaW5nIHJlc3BvbnNlcyBmb3IgZW5kcG9pbnRzIHRoYXQgcmV0dXJuIGEgSlNPTiBwcm9ncmVzcyByZXNwb25zZSwgc3VjaCBhcyBgUE9TVCAvaW1hZ2VzL2NyZWF0ZWAsIGBQT1NUIC9pbWFnZXMve25hbWV9L3B1c2hgLCBhbmQgYFBPU1QgL2J1aWxkYCBhcmUgZGVwcmVjYXRlZC4gIFttb2J5L21vYnkjNDk0NDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTQ0NykKICAgIC0gICBVc2VycyBzaG91bGQgdXNlIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgYGVycm9yRGV0YWlsYCBhbmQgYHByb2dyZXNzRGV0YWlsYCBmaWVsZHMgaW5zdGVhZC4KICAgIC0gICBUaGVzZSBmaWVsZHMgd2VyZSBtYXJrZWQgZGVwcmVjYXRlZCBpbiBBUEkgdjEuNCAoZG9ja2VyIHYwLjYuMCkgYW5kIEFQSSB2MS44IChkb2NrZXIgdjAuNy4xKSByZXNwZWN0aXZlbHksIGJ1dCBzdGlsbCByZXR1cm5lZC4KICAgIC0gICBUaGVzZSBmaWVsZHMgd2lsbCBiZSBsZWZ0IGVtcHR5IG9yIHdpbGwgYmUgb21pdHRlZCBpbiBhIGZ1dHVyZSBBUEkgdmVyc2lvbi4KLSAgIERlcHJlY2F0ZSBgRGFlbW9uLlJlZ2lzdGVyKClgLiBUaGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFttb2J5L21vYnkjNDg3MDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODcwMikKLSAgIERlcHJlY2F0ZSBgY2xpZW50LkltYWdlSW5zcGVjdFdpdGhSYXdgIGZ1bmN0aW9uIGluIGZhdm9yIG9mIHRoZSBuZXcgYGNsaWVudC5JbWFnZUluc3BlY3RgLiBbbW9ieS9tb2J5IzQ4MjY0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgyNjQpCi0gICBEZXByZWNhdGUgYGRhZW1vbi9jb25maWcuQ29uZmlnLlZhbGlkYXRlUGxhdGZvcm1Db25maWcoKWAuIFRoaXMgbWV0aG9kIHdhcyB1c2VkIGFzIGhlbHBlciBmb3IgYGNvbmZpZy5WYWxpZGF0ZWAsIHdoaWNoIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIFttb2J5L21vYnkjNDg5ODVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODk4NSkKLSAgIERlcHJlY2F0ZSBgcGtnL3JlZXhlY2AuIFRoaXMgcGFja2FnZSBpcyBkZXByZWNhdGVkIGFuZCBtb3ZlZCB0byBhIHNlcGFyYXRlIG1vZHVsZS4gVXNlIGBnaXRodWIuY29tL21vYnkvc3lzL3JlZXhlY2AgaW5zdGVhZC4gW21vYnkvbW9ieSM0OTEyOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTI5KQotICAgRGVwcmVjYXRlIGNvbmZpZ3VyYXRpb24gZm9yIHB1c2hpbmcgbm9uLWRpc3RyaWJ1dGFibGUgYXJ0aWZhY3RzIFtkb2NrZXIvY2xpIzU3MjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTcyNCkKLSAgIERlcHJlY2F0ZSB0aGUgYC0tYWxsb3ctbm9uZGlzdHJpYnV0YWJsZS1hcnRpZmFjdHNgIGRhZW1vbiBmbGFnIGFuZCBjb3JyZXNwb25kaW5nIGBhbGxvdy1ub25kaXN0cmlidXRhYmxlLWFydGlmYWN0c2AgZmllbGQgaW4gYGRhZW1vbi5qc29uYC4gU2V0dGluZyBlaXRoZXIgb3B0aW9uIHdpbGwgbm8gbG9uZ2VyIHRha2UgYW4gZWZmZWN0LCBidXQgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGxvZyBpcyBhZGRlZC4gW21vYnkvbW9ieSM0OTA2NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MDY1KQotICAgRGVwcmVjYXRlIHRoZSBgUmVnaXN0cnlDb25maWcuQWxsb3dOb25kaXN0cmlidXRhYmxlQXJ0aWZhY3RzQ0lEUnNgIGFuZCBgUmVnaXN0cnlDb25maWcuQWxsb3dOb25kaXN0cmlidXRhYmxlQXJ0aWZhY3RzSG9zdG5hbWVzYCBmaWVsZHMgaW4gdGhlIGBHRVQgL2luZm9gIEFQSSByZXNwb25zZS4gRm9yIEFQSSB2ZXJzaW9uIHYxLjQ4IGFuZCBvbGRlciwgdGhlIGZpZWxkcyBhcmUgc3RpbGwgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBidXQgYWx3YXlzIGBudWxsYC4gSW4gQVBJIHZlcnNpb24gdjEuNDkgYW5kIGxhdGVyLCB0aGUgZmllbGQgd2lsbCBiZSBvbWl0dGVkIGVudGlyZWx5LiBbbW9ieS9tb2J5IzQ5MDY1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkwNjUpCi0gICBHby1TREs6IERlcHJlY2F0ZSBgcmVnaXN0cnkuU2VydmljZU9wdGlvbnMuQWxsb3dOb25kaXN0cmlidXRhYmxlQXJ0aWZhY3RzYCBmaWVsZC4gW21vYnkvbW9ieSM0OTA2NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MDY1KQotICAgR28tU0RLOiBUaGUgYEJyaWRnZU5mSXB0YWJsZXNgLCBgQnJpZGdlTmZJcDZ0YWJsZXNgIGZpZWxkcyBpbiBgYXBpL3R5cGVzL3N5c3RlbS5JbmZvYCBhbmQgYEJyaWRnZU5GQ2FsbElQVGFibGVzRGlzYWJsZWRgLCBgQnJpZGdlTkZDYWxsSVA2VGFibGVzRGlzYWJsZWRgIGZpZWxkcyBpbiBgcGtnL3N5c2luZm8uU3lzSW5mb2AgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLiBbbW9ieS9tb2J5IzQ5MTE0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkxMTQpCi0gICBHby1TREs6IGBjbGllbnRgOiBEZXByZWNhdGUgYENvbW1vbkFQSUNsaWVudGAgaW50ZXJmYWNlIGluIGZhdm9yIG9mIHRoZSBgQVBJQ2xpZW50YCBpbnRlcmZhY2UuIFRoZSBgQ29tbW9uQVBJQ2xpZW50YCB3aWxsIGJlIGNoYW5nZWQgdG8gYW4gYWxpYXMgZm9yIGBBUElDbGllbnRgIGluIHRoZSBuZXh0IHJlbGVhc2UsIGFuZCByZW1vdmVkIGluIHRoZSByZWxlYXNlIGFmdGVyLiBbbW9ieS9tb2J5IzQ5Mzg4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkzODgpCi0gICBHby1TREs6IGBjbGllbnRgOiBEZXByZWNhdGUgYEVycm9yQ29ubmVjdGlvbkZhaWxlZGAgaGVscGVyLiBUaGlzIGZ1bmN0aW9uIHdhcyBvbmx5IHVzZWQgaW50ZXJuYWxseSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLiBbbW9ieS9tb2J5IzQ5Mzg5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkzODkpCi0gICBHby1TREs6IGBwa2cvaW91dGlsc2A6IERlcHJlY2F0ZSBgTmV3QXRvbWljRmlsZVdyaXRlcmAsIGBBdG9taWNXcml0ZUZpbGVgLCBgQXRvbWljV3JpdGVTZXRgLCBgTmV3QXRvbWljV3JpdGVTZXRgIGluIGZhdm9yIG9mIGBwa2cvYXRvbWljd3JpdGVyYCBlcXVpdmFsZW50cy4gW21vYnkvbW9ieSM0OTE3MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTcxKQotICAgR28tU0RLOiBgcGtnL3N5c2luZm9gOiBEZXByZWNhdGUgYE51bUNQVWAuIFRoaXMgdXRpbGl0eSBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgYHJ1bnRpbWUuTnVtQ1BVYC4gW21vYnkvbW9ieSM0OTI0MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MjQxKQotICAgR28tU0RLOiBgcGtnL3N5c3RlbWA6IERlcHJlY2F0ZSBgTWtkaXJBbGxgLiBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVkIGN1c3RvbSBoYW5kbGluZyBmb3IgV2luZG93cyBHVUlEIHZvbHVtZSBwYXRocy4gSGFuZGxpbmcgZm9yIHN1Y2ggcGF0aHMgaXMgbm93IHN1cHBvcnRlZCBieSBHbyBzdGFuZGFyZCBsaWJyYXJ5IGluIGdvMS4yMiBhbmQgbmV3ZXIsIGFuZCB0aGlzIGZ1bmN0aW9uIGlzIG5vdyBhbiBhbGlhcyBmb3IgYG9zLk1rZGlyQWxsYCwgd2hpY2ggc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gVGhpcyBhbGlhcyB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0OTE2Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTYyKQotICAgR28tU0RLOiBEZXByZWNhdGUgYHBrZy9wYXJzZXJzLlBhcnNlS2V5VmFsdWVPcHRgLiBbbW9ieS9tb2J5IzQ5MTc3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkxNzcpCi0gICBHby1TREs6IERlcHJlY2F0ZSBgcGtnL3BhcnNlcnMuUGFyc2VVaW50TGlzdE1heGltdW1gLCBgcGtnL3BhcnNlcnMuUGFyc2VVaW50TGlzdGAuIFRoZXNlIHV0aWxpdGllcyB3ZXJlIG9ubHkgdXNlZCBpbnRlcm5hbGx5IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0OTIyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MjIyKQotICAgR28tU0RLOiBEZXByZWNhdGUgYGFwaS90eXBlLklEUmVzcG9uc2VgIGluIGZhdm9yIG9mIGBjb250YWluZXIuQ29tbWl0UmVzcG9uc2VgIGFuZCBgY29udGFpbmVyLkV4ZWNDcmVhdGVSZXNwb25zZWAsIHdoaWNoIGFyZSBjdXJyZW50bHkgYW4gYWxpYXMsIGJ1dCBtYXkgYmVjb21lIGRpc3RpbmN0IHR5cGVzIGluIGEgZnV0dXJlIHJlbGVhc2UuIFRoaXMgdHlwZSB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0OTQ0Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NDQ2KQotICAgR28tU0RLOiBEZXByZWNhdGUgYGFwaS90eXBlcy9jb250YWluZXIuQ29udGFpbmVyVXBkYXRlT0tCb2R5YCBpbiBmYXZvciBvZiBgVXBkYXRlUmVzcG9uc2VgLiBUaGlzIHR5cGUgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFttb2J5L21vYnkjNDk0NDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTQ0MikKLSAgIEdvLVNESzogRGVwcmVjYXRlIGBhcGkvdHlwZXMvY29udGFpbmVyLkNvbnRhaW5lclRvcE9LQm9keWAgaW4gZmF2b3Igb2YgYFRvcFJlc3BvbnNlYC4gVGhpcyB0eXBlIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLiBbbW9ieS9tb2J5IzQ5NDQyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk0NDIpCi0gICBHby1TREs6IGBwa2cvanNvbm1lc3NhZ2VgOiBGaXggZGVwcmVjYXRpb24gb2YgYFByb2dyZXNzTWVzc2FnZWAsIGBFcnJvck1lc3NhZ2VgLCB3aGljaCB3ZXJlIGRlcHJlY2F0ZWQgaW4gRG9ja2VyIHYwLjYuMCBhbmQgdjAuNy4xIHJlc3BlY3RpdmVseS4gW21vYnkvbW9ieSM0OTQ0N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NDQ3KQotICAgTW92ZSBgR3JhcGhEcml2ZXJEYXRhYCBmcm9tIGBhcGkvdHlwZXNgIHRvIGBhcGkvdHlwZXMvc3RvcmFnZWAuIFRoZSBvbGQgdHlwZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0ODEwOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MTA4KQotICAgTW92ZSBgUmVxdWVzdFByaXZpbGVnZUZ1bmNgIGZyb20gYGFwaS90eXBlc2AgdG8gYGFwaS90eXBlcy9yZWdpc3RyeWAuIFRoZSBvbGQgdHlwZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0ODExOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MTE5KQotICAgTW92ZSBmcm9tIGBhcGkvdHlwZXNgIHRvIGBhcGkvdHlwZXMvY29udGFpbmVyYCAtIGBOZXR3b3JrU2V0dGluZ3NgLCBgTmV0d29ya1NldHRpbmdzQmFzZWAsIGBEZWZhdWx0TmV0d29ya1NldHRpbmdzYCwgYFN1bW1hcnlOZXR3b3JrU2V0dGluZ3NgLCBgSGVhbHRoYCwgYEhlYWx0aGNoZWNrUmVzdWx0YCwgYE5vSGVhbHRoY2hlY2tgLCBgU3RhcnRpbmdgLCBgSGVhbHRoeWAsIGFuZCBgVW5oZWFsdGh5YCBjb25zdGFudHMsIGBNb3VudFBvaW50YCwgYFBvcnRgLCBgQ29udGFpbmVyU3RhdGVgLCBgQ29udGFpbmVyYCwgYENvbnRhaW5lckpTT05CYXNlYCwgYENvbnRhaW5lckpTT05gLCBgQ29udGFpbmVyTm9kZWAuIFRoZSBvbGQgdHlwZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLiBbbW9ieS9tb2J5IzQ4MTA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgxMDgpCi0gICBNb3ZlIGZyb20gYGFwaS90eXBlc2AgdG8gYGFwaS90eXBlcy9pbWFnZWAgLSBgSW1hZ2VJbnNwZWN0YCwgYFJvb3RGU2AuIFRoZSBvbGQgdHlwZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLiBbbW9ieS9tb2J5IzQ4MTA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgxMDgpCi0gICBgQ29udGFpbmVyZENvbW1pdC5FeHBlY3RlZGAsIGBSdW5jQ29tbWl0LkV4cGVjdGVkYCwgYW5kIGBJbml0Q29tbWl0LkV4cGVjdGVkYCBmaWVsZHMgaW4gdGhlIGBHRVQgL2luZm9gIGVuZHBvaW50IGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIG9taXR0ZWQgaW4gQVBJIHYxLjQ5LiBbbW9ieS9tb2J5IzQ4NDc4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg0NzgpCi0gICBgYXBpL3R5cGVzL3JlZ2lzdHJ5YDogRGVwcmVjYXRlIGBTZXJ2aWNlQ29uZmlnLkFsbG93Tm9uZGlzdHJpYnV0YWJsZUFydGlmYWN0c0NJRFJzYCBhbmQgYFNlcnZpY2VDb25maWcuQWxsb3dOb25kaXN0cmlidXRhYmxlQXJ0aWZhY3RzSG9zdG5hbWVzYCBmaWVsZHMuIFRoZXNlIGZpZWxkcyB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0OTA2NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MDY1KQotICAgYGFwaS90eXBlcy9zeXN0ZW0vQ29tbWl0LkV4cGVjdGVkYCBmaWVsZCBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuIFttb2J5L21vYnkjNDg0NzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODQ3OCkKLSAgIGBkYWVtb24vZ3JhcGhkcml2ZXJgOiBEZXByZWNhdGUgYEdldERyaXZlcigpYCBbbW9ieS9tb2J5IzQ4MDc5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgwNzkpCi0gICBgbGlibmV0d29yay9pcHRhYmxlc2A6IERlcHJlY2F0ZSBgUGFzc3Rocm91Z2hgLiBUaGlzIGZ1bmN0aW9uIHdhcyBvbmx5IHVzZWQgaW50ZXJuYWxseSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLiBbbW9ieS9tb2J5IzQ5MTE1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkxMTUpCi0gICBgcGtnL2RpcmVjdG9yeS5TaXplKClgIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQsIGFuIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLiBbbW9ieS9tb2J5IzQ4MDU3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgwNTcpCi0gICBgcmVnaXN0cnlgOiBEZXByZWNhdGUgYEFQSUVuZHBvaW50LlRyaW1Ib3N0TmFtZWA7IGhvc3RuYW1lIGlzIG5vdyB0cmltbWVkIHVuY29uZGl0aW9uYWxseSBmb3IgcmVtb3RlIG5hbWVzLiBUaGlzIGZpZWxkIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLiBbbW9ieS9tb2J5IzQ5MDA1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkwMDUpCi0gICBgYWxsb3ctbm9uZGlzdHJpYnV0YWJsZS1hcnRpZmFjdHNgIGZpZWxkIGluIGBkYWVtb24uanNvbmAuIFNldHRpbmcgZWl0aGVyIG9wdGlvbiB3aWxsIG5vIGxvbmdlciB0YWtlIGVmZmVjdCwgYnV0IGEgZGVwcmVjYXRpb24gd2FybmluZyBsb2cgaXMgYWRkZWQgdG8gcmFpc2UgYXdhcmVuZXNzIGFib3V0IHRoZSBkZXByZWNhdGlvbi4gVGhpcyB3YXJuaW5nIGlzIHBsYW5uZWQgdG8gYmVjb21lIGFuIGVycm9yIGluIHRoZSBuZXh0IHJlbGVhc2UuIFttb2J5L21vYnkjNDkwNjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTA2NSkKCiMjIyBbYHYyNy41LjFgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3JlbGVhc2VzL3RhZy92MjcuNS4xKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L2NvbXBhcmUvdjI3LjUuMC4uLnYyNy41LjEpCgojIyMgMjcuNS4xCgpGb3IgYSBmdWxsIGxpc3Qgb2YgcHVsbCByZXF1ZXN0cyBhbmQgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHJlZmVyIHRvIHRoZSByZWxldmFudCBHaXRIdWIgbWlsZXN0b25lczoKCi0gICBbZG9ja2VyL2NsaSwgMjcuNS4xIG1pbGVzdG9uZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvaXNzdWVzP3E9aXMlM0FjbG9zZWQrbWlsZXN0b25lJTNBMjcuNS4xKQotICAgW21vYnkvbW9ieSwgMjcuNS4xIG1pbGVzdG9uZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9pc3N1ZXM/cT1pcyUzQWNsb3NlZCttaWxlc3RvbmUlM0EyNy41LjEpCgojIyMjIEJ1ZyBmaXhlcyBhbmQgZW5oYW5jZW1lbnRzCgotICAgRml4ZWQgYW4gaXNzdWUgdGhhdCBjb3VsZCBwZXJzaXN0ZW50bHkgcHJldmVudCBkYWVtb24gc3RhcnR1cCBhZnRlciBmYWlsdXJlIHRvIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgYnJpZGdlLiBbbW9ieS9tb2J5IzQ5MzA3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkzMDcpCi0gICBBZGQgYSBgRE9DS0VSX0lHTk9SRV9CUl9ORVRGSUxURVJfRVJST1JgIGVudmlyb25tZW50IHZhcmlhYmxlLiBTZXR0aW5nIGl0IHRvIGAxYCBhbGxvd3MgcnVubmluZyBvbiBob3N0cyB0aGF0IGNhbm5vdCBsb2FkIGBicl9uZXRmaWx0ZXJgLiBTb21lIHRoaW5ncyB3b24ndCB3b3JrLCBpbmNsdWRpbmcgZGlzYWJsaW5nIGludGVyLWNvbnRhaW5lciBjb21tdW5pY2F0aW9uIGluIGEgYnJpZGdlIG5ldHdvcmsuIFdpdGggdGhlIHVzZXJsYW5kIHByb3h5IGRpc2FibGVkLCBpdCB3b24ndCBiZSBwb3NzaWJsZSB0byBhYwoKPC9kZXRhaWxzPgoKLS0tCgojIyMgQ29uZmlndXJhdGlvbgoK8J+ThSAqKlNjaGVkdWxlKio6IEJyYW5jaCBjcmVhdGlvbiAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKSwgQXV0b21lcmdlIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpLgoK8J+apiAqKkF1dG9tZXJnZSoqOiBEaXNhYmxlZCBieSBjb25maWcuIFBsZWFzZSBtZXJnZSB0aGlzIG1hbnVhbGx5IG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQuCgrimbsgKipSZWJhc2luZyoqOiBXaGVuZXZlciBQUiBiZWNvbWVzIGNvbmZsaWN0ZWQsIG9yIHlvdSB0aWNrIHRoZSByZWJhc2UvcmV0cnkgY2hlY2tib3guCgrwn5SVICoqSWdub3JlKio6IENsb3NlIHRoaXMgUFIgYW5kIHlvdSB3b24ndCBiZSByZW1pbmRlZCBhYm91dCB0aGVzZSB1cGRhdGVzIGFnYWluLgoKLS0tCgogLSBbIF0gPCEtLSByZWJhc2UtY2hlY2sgLS0+SWYgeW91IHdhbnQgdG8gcmViYXNlL3JldHJ5IHRoaXMgUFIsIGNoZWNrIHRoaXMgYm94CgotLS0KClRoaXMgUFIgd2FzIGdlbmVyYXRlZCBieSBbTWVuZCBSZW5vdmF0ZV0oaHR0cHM6Ly9tZW5kLmlvL3Jlbm92YXRlLykuIFZpZXcgdGhlIFtyZXBvc2l0b3J5IGpvYiBsb2ddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vZ2l0aHViL29zaXNtL3JlbGVhc2UpLgo8IS0tcmVub3ZhdGUtZGVidWc6ZXlKamNtVmhkR1ZrU1c1V1pYSWlPaUl6T1M0eE56TXVNU0lzSW5Wd1pHRjBaV1JKYmxabGNpSTZJak01TGpJeU55NHpJaXdpZEdGeVoyVjBRbkpoYm1Ob0lqb2liV0ZwYmlJc0lteGhZbVZzY3lJNld5SnlaVzV2ZG1GMFpTSmRmUT09LS0+Cg==
      patchset: 8d8d5630dd3f704867cc2c7bf6548d7f61596c91
      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: 9708ed452ed9fce72a674b31923b7d6b8269e8c8
          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: 9708ed452ed9fce72a674b31923b7d6b8269e8c8
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/yamllint/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/release
        name: osism/release
        short_name: release
        src_dir: src/github.com/osism/release
      projects:
        github.com/osism/release:
          canonical_hostname: github.com
          canonical_name: github.com/osism/release
          checkout: main
          checkout_description: zuul branch
          commit: 6bbbdf3d532c8db35abeec48ba9855e0736355cf
          name: osism/release
          required: false
          short_name: release
          src_dir: src/github.com/osism/release
      ref: refs/pull/1807/head
      resources: {}
      tenant: osism
      timeout: 1800
      voting: true
