diff --git a/src/agent/samples/policy/test-input/pod-one-container-busybox.json b/src/agent/samples/policy/test-input/pod-one-container-busybox.json index c53796fd2d65..01a0ddfa0127 100644 --- a/src/agent/samples/policy/test-input/pod-one-container-busybox.json +++ b/src/agent/samples/policy/test-input/pod-one-container-busybox.json @@ -19,14 +19,14 @@ "env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "HOSTNAME=one-container", - "KUBERNETES_SERVICE_HOST=10.0.0.1", "KUBERNETES_SERVICE_PORT=443", "KUBERNETES_SERVICE_PORT_HTTPS=443", "KUBERNETES_PORT=tcp://10.0.0.1:443", "KUBERNETES_PORT_443_TCP=tcp://10.0.0.1:443", "KUBERNETES_PORT_443_TCP_PROTO=tcp", "KUBERNETES_PORT_443_TCP_PORT=443", - "KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1" + "KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1", + "KUBERNETES_SERVICE_HOST=10.0.0.1" ], "cwd": "/", "capabilities": { @@ -164,7 +164,7 @@ "oomScoreAdj": 1000 }, "root": { - "path": "/run/kata-containers/5d4098516b1b67147e53c16cbb7c6132b7edbf79ed53771cb7085a41e5ebfd1b/rootfs", + "path": "/run/kata-containers/shared/containers/3a76412115fd34c2bef744360f5dbf97d8ef004c54b7f49628c99b01c6dc862e", "readonly": false }, "mounts": [ @@ -238,7 +238,7 @@ { "destination": "/etc/hosts", "type": "bind", - "source": "/run/kata-containers/shared/containers/5d4098516b1b67147e53c16cbb7c6132b7edbf79ed53771cb7085a41e5ebfd1b-244e794fe84730b1-hosts", + "source": "/run/kata-containers/shared/containers/3a76412115fd34c2bef744360f5dbf97d8ef004c54b7f49628c99b01c6dc862e-643d036f076d822b-hosts", "options": [ "rbind", "rprivate", @@ -248,7 +248,7 @@ { "destination": "/dev/termination-log", "type": "bind", - "source": "/run/kata-containers/shared/containers/5d4098516b1b67147e53c16cbb7c6132b7edbf79ed53771cb7085a41e5ebfd1b-cc4b138d6c86e1ab-termination-log", + "source": "/run/kata-containers/shared/containers/3a76412115fd34c2bef744360f5dbf97d8ef004c54b7f49628c99b01c6dc862e-50942f3ebb731aaa-termination-log", "options": [ "rbind", "rprivate", @@ -258,7 +258,7 @@ { "destination": "/etc/hostname", "type": "bind", - "source": "/run/kata-containers/shared/containers/5d4098516b1b67147e53c16cbb7c6132b7edbf79ed53771cb7085a41e5ebfd1b-f71f59f29d6b287d-hostname", + "source": "/run/kata-containers/shared/containers/3a76412115fd34c2bef744360f5dbf97d8ef004c54b7f49628c99b01c6dc862e-a4e0622b9488a9a6-hostname", "options": [ "rbind", "rprivate", @@ -268,7 +268,7 @@ { "destination": "/etc/resolv.conf", "type": "bind", - "source": "/run/kata-containers/shared/containers/5d4098516b1b67147e53c16cbb7c6132b7edbf79ed53771cb7085a41e5ebfd1b-e66b5719caffeaab-resolv.conf", + "source": "/run/kata-containers/shared/containers/3a76412115fd34c2bef744360f5dbf97d8ef004c54b7f49628c99b01c6dc862e-326ed3aee6be449b-resolv.conf", "options": [ "rbind", "rprivate", @@ -286,7 +286,7 @@ { "destination": "/var/run/secrets/kubernetes.io/serviceaccount", "type": "bind", - "source": "/run/kata-containers/shared/containers/5d4098516b1b67147e53c16cbb7c6132b7edbf79ed53771cb7085a41e5ebfd1b-a96adc29494bdb13-serviceaccount", + "source": "/run/kata-containers/shared/containers/3a76412115fd34c2bef744360f5dbf97d8ef004c54b7f49628c99b01c6dc862e-c2ddc01b56547430-serviceaccount", "options": [ "rbind", "rprivate", @@ -295,15 +295,15 @@ } ], "annotations": { - "io.kubernetes.cri.sandbox-namespace": "default", - "io.kubernetes.cri.sandbox-name": "one-container", - "io.kubernetes.cri.container-name": "busybox", - "io.kubernetes.cri.sandbox-id": "471a39d75b864915769fb8fa798fc45a7d5c898a02d68f1b4bf28d83dc6246b6", - "io.kubernetes.cri.container-type": "container", + "io.kubernetes.cri.sandbox-uid": "1ca2aac8-8f71-4f79-aed1-017b57684019", + "io.kubernetes.cri.sandbox-id": "259aedb869c3f62fdae07dbd40b20e78d23b3eec906f716f9cfb8e7e499ec393", "io.kubernetes.cri.image-name": "mcr.microsoft.com/aks/e2e/library-busybox:master.220314.1-linux-amd64", - "io.kubernetes.cri.sandbox-uid": "32474e75-3f44-4bc4-94c0-f51fbc31a982", - "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/5d4098516b1b67147e53c16cbb7c6132b7edbf79ed53771cb7085a41e5ebfd1b", - "io.katacontainers.pkg.oci.container_type": "pod_container" + "io.kubernetes.cri.container-type": "container", + "io.kubernetes.cri.sandbox-name": "one-container", + "io.katacontainers.pkg.oci.container_type": "pod_container", + "io.kubernetes.cri.sandbox-namespace": "default", + "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/3a76412115fd34c2bef744360f5dbf97d8ef004c54b7f49628c99b01c6dc862e", + "io.kubernetes.cri.container-name": "busybox" }, "linux": { "resources": { @@ -324,7 +324,7 @@ "realtimePeriod": 0 } }, - "cgroupsPath": "/kubepods/besteffort/pod32474e75-3f44-4bc4-94c0-f51fbc31a982/5d4098516b1b67147e53c16cbb7c6132b7edbf79ed53771cb7085a41e5ebfd1b", + "cgroupsPath": "/kubepods/besteffort/pod1ca2aac8-8f71-4f79-aed1-017b57684019/3a76412115fd34c2bef744360f5dbf97d8ef004c54b7f49628c99b01c6dc862e", "namespaces": [ { "type": "ipc" @@ -379,12 +379,13 @@ "source": "none", "fstype": "tar-overlay", "options": [ - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/2c342a137e693c7898aec36da1047f191dc7c1687e66198adacc439cf4adf379,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=8568c70c0ccfe0051092e818da769111a59882cd19dd799d3bca5ffa82791080", - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/2570e3a19e1bf20ddda45498a9627f61555d2d6c01479b9b76460b679b27d552,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=b643b6217748983830b26ac14a35a3322dd528c00963eaadd91ef55f513dc73f", + "io.katacontainers.fs-opt.layer-src-prefix=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers", + "io.katacontainers.fs-opt.layer=2c342a137e693c7898aec36da1047f191dc7c1687e66198adacc439cf4adf379,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=8568c70c0ccfe0051092e818da769111a59882cd19dd799d3bca5ffa82791080", + "io.katacontainers.fs-opt.layer=2570e3a19e1bf20ddda45498a9627f61555d2d6c01479b9b76460b679b27d552,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=b643b6217748983830b26ac14a35a3322dd528c00963eaadd91ef55f513dc73f", "io.katacontainers.fs-opt.overlay-rw", - "lowerdir=/run/kata-containers/sandbox/layers/2c342a137e693c7898aec36da1047f191dc7c1687e66198adacc439cf4adf379:/run/kata-containers/sandbox/layers/2570e3a19e1bf20ddda45498a9627f61555d2d6c01479b9b76460b679b27d552" + "lowerdir=2c342a137e693c7898aec36da1047f191dc7c1687e66198adacc439cf4adf379:2570e3a19e1bf20ddda45498a9627f61555d2d6c01479b9b76460b679b27d552" ], - "mount_point": "/run/kata-containers/5d4098516b1b67147e53c16cbb7c6132b7edbf79ed53771cb7085a41e5ebfd1b/rootfs", + "mount_point": "/run/kata-containers/shared/containers/3a76412115fd34c2bef744360f5dbf97d8ef004c54b7f49628c99b01c6dc862e", "fs_group": { "group_id": 0, "group_change_policy": 0 diff --git a/src/agent/samples/policy/test-input/pod-one-container-pause.json b/src/agent/samples/policy/test-input/pod-one-container-pause.json index 1b5b092b3331..e1c03cb07d57 100644 --- a/src/agent/samples/policy/test-input/pod-one-container-pause.json +++ b/src/agent/samples/policy/test-input/pod-one-container-pause.json @@ -72,7 +72,7 @@ "oomScoreAdj": -998 }, "root": { - "path": "/run/kata-containers/471a39d75b864915769fb8fa798fc45a7d5c898a02d68f1b4bf28d83dc6246b6/rootfs", + "path": "/run/kata-containers/shared/containers/259aedb869c3f62fdae07dbd40b20e78d23b3eec906f716f9cfb8e7e499ec393", "readonly": true }, "hostname": "one-container", @@ -143,7 +143,7 @@ { "destination": "/etc/resolv.conf", "type": "bind", - "source": "/run/kata-containers/shared/containers/471a39d75b864915769fb8fa798fc45a7d5c898a02d68f1b4bf28d83dc6246b6-19216b02f52f638e-resolv.conf", + "source": "/run/kata-containers/shared/containers/259aedb869c3f62fdae07dbd40b20e78d23b3eec906f716f9cfb8e7e499ec393-1f81889e4a79caaf-resolv.conf", "options": [ "rbind", "ro", @@ -154,19 +154,19 @@ } ], "annotations": { - "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/471a39d75b864915769fb8fa798fc45a7d5c898a02d68f1b4bf28d83dc6246b6", - "io.kubernetes.cri.sandbox-cpu-quota": "0", - "io.kubernetes.cri.sandbox-namespace": "default", + "io.kubernetes.cri.sandbox-cpu-period": "100000", + "io.katacontainers.pkg.oci.container_type": "pod_sandbox", "io.kubernetes.cri.sandbox-memory": "0", - "io.kubernetes.cri.sandbox-uid": "32474e75-3f44-4bc4-94c0-f51fbc31a982", + "io.kubernetes.cri.sandbox-namespace": "default", + "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/259aedb869c3f62fdae07dbd40b20e78d23b3eec906f716f9cfb8e7e499ec393", + "nerdctl/network-namespace": "/var/run/netns/cni-12118667-d53a-bd77-3d22-3f7a15f1aea4", + "io.kubernetes.cri.sandbox-cpu-quota": "0", "io.kubernetes.cri.sandbox-cpu-shares": "2", - "nerdctl/network-namespace": "/var/run/netns/cni-d27ad638-22c4-5bce-38db-f416709146bf", - "io.katacontainers.pkg.oci.container_type": "pod_sandbox", - "io.kubernetes.cri.sandbox-cpu-period": "100000", + "io.kubernetes.cri.sandbox-name": "one-container", "io.kubernetes.cri.container-type": "sandbox", - "io.kubernetes.cri.sandbox-log-directory": "/var/log/pods/default_one-container_32474e75-3f44-4bc4-94c0-f51fbc31a982", - "io.kubernetes.cri.sandbox-id": "471a39d75b864915769fb8fa798fc45a7d5c898a02d68f1b4bf28d83dc6246b6", - "io.kubernetes.cri.sandbox-name": "one-container" + "io.kubernetes.cri.sandbox-log-directory": "/var/log/pods/default_one-container_1ca2aac8-8f71-4f79-aed1-017b57684019", + "io.kubernetes.cri.sandbox-uid": "1ca2aac8-8f71-4f79-aed1-017b57684019", + "io.kubernetes.cri.sandbox-id": "259aedb869c3f62fdae07dbd40b20e78d23b3eec906f716f9cfb8e7e499ec393" }, "linux": { "resources": { @@ -178,7 +178,7 @@ "realtimePeriod": 0 } }, - "cgroupsPath": "/kubepods/besteffort/pod32474e75-3f44-4bc4-94c0-f51fbc31a982/471a39d75b864915769fb8fa798fc45a7d5c898a02d68f1b4bf28d83dc6246b6", + "cgroupsPath": "/kubepods/besteffort/pod1ca2aac8-8f71-4f79-aed1-017b57684019/259aedb869c3f62fdae07dbd40b20e78d23b3eec906f716f9cfb8e7e499ec393", "namespaces": [ { "type": "ipc" @@ -235,11 +235,12 @@ "source": "none", "fstype": "tar-overlay", "options": [ - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/5a5aad80055ff20012a50dc25f8df7a29924474324d65f7d5306ee8ee27ff71d,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=817250f1a3e336da76f5bd3fa784e1b26d959b9c131876815ba2604048b70c18", + "io.katacontainers.fs-opt.layer-src-prefix=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers", + "io.katacontainers.fs-opt.layer=5a5aad80055ff20012a50dc25f8df7a29924474324d65f7d5306ee8ee27ff71d,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=817250f1a3e336da76f5bd3fa784e1b26d959b9c131876815ba2604048b70c18", "io.katacontainers.fs-opt.overlay-rw", - "lowerdir=/run/kata-containers/sandbox/layers/5a5aad80055ff20012a50dc25f8df7a29924474324d65f7d5306ee8ee27ff71d" + "lowerdir=5a5aad80055ff20012a50dc25f8df7a29924474324d65f7d5306ee8ee27ff71d" ], - "mount_point": "/run/kata-containers/471a39d75b864915769fb8fa798fc45a7d5c898a02d68f1b4bf28d83dc6246b6/rootfs", + "mount_point": "/run/kata-containers/shared/containers/259aedb869c3f62fdae07dbd40b20e78d23b3eec906f716f9cfb8e7e499ec393", "fs_group": { "group_id": 0, "group_change_policy": 0 diff --git a/src/agent/samples/policy/test-input/pod-three-containers-azure-acoustics.json b/src/agent/samples/policy/test-input/pod-three-containers-azure-acoustics.json index 5b8993472c0b..e83266a7e08f 100644 --- a/src/agent/samples/policy/test-input/pod-three-containers-azure-acoustics.json +++ b/src/agent/samples/policy/test-input/pod-three-containers-azure-acoustics.json @@ -17,14 +17,14 @@ "env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "HOSTNAME=three-containers", - "KUBERNETES_SERVICE_HOST=10.0.0.1", "KUBERNETES_SERVICE_PORT=443", "KUBERNETES_SERVICE_PORT_HTTPS=443", "KUBERNETES_PORT=tcp://10.0.0.1:443", "KUBERNETES_PORT_443_TCP=tcp://10.0.0.1:443", "KUBERNETES_PORT_443_TCP_PROTO=tcp", "KUBERNETES_PORT_443_TCP_PORT=443", - "KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1" + "KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1", + "KUBERNETES_SERVICE_HOST=10.0.0.1" ], "cwd": "/acoustics/tools", "capabilities": { @@ -82,7 +82,7 @@ "oomScoreAdj": 1000 }, "root": { - "path": "/run/kata-containers/29860295dcb41b0784972af156c842dc9d995f730fe05d9dc9dfe5a2aa9661e8/rootfs", + "path": "/run/kata-containers/shared/containers/f0b9b8810ef67866a576dcbcaa9da39455e9c1f41aea33b3e9dbf413012391ad", "readonly": false }, "mounts": [ @@ -156,7 +156,7 @@ { "destination": "/etc/hosts", "type": "bind", - "source": "/run/kata-containers/shared/containers/29860295dcb41b0784972af156c842dc9d995f730fe05d9dc9dfe5a2aa9661e8-550ab3f85a9c2373-hosts", + "source": "/run/kata-containers/shared/containers/f0b9b8810ef67866a576dcbcaa9da39455e9c1f41aea33b3e9dbf413012391ad-631c1fb49e651875-hosts", "options": [ "rbind", "rprivate", @@ -166,7 +166,7 @@ { "destination": "/dev/termination-log", "type": "bind", - "source": "/run/kata-containers/shared/containers/29860295dcb41b0784972af156c842dc9d995f730fe05d9dc9dfe5a2aa9661e8-1a0a1835dfbb2889-termination-log", + "source": "/run/kata-containers/shared/containers/f0b9b8810ef67866a576dcbcaa9da39455e9c1f41aea33b3e9dbf413012391ad-8f234a7d309abd75-termination-log", "options": [ "rbind", "rprivate", @@ -176,7 +176,7 @@ { "destination": "/etc/hostname", "type": "bind", - "source": "/run/kata-containers/shared/containers/29860295dcb41b0784972af156c842dc9d995f730fe05d9dc9dfe5a2aa9661e8-6e069bc48f2d2a05-hostname", + "source": "/run/kata-containers/shared/containers/f0b9b8810ef67866a576dcbcaa9da39455e9c1f41aea33b3e9dbf413012391ad-01b8cdd2b437fa8b-hostname", "options": [ "rbind", "rprivate", @@ -186,7 +186,7 @@ { "destination": "/etc/resolv.conf", "type": "bind", - "source": "/run/kata-containers/shared/containers/29860295dcb41b0784972af156c842dc9d995f730fe05d9dc9dfe5a2aa9661e8-b5188ee1cb188b09-resolv.conf", + "source": "/run/kata-containers/shared/containers/f0b9b8810ef67866a576dcbcaa9da39455e9c1f41aea33b3e9dbf413012391ad-cc0533860eb8adad-resolv.conf", "options": [ "rbind", "rprivate", @@ -204,7 +204,7 @@ { "destination": "/var/run/secrets/kubernetes.io/serviceaccount", "type": "bind", - "source": "/run/kata-containers/shared/containers/29860295dcb41b0784972af156c842dc9d995f730fe05d9dc9dfe5a2aa9661e8-cf5914844b4b52af-serviceaccount", + "source": "/run/kata-containers/shared/containers/f0b9b8810ef67866a576dcbcaa9da39455e9c1f41aea33b3e9dbf413012391ad-46ae70f883a7daa5-serviceaccount", "options": [ "rbind", "rprivate", @@ -213,15 +213,15 @@ } ], "annotations": { - "io.kubernetes.cri.sandbox-id": "cb4386030c997f5cb9368f8b9a5997563ec75f9b44c65c7a4f8ccfb25305031e", - "io.kubernetes.cri.sandbox-uid": "465176d0-75ac-416d-a8ea-bf978f2cbc25", + "io.kubernetes.cri.image-name": "mcr.microsoft.com/acoustics/baketools:2022.1.Linux", "io.katacontainers.pkg.oci.container_type": "pod_container", - "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/29860295dcb41b0784972af156c842dc9d995f730fe05d9dc9dfe5a2aa9661e8", + "io.kubernetes.cri.sandbox-id": "8a49cdf6b791387443dc24797b978370747d5b9374e5bfed87d596c43cb7258f", + "io.kubernetes.cri.container-type": "container", "io.kubernetes.cri.container-name": "acoustics-baketools", - "io.kubernetes.cri.sandbox-namespace": "default", + "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/f0b9b8810ef67866a576dcbcaa9da39455e9c1f41aea33b3e9dbf413012391ad", "io.kubernetes.cri.sandbox-name": "three-containers", - "io.kubernetes.cri.image-name": "mcr.microsoft.com/acoustics/baketools:2022.1.Linux", - "io.kubernetes.cri.container-type": "container" + "io.kubernetes.cri.sandbox-namespace": "default", + "io.kubernetes.cri.sandbox-uid": "a142c276-fe81-4d3e-9893-c6f3ac2adb1f" }, "linux": { "resources": { @@ -242,7 +242,7 @@ "realtimePeriod": 0 } }, - "cgroupsPath": "/kubepods/besteffort/pod465176d0-75ac-416d-a8ea-bf978f2cbc25/29860295dcb41b0784972af156c842dc9d995f730fe05d9dc9dfe5a2aa9661e8", + "cgroupsPath": "/kubepods/besteffort/poda142c276-fe81-4d3e-9893-c6f3ac2adb1f/f0b9b8810ef67866a576dcbcaa9da39455e9c1f41aea33b3e9dbf413012391ad", "namespaces": [ { "type": "ipc" @@ -330,7 +330,7 @@ { "driver": "blk", "driver_options": [], - "source": "0b", + "source": "0c", "fstype": "tar", "options": [ "ro", @@ -350,14 +350,15 @@ "source": "none", "fstype": "tar-overlay", "options": [ - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/8ba0de266ed44bca1d1667f6768ed97d505ac4f921394034156e57fc037ea542,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=d6151ea8c0ae5f6d0b10fb5b57a6df0cbf91a93db0fa41aaec357e9c9ea88b3a", - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/d0a29f081bcbdfe1baa36a49038e336e93fd6d6dc6d3994bf01f1ae049896063,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=10039e582e73c31a4a6bf18ba2f923ab36594ac4c2093928d189e1975b7c48c8", - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/75a6d2c307a17044bce04dfeb0e89b70255ad0da9e75b0f17a8619ce5d45c2f2,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=705fd2da492a4bb7b2c044334210b1276789a90f9015304e06e3c0c5402090fa", - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/16a7e87ecdcb370a81c3191ba1280bfdbeed165aad2f9871c54dad74bb3922da,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=fbd982ae6ad0f38b1254aa4b151041cacf7aafe15767f2a5ebd4b36820cc9b84", + "io.katacontainers.fs-opt.layer-src-prefix=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers", + "io.katacontainers.fs-opt.layer=8ba0de266ed44bca1d1667f6768ed97d505ac4f921394034156e57fc037ea542,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=d6151ea8c0ae5f6d0b10fb5b57a6df0cbf91a93db0fa41aaec357e9c9ea88b3a", + "io.katacontainers.fs-opt.layer=d0a29f081bcbdfe1baa36a49038e336e93fd6d6dc6d3994bf01f1ae049896063,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=10039e582e73c31a4a6bf18ba2f923ab36594ac4c2093928d189e1975b7c48c8", + "io.katacontainers.fs-opt.layer=75a6d2c307a17044bce04dfeb0e89b70255ad0da9e75b0f17a8619ce5d45c2f2,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=705fd2da492a4bb7b2c044334210b1276789a90f9015304e06e3c0c5402090fa", + "io.katacontainers.fs-opt.layer=16a7e87ecdcb370a81c3191ba1280bfdbeed165aad2f9871c54dad74bb3922da,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=fbd982ae6ad0f38b1254aa4b151041cacf7aafe15767f2a5ebd4b36820cc9b84", "io.katacontainers.fs-opt.overlay-rw", - "lowerdir=/run/kata-containers/sandbox/layers/8ba0de266ed44bca1d1667f6768ed97d505ac4f921394034156e57fc037ea542:/run/kata-containers/sandbox/layers/d0a29f081bcbdfe1baa36a49038e336e93fd6d6dc6d3994bf01f1ae049896063:/run/kata-containers/sandbox/layers/75a6d2c307a17044bce04dfeb0e89b70255ad0da9e75b0f17a8619ce5d45c2f2:/run/kata-containers/sandbox/layers/16a7e87ecdcb370a81c3191ba1280bfdbeed165aad2f9871c54dad74bb3922da" + "lowerdir=8ba0de266ed44bca1d1667f6768ed97d505ac4f921394034156e57fc037ea542:d0a29f081bcbdfe1baa36a49038e336e93fd6d6dc6d3994bf01f1ae049896063:75a6d2c307a17044bce04dfeb0e89b70255ad0da9e75b0f17a8619ce5d45c2f2:16a7e87ecdcb370a81c3191ba1280bfdbeed165aad2f9871c54dad74bb3922da" ], - "mount_point": "/run/kata-containers/29860295dcb41b0784972af156c842dc9d995f730fe05d9dc9dfe5a2aa9661e8/rootfs", + "mount_point": "/run/kata-containers/shared/containers/f0b9b8810ef67866a576dcbcaa9da39455e9c1f41aea33b3e9dbf413012391ad", "fs_group": { "group_id": 0, "group_change_policy": 0 diff --git a/src/agent/samples/policy/test-input/pod-three-containers-azure-cli.json b/src/agent/samples/policy/test-input/pod-three-containers-azure-cli.json index 487a5bdb387f..7663dd6241be 100644 --- a/src/agent/samples/policy/test-input/pod-three-containers-azure-cli.json +++ b/src/agent/samples/policy/test-input/pod-three-containers-azure-cli.json @@ -83,7 +83,7 @@ "oomScoreAdj": 1000 }, "root": { - "path": "/run/kata-containers/722577f937e4b88aa25e35e6903797142da217310d42f05c5a73b984674fa339/rootfs", + "path": "/run/kata-containers/shared/containers/d0f4b23547f8abb8d04ed6ddd0f7673fc7e92be1c0bb1e81c0d821ad36f0f2c2", "readonly": false }, "mounts": [ @@ -157,7 +157,7 @@ { "destination": "/etc/hosts", "type": "bind", - "source": "/run/kata-containers/shared/containers/722577f937e4b88aa25e35e6903797142da217310d42f05c5a73b984674fa339-5ac95d31e380e9dc-hosts", + "source": "/run/kata-containers/shared/containers/d0f4b23547f8abb8d04ed6ddd0f7673fc7e92be1c0bb1e81c0d821ad36f0f2c2-09c5ef4b0505d283-hosts", "options": [ "rbind", "rprivate", @@ -167,7 +167,7 @@ { "destination": "/dev/termination-log", "type": "bind", - "source": "/run/kata-containers/shared/containers/722577f937e4b88aa25e35e6903797142da217310d42f05c5a73b984674fa339-06f30d3b20231235-termination-log", + "source": "/run/kata-containers/shared/containers/d0f4b23547f8abb8d04ed6ddd0f7673fc7e92be1c0bb1e81c0d821ad36f0f2c2-203f0e50662b42fc-termination-log", "options": [ "rbind", "rprivate", @@ -177,7 +177,7 @@ { "destination": "/etc/hostname", "type": "bind", - "source": "/run/kata-containers/shared/containers/722577f937e4b88aa25e35e6903797142da217310d42f05c5a73b984674fa339-2a5f93651e83c7e0-hostname", + "source": "/run/kata-containers/shared/containers/d0f4b23547f8abb8d04ed6ddd0f7673fc7e92be1c0bb1e81c0d821ad36f0f2c2-ab2cce6c50648561-hostname", "options": [ "rbind", "rprivate", @@ -187,7 +187,7 @@ { "destination": "/etc/resolv.conf", "type": "bind", - "source": "/run/kata-containers/shared/containers/722577f937e4b88aa25e35e6903797142da217310d42f05c5a73b984674fa339-d6264cdb45f69c99-resolv.conf", + "source": "/run/kata-containers/shared/containers/d0f4b23547f8abb8d04ed6ddd0f7673fc7e92be1c0bb1e81c0d821ad36f0f2c2-aaf2dda781350d77-resolv.conf", "options": [ "rbind", "rprivate", @@ -205,7 +205,7 @@ { "destination": "/var/run/secrets/kubernetes.io/serviceaccount", "type": "bind", - "source": "/run/kata-containers/shared/containers/722577f937e4b88aa25e35e6903797142da217310d42f05c5a73b984674fa339-aeef62fb0e2b543e-serviceaccount", + "source": "/run/kata-containers/shared/containers/d0f4b23547f8abb8d04ed6ddd0f7673fc7e92be1c0bb1e81c0d821ad36f0f2c2-65186047857b0227-serviceaccount", "options": [ "rbind", "rprivate", @@ -214,15 +214,15 @@ } ], "annotations": { - "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/722577f937e4b88aa25e35e6903797142da217310d42f05c5a73b984674fa339", + "io.kubernetes.cri.container-name": "mariner-cli", "io.kubernetes.cri.sandbox-namespace": "default", - "io.kubernetes.cri.sandbox-id": "cb4386030c997f5cb9368f8b9a5997563ec75f9b44c65c7a4f8ccfb25305031e", + "io.katacontainers.pkg.oci.container_type": "pod_container", "io.kubernetes.cri.image-name": "mcr.microsoft.com/cbl-mariner/base/azure-cli:2.49.0-1-cm2.0.20230609-amd64", + "io.kubernetes.cri.sandbox-id": "8a49cdf6b791387443dc24797b978370747d5b9374e5bfed87d596c43cb7258f", "io.kubernetes.cri.container-type": "container", - "io.kubernetes.cri.sandbox-uid": "465176d0-75ac-416d-a8ea-bf978f2cbc25", - "io.katacontainers.pkg.oci.container_type": "pod_container", + "io.kubernetes.cri.sandbox-uid": "a142c276-fe81-4d3e-9893-c6f3ac2adb1f", "io.kubernetes.cri.sandbox-name": "three-containers", - "io.kubernetes.cri.container-name": "mariner-cli" + "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/d0f4b23547f8abb8d04ed6ddd0f7673fc7e92be1c0bb1e81c0d821ad36f0f2c2" }, "linux": { "resources": { @@ -243,7 +243,7 @@ "realtimePeriod": 0 } }, - "cgroupsPath": "/kubepods/besteffort/pod465176d0-75ac-416d-a8ea-bf978f2cbc25/722577f937e4b88aa25e35e6903797142da217310d42f05c5a73b984674fa339", + "cgroupsPath": "/kubepods/besteffort/poda142c276-fe81-4d3e-9893-c6f3ac2adb1f/d0f4b23547f8abb8d04ed6ddd0f7673fc7e92be1c0bb1e81c0d821ad36f0f2c2", "namespaces": [ { "type": "ipc" @@ -297,7 +297,7 @@ { "driver": "blk", "driver_options": [], - "source": "08", + "source": "09", "fstype": "tar", "options": [ "ro", @@ -314,7 +314,7 @@ { "driver": "blk", "driver_options": [], - "source": "09", + "source": "0a", "fstype": "tar", "options": [ "ro", @@ -331,7 +331,7 @@ { "driver": "blk", "driver_options": [], - "source": "0a", + "source": "0b", "fstype": "tar", "options": [ "ro", @@ -351,14 +351,15 @@ "source": "none", "fstype": "tar-overlay", "options": [ - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/6878f2bcd653669fb7c4432bdf0850234b1a205d59aba403d5083a401044123c,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=b57ba6f362e9d33bac5ed2467970cf6392d7f34a52685a00d57456be7c3ca9c1", - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/b52cbb55bfcf0b3dba321d95a3f8467207c4974fe10a617241c0e40625c2213b,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=dd223d9bdf15f22ef586fcdaa01082719d73f7d466f4e020be6028ac4c4b3849", - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/24c665cb0b67c75fec72b6cf12dd6ca87c9b50dd27ab753259b48eb220f10554,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=a04974b1adb63cc2305e6109ff18117990d4bedfecd591ece8d1250ca5203f8f", - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/716219593ec5538487a91318723cc722a29f71a4d5cecfd7af352344f6e05953,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=612a798e15a80ace6222225ef833493b9c1d88fa06d950b38a3ef27d97c8b6b8", + "io.katacontainers.fs-opt.layer-src-prefix=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers", + "io.katacontainers.fs-opt.layer=6878f2bcd653669fb7c4432bdf0850234b1a205d59aba403d5083a401044123c,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=b57ba6f362e9d33bac5ed2467970cf6392d7f34a52685a00d57456be7c3ca9c1", + "io.katacontainers.fs-opt.layer=b52cbb55bfcf0b3dba321d95a3f8467207c4974fe10a617241c0e40625c2213b,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=dd223d9bdf15f22ef586fcdaa01082719d73f7d466f4e020be6028ac4c4b3849", + "io.katacontainers.fs-opt.layer=24c665cb0b67c75fec72b6cf12dd6ca87c9b50dd27ab753259b48eb220f10554,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=a04974b1adb63cc2305e6109ff18117990d4bedfecd591ece8d1250ca5203f8f", + "io.katacontainers.fs-opt.layer=716219593ec5538487a91318723cc722a29f71a4d5cecfd7af352344f6e05953,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=612a798e15a80ace6222225ef833493b9c1d88fa06d950b38a3ef27d97c8b6b8", "io.katacontainers.fs-opt.overlay-rw", - "lowerdir=/run/kata-containers/sandbox/layers/6878f2bcd653669fb7c4432bdf0850234b1a205d59aba403d5083a401044123c:/run/kata-containers/sandbox/layers/b52cbb55bfcf0b3dba321d95a3f8467207c4974fe10a617241c0e40625c2213b:/run/kata-containers/sandbox/layers/24c665cb0b67c75fec72b6cf12dd6ca87c9b50dd27ab753259b48eb220f10554:/run/kata-containers/sandbox/layers/716219593ec5538487a91318723cc722a29f71a4d5cecfd7af352344f6e05953" + "lowerdir=6878f2bcd653669fb7c4432bdf0850234b1a205d59aba403d5083a401044123c:b52cbb55bfcf0b3dba321d95a3f8467207c4974fe10a617241c0e40625c2213b:24c665cb0b67c75fec72b6cf12dd6ca87c9b50dd27ab753259b48eb220f10554:716219593ec5538487a91318723cc722a29f71a4d5cecfd7af352344f6e05953" ], - "mount_point": "/run/kata-containers/722577f937e4b88aa25e35e6903797142da217310d42f05c5a73b984674fa339/rootfs", + "mount_point": "/run/kata-containers/shared/containers/d0f4b23547f8abb8d04ed6ddd0f7673fc7e92be1c0bb1e81c0d821ad36f0f2c2", "fs_group": { "group_id": 0, "group_change_policy": 0 diff --git a/src/agent/samples/policy/test-input/pod-three-containers-busybox.json b/src/agent/samples/policy/test-input/pod-three-containers-busybox.json index ef9d6c2b31df..f13dcfee6352 100644 --- a/src/agent/samples/policy/test-input/pod-three-containers-busybox.json +++ b/src/agent/samples/policy/test-input/pod-three-containers-busybox.json @@ -18,14 +18,14 @@ "env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "HOSTNAME=three-containers", + "KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1", "KUBERNETES_SERVICE_HOST=10.0.0.1", "KUBERNETES_SERVICE_PORT=443", "KUBERNETES_SERVICE_PORT_HTTPS=443", "KUBERNETES_PORT=tcp://10.0.0.1:443", "KUBERNETES_PORT_443_TCP=tcp://10.0.0.1:443", "KUBERNETES_PORT_443_TCP_PROTO=tcp", - "KUBERNETES_PORT_443_TCP_PORT=443", - "KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1" + "KUBERNETES_PORT_443_TCP_PORT=443" ], "cwd": "/", "capabilities": { @@ -83,7 +83,7 @@ "oomScoreAdj": 1000 }, "root": { - "path": "/run/kata-containers/fb3677f1dc4ea7772016525d0e0338a8908f099d0e46dbdfe101644d7134c2ad/rootfs", + "path": "/run/kata-containers/shared/containers/a7e7aefb0b1bcb020a9477e3b860c2d37da05c7b582a074de20ac04d3bc8a0bc", "readonly": true }, "mounts": [ @@ -157,7 +157,7 @@ { "destination": "/etc/hosts", "type": "bind", - "source": "/run/kata-containers/shared/containers/fb3677f1dc4ea7772016525d0e0338a8908f099d0e46dbdfe101644d7134c2ad-8d7012b562a950c8-hosts", + "source": "/run/kata-containers/shared/containers/a7e7aefb0b1bcb020a9477e3b860c2d37da05c7b582a074de20ac04d3bc8a0bc-924f5a47e6e9e3fe-hosts", "options": [ "rbind", "rprivate", @@ -167,7 +167,7 @@ { "destination": "/dev/termination-log", "type": "bind", - "source": "/run/kata-containers/shared/containers/fb3677f1dc4ea7772016525d0e0338a8908f099d0e46dbdfe101644d7134c2ad-1a35208ba671069c-termination-log", + "source": "/run/kata-containers/shared/containers/a7e7aefb0b1bcb020a9477e3b860c2d37da05c7b582a074de20ac04d3bc8a0bc-1136d3d4d76f5b3e-termination-log", "options": [ "rbind", "rprivate", @@ -177,7 +177,7 @@ { "destination": "/etc/hostname", "type": "bind", - "source": "/run/kata-containers/shared/containers/fb3677f1dc4ea7772016525d0e0338a8908f099d0e46dbdfe101644d7134c2ad-40c6ecb41cbe5720-hostname", + "source": "/run/kata-containers/shared/containers/a7e7aefb0b1bcb020a9477e3b860c2d37da05c7b582a074de20ac04d3bc8a0bc-f95b99db5d020585-hostname", "options": [ "rbind", "rprivate", @@ -187,7 +187,7 @@ { "destination": "/etc/resolv.conf", "type": "bind", - "source": "/run/kata-containers/shared/containers/fb3677f1dc4ea7772016525d0e0338a8908f099d0e46dbdfe101644d7134c2ad-3ba08c23dc6d0717-resolv.conf", + "source": "/run/kata-containers/shared/containers/a7e7aefb0b1bcb020a9477e3b860c2d37da05c7b582a074de20ac04d3bc8a0bc-8f5ab2d3c2a1901c-resolv.conf", "options": [ "rbind", "rprivate", @@ -205,7 +205,7 @@ { "destination": "/var/run/secrets/kubernetes.io/serviceaccount", "type": "bind", - "source": "/run/kata-containers/shared/containers/fb3677f1dc4ea7772016525d0e0338a8908f099d0e46dbdfe101644d7134c2ad-1f5d244df0330433-serviceaccount", + "source": "/run/kata-containers/shared/containers/a7e7aefb0b1bcb020a9477e3b860c2d37da05c7b582a074de20ac04d3bc8a0bc-0282ad7437cb767c-serviceaccount", "options": [ "rbind", "rprivate", @@ -214,15 +214,15 @@ } ], "annotations": { - "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/fb3677f1dc4ea7772016525d0e0338a8908f099d0e46dbdfe101644d7134c2ad", - "io.kubernetes.cri.container-name": "busybox", "io.kubernetes.cri.sandbox-namespace": "default", - "io.kubernetes.cri.image-name": "mcr.microsoft.com/aks/e2e/library-busybox:master.220314.1-linux-amd64", + "io.kubernetes.cri.sandbox-name": "three-containers", + "io.kubernetes.cri.sandbox-uid": "a142c276-fe81-4d3e-9893-c6f3ac2adb1f", "io.katacontainers.pkg.oci.container_type": "pod_container", - "io.kubernetes.cri.sandbox-uid": "465176d0-75ac-416d-a8ea-bf978f2cbc25", "io.kubernetes.cri.container-type": "container", - "io.kubernetes.cri.sandbox-name": "three-containers", - "io.kubernetes.cri.sandbox-id": "cb4386030c997f5cb9368f8b9a5997563ec75f9b44c65c7a4f8ccfb25305031e" + "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/a7e7aefb0b1bcb020a9477e3b860c2d37da05c7b582a074de20ac04d3bc8a0bc", + "io.kubernetes.cri.image-name": "mcr.microsoft.com/aks/e2e/library-busybox:master.220314.1-linux-amd64", + "io.kubernetes.cri.container-name": "busybox", + "io.kubernetes.cri.sandbox-id": "8a49cdf6b791387443dc24797b978370747d5b9374e5bfed87d596c43cb7258f" }, "linux": { "resources": { @@ -243,7 +243,7 @@ "realtimePeriod": 0 } }, - "cgroupsPath": "/kubepods/besteffort/pod465176d0-75ac-416d-a8ea-bf978f2cbc25/fb3677f1dc4ea7772016525d0e0338a8908f099d0e46dbdfe101644d7134c2ad", + "cgroupsPath": "/kubepods/besteffort/poda142c276-fe81-4d3e-9893-c6f3ac2adb1f/a7e7aefb0b1bcb020a9477e3b860c2d37da05c7b582a074de20ac04d3bc8a0bc", "namespaces": [ { "type": "ipc" @@ -317,12 +317,13 @@ "source": "none", "fstype": "tar-overlay", "options": [ - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/2c342a137e693c7898aec36da1047f191dc7c1687e66198adacc439cf4adf379,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=8568c70c0ccfe0051092e818da769111a59882cd19dd799d3bca5ffa82791080", - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/2570e3a19e1bf20ddda45498a9627f61555d2d6c01479b9b76460b679b27d552,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=b643b6217748983830b26ac14a35a3322dd528c00963eaadd91ef55f513dc73f", + "io.katacontainers.fs-opt.layer-src-prefix=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers", + "io.katacontainers.fs-opt.layer=2c342a137e693c7898aec36da1047f191dc7c1687e66198adacc439cf4adf379,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=8568c70c0ccfe0051092e818da769111a59882cd19dd799d3bca5ffa82791080", + "io.katacontainers.fs-opt.layer=2570e3a19e1bf20ddda45498a9627f61555d2d6c01479b9b76460b679b27d552,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=b643b6217748983830b26ac14a35a3322dd528c00963eaadd91ef55f513dc73f", "io.katacontainers.fs-opt.overlay-rw", - "lowerdir=/run/kata-containers/sandbox/layers/2c342a137e693c7898aec36da1047f191dc7c1687e66198adacc439cf4adf379:/run/kata-containers/sandbox/layers/2570e3a19e1bf20ddda45498a9627f61555d2d6c01479b9b76460b679b27d552" + "lowerdir=2c342a137e693c7898aec36da1047f191dc7c1687e66198adacc439cf4adf379:2570e3a19e1bf20ddda45498a9627f61555d2d6c01479b9b76460b679b27d552" ], - "mount_point": "/run/kata-containers/fb3677f1dc4ea7772016525d0e0338a8908f099d0e46dbdfe101644d7134c2ad/rootfs", + "mount_point": "/run/kata-containers/shared/containers/a7e7aefb0b1bcb020a9477e3b860c2d37da05c7b582a074de20ac04d3bc8a0bc", "fs_group": { "group_id": 0, "group_change_policy": 0 diff --git a/src/agent/samples/policy/test-input/pod-three-containers-pause.json b/src/agent/samples/policy/test-input/pod-three-containers-pause.json index 05783da64a49..3c872e95bb8f 100644 --- a/src/agent/samples/policy/test-input/pod-three-containers-pause.json +++ b/src/agent/samples/policy/test-input/pod-three-containers-pause.json @@ -72,7 +72,7 @@ "oomScoreAdj": -998 }, "root": { - "path": "/run/kata-containers/cb4386030c997f5cb9368f8b9a5997563ec75f9b44c65c7a4f8ccfb25305031e/rootfs", + "path": "/run/kata-containers/shared/containers/8a49cdf6b791387443dc24797b978370747d5b9374e5bfed87d596c43cb7258f", "readonly": true }, "hostname": "three-containers", @@ -143,7 +143,7 @@ { "destination": "/etc/resolv.conf", "type": "bind", - "source": "/run/kata-containers/shared/containers/cb4386030c997f5cb9368f8b9a5997563ec75f9b44c65c7a4f8ccfb25305031e-9c686c1db7b35de7-resolv.conf", + "source": "/run/kata-containers/shared/containers/8a49cdf6b791387443dc24797b978370747d5b9374e5bfed87d596c43cb7258f-89344fe671024309-resolv.conf", "options": [ "rbind", "ro", @@ -154,19 +154,19 @@ } ], "annotations": { - "io.kubernetes.cri.container-type": "sandbox", + "io.kubernetes.cri.sandbox-cpu-quota": "0", "io.kubernetes.cri.sandbox-name": "three-containers", - "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/cb4386030c997f5cb9368f8b9a5997563ec75f9b44c65c7a4f8ccfb25305031e", - "io.kubernetes.cri.sandbox-cpu-period": "100000", - "io.kubernetes.cri.sandbox-uid": "465176d0-75ac-416d-a8ea-bf978f2cbc25", + "io.kubernetes.cri.sandbox-namespace": "default", "io.kubernetes.cri.sandbox-memory": "0", - "io.kubernetes.cri.sandbox-cpu-quota": "0", - "io.kubernetes.cri.sandbox-id": "cb4386030c997f5cb9368f8b9a5997563ec75f9b44c65c7a4f8ccfb25305031e", + "nerdctl/network-namespace": "/var/run/netns/cni-e78ac7cc-0f97-13ee-1262-7057b951301d", + "io.katacontainers.pkg.oci.bundle_path": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/8a49cdf6b791387443dc24797b978370747d5b9374e5bfed87d596c43cb7258f", + "io.kubernetes.cri.sandbox-cpu-period": "100000", + "io.kubernetes.cri.sandbox-log-directory": "/var/log/pods/default_three-containers_a142c276-fe81-4d3e-9893-c6f3ac2adb1f", + "io.kubernetes.cri.sandbox-id": "8a49cdf6b791387443dc24797b978370747d5b9374e5bfed87d596c43cb7258f", "io.katacontainers.pkg.oci.container_type": "pod_sandbox", - "nerdctl/network-namespace": "/var/run/netns/cni-b55f49c9-d745-2122-d89c-85096aeb81ca", - "io.kubernetes.cri.sandbox-log-directory": "/var/log/pods/default_three-containers_465176d0-75ac-416d-a8ea-bf978f2cbc25", + "io.kubernetes.cri.sandbox-uid": "a142c276-fe81-4d3e-9893-c6f3ac2adb1f", "io.kubernetes.cri.sandbox-cpu-shares": "2", - "io.kubernetes.cri.sandbox-namespace": "default" + "io.kubernetes.cri.container-type": "sandbox" }, "linux": { "resources": { @@ -178,7 +178,7 @@ "realtimePeriod": 0 } }, - "cgroupsPath": "/kubepods/besteffort/pod465176d0-75ac-416d-a8ea-bf978f2cbc25/cb4386030c997f5cb9368f8b9a5997563ec75f9b44c65c7a4f8ccfb25305031e", + "cgroupsPath": "/kubepods/besteffort/poda142c276-fe81-4d3e-9893-c6f3ac2adb1f/8a49cdf6b791387443dc24797b978370747d5b9374e5bfed87d596c43cb7258f", "namespaces": [ { "type": "ipc" @@ -235,11 +235,12 @@ "source": "none", "fstype": "tar-overlay", "options": [ - "io.katacontainers.fs-opt.layer=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/5a5aad80055ff20012a50dc25f8df7a29924474324d65f7d5306ee8ee27ff71d,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=817250f1a3e336da76f5bd3fa784e1b26d959b9c131876815ba2604048b70c18", + "io.katacontainers.fs-opt.layer-src-prefix=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers", + "io.katacontainers.fs-opt.layer=5a5aad80055ff20012a50dc25f8df7a29924474324d65f7d5306ee8ee27ff71d,tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash=817250f1a3e336da76f5bd3fa784e1b26d959b9c131876815ba2604048b70c18", "io.katacontainers.fs-opt.overlay-rw", - "lowerdir=/run/kata-containers/sandbox/layers/5a5aad80055ff20012a50dc25f8df7a29924474324d65f7d5306ee8ee27ff71d" + "lowerdir=5a5aad80055ff20012a50dc25f8df7a29924474324d65f7d5306ee8ee27ff71d" ], - "mount_point": "/run/kata-containers/cb4386030c997f5cb9368f8b9a5997563ec75f9b44c65c7a4f8ccfb25305031e/rootfs", + "mount_point": "/run/kata-containers/shared/containers/8a49cdf6b791387443dc24797b978370747d5b9374e5bfed87d596c43cb7258f", "fs_group": { "group_id": 0, "group_change_policy": 0 diff --git a/src/agent/samples/policy/yaml/configmap/pod-cm1.yaml b/src/agent/samples/policy/yaml/configmap/pod-cm1.yaml index 0167b363c09e..db6d2928dfd2 100644 --- a/src/agent/samples/policy/yaml/configmap/pod-cm1.yaml +++ b/src/agent/samples/policy/yaml/configmap/pod-cm1.yaml @@ -13,7 +13,7 @@ metadata: labels: run: busybox annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY20xJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJjbTEiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvYmluL3NoIiwKICAgICAgICAgICAgIi1jIiwKICAgICAgICAgICAgIndoaWxlIHRydWU7IGRvIGVjaG8gaGVsbG87IHNsZWVwIDEwOyBkb25lIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1jbTEiLAogICAgICAgICAgICAiQ09ORklHX01BUF9WQUxVRTE9dmFsdWUxIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfREFDX1JFQURfU0VBUkNIIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTElOVVhfSU1NVVRBQkxFIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JST0FEQ0FTVCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfTE9DSyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfT1dORVIiLAogICAgICAgICAgICAgICJDQVBfU1lTX01PRFVMRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkFXSU8iLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUFRSQUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QQUNDVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTX0JPT1QiLAogICAgICAgICAgICAgICJDQVBfU1lTX05JQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1JFU09VUkNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19USU1FIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19UVFlfQ09ORklHIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX0xFQVNFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX0NPTlRST0wiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfTUFDX0FETUlOIiwKICAgICAgICAgICAgICAiQ0FQX1NZU0xPRyIsCiAgICAgICAgICAgICAgIkNBUF9XQUtFX0FMQVJNIiwKICAgICAgICAgICAgICAiQ0FQX0JMT0NLX1NVU1BFTkQiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfUkVBRCIsCiAgICAgICAgICAgICAgIkNBUF9QRVJGTU9OIiwKICAgICAgICAgICAgICAiQ0FQX0JQRiIsCiAgICAgICAgICAgICAgIkNBUF9DSEVDS1BPSU5UX1JFU1RPUkUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfREFDX1JFQURfU0VBUkNIIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTElOVVhfSU1NVVRBQkxFIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JST0FEQ0FTVCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfTE9DSyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfT1dORVIiLAogICAgICAgICAgICAgICJDQVBfU1lTX01PRFVMRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkFXSU8iLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUFRSQUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QQUNDVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTX0JPT1QiLAogICAgICAgICAgICAgICJDQVBfU1lTX05JQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1JFU09VUkNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19USU1FIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19UVFlfQ09ORklHIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX0xFQVNFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX0NPTlRST0wiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfTUFDX0FETUlOIiwKICAgICAgICAgICAgICAiQ0FQX1NZU0xPRyIsCiAgICAgICAgICAgICAgIkNBUF9XQUtFX0FMQVJNIiwKICAgICAgICAgICAgICAiQ0FQX0JMT0NLX1NVU1BFTkQiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfUkVBRCIsCiAgICAgICAgICAgICAgIkNBUF9QRVJGTU9OIiwKICAgICAgICAgICAgICAiQ0FQX0JQRiIsCiAgICAgICAgICAgICAgIkNBUF9DSEVDS1BPSU5UX1JFU1RPUkUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfREFDX1JFQURfU0VBUkNIIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTElOVVhfSU1NVVRBQkxFIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JST0FEQ0FTVCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfTE9DSyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfT1dORVIiLAogICAgICAgICAgICAgICJDQVBfU1lTX01PRFVMRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkFXSU8iLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUFRSQUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QQUNDVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTX0JPT1QiLAogICAgICAgICAgICAgICJDQVBfU1lTX05JQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1JFU09VUkNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19USU1FIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19UVFlfQ09ORklHIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX0xFQVNFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX0NPTlRST0wiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfTUFDX0FETUlOIiwKICAgICAgICAgICAgICAiQ0FQX1NZU0xPRyIsCiAgICAgICAgICAgICAgIkNBUF9XQUtFX0FMQVJNIiwKICAgICAgICAgICAgICAiQ0FQX0JMT0NLX1NVU1BFTkQiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfUkVBRCIsCiAgICAgICAgICAgICAgIkNBUF9QRVJGTU9OIiwKICAgICAgICAgICAgICAiQ0FQX0JQRiIsCiAgICAgICAgICAgICAgIkNBUF9DSEVDS1BPSU5UX1JFU1RPUkUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXmNtMSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImJ1c3lib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJjbTEiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1Mix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY20xJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJjbTEiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvYmluL3NoIiwKICAgICAgICAgICAgIi1jIiwKICAgICAgICAgICAgIndoaWxlIHRydWU7IGRvIGVjaG8gaGVsbG87IHNsZWVwIDEwOyBkb25lIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1jbTEiLAogICAgICAgICAgICAiQ09ORklHX01BUF9WQUxVRTE9dmFsdWUxIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfREFDX1JFQURfU0VBUkNIIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTElOVVhfSU1NVVRBQkxFIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JST0FEQ0FTVCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfTE9DSyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfT1dORVIiLAogICAgICAgICAgICAgICJDQVBfU1lTX01PRFVMRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkFXSU8iLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUFRSQUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QQUNDVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTX0JPT1QiLAogICAgICAgICAgICAgICJDQVBfU1lTX05JQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1JFU09VUkNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19USU1FIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19UVFlfQ09ORklHIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX0xFQVNFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX0NPTlRST0wiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfTUFDX0FETUlOIiwKICAgICAgICAgICAgICAiQ0FQX1NZU0xPRyIsCiAgICAgICAgICAgICAgIkNBUF9XQUtFX0FMQVJNIiwKICAgICAgICAgICAgICAiQ0FQX0JMT0NLX1NVU1BFTkQiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfUkVBRCIsCiAgICAgICAgICAgICAgIkNBUF9QRVJGTU9OIiwKICAgICAgICAgICAgICAiQ0FQX0JQRiIsCiAgICAgICAgICAgICAgIkNBUF9DSEVDS1BPSU5UX1JFU1RPUkUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfREFDX1JFQURfU0VBUkNIIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTElOVVhfSU1NVVRBQkxFIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JST0FEQ0FTVCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfTE9DSyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfT1dORVIiLAogICAgICAgICAgICAgICJDQVBfU1lTX01PRFVMRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkFXSU8iLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUFRSQUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QQUNDVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTX0JPT1QiLAogICAgICAgICAgICAgICJDQVBfU1lTX05JQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1JFU09VUkNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19USU1FIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19UVFlfQ09ORklHIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX0xFQVNFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX0NPTlRST0wiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfTUFDX0FETUlOIiwKICAgICAgICAgICAgICAiQ0FQX1NZU0xPRyIsCiAgICAgICAgICAgICAgIkNBUF9XQUtFX0FMQVJNIiwKICAgICAgICAgICAgICAiQ0FQX0JMT0NLX1NVU1BFTkQiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfUkVBRCIsCiAgICAgICAgICAgICAgIkNBUF9QRVJGTU9OIiwKICAgICAgICAgICAgICAiQ0FQX0JQRiIsCiAgICAgICAgICAgICAgIkNBUF9DSEVDS1BPSU5UX1JFU1RPUkUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfREFDX1JFQURfU0VBUkNIIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTElOVVhfSU1NVVRBQkxFIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JST0FEQ0FTVCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfTE9DSyIsCiAgICAgICAgICAgICAgIkNBUF9JUENfT1dORVIiLAogICAgICAgICAgICAgICJDQVBfU1lTX01PRFVMRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkFXSU8iLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUFRSQUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QQUNDVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTX0JPT1QiLAogICAgICAgICAgICAgICJDQVBfU1lTX05JQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1JFU09VUkNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19USU1FIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19UVFlfQ09ORklHIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX0xFQVNFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX0NPTlRST0wiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfTUFDX0FETUlOIiwKICAgICAgICAgICAgICAiQ0FQX1NZU0xPRyIsCiAgICAgICAgICAgICAgIkNBUF9XQUtFX0FMQVJNIiwKICAgICAgICAgICAgICAiQ0FQX0JMT0NLX1NVU1BFTkQiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfUkVBRCIsCiAgICAgICAgICAgICAgIkNBUF9QRVJGTU9OIiwKICAgICAgICAgICAgICAiQ0FQX0JQRiIsCiAgICAgICAgICAgICAgIkNBUF9DSEVDS1BPSU5UX1JFU1RPUkUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXmNtMSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImJ1c3lib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJjbTEiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1Mix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9MmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OToyNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= spec: restartPolicy: Never runtimeClassName: kata-cc diff --git a/src/agent/samples/policy/yaml/configmap/pod-cm2.yaml b/src/agent/samples/policy/yaml/configmap/pod-cm2.yaml index d2a92dba4e23..9ab7ede8a21a 100644 --- a/src/agent/samples/policy/yaml/configmap/pod-cm2.yaml +++ b/src/agent/samples/policy/yaml/configmap/pod-cm2.yaml @@ -11,7 +11,7 @@ kind: Pod metadata: name: cm2 annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY20yJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJjbTIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvYmluL3NoIiwKICAgICAgICAgICAgIi1jIiwKICAgICAgICAgICAgIndoaWxlIHRydWU7IGRvIGVjaG8gaGVsbG87IHNsZWVwIDEwOyBkb25lIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1jbTIiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY20yJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9jbTIiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvd2F0Y2hhYmxlLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY20yJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImJ1c3lib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJjbTIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzksdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJ3YXRjaGFibGUtYmluZCIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY20yLXZvbHVtZSQiLAogICAgICAgICAgImZzdHlwZSI6ICJiaW5kIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAicm8iCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy93YXRjaGFibGUvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1jbTIkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY20yJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJjbTIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvYmluL3NoIiwKICAgICAgICAgICAgIi1jIiwKICAgICAgICAgICAgIndoaWxlIHRydWU7IGRvIGVjaG8gaGVsbG87IHNsZWVwIDEwOyBkb25lIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1jbTIiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY20yJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9jbTIiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvd2F0Y2hhYmxlLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY20yJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImJ1c3lib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJjbTIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzksdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5OjI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJ3YXRjaGFibGUtYmluZCIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY20yLXZvbHVtZSQiLAogICAgICAgICAgImZzdHlwZSI6ICJiaW5kIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAicm8iCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy93YXRjaGFibGUvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1jbTIkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 spec: restartPolicy: Never runtimeClassName: kata-cc diff --git a/src/agent/samples/policy/yaml/deployment/deployment-azure-vote-back.yaml b/src/agent/samples/policy/yaml/deployment/deployment-azure-vote-back.yaml index eb71619b46b0..aeffeb4d6852 100644 --- a/src/agent/samples/policy/yaml/deployment/deployment-azure-vote-back.yaml +++ b/src/agent/samples/policy/yaml/deployment/deployment-azure-vote-back.yaml @@ -13,7 +13,7 @@ spec: labels: app: azure-vote-back annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeYXp1cmUtdm90ZS1iYWNrLVthLXowLTldKi1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAxMDAxLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL29wdC9iaXRuYW1pL3NjcmlwdHMvcmVkaXMvZW50cnlwb2ludC5zaCIsCiAgICAgICAgICAgICIvb3B0L2JpdG5hbWkvc2NyaXB0cy9yZWRpcy9ydW4uc2giCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L29wdC9iaXRuYW1pL2NvbW1vbi9iaW46L29wdC9iaXRuYW1pL3JlZGlzL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9NRT0vIiwKICAgICAgICAgICAgIk9TX0FSQ0g9YW1kNjQiLAogICAgICAgICAgICAiT1NfRkxBVk9VUj1kZWJpYW4tMTAiLAogICAgICAgICAgICAiT1NfTkFNRT1saW51eCIsCiAgICAgICAgICAgICJCSVROQU1JX0FQUF9OQU1FPXJlZGlzIiwKICAgICAgICAgICAgIkJJVE5BTUlfSU1BR0VfVkVSU0lPTj02LjAuOC1kZWJpYW4tMTAtcjIzIiwKICAgICAgICAgICAgIkhPU1ROQU1FPWF6dXJlLXZvdGUtYmFjayIsCiAgICAgICAgICAgICJBTExPV19FTVBUWV9QQVNTV09SRD15ZXMiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeYXp1cmUtdm90ZS1iYWNrLVthLXowLTldKi1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImF6dXJlLXZvdGUtYmFjayIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL29zcy9iaXRuYW1pL3JlZGlzOjYuMC44IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jNmMwNjJjOTdiYjUzM2Q1NTQ5YTRkOTVjM2RjY2YwYTc1OGU0MjM0OTdiZDczZDQ1MjVmODFiNjk3YTI0MDMwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9iZGZlMmQyNGZhYzI0YjM3NmVjZjQxZGE5ZmE2OWZlYzg2MzIxZGMxNTUxYjhjY2M1Y2NiODRiZDA0ZTAzYmI1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTU1ZDBhZTA3ZjJjMDRlNmM5ZTYwMGM4NzRhMjViOWFhZTEzNDYwMGY2NDliY2JjODEwN2EwYmY0ZDExZjgxMjEiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2E2ZTdiMWUxMTY3NTQwMmMzMDQ5ODNlNTc3OThhZWIxODlkNDE1ZDQ5MjIwMjY2NmExOGM4YTg4NDM2YTU2ZTUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzQ5MDVkZTBiYTA5OTVkMjRlNzJkMTYwNzg1Mjc2ZTUxYzMxYzkzZTJjNjU0ZmQyOGEwMjNmYmU1NzIwZDQ4NyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWFkZTczZTkwZWE1NzhlOGUxMGMzYmEwZTQwNjViNDQ2N2UxNTMwOTZiYmRiYjczNmUxZTI0YTgzYThiNzQyMiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcxMGUwNDRjNGNjZTQ2Mjc5OTgyYTVhOTU3YjliYjE3M2FlZDJiZjRiMGE0YWQ3ZDc2OWZjZDk2ZjkzMmY3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lOTEwODIxM2Y2NTgzNTVmMTMxMjhjMmRiMGYyYmRlOGE5Y2YyNjhhZTYyNjk5MTc3NTZiOThmNmNjZDIxMjU1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwYWI2NTQ1NTE4NDM0NDJjYjhhNzg0YzZlMjc2ODM0MGJiODgyZTA0OGQxNDBjMjI4ZmQ1YjE4YWU4MWRiYzQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzMxZTZjMjRhNGMxZDFhZDRhYzcxNDAxM2M0MDBhMWUwZDNlZGE2ZGU2MDQ5NTBmNTQ2YzhjNWRlY2M1OWMxOWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDVkOGQ2MTg3YjI3NTQxZjg5OGZiZTE4ZTU4NjExNmYwYzI3MzVkOTI0OTA2YTFjNWQwNWFkNzEwNmMzYTVmZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYzZkNDc1OGRiNGMwOTEwNGIwNTU0YTNmZjI1ZDM3ZTQyZTRmMDc5NWEwMjJmMmE0MmY3MTQxMjk0MzZjZTE0MyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zYzE2NWQ2NjY0MTA1MzkyODM4ODE0NzcwZDdlNzQzNGExYjBjMzViMTA2OGUwNTMyOTU4OGQzZWQ0OTQzMGZmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy85NDQ0MmQ3ZDc3MzUyODEzMjA2ZjFkYzA5OWJkYjNjOTkwZjNiYzBkMmVhNjY2MTU1MTRjOTkwY2UxMDc2MzY0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1MTcxNzlkM2U5OTE5ZGZlZDQyYjEyODJjYzM5M2MzOTJjNTZiMGQ4Mjk4MzQ3ODcyYzlhOTk2NDdjNTYwYWYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzU3NGI3M2U2NmRhZjJjNzM1NzI5ZDc0YTY5NTQ2MDkzZmRjMDY4MTMxYWVkZGI1ODAyYmRkOWVjOTdmNDEwMzAiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODNiODUyMDgxYTA1MmYyYTgzMmRkZmMwNGRlYjZkZWVjNGJhNzA4NTQ0MmEzNjBiNTI0Nzk3ZWQxNmEzOThkMyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvM2Y1MmNiNjUyNWQ4ZTY4ZDU3M2MzODFmNmQxMDRkZDE2OGNjMGIzM2ExMTY4ZjE2YjAwYzg3N2NlOGI4YjYxNSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMzk3OGFhYjllNzU2ZDZiNmQ0YjMzZGMzMWQxNWU1NDNmNDJlZGQ2YmZmNTMxYWRhM2Q3ZTM4NDIxYmU0ZTc1IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy82Yjc2NzA0NmVmMDc3NzE0OTgzYTY3NTNiOWY5ZmI0MTEyZDQxMGQzNjBlYWJhNTk3MGMyZjczYjM0NjRiODIyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM5ZTg1ZjcyYTZkODQxOTVhNTdiMzM4NWE0ZTY4Yjc5MTUxY2RjMTkxN2ExNjFmOWI4Nzk5ZTY4ZjVlYTgxZDkiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2ZjYmViOTk1OWY0NDIzMWNmYmYzZjRiNjc5ODI4MTlhZjYyY2YxZjYxNDc2MzRjZjZiMTdhYTM4N2Q2OGEwYjciLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9iZGZlMmQyNGZhYzI0YjM3NmVjZjQxZGE5ZmE2OWZlYzg2MzIxZGMxNTUxYjhjY2M1Y2NiODRiZDA0ZTAzYmI1LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YzZjMDYyYzk3YmI1MzNkNTU0OWE0ZDk1YzNkY2NmMGE3NThlNDIzNDk3YmQ3M2Q0NTI1ZjgxYjY5N2EyNDAzMCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvYTZlN2IxZTExNjc1NDAyYzMwNDk4M2U1Nzc5OGFlYjE4OWQ0MTVkNDkyMjAyNjY2YTE4YzhhODg0MzZhNTZlNSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTU1ZDBhZTA3ZjJjMDRlNmM5ZTYwMGM4NzRhMjViOWFhZTEzNDYwMGY2NDliY2JjODEwN2EwYmY0ZDExZjgxMjEiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzVhZGU3M2U5MGVhNTc4ZThlMTBjM2JhMGU0MDY1YjQ0NjdlMTUzMDk2YmJkYmI3MzZlMWUyNGE4M2E4Yjc0MjIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zNDkwNWRlMGJhMDk5NWQyNGU3MmQxNjA3ODUyNzZlNTFjMzFjOTNlMmM2NTRmZDI4YTAyM2ZiZTU3MjBkNDg3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9lOTEwODIxM2Y2NTgzNTVmMTMxMjhjMmRiMGYyYmRlOGE5Y2YyNjhhZTYyNjk5MTc3NTZiOThmNmNjZDIxMjU1LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MTBlMDQ0YzRjY2U0NjI3OTk4MmE1YTk1N2I5YmIxNzNhZWQyYmY0YjBhNGFkN2Q3NjlmY2Q5NmY5MzJmNyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMzFlNmMyNGE0YzFkMWFkNGFjNzE0MDEzYzQwMGExZTBkM2VkYTZkZTYwNDk1MGY1NDZjOGM1ZGVjYzU5YzE5ZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwYWI2NTQ1NTE4NDM0NDJjYjhhNzg0YzZlMjc2ODM0MGJiODgyZTA0OGQxNDBjMjI4ZmQ1YjE4YWU4MWRiYzQiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2M2ZDQ3NThkYjRjMDkxMDRiMDU1NGEzZmYyNWQzN2U0MmU0ZjA3OTVhMDIyZjJhNDJmNzE0MTI5NDM2Y2UxNDMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWQ4ZDYxODdiMjc1NDFmODk4ZmJlMThlNTg2MTE2ZjBjMjczNWQ5MjQ5MDZhMWM1ZDA1YWQ3MTA2YzNhNWZmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy85NDQ0MmQ3ZDc3MzUyODEzMjA2ZjFkYzA5OWJkYjNjOTkwZjNiYzBkMmVhNjY2MTU1MTRjOTkwY2UxMDc2MzY0LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9M2MxNjVkNjY2NDEwNTM5MjgzODgxNDc3MGQ3ZTc0MzRhMWIwYzM1YjEwNjhlMDUzMjk1ODhkM2VkNDk0MzBmZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNTc0YjczZTY2ZGFmMmM3MzU3MjlkNzRhNjk1NDYwOTNmZGMwNjgxMzFhZWRkYjU4MDJiZGQ5ZWM5N2Y0MTAzMCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1MTcxNzlkM2U5OTE5ZGZlZDQyYjEyODJjYzM5M2MzOTJjNTZiMGQ4Mjk4MzQ3ODcyYzlhOTk2NDdjNTYwYWYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzNmNTJjYjY1MjVkOGU2OGQ1NzNjMzgxZjZkMTA0ZGQxNjhjYzBiMzNhMTE2OGYxNmIwMGM4NzdjZThiOGI2MTUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04M2I4NTIwODFhMDUyZjJhODMyZGRmYzA0ZGViNmRlZWM0YmE3MDg1NDQyYTM2MGI1MjQ3OTdlZDE2YTM5OGQzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy82Yjc2NzA0NmVmMDc3NzE0OTgzYTY3NTNiOWY5ZmI0MTEyZDQxMGQzNjBlYWJhNTk3MGMyZjczYjM0NjRiODIyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YTM5NzhhYWI5ZTc1NmQ2YjZkNGIzM2RjMzFkMTVlNTQzZjQyZWRkNmJmZjUzMWFkYTNkN2UzODQyMWJlNGU3NSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZmNiZWI5OTU5ZjQ0MjMxY2ZiZjNmNGI2Nzk4MjgxOWFmNjJjZjFmNjE0NzYzNGNmNmIxN2FhMzg3ZDY4YTBiNyx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM5ZTg1ZjcyYTZkODQxOTVhNTdiMzM4NWE0ZTY4Yjc5MTUxY2RjMTkxN2ExNjFmOWI4Nzk5ZTY4ZjVlYTgxZDkiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYmRmZTJkMjRmYWMyNGIzNzZlY2Y0MWRhOWZhNjlmZWM4NjMyMWRjMTU1MWI4Y2NjNWNjYjg0YmQwNGUwM2JiNTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9hNmU3YjFlMTE2NzU0MDJjMzA0OTgzZTU3Nzk4YWViMTg5ZDQxNWQ0OTIyMDI2NjZhMThjOGE4ODQzNmE1NmU1Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhZGU3M2U5MGVhNTc4ZThlMTBjM2JhMGU0MDY1YjQ0NjdlMTUzMDk2YmJkYmI3MzZlMWUyNGE4M2E4Yjc0MjI6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTkxMDgyMTNmNjU4MzU1ZjEzMTI4YzJkYjBmMmJkZThhOWNmMjY4YWU2MjY5OTE3NzU2Yjk4ZjZjY2QyMTI1NTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8zMWU2YzI0YTRjMWQxYWQ0YWM3MTQwMTNjNDAwYTFlMGQzZWRhNmRlNjA0OTUwZjU0NmM4YzVkZWNjNTljMTlkOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2M2ZDQ3NThkYjRjMDkxMDRiMDU1NGEzZmYyNWQzN2U0MmU0ZjA3OTVhMDIyZjJhNDJmNzE0MTI5NDM2Y2UxNDM6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvOTQ0NDJkN2Q3NzM1MjgxMzIwNmYxZGMwOTliZGIzYzk5MGYzYmMwZDJlYTY2NjE1NTE0Yzk5MGNlMTA3NjM2NDovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81NzRiNzNlNjZkYWYyYzczNTcyOWQ3NGE2OTU0NjA5M2ZkYzA2ODEzMWFlZGRiNTgwMmJkZDllYzk3ZjQxMDMwOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzNmNTJjYjY1MjVkOGU2OGQ1NzNjMzgxZjZkMTA0ZGQxNjhjYzBiMzNhMTE2OGYxNmIwMGM4NzdjZThiOGI2MTU6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNmI3NjcwNDZlZjA3NzcxNDk4M2E2NzUzYjlmOWZiNDExMmQ0MTBkMzYwZWFiYTU5NzBjMmY3M2IzNDY0YjgyMjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9mY2JlYjk5NTlmNDQyMzFjZmJmM2Y0YjY3OTgyODE5YWY2MmNmMWY2MTQ3NjM0Y2Y2YjE3YWEzODdkNjhhMGI3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeYXp1cmUtdm90ZS1iYWNrLVthLXowLTldKi1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAxMDAxLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL29wdC9iaXRuYW1pL3NjcmlwdHMvcmVkaXMvZW50cnlwb2ludC5zaCIsCiAgICAgICAgICAgICIvb3B0L2JpdG5hbWkvc2NyaXB0cy9yZWRpcy9ydW4uc2giCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L29wdC9iaXRuYW1pL2NvbW1vbi9iaW46L29wdC9iaXRuYW1pL3JlZGlzL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9NRT0vIiwKICAgICAgICAgICAgIk9TX0FSQ0g9YW1kNjQiLAogICAgICAgICAgICAiT1NfRkxBVk9VUj1kZWJpYW4tMTAiLAogICAgICAgICAgICAiT1NfTkFNRT1saW51eCIsCiAgICAgICAgICAgICJCSVROQU1JX0FQUF9OQU1FPXJlZGlzIiwKICAgICAgICAgICAgIkJJVE5BTUlfSU1BR0VfVkVSU0lPTj02LjAuOC1kZWJpYW4tMTAtcjIzIiwKICAgICAgICAgICAgIkhPU1ROQU1FPWF6dXJlLXZvdGUtYmFjayIsCiAgICAgICAgICAgICJBTExPV19FTVBUWV9QQVNTV09SRD15ZXMiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeYXp1cmUtdm90ZS1iYWNrLVthLXowLTldKi1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImF6dXJlLXZvdGUtYmFjayIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL29zcy9iaXRuYW1pL3JlZGlzOjYuMC44IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jNmMwNjJjOTdiYjUzM2Q1NTQ5YTRkOTVjM2RjY2YwYTc1OGU0MjM0OTdiZDczZDQ1MjVmODFiNjk3YTI0MDMwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9iZGZlMmQyNGZhYzI0YjM3NmVjZjQxZGE5ZmE2OWZlYzg2MzIxZGMxNTUxYjhjY2M1Y2NiODRiZDA0ZTAzYmI1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTU1ZDBhZTA3ZjJjMDRlNmM5ZTYwMGM4NzRhMjViOWFhZTEzNDYwMGY2NDliY2JjODEwN2EwYmY0ZDExZjgxMjEiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2E2ZTdiMWUxMTY3NTQwMmMzMDQ5ODNlNTc3OThhZWIxODlkNDE1ZDQ5MjIwMjY2NmExOGM4YTg4NDM2YTU2ZTUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzQ5MDVkZTBiYTA5OTVkMjRlNzJkMTYwNzg1Mjc2ZTUxYzMxYzkzZTJjNjU0ZmQyOGEwMjNmYmU1NzIwZDQ4NyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWFkZTczZTkwZWE1NzhlOGUxMGMzYmEwZTQwNjViNDQ2N2UxNTMwOTZiYmRiYjczNmUxZTI0YTgzYThiNzQyMiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcxMGUwNDRjNGNjZTQ2Mjc5OTgyYTVhOTU3YjliYjE3M2FlZDJiZjRiMGE0YWQ3ZDc2OWZjZDk2ZjkzMmY3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lOTEwODIxM2Y2NTgzNTVmMTMxMjhjMmRiMGYyYmRlOGE5Y2YyNjhhZTYyNjk5MTc3NTZiOThmNmNjZDIxMjU1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwYWI2NTQ1NTE4NDM0NDJjYjhhNzg0YzZlMjc2ODM0MGJiODgyZTA0OGQxNDBjMjI4ZmQ1YjE4YWU4MWRiYzQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzMxZTZjMjRhNGMxZDFhZDRhYzcxNDAxM2M0MDBhMWUwZDNlZGE2ZGU2MDQ5NTBmNTQ2YzhjNWRlY2M1OWMxOWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDVkOGQ2MTg3YjI3NTQxZjg5OGZiZTE4ZTU4NjExNmYwYzI3MzVkOTI0OTA2YTFjNWQwNWFkNzEwNmMzYTVmZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYzZkNDc1OGRiNGMwOTEwNGIwNTU0YTNmZjI1ZDM3ZTQyZTRmMDc5NWEwMjJmMmE0MmY3MTQxMjk0MzZjZTE0MyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zYzE2NWQ2NjY0MTA1MzkyODM4ODE0NzcwZDdlNzQzNGExYjBjMzViMTA2OGUwNTMyOTU4OGQzZWQ0OTQzMGZmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy85NDQ0MmQ3ZDc3MzUyODEzMjA2ZjFkYzA5OWJkYjNjOTkwZjNiYzBkMmVhNjY2MTU1MTRjOTkwY2UxMDc2MzY0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1MTcxNzlkM2U5OTE5ZGZlZDQyYjEyODJjYzM5M2MzOTJjNTZiMGQ4Mjk4MzQ3ODcyYzlhOTk2NDdjNTYwYWYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzU3NGI3M2U2NmRhZjJjNzM1NzI5ZDc0YTY5NTQ2MDkzZmRjMDY4MTMxYWVkZGI1ODAyYmRkOWVjOTdmNDEwMzAiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODNiODUyMDgxYTA1MmYyYTgzMmRkZmMwNGRlYjZkZWVjNGJhNzA4NTQ0MmEzNjBiNTI0Nzk3ZWQxNmEzOThkMyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvM2Y1MmNiNjUyNWQ4ZTY4ZDU3M2MzODFmNmQxMDRkZDE2OGNjMGIzM2ExMTY4ZjE2YjAwYzg3N2NlOGI4YjYxNSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMzk3OGFhYjllNzU2ZDZiNmQ0YjMzZGMzMWQxNWU1NDNmNDJlZGQ2YmZmNTMxYWRhM2Q3ZTM4NDIxYmU0ZTc1IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy82Yjc2NzA0NmVmMDc3NzE0OTgzYTY3NTNiOWY5ZmI0MTEyZDQxMGQzNjBlYWJhNTk3MGMyZjczYjM0NjRiODIyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM5ZTg1ZjcyYTZkODQxOTVhNTdiMzM4NWE0ZTY4Yjc5MTUxY2RjMTkxN2ExNjFmOWI4Nzk5ZTY4ZjVlYTgxZDkiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2ZjYmViOTk1OWY0NDIzMWNmYmYzZjRiNjc5ODI4MTlhZjYyY2YxZjYxNDc2MzRjZjZiMTdhYTM4N2Q2OGEwYjciLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1iZGZlMmQyNGZhYzI0YjM3NmVjZjQxZGE5ZmE2OWZlYzg2MzIxZGMxNTUxYjhjY2M1Y2NiODRiZDA0ZTAzYmI1LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YzZjMDYyYzk3YmI1MzNkNTU0OWE0ZDk1YzNkY2NmMGE3NThlNDIzNDk3YmQ3M2Q0NTI1ZjgxYjY5N2EyNDAzMCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9YTZlN2IxZTExNjc1NDAyYzMwNDk4M2U1Nzc5OGFlYjE4OWQ0MTVkNDkyMjAyNjY2YTE4YzhhODg0MzZhNTZlNSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTU1ZDBhZTA3ZjJjMDRlNmM5ZTYwMGM4NzRhMjViOWFhZTEzNDYwMGY2NDliY2JjODEwN2EwYmY0ZDExZjgxMjEiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTVhZGU3M2U5MGVhNTc4ZThlMTBjM2JhMGU0MDY1YjQ0NjdlMTUzMDk2YmJkYmI3MzZlMWUyNGE4M2E4Yjc0MjIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zNDkwNWRlMGJhMDk5NWQyNGU3MmQxNjA3ODUyNzZlNTFjMzFjOTNlMmM2NTRmZDI4YTAyM2ZiZTU3MjBkNDg3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1lOTEwODIxM2Y2NTgzNTVmMTMxMjhjMmRiMGYyYmRlOGE5Y2YyNjhhZTYyNjk5MTc3NTZiOThmNmNjZDIxMjU1LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MTBlMDQ0YzRjY2U0NjI3OTk4MmE1YTk1N2I5YmIxNzNhZWQyYmY0YjBhNGFkN2Q3NjlmY2Q5NmY5MzJmNyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MzFlNmMyNGE0YzFkMWFkNGFjNzE0MDEzYzQwMGExZTBkM2VkYTZkZTYwNDk1MGY1NDZjOGM1ZGVjYzU5YzE5ZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwYWI2NTQ1NTE4NDM0NDJjYjhhNzg0YzZlMjc2ODM0MGJiODgyZTA0OGQxNDBjMjI4ZmQ1YjE4YWU4MWRiYzQiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWM2ZDQ3NThkYjRjMDkxMDRiMDU1NGEzZmYyNWQzN2U0MmU0ZjA3OTVhMDIyZjJhNDJmNzE0MTI5NDM2Y2UxNDMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWQ4ZDYxODdiMjc1NDFmODk4ZmJlMThlNTg2MTE2ZjBjMjczNWQ5MjQ5MDZhMWM1ZDA1YWQ3MTA2YzNhNWZmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj05NDQ0MmQ3ZDc3MzUyODEzMjA2ZjFkYzA5OWJkYjNjOTkwZjNiYzBkMmVhNjY2MTU1MTRjOTkwY2UxMDc2MzY0LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9M2MxNjVkNjY2NDEwNTM5MjgzODgxNDc3MGQ3ZTc0MzRhMWIwYzM1YjEwNjhlMDUzMjk1ODhkM2VkNDk0MzBmZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NTc0YjczZTY2ZGFmMmM3MzU3MjlkNzRhNjk1NDYwOTNmZGMwNjgxMzFhZWRkYjU4MDJiZGQ5ZWM5N2Y0MTAzMCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1MTcxNzlkM2U5OTE5ZGZlZDQyYjEyODJjYzM5M2MzOTJjNTZiMGQ4Mjk4MzQ3ODcyYzlhOTk2NDdjNTYwYWYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTNmNTJjYjY1MjVkOGU2OGQ1NzNjMzgxZjZkMTA0ZGQxNjhjYzBiMzNhMTE2OGYxNmIwMGM4NzdjZThiOGI2MTUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04M2I4NTIwODFhMDUyZjJhODMyZGRmYzA0ZGViNmRlZWM0YmE3MDg1NDQyYTM2MGI1MjQ3OTdlZDE2YTM5OGQzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj02Yjc2NzA0NmVmMDc3NzE0OTgzYTY3NTNiOWY5ZmI0MTEyZDQxMGQzNjBlYWJhNTk3MGMyZjczYjM0NjRiODIyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YTM5NzhhYWI5ZTc1NmQ2YjZkNGIzM2RjMzFkMTVlNTQzZjQyZWRkNmJmZjUzMWFkYTNkN2UzODQyMWJlNGU3NSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZmNiZWI5OTU5ZjQ0MjMxY2ZiZjNmNGI2Nzk4MjgxOWFmNjJjZjFmNjE0NzYzNGNmNmIxN2FhMzg3ZDY4YTBiNyx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM5ZTg1ZjcyYTZkODQxOTVhNTdiMzM4NWE0ZTY4Yjc5MTUxY2RjMTkxN2ExNjFmOWI4Nzk5ZTY4ZjVlYTgxZDkiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9YmRmZTJkMjRmYWMyNGIzNzZlY2Y0MWRhOWZhNjlmZWM4NjMyMWRjMTU1MWI4Y2NjNWNjYjg0YmQwNGUwM2JiNTphNmU3YjFlMTE2NzU0MDJjMzA0OTgzZTU3Nzk4YWViMTg5ZDQxNWQ0OTIyMDI2NjZhMThjOGE4ODQzNmE1NmU1OjVhZGU3M2U5MGVhNTc4ZThlMTBjM2JhMGU0MDY1YjQ0NjdlMTUzMDk2YmJkYmI3MzZlMWUyNGE4M2E4Yjc0MjI6ZTkxMDgyMTNmNjU4MzU1ZjEzMTI4YzJkYjBmMmJkZThhOWNmMjY4YWU2MjY5OTE3NzU2Yjk4ZjZjY2QyMTI1NTozMWU2YzI0YTRjMWQxYWQ0YWM3MTQwMTNjNDAwYTFlMGQzZWRhNmRlNjA0OTUwZjU0NmM4YzVkZWNjNTljMTlkOmM2ZDQ3NThkYjRjMDkxMDRiMDU1NGEzZmYyNWQzN2U0MmU0ZjA3OTVhMDIyZjJhNDJmNzE0MTI5NDM2Y2UxNDM6OTQ0NDJkN2Q3NzM1MjgxMzIwNmYxZGMwOTliZGIzYzk5MGYzYmMwZDJlYTY2NjE1NTE0Yzk5MGNlMTA3NjM2NDo1NzRiNzNlNjZkYWYyYzczNTcyOWQ3NGE2OTU0NjA5M2ZkYzA2ODEzMWFlZGRiNTgwMmJkZDllYzk3ZjQxMDMwOjNmNTJjYjY1MjVkOGU2OGQ1NzNjMzgxZjZkMTA0ZGQxNjhjYzBiMzNhMTE2OGYxNmIwMGM4NzdjZThiOGI2MTU6NmI3NjcwNDZlZjA3NzcxNDk4M2E2NzUzYjlmOWZiNDExMmQ0MTBkMzYwZWFiYTU5NzBjMmY3M2IzNDY0YjgyMjpmY2JlYjk5NTlmNDQyMzFjZmJmM2Y0YjY3OTgyODE5YWY2MmNmMWY2MTQ3NjM0Y2Y2YjE3YWEzODdkNjhhMGI3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= spec: nodeSelector: kubernetes.io/os: linux diff --git a/src/agent/samples/policy/yaml/deployment/deployment-azure-vote-front.yaml b/src/agent/samples/policy/yaml/deployment/deployment-azure-vote-front.yaml index ea1475704f7f..796258eb7923 100644 --- a/src/agent/samples/policy/yaml/deployment/deployment-azure-vote-front.yaml +++ b/src/agent/samples/policy/yaml/deployment/deployment-azure-vote-front.yaml @@ -13,7 +13,7 @@ spec: labels: app: azure-vote-front annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeYXp1cmUtdm90ZS1mcm9udC1bYS16MC05XSotW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi9lbnRyeXBvaW50LnNoIiwKICAgICAgICAgICAgIi9zdGFydC5zaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiTEFORz1DLlVURi04IiwKICAgICAgICAgICAgIkdQR19LRVk9MEQ5NkRGNEQ0MTEwRTVDNDNGQkZCMTdGMkQzNDdFQTZBQTY1NDIxRCIsCiAgICAgICAgICAgICJQWVRIT05fVkVSU0lPTj0zLjYuMyIsCiAgICAgICAgICAgICJQWVRIT05fUElQX1ZFUlNJT049OS4wLjEiLAogICAgICAgICAgICAiTkdJTlhfVkVSU0lPTj0xLjEzLjctMX5zdHJldGNoIiwKICAgICAgICAgICAgIk5KU19WRVJTSU9OPTEuMTMuNy4wLjEuMTUtMX5zdHJldGNoIiwKICAgICAgICAgICAgIlVXU0dJX0lOST0vYXBwL3V3c2dpLmluaSIsCiAgICAgICAgICAgICJOR0lOWF9NQVhfVVBMT0FEPTAiLAogICAgICAgICAgICAiTElTVEVOX1BPUlQ9ODAiLAogICAgICAgICAgICAiU1RBVElDX1VSTD0vc3RhdGljIiwKICAgICAgICAgICAgIlNUQVRJQ19QQVRIPS9hcHAvc3RhdGljIiwKICAgICAgICAgICAgIlNUQVRJQ19JTkRFWD0wIiwKICAgICAgICAgICAgIlBZVEhPTlBBVEg9L2FwcCIsCiAgICAgICAgICAgICJIT1NUTkFNRT1henVyZS12b3RlLWZyb250IiwKICAgICAgICAgICAgIlJFRElTPWF6dXJlLXZvdGUtYmFjayIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi9hcHAiLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5henVyZS12b3RlLWZyb250LVthLXowLTldKi1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImF6dXJlLXZvdGUtZnJvbnQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9henVyZWRvY3MvYXp1cmUtdm90ZS1mcm9udDp2MSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OTRkMTBmNzhlYWRmN2RmMTVjYjI2Zjk3N2Y4ODFiZGZiMWYyOGQ1M2VjZDYzZGVkODA4NWRmMGI5MzU5MDExNyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvOWZlYmUyNTEwYjZjODU3N2ZiOTMyYTVmZjBiMmJhMmVjZTYwM2E0MTdhNjZiODc2ZTQ5MDZhZmY1N2FjNjAzNSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zNjliNGFjMDMxYWRkNGIyMTQ4ODkyNzhkNWVmNTMzZWU3OTY4MjA3ZGFmYTkzNGJiYjA3NTkzNDFhOGUxNjgyIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9jY2EyNzY3NDM4NzgxYzYyNTUwMmU2MmE2OTJiMDAxMGM1NTg3ZjE5MDE5NWY2NzM2OWY2ZTgyNDg5ODBiZmMyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTI3YTkzNjU0MDM3ZmFiYTdkZDA3YzhmMmUwNWZlYjc3ZWI4MzhhNzM4MDVmODE4OWUwY2NhNTc1OWNiNjliYjkiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJhZDU0Y2U1ZDdkZTVmZTliYmU0NTFiN2JlZjY0M2E2ZDg1MTJlYzQzZWFiZDI4N2YxNjY0MWU1YmIwNmJhYTIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MTU3OWI4YmZjYmRhZjlhZTAzMzhlNmRjMDk5OWMxZDJlNTRlNWVlN2I1ZjJhMzNkZTU4ZmU0ZWZiMzdkODFmNiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvN2ViOWFiOGI2YTNlOWI1MWZkZmQ3ZWMwNTYyYzc0YTMxODNmZTI2NGJjZDEwMDQxODJlZmQ3YmZlYjM1NWE1ZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lM2IwMzhlYzkyNTk0OGRkMGRlZjllZTkyODQ1YWIzODcyZDczNzYwYWEyNjQ1OTVlNGRiZjM4MDMyMWZlMjY5IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81MTFlZGE5NDVlNzRlYjFmMzFhNmE4NmRjOGMxYjMzNDRkOWZjMmIzMDM1ZmUxNTQyNjFkOTE2N2NjZGYzNmE0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ3MjJmYWFmNjk0ZmFiNGE5MzNlZmYxMGZmMzUxZDJiOGNhMDA3MzlkMTBiNjg5ODFmN2FmNmMxZDZmYTZkYWMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2FhMjI0NjhhZDhhM2E3ZmY5NTdiYzhkYTkyOTA4YmIwYmIwNDk1YzVhNDE3Y2RhMjFhYjcwOGEwNzdlYWJlYWYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OGE5YjIwYjlhNTAxMTZhM2JiOTUyYWFiYjM2Y2Q3OWZkZDU2MGU2ZTQ1MDFlMTE3NGRiYjQwMGMxZjg1NWE2OSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZjAzY2UyNDE5MmQxOTBhYmRkYjVmYjgxNWQwNGNiMGU1MzRjNjczOWE0OGVkN2E5YjUxYjllMDFlZWIzOTFkYiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1mOTk3NzQxMWNlYjcyMDMyMTAyNTNjOTljNGMyYTFmNGFhYzNiZTJmYTQzYWQ0ZDQ3MzVhNWZiYmI0NTFiMGQzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kOWIyZDliNGU1ZmM3ZjI0N2FiMDc1NWViMWMxMTI4YzhjYzBjNThkMGI0Mjk4YmI3NWM2ODY1MWNlYjAxNjFjIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWMzOTY1NjdhNTBjYWI0MGNiMTlkNDYxN2Q5NzNjY2JkNWEwZjI5OGYxOTJlYjExYzUzZTQ0MjkxYjQxZmNmOGYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzFlNTk0NmYxMWI5ZmNhMjI3ODgzOWY3YzA1NzM2MmU1MjYwYWQyMjY2ZjQ0NzRkYWZhOWQzZTJhMGU2ZWM5NDUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MWMxYzNlNmI2NWRlMmEwNjZhYmQ1MDhhNjBkYmNhYzdiMGQ0Mjc0Y2VmZTMyZDZmNzZjMjE3MzdmNzFkODdiNyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNDJhOWMxZmI3OGRiMWZlZjViYzRmYzYyODBlZWJkYjNlODMxMDkzZGQ3MWI4ZDVjODA5YjZlM2EzZmZlMTU1YiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNGU1YjgwMzcwNGZjMjJiZjU3NGFiMzA4Yzc4MjU0Mjg3M2E2YmM1NjZjNWY3MGQ2NDQxMTY2OWMyMTZiZWM3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8xZmM1NmE2MWVmNTJiMGI5NmE3NTZlMDU3OGUyNDFiYWY2MTU5Mzc2NTc2ZmM0MWQ4ZWQ4OWI3NGE3MWQyOTdmIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTI4MTAyNzY1NmViYzM0OTBjMjA1NzhkNDg3Yjk1YmM2ZTU3ZTRkYTBlZTdlOWQ3ZjhkYTA3MzY4ZTFkYzlkOGYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzEzZGEyMzA3ZWJkMzE4YmEyMGRmYWU3ZjMzMGM1NTMxYzM5MjU4MzQzZjgzNTc4NzEyMjdhNTI2MjkwZTdhMzgiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YmNjZjFhMzA0NjQ1ZWQ5NWEyZTZmZTU1OGQyY2M5OTkyNDYyOWY4Mjk2MmQ0NTQyMzMwYjBlMmFhNDBiZTU2NiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZDllODIxMmE2NWEyMDNlZDE2NGYxODNmZGUwOGFhNzFhMGM1NzdjMDQ1ZWM2ZGE1YjkyZWYyYmIxYWJkNGRlYSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yMDYzZmNlMDg1OTgxZWMxNzY2MDY1ZTg4NzhhZDM5NzI0OWMxYTA1NTM1YmVjMmM0MDAzYTUwYzRmZDk4MjBkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8wYjgxNTQyM2VjYzNkYTIxNWM4YzZkMDNjMmZiN2ExODAyODIxNDIzNmVjMmU2YjA0NDA2YjBkMTcwOWMzNGE2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTc4ZTk3MjBlOWYyM2JkM2UwNzQ5YTE1ODIyZDFiNjg2MTM1NDk4ZjM1MWNlN2UzMjYxZDJmZWRjYWM2NmE5MTYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI4ZjBkNmY1NTZmYjgyZDgyMTNkNjZjNWVjMDliODgyNDE0YzVjZjFkNTEyN2YxMWNiMjU3NTkwMDA5ZGU3YzMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZGVhYTZjOTdmYjVhYzcxNzk2ZTVkZDc4ODdlZWYxOTNjNjQ2NGEwZDk5N2Q2M2ZlNjAwZWI5OTNmMzZjMTg5NyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZmJhMjJhN2Q3MzVjNWZmY2ZhYTkxMTNhODRiNDI0ZmVhMzE1ZmI0ODFmYjhlZTJjY2QyNWMwY2UxOTNlODYwMCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jNTUxMWU5OTdjZDhkYzM5OWUxMDIzMzI4OGM1YjgzNGM3MjM3NWZmNjViNjQxMWU4ZTE1ZjQxOGVlODBmMTE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kNzU4MTdiMDhlZjk3YjJlNmM5M2ZlZmRlMzA0OWM4NzFjMzdmN2YzYWQwOGM2NWFiOThjMDg0ZDFlZjNjYmIxIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg2OTNlYWVmN2Y0NjhlZGJmNmU2NWY1OGQ5ZmM4ZGE4MjA5NWI4YTVhODg3ZjFlNTA0NDVkNDYzMTNlZjg0YTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2ZhN2I3MTc1ZTA3Yjc4NmI4NmIxNGUyZDUxN2E2NGNiNjdjZWUxMGY3NmYzNDc3YTkxZDU4ZGY4ZTE5NTNmZmIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjllY2UxOTBhZGYyNWNhNmE5YzQ4ZDg0MDcxOGM3OTE0MGNmNmNjY2ExYzNlYzgyMjFhOTM5ZjAxOGE2ODc5MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZmZjYTZiNTc2YThjNzNmZWI3OTM4NzgyZmRmODhkYTQ2MGQzZDJmYjkxYmEyNDMxMDJjZDMyYzBhMTYyZjg0OCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xOTlmZmY1YmIwNjkyYjU4ZmE5MzJjMjUwNzRlNzhkMTMwYWQxOThhOTAwZjZmMmMyZjcyODA5NWU2NTM0M2E1IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy82NWU0NDQ2MzZjM2I1MTgwMzUwNjdiZWVhZTFjNWYyYWFkNzIzNmQwMzZlOTA3MWQyMDMyMzEwOGFlNWJjOTM2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQyZmZlNjViY2I3ZWJiMzBhNGYxNjc3YTA4MmJmODUwZTNhMzVjZDdhZjE3ZDA5NzliNTFlNzFkYzFkYjYyZDQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2U1NWQ0NzIwZmYwY2E1MDk1ZGQyMjJlNTk0Njg0YWFiNmVmMjJjOWQ0MTc1MmZmMTE0YzEzYzNkMjljYzVmMmEiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjhkOWJkYWE3ZDIxYTYwM2Q1Zjc0Y2EwODUwNjQ5MmM0YTgwMjVlYTBlZTE5YWQ3ZDcyM2RmNmEyZDQ0MTEwYSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMGMyODM4ODBlMzhiZmM0N2ZiNDk2OGQ3N2ViNTRmMWEwZjE4YmJiYjM3MWZlZDczNWRlOGEzZGRiNmQzOTBmMSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD00MTgxZDAwODhkOGQzY2QwN2ZhZTQzZjY2NjRiNGNiNDMyYzM1YjgzMjcxMDM4Y2U5YThkNDQ5ZTc3NTM4ODhiIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8zYWUwOTUyMTc5OGExMTFjYjQ5NDFlZDkyM2RhYjY5MmVmMDNiM2IyY2I2YmY4NzYwZGJjMjhjNDdkYTliMDY1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWYzMTNmOTZkYzc1YmU0MWRkYzc3YzVlODEwYWNkNzI1MTc1NmRhOWMyYWNiZTNlMjIzMzllZjU0MzA1ODY4ODYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2IzNGYxNGJhNDI1YzMyNzc1ZWVkNDA5N2RmYjU2YTdiYTdkZDc0NjI3MDQ0YzZmNmUwNmNjNjk1NzdjZTAyYjMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NDcwZWQwMzI2NDE3ZmI4NDE0NmI3NjJhZWFkYjkwZDE0NDc0MDdkMzRhNzYzNjRlNGE1NTU1Yjg1ZTYzMjU2ZSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvY2M4MWZlMzhhODgxYzM2ODE5NDZlOTBmYzI2NGM0MmE0ZWQ0MjUyY2ZjZDNjZmM4N2ExMTc4YTJlZTg1ZTAyZSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yMmJhZmFjYzE0ODY1MzJmNTRmNTZjZWJjNThjYTA5MDY4NWU1ZDZlMDc3ZjFjNDU0M2I2ZmE4ZmUwY2UzOGY3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lYjVmM2M5NTEwYTFiMDQ5MTMyNzY1OGZmYzAzYmNjMjMzZjU4MTRkNjAyNTNmZmNiN2EzOWEyMzIxZDA0MzlhIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM5MTEwNmNjZGY2NjllNWIzNzQ4YjNjNzNhZDliMGI3ZWI5ZDJhM2RmNDAzNTUxNzAyYzAwMzAwMGMwOGY0MDYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzRjYjc5NmRmYmE0MmE5YjVlNTQ1YWI5OTQ1MDY1NTVmN2ViYWVhMjRkN2IxNTEwZGVlZGQ5ODAyNzhlZjEyZDYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODlhZTQ1NzdlNWRlNzJmODdkMmE1NzM5YzlmMGM2ZTg5NzFmMmIwZDQ5M2VjMTBlOTE1YTc2MjdmZGJmYzM0NiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZmQ0YmQyNDc4MjA2ZjU3Yzc0ZDkwNTQ1OTQyZDk5OWE3YmU0ODVjOTdmZDE4ZjQyZDgzZTg0MGRiMThjYTM2ZSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jMmM2YjRjNWQ4MDhhYTA3ODUyOGI4MTMzOGNlNTc2YWU4OGJlNDgwMmQ5MzAyMDNjNmUyMjJlYzg2MTIxYzE1IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8zM2JlNGJkOGU1ZGU0M2ZjNTliZTA4MzUwMTYwYjY0ZWNjM2FkNmM2NzhlZTIxMDdkNmFiOGJhOTE0NmQ1ZmI1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvOWZlYmUyNTEwYjZjODU3N2ZiOTMyYTVmZjBiMmJhMmVjZTYwM2E0MTdhNjZiODc2ZTQ5MDZhZmY1N2FjNjAzNSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTk0ZDEwZjc4ZWFkZjdkZjE1Y2IyNmY5NzdmODgxYmRmYjFmMjhkNTNlY2Q2M2RlZDgwODVkZjBiOTM1OTAxMTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2NjYTI3Njc0Mzg3ODFjNjI1NTAyZTYyYTY5MmIwMDEwYzU1ODdmMTkwMTk1ZjY3MzY5ZjZlODI0ODk4MGJmYzIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zNjliNGFjMDMxYWRkNGIyMTQ4ODkyNzhkNWVmNTMzZWU3OTY4MjA3ZGFmYTkzNGJiYjA3NTkzNDFhOGUxNjgyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8yYWQ1NGNlNWQ3ZGU1ZmU5YmJlNDUxYjdiZWY2NDNhNmQ4NTEyZWM0M2VhYmQyODdmMTY2NDFlNWJiMDZiYWEyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MjdhOTM2NTQwMzdmYWJhN2RkMDdjOGYyZTA1ZmViNzdlYjgzOGE3MzgwNWY4MTg5ZTBjY2E1NzU5Y2I2OWJiOSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvN2ViOWFiOGI2YTNlOWI1MWZkZmQ3ZWMwNTYyYzc0YTMxODNmZTI2NGJjZDEwMDQxODJlZmQ3YmZlYjM1NWE1ZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTE1NzliOGJmY2JkYWY5YWUwMzM4ZTZkYzA5OTljMWQyZTU0ZTVlZTdiNWYyYTMzZGU1OGZlNGVmYjM3ZDgxZjYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzUxMWVkYTk0NWU3NGViMWYzMWE2YTg2ZGM4YzFiMzM0NGQ5ZmMyYjMwMzVmZTE1NDI2MWQ5MTY3Y2NkZjM2YTQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lM2IwMzhlYzkyNTk0OGRkMGRlZjllZTkyODQ1YWIzODcyZDczNzYwYWEyNjQ1OTVlNGRiZjM4MDMyMWZlMjY5IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9hYTIyNDY4YWQ4YTNhN2ZmOTU3YmM4ZGE5MjkwOGJiMGJiMDQ5NWM1YTQxN2NkYTIxYWI3MDhhMDc3ZWFiZWFmLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDcyMmZhYWY2OTRmYWI0YTkzM2VmZjEwZmYzNTFkMmI4Y2EwMDczOWQxMGI2ODk4MWY3YWY2YzFkNmZhNmRhYyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZjAzY2UyNDE5MmQxOTBhYmRkYjVmYjgxNWQwNGNiMGU1MzRjNjczOWE0OGVkN2E5YjUxYjllMDFlZWIzOTFkYix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPThhOWIyMGI5YTUwMTE2YTNiYjk1MmFhYmIzNmNkNzlmZGQ1NjBlNmU0NTAxZTExNzRkYmI0MDBjMWY4NTVhNjkiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2Q5YjJkOWI0ZTVmYzdmMjQ3YWIwNzU1ZWIxYzExMjhjOGNjMGM1OGQwYjQyOThiYjc1YzY4NjUxY2ViMDE2MWMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1mOTk3NzQxMWNlYjcyMDMyMTAyNTNjOTljNGMyYTFmNGFhYzNiZTJmYTQzYWQ0ZDQ3MzVhNWZiYmI0NTFiMGQzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8xZTU5NDZmMTFiOWZjYTIyNzg4MzlmN2MwNTczNjJlNTI2MGFkMjI2NmY0NDc0ZGFmYTlkM2UyYTBlNmVjOTQ1LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YzM5NjU2N2E1MGNhYjQwY2IxOWQ0NjE3ZDk3M2NjYmQ1YTBmMjk4ZjE5MmViMTFjNTNlNDQyOTFiNDFmY2Y4ZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNDJhOWMxZmI3OGRiMWZlZjViYzRmYzYyODBlZWJkYjNlODMxMDkzZGQ3MWI4ZDVjODA5YjZlM2EzZmZlMTU1Yix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTFjMWMzZTZiNjVkZTJhMDY2YWJkNTA4YTYwZGJjYWM3YjBkNDI3NGNlZmUzMmQ2Zjc2YzIxNzM3ZjcxZDg3YjciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzFmYzU2YTYxZWY1MmIwYjk2YTc1NmUwNTc4ZTI0MWJhZjYxNTkzNzY1NzZmYzQxZDhlZDg5Yjc0YTcxZDI5N2YsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNGU1YjgwMzcwNGZjMjJiZjU3NGFiMzA4Yzc4MjU0Mjg3M2E2YmM1NjZjNWY3MGQ2NDQxMTY2OWMyMTZiZWM3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8xM2RhMjMwN2ViZDMxOGJhMjBkZmFlN2YzMzBjNTUzMWMzOTI1ODM0M2Y4MzU3ODcxMjI3YTUyNjI5MGU3YTM4LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MjgxMDI3NjU2ZWJjMzQ5MGMyMDU3OGQ0ODdiOTViYzZlNTdlNGRhMGVlN2U5ZDdmOGRhMDczNjhlMWRjOWQ4ZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZDllODIxMmE2NWEyMDNlZDE2NGYxODNmZGUwOGFhNzFhMGM1NzdjMDQ1ZWM2ZGE1YjkyZWYyYmIxYWJkNGRlYSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWJjY2YxYTMwNDY0NWVkOTVhMmU2ZmU1NThkMmNjOTk5MjQ2MjlmODI5NjJkNDU0MjMzMGIwZTJhYTQwYmU1NjYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzBiODE1NDIzZWNjM2RhMjE1YzhjNmQwM2MyZmI3YTE4MDI4MjE0MjM2ZWMyZTZiMDQ0MDZiMGQxNzA5YzM0YTYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yMDYzZmNlMDg1OTgxZWMxNzY2MDY1ZTg4NzhhZDM5NzI0OWMxYTA1NTM1YmVjMmM0MDAzYTUwYzRmZDk4MjBkIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8yOGYwZDZmNTU2ZmI4MmQ4MjEzZDY2YzVlYzA5Yjg4MjQxNGM1Y2YxZDUxMjdmMTFjYjI1NzU5MDAwOWRlN2MzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NzhlOTcyMGU5ZjIzYmQzZTA3NDlhMTU4MjJkMWI2ODYxMzU0OThmMzUxY2U3ZTMyNjFkMmZlZGNhYzY2YTkxNiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZmJhMjJhN2Q3MzVjNWZmY2ZhYTkxMTNhODRiNDI0ZmVhMzE1ZmI0ODFmYjhlZTJjY2QyNWMwY2UxOTNlODYwMCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRlYWE2Yzk3ZmI1YWM3MTc5NmU1ZGQ3ODg3ZWVmMTkzYzY0NjRhMGQ5OTdkNjNmZTYwMGViOTkzZjM2YzE4OTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2Q3NTgxN2IwOGVmOTdiMmU2YzkzZmVmZGUzMDQ5Yzg3MWMzN2Y3ZjNhZDA4YzY1YWI5OGMwODRkMWVmM2NiYjEsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jNTUxMWU5OTdjZDhkYzM5OWUxMDIzMzI4OGM1YjgzNGM3MjM3NWZmNjViNjQxMWU4ZTE1ZjQxOGVlODBmMTE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9mYTdiNzE3NWUwN2I3ODZiODZiMTRlMmQ1MTdhNjRjYjY3Y2VlMTBmNzZmMzQ3N2E5MWQ1OGRmOGUxOTUzZmZiLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODY5M2VhZWY3ZjQ2OGVkYmY2ZTY1ZjU4ZDlmYzhkYTgyMDk1YjhhNWE4ODdmMWU1MDQ0NWQ0NjMxM2VmODRhOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZmZjYTZiNTc2YThjNzNmZWI3OTM4NzgyZmRmODhkYTQ2MGQzZDJmYjkxYmEyNDMxMDJjZDMyYzBhMTYyZjg0OCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY5ZWNlMTkwYWRmMjVjYTZhOWM0OGQ4NDA3MThjNzkxNDBjZjZjY2NhMWMzZWM4MjIxYTkzOWYwMThhNjg3OTAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzY1ZTQ0NDYzNmMzYjUxODAzNTA2N2JlZWFlMWM1ZjJhYWQ3MjM2ZDAzNmU5MDcxZDIwMzIzMTA4YWU1YmM5MzYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xOTlmZmY1YmIwNjkyYjU4ZmE5MzJjMjUwNzRlNzhkMTMwYWQxOThhOTAwZjZmMmMyZjcyODA5NWU2NTM0M2E1IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9lNTVkNDcyMGZmMGNhNTA5NWRkMjIyZTU5NDY4NGFhYjZlZjIyYzlkNDE3NTJmZjExNGMxM2MzZDI5Y2M1ZjJhLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDJmZmU2NWJjYjdlYmIzMGE0ZjE2NzdhMDgyYmY4NTBlM2EzNWNkN2FmMTdkMDk3OWI1MWU3MWRjMWRiNjJkNCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMGMyODM4ODBlMzhiZmM0N2ZiNDk2OGQ3N2ViNTRmMWEwZjE4YmJiYjM3MWZlZDczNWRlOGEzZGRiNmQzOTBmMSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY4ZDliZGFhN2QyMWE2MDNkNWY3NGNhMDg1MDY0OTJjNGE4MDI1ZWEwZWUxOWFkN2Q3MjNkZjZhMmQ0NDExMGEiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzNhZTA5NTIxNzk4YTExMWNiNDk0MWVkOTIzZGFiNjkyZWYwM2IzYjJjYjZiZjg3NjBkYmMyOGM0N2RhOWIwNjUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD00MTgxZDAwODhkOGQzY2QwN2ZhZTQzZjY2NjRiNGNiNDMyYzM1YjgzMjcxMDM4Y2U5YThkNDQ5ZTc3NTM4ODhiIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9iMzRmMTRiYTQyNWMzMjc3NWVlZDQwOTdkZmI1NmE3YmE3ZGQ3NDYyNzA0NGM2ZjZlMDZjYzY5NTc3Y2UwMmIzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZjMxM2Y5NmRjNzViZTQxZGRjNzdjNWU4MTBhY2Q3MjUxNzU2ZGE5YzJhY2JlM2UyMjMzOWVmNTQzMDU4Njg4NiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvY2M4MWZlMzhhODgxYzM2ODE5NDZlOTBmYzI2NGM0MmE0ZWQ0MjUyY2ZjZDNjZmM4N2ExMTc4YTJlZTg1ZTAyZSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTQ3MGVkMDMyNjQxN2ZiODQxNDZiNzYyYWVhZGI5MGQxNDQ3NDA3ZDM0YTc2MzY0ZTRhNTU1NWI4NWU2MzI1NmUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2ViNWYzYzk1MTBhMWIwNDkxMzI3NjU4ZmZjMDNiY2MyMzNmNTgxNGQ2MDI1M2ZmY2I3YTM5YTIzMjFkMDQzOWEsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yMmJhZmFjYzE0ODY1MzJmNTRmNTZjZWJjNThjYTA5MDY4NWU1ZDZlMDc3ZjFjNDU0M2I2ZmE4ZmUwY2UzOGY3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy80Y2I3OTZkZmJhNDJhOWI1ZTU0NWFiOTk0NTA2NTU1ZjdlYmFlYTI0ZDdiMTUxMGRlZWRkOTgwMjc4ZWYxMmQ2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzkxMTA2Y2NkZjY2OWU1YjM3NDhiM2M3M2FkOWIwYjdlYjlkMmEzZGY0MDM1NTE3MDJjMDAzMDAwYzA4ZjQwNiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZmQ0YmQyNDc4MjA2ZjU3Yzc0ZDkwNTQ1OTQyZDk5OWE3YmU0ODVjOTdmZDE4ZjQyZDgzZTg0MGRiMThjYTM2ZSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg5YWU0NTc3ZTVkZTcyZjg3ZDJhNTczOWM5ZjBjNmU4OTcxZjJiMGQ0OTNlYzEwZTkxNWE3NjI3ZmRiZmMzNDYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzMzYmU0YmQ4ZTVkZTQzZmM1OWJlMDgzNTAxNjBiNjRlY2MzYWQ2YzY3OGVlMjEwN2Q2YWI4YmE5MTQ2ZDVmYjUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jMmM2YjRjNWQ4MDhhYTA3ODUyOGI4MTMzOGNlNTc2YWU4OGJlNDgwMmQ5MzAyMDNjNmUyMjJlYzg2MTIxYzE1IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzlmZWJlMjUxMGI2Yzg1NzdmYjkzMmE1ZmYwYjJiYTJlY2U2MDNhNDE3YTY2Yjg3NmU0OTA2YWZmNTdhYzYwMzU6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvY2NhMjc2NzQzODc4MWM2MjU1MDJlNjJhNjkyYjAwMTBjNTU4N2YxOTAxOTVmNjczNjlmNmU4MjQ4OTgwYmZjMjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yYWQ1NGNlNWQ3ZGU1ZmU5YmJlNDUxYjdiZWY2NDNhNmQ4NTEyZWM0M2VhYmQyODdmMTY2NDFlNWJiMDZiYWEyOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzdlYjlhYjhiNmEzZTliNTFmZGZkN2VjMDU2MmM3NGEzMTgzZmUyNjRiY2QxMDA0MTgyZWZkN2JmZWIzNTVhNWQ6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNTExZWRhOTQ1ZTc0ZWIxZjMxYTZhODZkYzhjMWIzMzQ0ZDlmYzJiMzAzNWZlMTU0MjYxZDkxNjdjY2RmMzZhNDovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9hYTIyNDY4YWQ4YTNhN2ZmOTU3YmM4ZGE5MjkwOGJiMGJiMDQ5NWM1YTQxN2NkYTIxYWI3MDhhMDc3ZWFiZWFmOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2YwM2NlMjQxOTJkMTkwYWJkZGI1ZmI4MTVkMDRjYjBlNTM0YzY3MzlhNDhlZDdhOWI1MWI5ZTAxZWViMzkxZGI6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZDliMmQ5YjRlNWZjN2YyNDdhYjA3NTVlYjFjMTEyOGM4Y2MwYzU4ZDBiNDI5OGJiNzVjNjg2NTFjZWIwMTYxYzovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8xZTU5NDZmMTFiOWZjYTIyNzg4MzlmN2MwNTczNjJlNTI2MGFkMjI2NmY0NDc0ZGFmYTlkM2UyYTBlNmVjOTQ1Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzQyYTljMWZiNzhkYjFmZWY1YmM0ZmM2MjgwZWViZGIzZTgzMTA5M2RkNzFiOGQ1YzgwOWI2ZTNhM2ZmZTE1NWI6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMWZjNTZhNjFlZjUyYjBiOTZhNzU2ZTA1NzhlMjQxYmFmNjE1OTM3NjU3NmZjNDFkOGVkODliNzRhNzFkMjk3ZjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8xM2RhMjMwN2ViZDMxOGJhMjBkZmFlN2YzMzBjNTUzMWMzOTI1ODM0M2Y4MzU3ODcxMjI3YTUyNjI5MGU3YTM4Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2Q5ZTgyMTJhNjVhMjAzZWQxNjRmMTgzZmRlMDhhYTcxYTBjNTc3YzA0NWVjNmRhNWI5MmVmMmJiMWFiZDRkZWE6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMGI4MTU0MjNlY2MzZGEyMTVjOGM2ZDAzYzJmYjdhMTgwMjgyMTQyMzZlYzJlNmIwNDQwNmIwZDE3MDljMzRhNjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yOGYwZDZmNTU2ZmI4MmQ4MjEzZDY2YzVlYzA5Yjg4MjQxNGM1Y2YxZDUxMjdmMTFjYjI1NzU5MDAwOWRlN2MzOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2ZiYTIyYTdkNzM1YzVmZmNmYWE5MTEzYTg0YjQyNGZlYTMxNWZiNDgxZmI4ZWUyY2NkMjVjMGNlMTkzZTg2MDA6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZDc1ODE3YjA4ZWY5N2IyZTZjOTNmZWZkZTMwNDljODcxYzM3ZjdmM2FkMDhjNjVhYjk4YzA4NGQxZWYzY2JiMTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9mYTdiNzE3NWUwN2I3ODZiODZiMTRlMmQ1MTdhNjRjYjY3Y2VlMTBmNzZmMzQ3N2E5MWQ1OGRmOGUxOTUzZmZiOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2ZmY2E2YjU3NmE4YzczZmViNzkzODc4MmZkZjg4ZGE0NjBkM2QyZmI5MWJhMjQzMTAyY2QzMmMwYTE2MmY4NDg6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNjVlNDQ0NjM2YzNiNTE4MDM1MDY3YmVlYWUxYzVmMmFhZDcyMzZkMDM2ZTkwNzFkMjAzMjMxMDhhZTViYzkzNjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lNTVkNDcyMGZmMGNhNTA5NWRkMjIyZTU5NDY4NGFhYjZlZjIyYzlkNDE3NTJmZjExNGMxM2MzZDI5Y2M1ZjJhOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzBjMjgzODgwZTM4YmZjNDdmYjQ5NjhkNzdlYjU0ZjFhMGYxOGJiYmIzNzFmZWQ3MzVkZThhM2RkYjZkMzkwZjE6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvM2FlMDk1MjE3OThhMTExY2I0OTQxZWQ5MjNkYWI2OTJlZjAzYjNiMmNiNmJmODc2MGRiYzI4YzQ3ZGE5YjA2NTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9iMzRmMTRiYTQyNWMzMjc3NWVlZDQwOTdkZmI1NmE3YmE3ZGQ3NDYyNzA0NGM2ZjZlMDZjYzY5NTc3Y2UwMmIzOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2NjODFmZTM4YTg4MWMzNjgxOTQ2ZTkwZmMyNjRjNDJhNGVkNDI1MmNmY2QzY2ZjODdhMTE3OGEyZWU4NWUwMmU6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZWI1ZjNjOTUxMGExYjA0OTEzMjc2NThmZmMwM2JjYzIzM2Y1ODE0ZDYwMjUzZmZjYjdhMzlhMjMyMWQwNDM5YTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy80Y2I3OTZkZmJhNDJhOWI1ZTU0NWFiOTk0NTA2NTU1ZjdlYmFlYTI0ZDdiMTUxMGRlZWRkOTgwMjc4ZWYxMmQ2Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2ZkNGJkMjQ3ODIwNmY1N2M3NGQ5MDU0NTk0MmQ5OTlhN2JlNDg1Yzk3ZmQxOGY0MmQ4M2U4NDBkYjE4Y2EzNmU6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMzNiZTRiZDhlNWRlNDNmYzU5YmUwODM1MDE2MGI2NGVjYzNhZDZjNjc4ZWUyMTA3ZDZhYjhiYTkxNDZkNWZiNSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeYXp1cmUtdm90ZS1mcm9udC1bYS16MC05XSotW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi9lbnRyeXBvaW50LnNoIiwKICAgICAgICAgICAgIi9zdGFydC5zaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiTEFORz1DLlVURi04IiwKICAgICAgICAgICAgIkdQR19LRVk9MEQ5NkRGNEQ0MTEwRTVDNDNGQkZCMTdGMkQzNDdFQTZBQTY1NDIxRCIsCiAgICAgICAgICAgICJQWVRIT05fVkVSU0lPTj0zLjYuMyIsCiAgICAgICAgICAgICJQWVRIT05fUElQX1ZFUlNJT049OS4wLjEiLAogICAgICAgICAgICAiTkdJTlhfVkVSU0lPTj0xLjEzLjctMX5zdHJldGNoIiwKICAgICAgICAgICAgIk5KU19WRVJTSU9OPTEuMTMuNy4wLjEuMTUtMX5zdHJldGNoIiwKICAgICAgICAgICAgIlVXU0dJX0lOST0vYXBwL3V3c2dpLmluaSIsCiAgICAgICAgICAgICJOR0lOWF9NQVhfVVBMT0FEPTAiLAogICAgICAgICAgICAiTElTVEVOX1BPUlQ9ODAiLAogICAgICAgICAgICAiU1RBVElDX1VSTD0vc3RhdGljIiwKICAgICAgICAgICAgIlNUQVRJQ19QQVRIPS9hcHAvc3RhdGljIiwKICAgICAgICAgICAgIlNUQVRJQ19JTkRFWD0wIiwKICAgICAgICAgICAgIlBZVEhPTlBBVEg9L2FwcCIsCiAgICAgICAgICAgICJIT1NUTkFNRT1henVyZS12b3RlLWZyb250IiwKICAgICAgICAgICAgIlJFRElTPWF6dXJlLXZvdGUtYmFjayIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi9hcHAiLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5henVyZS12b3RlLWZyb250LVthLXowLTldKi1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImF6dXJlLXZvdGUtZnJvbnQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9henVyZWRvY3MvYXp1cmUtdm90ZS1mcm9udDp2MSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OTRkMTBmNzhlYWRmN2RmMTVjYjI2Zjk3N2Y4ODFiZGZiMWYyOGQ1M2VjZDYzZGVkODA4NWRmMGI5MzU5MDExNyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvOWZlYmUyNTEwYjZjODU3N2ZiOTMyYTVmZjBiMmJhMmVjZTYwM2E0MTdhNjZiODc2ZTQ5MDZhZmY1N2FjNjAzNSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zNjliNGFjMDMxYWRkNGIyMTQ4ODkyNzhkNWVmNTMzZWU3OTY4MjA3ZGFmYTkzNGJiYjA3NTkzNDFhOGUxNjgyIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9jY2EyNzY3NDM4NzgxYzYyNTUwMmU2MmE2OTJiMDAxMGM1NTg3ZjE5MDE5NWY2NzM2OWY2ZTgyNDg5ODBiZmMyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTI3YTkzNjU0MDM3ZmFiYTdkZDA3YzhmMmUwNWZlYjc3ZWI4MzhhNzM4MDVmODE4OWUwY2NhNTc1OWNiNjliYjkiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJhZDU0Y2U1ZDdkZTVmZTliYmU0NTFiN2JlZjY0M2E2ZDg1MTJlYzQzZWFiZDI4N2YxNjY0MWU1YmIwNmJhYTIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MTU3OWI4YmZjYmRhZjlhZTAzMzhlNmRjMDk5OWMxZDJlNTRlNWVlN2I1ZjJhMzNkZTU4ZmU0ZWZiMzdkODFmNiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvN2ViOWFiOGI2YTNlOWI1MWZkZmQ3ZWMwNTYyYzc0YTMxODNmZTI2NGJjZDEwMDQxODJlZmQ3YmZlYjM1NWE1ZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lM2IwMzhlYzkyNTk0OGRkMGRlZjllZTkyODQ1YWIzODcyZDczNzYwYWEyNjQ1OTVlNGRiZjM4MDMyMWZlMjY5IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81MTFlZGE5NDVlNzRlYjFmMzFhNmE4NmRjOGMxYjMzNDRkOWZjMmIzMDM1ZmUxNTQyNjFkOTE2N2NjZGYzNmE0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ3MjJmYWFmNjk0ZmFiNGE5MzNlZmYxMGZmMzUxZDJiOGNhMDA3MzlkMTBiNjg5ODFmN2FmNmMxZDZmYTZkYWMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2FhMjI0NjhhZDhhM2E3ZmY5NTdiYzhkYTkyOTA4YmIwYmIwNDk1YzVhNDE3Y2RhMjFhYjcwOGEwNzdlYWJlYWYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OGE5YjIwYjlhNTAxMTZhM2JiOTUyYWFiYjM2Y2Q3OWZkZDU2MGU2ZTQ1MDFlMTE3NGRiYjQwMGMxZjg1NWE2OSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZjAzY2UyNDE5MmQxOTBhYmRkYjVmYjgxNWQwNGNiMGU1MzRjNjczOWE0OGVkN2E5YjUxYjllMDFlZWIzOTFkYiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1mOTk3NzQxMWNlYjcyMDMyMTAyNTNjOTljNGMyYTFmNGFhYzNiZTJmYTQzYWQ0ZDQ3MzVhNWZiYmI0NTFiMGQzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kOWIyZDliNGU1ZmM3ZjI0N2FiMDc1NWViMWMxMTI4YzhjYzBjNThkMGI0Mjk4YmI3NWM2ODY1MWNlYjAxNjFjIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWMzOTY1NjdhNTBjYWI0MGNiMTlkNDYxN2Q5NzNjY2JkNWEwZjI5OGYxOTJlYjExYzUzZTQ0MjkxYjQxZmNmOGYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzFlNTk0NmYxMWI5ZmNhMjI3ODgzOWY3YzA1NzM2MmU1MjYwYWQyMjY2ZjQ0NzRkYWZhOWQzZTJhMGU2ZWM5NDUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MWMxYzNlNmI2NWRlMmEwNjZhYmQ1MDhhNjBkYmNhYzdiMGQ0Mjc0Y2VmZTMyZDZmNzZjMjE3MzdmNzFkODdiNyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNDJhOWMxZmI3OGRiMWZlZjViYzRmYzYyODBlZWJkYjNlODMxMDkzZGQ3MWI4ZDVjODA5YjZlM2EzZmZlMTU1YiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNGU1YjgwMzcwNGZjMjJiZjU3NGFiMzA4Yzc4MjU0Mjg3M2E2YmM1NjZjNWY3MGQ2NDQxMTY2OWMyMTZiZWM3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8xZmM1NmE2MWVmNTJiMGI5NmE3NTZlMDU3OGUyNDFiYWY2MTU5Mzc2NTc2ZmM0MWQ4ZWQ4OWI3NGE3MWQyOTdmIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTI4MTAyNzY1NmViYzM0OTBjMjA1NzhkNDg3Yjk1YmM2ZTU3ZTRkYTBlZTdlOWQ3ZjhkYTA3MzY4ZTFkYzlkOGYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzEzZGEyMzA3ZWJkMzE4YmEyMGRmYWU3ZjMzMGM1NTMxYzM5MjU4MzQzZjgzNTc4NzEyMjdhNTI2MjkwZTdhMzgiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YmNjZjFhMzA0NjQ1ZWQ5NWEyZTZmZTU1OGQyY2M5OTkyNDYyOWY4Mjk2MmQ0NTQyMzMwYjBlMmFhNDBiZTU2NiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZDllODIxMmE2NWEyMDNlZDE2NGYxODNmZGUwOGFhNzFhMGM1NzdjMDQ1ZWM2ZGE1YjkyZWYyYmIxYWJkNGRlYSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yMDYzZmNlMDg1OTgxZWMxNzY2MDY1ZTg4NzhhZDM5NzI0OWMxYTA1NTM1YmVjMmM0MDAzYTUwYzRmZDk4MjBkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8wYjgxNTQyM2VjYzNkYTIxNWM4YzZkMDNjMmZiN2ExODAyODIxNDIzNmVjMmU2YjA0NDA2YjBkMTcwOWMzNGE2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTc4ZTk3MjBlOWYyM2JkM2UwNzQ5YTE1ODIyZDFiNjg2MTM1NDk4ZjM1MWNlN2UzMjYxZDJmZWRjYWM2NmE5MTYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI4ZjBkNmY1NTZmYjgyZDgyMTNkNjZjNWVjMDliODgyNDE0YzVjZjFkNTEyN2YxMWNiMjU3NTkwMDA5ZGU3YzMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZGVhYTZjOTdmYjVhYzcxNzk2ZTVkZDc4ODdlZWYxOTNjNjQ2NGEwZDk5N2Q2M2ZlNjAwZWI5OTNmMzZjMTg5NyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZmJhMjJhN2Q3MzVjNWZmY2ZhYTkxMTNhODRiNDI0ZmVhMzE1ZmI0ODFmYjhlZTJjY2QyNWMwY2UxOTNlODYwMCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jNTUxMWU5OTdjZDhkYzM5OWUxMDIzMzI4OGM1YjgzNGM3MjM3NWZmNjViNjQxMWU4ZTE1ZjQxOGVlODBmMTE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kNzU4MTdiMDhlZjk3YjJlNmM5M2ZlZmRlMzA0OWM4NzFjMzdmN2YzYWQwOGM2NWFiOThjMDg0ZDFlZjNjYmIxIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg2OTNlYWVmN2Y0NjhlZGJmNmU2NWY1OGQ5ZmM4ZGE4MjA5NWI4YTVhODg3ZjFlNTA0NDVkNDYzMTNlZjg0YTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2ZhN2I3MTc1ZTA3Yjc4NmI4NmIxNGUyZDUxN2E2NGNiNjdjZWUxMGY3NmYzNDc3YTkxZDU4ZGY4ZTE5NTNmZmIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjllY2UxOTBhZGYyNWNhNmE5YzQ4ZDg0MDcxOGM3OTE0MGNmNmNjY2ExYzNlYzgyMjFhOTM5ZjAxOGE2ODc5MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZmZjYTZiNTc2YThjNzNmZWI3OTM4NzgyZmRmODhkYTQ2MGQzZDJmYjkxYmEyNDMxMDJjZDMyYzBhMTYyZjg0OCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xOTlmZmY1YmIwNjkyYjU4ZmE5MzJjMjUwNzRlNzhkMTMwYWQxOThhOTAwZjZmMmMyZjcyODA5NWU2NTM0M2E1IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy82NWU0NDQ2MzZjM2I1MTgwMzUwNjdiZWVhZTFjNWYyYWFkNzIzNmQwMzZlOTA3MWQyMDMyMzEwOGFlNWJjOTM2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQyZmZlNjViY2I3ZWJiMzBhNGYxNjc3YTA4MmJmODUwZTNhMzVjZDdhZjE3ZDA5NzliNTFlNzFkYzFkYjYyZDQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2U1NWQ0NzIwZmYwY2E1MDk1ZGQyMjJlNTk0Njg0YWFiNmVmMjJjOWQ0MTc1MmZmMTE0YzEzYzNkMjljYzVmMmEiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjhkOWJkYWE3ZDIxYTYwM2Q1Zjc0Y2EwODUwNjQ5MmM0YTgwMjVlYTBlZTE5YWQ3ZDcyM2RmNmEyZDQ0MTEwYSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMGMyODM4ODBlMzhiZmM0N2ZiNDk2OGQ3N2ViNTRmMWEwZjE4YmJiYjM3MWZlZDczNWRlOGEzZGRiNmQzOTBmMSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD00MTgxZDAwODhkOGQzY2QwN2ZhZTQzZjY2NjRiNGNiNDMyYzM1YjgzMjcxMDM4Y2U5YThkNDQ5ZTc3NTM4ODhiIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8zYWUwOTUyMTc5OGExMTFjYjQ5NDFlZDkyM2RhYjY5MmVmMDNiM2IyY2I2YmY4NzYwZGJjMjhjNDdkYTliMDY1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWYzMTNmOTZkYzc1YmU0MWRkYzc3YzVlODEwYWNkNzI1MTc1NmRhOWMyYWNiZTNlMjIzMzllZjU0MzA1ODY4ODYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2IzNGYxNGJhNDI1YzMyNzc1ZWVkNDA5N2RmYjU2YTdiYTdkZDc0NjI3MDQ0YzZmNmUwNmNjNjk1NzdjZTAyYjMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NDcwZWQwMzI2NDE3ZmI4NDE0NmI3NjJhZWFkYjkwZDE0NDc0MDdkMzRhNzYzNjRlNGE1NTU1Yjg1ZTYzMjU2ZSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvY2M4MWZlMzhhODgxYzM2ODE5NDZlOTBmYzI2NGM0MmE0ZWQ0MjUyY2ZjZDNjZmM4N2ExMTc4YTJlZTg1ZTAyZSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yMmJhZmFjYzE0ODY1MzJmNTRmNTZjZWJjNThjYTA5MDY4NWU1ZDZlMDc3ZjFjNDU0M2I2ZmE4ZmUwY2UzOGY3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lYjVmM2M5NTEwYTFiMDQ5MTMyNzY1OGZmYzAzYmNjMjMzZjU4MTRkNjAyNTNmZmNiN2EzOWEyMzIxZDA0MzlhIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM5MTEwNmNjZGY2NjllNWIzNzQ4YjNjNzNhZDliMGI3ZWI5ZDJhM2RmNDAzNTUxNzAyYzAwMzAwMGMwOGY0MDYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzRjYjc5NmRmYmE0MmE5YjVlNTQ1YWI5OTQ1MDY1NTVmN2ViYWVhMjRkN2IxNTEwZGVlZGQ5ODAyNzhlZjEyZDYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODlhZTQ1NzdlNWRlNzJmODdkMmE1NzM5YzlmMGM2ZTg5NzFmMmIwZDQ5M2VjMTBlOTE1YTc2MjdmZGJmYzM0NiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZmQ0YmQyNDc4MjA2ZjU3Yzc0ZDkwNTQ1OTQyZDk5OWE3YmU0ODVjOTdmZDE4ZjQyZDgzZTg0MGRiMThjYTM2ZSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jMmM2YjRjNWQ4MDhhYTA3ODUyOGI4MTMzOGNlNTc2YWU4OGJlNDgwMmQ5MzAyMDNjNmUyMjJlYzg2MTIxYzE1IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8zM2JlNGJkOGU1ZGU0M2ZjNTliZTA4MzUwMTYwYjY0ZWNjM2FkNmM2NzhlZTIxMDdkNmFiOGJhOTE0NmQ1ZmI1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9OWZlYmUyNTEwYjZjODU3N2ZiOTMyYTVmZjBiMmJhMmVjZTYwM2E0MTdhNjZiODc2ZTQ5MDZhZmY1N2FjNjAzNSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTk0ZDEwZjc4ZWFkZjdkZjE1Y2IyNmY5NzdmODgxYmRmYjFmMjhkNTNlY2Q2M2RlZDgwODVkZjBiOTM1OTAxMTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWNjYTI3Njc0Mzg3ODFjNjI1NTAyZTYyYTY5MmIwMDEwYzU1ODdmMTkwMTk1ZjY3MzY5ZjZlODI0ODk4MGJmYzIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zNjliNGFjMDMxYWRkNGIyMTQ4ODkyNzhkNWVmNTMzZWU3OTY4MjA3ZGFmYTkzNGJiYjA3NTkzNDFhOGUxNjgyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0yYWQ1NGNlNWQ3ZGU1ZmU5YmJlNDUxYjdiZWY2NDNhNmQ4NTEyZWM0M2VhYmQyODdmMTY2NDFlNWJiMDZiYWEyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MjdhOTM2NTQwMzdmYWJhN2RkMDdjOGYyZTA1ZmViNzdlYjgzOGE3MzgwNWY4MTg5ZTBjY2E1NzU5Y2I2OWJiOSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9N2ViOWFiOGI2YTNlOWI1MWZkZmQ3ZWMwNTYyYzc0YTMxODNmZTI2NGJjZDEwMDQxODJlZmQ3YmZlYjM1NWE1ZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTE1NzliOGJmY2JkYWY5YWUwMzM4ZTZkYzA5OTljMWQyZTU0ZTVlZTdiNWYyYTMzZGU1OGZlNGVmYjM3ZDgxZjYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTUxMWVkYTk0NWU3NGViMWYzMWE2YTg2ZGM4YzFiMzM0NGQ5ZmMyYjMwMzVmZTE1NDI2MWQ5MTY3Y2NkZjM2YTQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lM2IwMzhlYzkyNTk0OGRkMGRlZjllZTkyODQ1YWIzODcyZDczNzYwYWEyNjQ1OTVlNGRiZjM4MDMyMWZlMjY5IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1hYTIyNDY4YWQ4YTNhN2ZmOTU3YmM4ZGE5MjkwOGJiMGJiMDQ5NWM1YTQxN2NkYTIxYWI3MDhhMDc3ZWFiZWFmLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDcyMmZhYWY2OTRmYWI0YTkzM2VmZjEwZmYzNTFkMmI4Y2EwMDczOWQxMGI2ODk4MWY3YWY2YzFkNmZhNmRhYyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZjAzY2UyNDE5MmQxOTBhYmRkYjVmYjgxNWQwNGNiMGU1MzRjNjczOWE0OGVkN2E5YjUxYjllMDFlZWIzOTFkYix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPThhOWIyMGI5YTUwMTE2YTNiYjk1MmFhYmIzNmNkNzlmZGQ1NjBlNmU0NTAxZTExNzRkYmI0MDBjMWY4NTVhNjkiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWQ5YjJkOWI0ZTVmYzdmMjQ3YWIwNzU1ZWIxYzExMjhjOGNjMGM1OGQwYjQyOThiYjc1YzY4NjUxY2ViMDE2MWMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1mOTk3NzQxMWNlYjcyMDMyMTAyNTNjOTljNGMyYTFmNGFhYzNiZTJmYTQzYWQ0ZDQ3MzVhNWZiYmI0NTFiMGQzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0xZTU5NDZmMTFiOWZjYTIyNzg4MzlmN2MwNTczNjJlNTI2MGFkMjI2NmY0NDc0ZGFmYTlkM2UyYTBlNmVjOTQ1LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YzM5NjU2N2E1MGNhYjQwY2IxOWQ0NjE3ZDk3M2NjYmQ1YTBmMjk4ZjE5MmViMTFjNTNlNDQyOTFiNDFmY2Y4ZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NDJhOWMxZmI3OGRiMWZlZjViYzRmYzYyODBlZWJkYjNlODMxMDkzZGQ3MWI4ZDVjODA5YjZlM2EzZmZlMTU1Yix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTFjMWMzZTZiNjVkZTJhMDY2YWJkNTA4YTYwZGJjYWM3YjBkNDI3NGNlZmUzMmQ2Zjc2YzIxNzM3ZjcxZDg3YjciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTFmYzU2YTYxZWY1MmIwYjk2YTc1NmUwNTc4ZTI0MWJhZjYxNTkzNzY1NzZmYzQxZDhlZDg5Yjc0YTcxZDI5N2YsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNGU1YjgwMzcwNGZjMjJiZjU3NGFiMzA4Yzc4MjU0Mjg3M2E2YmM1NjZjNWY3MGQ2NDQxMTY2OWMyMTZiZWM3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0xM2RhMjMwN2ViZDMxOGJhMjBkZmFlN2YzMzBjNTUzMWMzOTI1ODM0M2Y4MzU3ODcxMjI3YTUyNjI5MGU3YTM4LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MjgxMDI3NjU2ZWJjMzQ5MGMyMDU3OGQ0ODdiOTViYzZlNTdlNGRhMGVlN2U5ZDdmOGRhMDczNjhlMWRjOWQ4ZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZDllODIxMmE2NWEyMDNlZDE2NGYxODNmZGUwOGFhNzFhMGM1NzdjMDQ1ZWM2ZGE1YjkyZWYyYmIxYWJkNGRlYSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWJjY2YxYTMwNDY0NWVkOTVhMmU2ZmU1NThkMmNjOTk5MjQ2MjlmODI5NjJkNDU0MjMzMGIwZTJhYTQwYmU1NjYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTBiODE1NDIzZWNjM2RhMjE1YzhjNmQwM2MyZmI3YTE4MDI4MjE0MjM2ZWMyZTZiMDQ0MDZiMGQxNzA5YzM0YTYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yMDYzZmNlMDg1OTgxZWMxNzY2MDY1ZTg4NzhhZDM5NzI0OWMxYTA1NTM1YmVjMmM0MDAzYTUwYzRmZDk4MjBkIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0yOGYwZDZmNTU2ZmI4MmQ4MjEzZDY2YzVlYzA5Yjg4MjQxNGM1Y2YxZDUxMjdmMTFjYjI1NzU5MDAwOWRlN2MzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NzhlOTcyMGU5ZjIzYmQzZTA3NDlhMTU4MjJkMWI2ODYxMzU0OThmMzUxY2U3ZTMyNjFkMmZlZGNhYzY2YTkxNiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZmJhMjJhN2Q3MzVjNWZmY2ZhYTkxMTNhODRiNDI0ZmVhMzE1ZmI0ODFmYjhlZTJjY2QyNWMwY2UxOTNlODYwMCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRlYWE2Yzk3ZmI1YWM3MTc5NmU1ZGQ3ODg3ZWVmMTkzYzY0NjRhMGQ5OTdkNjNmZTYwMGViOTkzZjM2YzE4OTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWQ3NTgxN2IwOGVmOTdiMmU2YzkzZmVmZGUzMDQ5Yzg3MWMzN2Y3ZjNhZDA4YzY1YWI5OGMwODRkMWVmM2NiYjEsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jNTUxMWU5OTdjZDhkYzM5OWUxMDIzMzI4OGM1YjgzNGM3MjM3NWZmNjViNjQxMWU4ZTE1ZjQxOGVlODBmMTE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1mYTdiNzE3NWUwN2I3ODZiODZiMTRlMmQ1MTdhNjRjYjY3Y2VlMTBmNzZmMzQ3N2E5MWQ1OGRmOGUxOTUzZmZiLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODY5M2VhZWY3ZjQ2OGVkYmY2ZTY1ZjU4ZDlmYzhkYTgyMDk1YjhhNWE4ODdmMWU1MDQ0NWQ0NjMxM2VmODRhOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZmZjYTZiNTc2YThjNzNmZWI3OTM4NzgyZmRmODhkYTQ2MGQzZDJmYjkxYmEyNDMxMDJjZDMyYzBhMTYyZjg0OCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY5ZWNlMTkwYWRmMjVjYTZhOWM0OGQ4NDA3MThjNzkxNDBjZjZjY2NhMWMzZWM4MjIxYTkzOWYwMThhNjg3OTAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTY1ZTQ0NDYzNmMzYjUxODAzNTA2N2JlZWFlMWM1ZjJhYWQ3MjM2ZDAzNmU5MDcxZDIwMzIzMTA4YWU1YmM5MzYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xOTlmZmY1YmIwNjkyYjU4ZmE5MzJjMjUwNzRlNzhkMTMwYWQxOThhOTAwZjZmMmMyZjcyODA5NWU2NTM0M2E1IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1lNTVkNDcyMGZmMGNhNTA5NWRkMjIyZTU5NDY4NGFhYjZlZjIyYzlkNDE3NTJmZjExNGMxM2MzZDI5Y2M1ZjJhLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDJmZmU2NWJjYjdlYmIzMGE0ZjE2NzdhMDgyYmY4NTBlM2EzNWNkN2FmMTdkMDk3OWI1MWU3MWRjMWRiNjJkNCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MGMyODM4ODBlMzhiZmM0N2ZiNDk2OGQ3N2ViNTRmMWEwZjE4YmJiYjM3MWZlZDczNWRlOGEzZGRiNmQzOTBmMSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY4ZDliZGFhN2QyMWE2MDNkNWY3NGNhMDg1MDY0OTJjNGE4MDI1ZWEwZWUxOWFkN2Q3MjNkZjZhMmQ0NDExMGEiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTNhZTA5NTIxNzk4YTExMWNiNDk0MWVkOTIzZGFiNjkyZWYwM2IzYjJjYjZiZjg3NjBkYmMyOGM0N2RhOWIwNjUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD00MTgxZDAwODhkOGQzY2QwN2ZhZTQzZjY2NjRiNGNiNDMyYzM1YjgzMjcxMDM4Y2U5YThkNDQ5ZTc3NTM4ODhiIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1iMzRmMTRiYTQyNWMzMjc3NWVlZDQwOTdkZmI1NmE3YmE3ZGQ3NDYyNzA0NGM2ZjZlMDZjYzY5NTc3Y2UwMmIzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZjMxM2Y5NmRjNzViZTQxZGRjNzdjNWU4MTBhY2Q3MjUxNzU2ZGE5YzJhY2JlM2UyMjMzOWVmNTQzMDU4Njg4NiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9Y2M4MWZlMzhhODgxYzM2ODE5NDZlOTBmYzI2NGM0MmE0ZWQ0MjUyY2ZjZDNjZmM4N2ExMTc4YTJlZTg1ZTAyZSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTQ3MGVkMDMyNjQxN2ZiODQxNDZiNzYyYWVhZGI5MGQxNDQ3NDA3ZDM0YTc2MzY0ZTRhNTU1NWI4NWU2MzI1NmUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWViNWYzYzk1MTBhMWIwNDkxMzI3NjU4ZmZjMDNiY2MyMzNmNTgxNGQ2MDI1M2ZmY2I3YTM5YTIzMjFkMDQzOWEsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yMmJhZmFjYzE0ODY1MzJmNTRmNTZjZWJjNThjYTA5MDY4NWU1ZDZlMDc3ZjFjNDU0M2I2ZmE4ZmUwY2UzOGY3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj00Y2I3OTZkZmJhNDJhOWI1ZTU0NWFiOTk0NTA2NTU1ZjdlYmFlYTI0ZDdiMTUxMGRlZWRkOTgwMjc4ZWYxMmQ2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzkxMTA2Y2NkZjY2OWU1YjM3NDhiM2M3M2FkOWIwYjdlYjlkMmEzZGY0MDM1NTE3MDJjMDAzMDAwYzA4ZjQwNiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZmQ0YmQyNDc4MjA2ZjU3Yzc0ZDkwNTQ1OTQyZDk5OWE3YmU0ODVjOTdmZDE4ZjQyZDgzZTg0MGRiMThjYTM2ZSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg5YWU0NTc3ZTVkZTcyZjg3ZDJhNTczOWM5ZjBjNmU4OTcxZjJiMGQ0OTNlYzEwZTkxNWE3NjI3ZmRiZmMzNDYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTMzYmU0YmQ4ZTVkZTQzZmM1OWJlMDgzNTAxNjBiNjRlY2MzYWQ2YzY3OGVlMjEwN2Q2YWI4YmE5MTQ2ZDVmYjUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jMmM2YjRjNWQ4MDhhYTA3ODUyOGI4MTMzOGNlNTc2YWU4OGJlNDgwMmQ5MzAyMDNjNmUyMjJlYzg2MTIxYzE1IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTlmZWJlMjUxMGI2Yzg1NzdmYjkzMmE1ZmYwYjJiYTJlY2U2MDNhNDE3YTY2Yjg3NmU0OTA2YWZmNTdhYzYwMzU6Y2NhMjc2NzQzODc4MWM2MjU1MDJlNjJhNjkyYjAwMTBjNTU4N2YxOTAxOTVmNjczNjlmNmU4MjQ4OTgwYmZjMjoyYWQ1NGNlNWQ3ZGU1ZmU5YmJlNDUxYjdiZWY2NDNhNmQ4NTEyZWM0M2VhYmQyODdmMTY2NDFlNWJiMDZiYWEyOjdlYjlhYjhiNmEzZTliNTFmZGZkN2VjMDU2MmM3NGEzMTgzZmUyNjRiY2QxMDA0MTgyZWZkN2JmZWIzNTVhNWQ6NTExZWRhOTQ1ZTc0ZWIxZjMxYTZhODZkYzhjMWIzMzQ0ZDlmYzJiMzAzNWZlMTU0MjYxZDkxNjdjY2RmMzZhNDphYTIyNDY4YWQ4YTNhN2ZmOTU3YmM4ZGE5MjkwOGJiMGJiMDQ5NWM1YTQxN2NkYTIxYWI3MDhhMDc3ZWFiZWFmOmYwM2NlMjQxOTJkMTkwYWJkZGI1ZmI4MTVkMDRjYjBlNTM0YzY3MzlhNDhlZDdhOWI1MWI5ZTAxZWViMzkxZGI6ZDliMmQ5YjRlNWZjN2YyNDdhYjA3NTVlYjFjMTEyOGM4Y2MwYzU4ZDBiNDI5OGJiNzVjNjg2NTFjZWIwMTYxYzoxZTU5NDZmMTFiOWZjYTIyNzg4MzlmN2MwNTczNjJlNTI2MGFkMjI2NmY0NDc0ZGFmYTlkM2UyYTBlNmVjOTQ1OjQyYTljMWZiNzhkYjFmZWY1YmM0ZmM2MjgwZWViZGIzZTgzMTA5M2RkNzFiOGQ1YzgwOWI2ZTNhM2ZmZTE1NWI6MWZjNTZhNjFlZjUyYjBiOTZhNzU2ZTA1NzhlMjQxYmFmNjE1OTM3NjU3NmZjNDFkOGVkODliNzRhNzFkMjk3ZjoxM2RhMjMwN2ViZDMxOGJhMjBkZmFlN2YzMzBjNTUzMWMzOTI1ODM0M2Y4MzU3ODcxMjI3YTUyNjI5MGU3YTM4OmQ5ZTgyMTJhNjVhMjAzZWQxNjRmMTgzZmRlMDhhYTcxYTBjNTc3YzA0NWVjNmRhNWI5MmVmMmJiMWFiZDRkZWE6MGI4MTU0MjNlY2MzZGEyMTVjOGM2ZDAzYzJmYjdhMTgwMjgyMTQyMzZlYzJlNmIwNDQwNmIwZDE3MDljMzRhNjoyOGYwZDZmNTU2ZmI4MmQ4MjEzZDY2YzVlYzA5Yjg4MjQxNGM1Y2YxZDUxMjdmMTFjYjI1NzU5MDAwOWRlN2MzOmZiYTIyYTdkNzM1YzVmZmNmYWE5MTEzYTg0YjQyNGZlYTMxNWZiNDgxZmI4ZWUyY2NkMjVjMGNlMTkzZTg2MDA6ZDc1ODE3YjA4ZWY5N2IyZTZjOTNmZWZkZTMwNDljODcxYzM3ZjdmM2FkMDhjNjVhYjk4YzA4NGQxZWYzY2JiMTpmYTdiNzE3NWUwN2I3ODZiODZiMTRlMmQ1MTdhNjRjYjY3Y2VlMTBmNzZmMzQ3N2E5MWQ1OGRmOGUxOTUzZmZiOmZmY2E2YjU3NmE4YzczZmViNzkzODc4MmZkZjg4ZGE0NjBkM2QyZmI5MWJhMjQzMTAyY2QzMmMwYTE2MmY4NDg6NjVlNDQ0NjM2YzNiNTE4MDM1MDY3YmVlYWUxYzVmMmFhZDcyMzZkMDM2ZTkwNzFkMjAzMjMxMDhhZTViYzkzNjplNTVkNDcyMGZmMGNhNTA5NWRkMjIyZTU5NDY4NGFhYjZlZjIyYzlkNDE3NTJmZjExNGMxM2MzZDI5Y2M1ZjJhOjBjMjgzODgwZTM4YmZjNDdmYjQ5NjhkNzdlYjU0ZjFhMGYxOGJiYmIzNzFmZWQ3MzVkZThhM2RkYjZkMzkwZjE6M2FlMDk1MjE3OThhMTExY2I0OTQxZWQ5MjNkYWI2OTJlZjAzYjNiMmNiNmJmODc2MGRiYzI4YzQ3ZGE5YjA2NTpiMzRmMTRiYTQyNWMzMjc3NWVlZDQwOTdkZmI1NmE3YmE3ZGQ3NDYyNzA0NGM2ZjZlMDZjYzY5NTc3Y2UwMmIzOmNjODFmZTM4YTg4MWMzNjgxOTQ2ZTkwZmMyNjRjNDJhNGVkNDI1MmNmY2QzY2ZjODdhMTE3OGEyZWU4NWUwMmU6ZWI1ZjNjOTUxMGExYjA0OTEzMjc2NThmZmMwM2JjYzIzM2Y1ODE0ZDYwMjUzZmZjYjdhMzlhMjMyMWQwNDM5YTo0Y2I3OTZkZmJhNDJhOWI1ZTU0NWFiOTk0NTA2NTU1ZjdlYmFlYTI0ZDdiMTUxMGRlZWRkOTgwMjc4ZWYxMmQ2OmZkNGJkMjQ3ODIwNmY1N2M3NGQ5MDU0NTk0MmQ5OTlhN2JlNDg1Yzk3ZmQxOGY0MmQ4M2U4NDBkYjE4Y2EzNmU6MzNiZTRiZDhlNWRlNDNmYzU5YmUwODM1MDE2MGI2NGVjYzNhZDZjNjc4ZWUyMTA3ZDZhYjhiYTkxNDZkNWZiNSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 spec: nodeSelector: kubernetes.io/os: linux diff --git a/src/agent/samples/policy/yaml/kubernetes/conformance/conformance-e2e.yaml b/src/agent/samples/policy/yaml/kubernetes/conformance/conformance-e2e.yaml index 164a5835cf04..118863791f8f 100644 --- a/src/agent/samples/policy/yaml/kubernetes/conformance/conformance-e2e.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/conformance/conformance-e2e.yaml @@ -52,7 +52,7 @@ kind: Pod metadata: name: e2e-conformance-test annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeZTJlLWNvbmZvcm1hbmNlLXRlc3QkIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIjogImUyZS1jb25mb3JtYW5jZS10ZXN0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJjb25mb3JtYW5jZSIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgInNoIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1lMmUtY29uZm9ybWFuY2UtdGVzdCIsCiAgICAgICAgICAgICJFMkVfRk9DVVM9XFxbQ29uZm9ybWFuY2VcXF0iLAogICAgICAgICAgICAiRTJFX1NLSVA9IiwKICAgICAgICAgICAgIkUyRV9QUk9WSURFUj1za2VsZXRvbiIsCiAgICAgICAgICAgICJFMkVfUEFSQUxMRUw9ZmFsc2UiLAogICAgICAgICAgICAiRTJFX1ZFUkJPU0lUWT00IgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXmUyZS1jb25mb3JtYW5jZS10ZXN0JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi90bXAvcmVzdWx0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc3VsdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAiYnVzeSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL2Frcy9lMmUvbGlicmFyeS1idXN5Ym94Om1hc3Rlci4yMjAzMTQuMS1saW51eC1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIjogImUyZS1jb25mb3JtYW5jZS10ZXN0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJjb25mb3JtYW5jZSIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzk6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeZTJlLWNvbmZvcm1hbmNlLXRlc3QkIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIjogImUyZS1jb25mb3JtYW5jZS10ZXN0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJjb25mb3JtYW5jZSIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgInNoIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1lMmUtY29uZm9ybWFuY2UtdGVzdCIsCiAgICAgICAgICAgICJFMkVfRk9DVVM9XFxbQ29uZm9ybWFuY2VcXF0iLAogICAgICAgICAgICAiRTJFX1NLSVA9IiwKICAgICAgICAgICAgIkUyRV9QUk9WSURFUj1za2VsZXRvbiIsCiAgICAgICAgICAgICJFMkVfUEFSQUxMRUw9ZmFsc2UiLAogICAgICAgICAgICAiRTJFX1ZFUkJPU0lUWT00IgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXmUyZS1jb25mb3JtYW5jZS10ZXN0JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi90bXAvcmVzdWx0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc3VsdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAiYnVzeSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL2Frcy9lMmUvbGlicmFyeS1idXN5Ym94Om1hc3Rlci4yMjAzMTQuMS1saW51eC1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIjogImUyZS1jb25mb3JtYW5jZS10ZXN0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJjb25mb3JtYW5jZSIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzk6MjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 namespace: conformance spec: restartPolicy: Never diff --git a/src/agent/samples/policy/yaml/kubernetes/conformance/etcd-statefulset.yaml b/src/agent/samples/policy/yaml/kubernetes/conformance/etcd-statefulset.yaml index 29309908f0de..486f1c327143 100644 --- a/src/agent/samples/policy/yaml/kubernetes/conformance/etcd-statefulset.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/conformance/etcd-statefulset.yaml @@ -17,7 +17,7 @@ spec: labels: app: etcd annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeZXRjZC1bYS16MC05XSokIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL2V0Y2QiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ldGNkJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvYmluL3NoIiwKICAgICAgICAgICAgIi1lYyIsCiAgICAgICAgICAgICJIT1NUTkFNRT0kKGhvc3RuYW1lKVxuXG4jIHN0b3JlIG1lbWJlciBpZCBpbnRvIFBWQyBmb3IgbGF0ZXIgbWVtYmVyIHJlcGxhY2VtZW50XG5jb2xsZWN0X21lbWJlcigpIHtcbiAgICB3aGlsZSAhIGV0Y2RjdGwgbWVtYmVyIGxpc3QgJj4vZGV2L251bGw7IGRvIHNsZWVwIDE7IGRvbmVcbiAgICBldGNkY3RsIG1lbWJlciBsaXN0IHwgZ3JlcCBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM4MCB8IGN1dCAtZCc6JyAtZjEgfCBjdXQgLWQnWycgLWYxID4gL3Zhci9ydW4vZXRjZC9tZW1iZXJfaWRcbiAgICBleGl0IDBcbn1cblxuZXBzKCkge1xuICAgIEVQUz1cIlwiXG4gICAgZm9yIGkgaW4gJChzZXEgMCAkKCgke0lOSVRJQUxfQ0xVU1RFUl9TSVpFfSAtIDEpKSk7IGRvXG4gICAgICAgIEVQUz1cIiR7RVBTfSR7RVBTOissfWh0dHA6Ly8ke1NFVF9OQU1FfS0ke2l9LiR7U0VUX05BTUV9OjIzNzlcIlxuICAgIGRvbmVcbiAgICBlY2hvICR7RVBTfVxufVxuXG5tZW1iZXJfaGFzaCgpIHtcbiAgICBldGNkY3RsIG1lbWJlciBsaXN0IHwgZ3JlcCBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM4MCB8IGN1dCAtZCc6JyAtZjEgfCBjdXQgLWQnWycgLWYxXG59XG5cbiMgcmUtam9pbmluZyBhZnRlciBmYWlsdXJlP1xuaWYgWyAtZSAvdmFyL3J1bi9ldGNkL2RlZmF1bHQuZXRjZCBdOyB0aGVuXG4gICAgZWNobyBcIlJlLWpvaW5pbmcgZXRjZCBtZW1iZXJcIlxuICAgIG1lbWJlcl9pZD0kKGNhdCAvdmFyL3J1bi9ldGNkL21lbWJlcl9pZClcblxuICAgICMgcmUtam9pbiBtZW1iZXJcbiAgICBFVENEQ1RMX0VORFBPSU5UPSQoZXBzKSBldGNkY3RsIG1lbWJlciB1cGRhdGUgJHttZW1iZXJfaWR9IGh0dHA6Ly8ke0hPU1ROQU1FfS4ke1NFVF9OQU1FfToyMzgwXG4gICAgZXhlYyBldGNkIC0tbmFtZSAke0hPU1ROQU1FfSBcXFxuICAgICAgICAtLWxpc3Rlbi1wZWVyLXVybHMgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzODAgXFxcbiAgICAgICAgLS1saXN0ZW4tY2xpZW50LXVybHMgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzNzksaHR0cDovLzEyNy4wLjAuMToyMzc5IFxcXG4gICAgICAgIC0tYWR2ZXJ0aXNlLWNsaWVudC11cmxzIGh0dHA6Ly8ke0hPU1ROQU1FfS4ke1NFVF9OQU1FfToyMzc5IFxcXG4gICAgICAgIC0tZGF0YS1kaXIgL3Zhci9ydW4vZXRjZC9kZWZhdWx0LmV0Y2RcbmZpXG5cbiMgZXRjZC1TRVRfSURcblNFVF9JRD0ke0hPU1ROQU1FOjU6JHsjSE9TVE5BTUV9fVxuXG4jIGFkZGluZyBhIG5ldyBtZW1iZXIgdG8gZXhpc3RpbmcgY2x1c3RlciAoYXNzdW1pbmcgYWxsIGluaXRpYWwgcG9kcyBhcmUgYXZhaWxhYmxlKVxuaWYgWyBcIiR7U0VUX0lEfVwiIC1nZSAke0lOSVRJQUxfQ0xVU1RFUl9TSVpFfSBdOyB0aGVuXG4gICAgZXhwb3J0IEVUQ0RDVExfRU5EUE9JTlQ9JChlcHMpXG5cbiAgICAjIG1lbWJlciBhbHJlYWR5IGFkZGVkP1xuICAgIE1FTUJFUl9IQVNIPSQobWVtYmVyX2hhc2gpXG4gICAgaWYgWyAtbiBcIiR7TUVNQkVSX0hBU0h9XCIgXTsgdGhlblxuICAgICAgICAjIHRoZSBtZW1iZXIgaGFzaCBleGlzdHMgYnV0IGZvciBzb21lIHJlYXNvbiBldGNkIGZhaWxlZFxuICAgICAgICAjIGFzIHRoZSBkYXRhZGlyIGhhcyBub3QgYmUgY3JlYXRlZCwgd2UgY2FuIHJlbW92ZSB0aGUgbWVtYmVyXG4gICAgICAgICMgYW5kIHJldHJpZXZlIG5ldyBoYXNoXG4gICAgICAgIGV0Y2RjdGwgbWVtYmVyIHJlbW92ZSAke01FTUJFUl9IQVNIfVxuICAgIGZpXG5cbiAgICBlY2hvIFwiQWRkaW5nIG5ldyBtZW1iZXJcIlxuICAgIGV0Y2RjdGwgbWVtYmVyIGFkZCAke0hPU1ROQU1FfSBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM4MCB8IGdyZXAgXCJeRVRDRF9cIiA+IC92YXIvcnVuL2V0Y2QvbmV3X21lbWJlcl9lbnZzXG5cbiAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW5cbiAgICAgICAgZWNobyBcIkV4aXRpbmdcIlxuICAgICAgICBybSAtZiAvdmFyL3J1bi9ldGNkL25ld19tZW1iZXJfZW52c1xuICAgICAgICBleGl0IDFcbiAgICBmaVxuXG4gICAgY2F0IC92YXIvcnVuL2V0Y2QvbmV3X21lbWJlcl9lbnZzXG4gICAgc291cmNlIC92YXIvcnVuL2V0Y2QvbmV3X21lbWJlcl9lbnZzXG5cbiAgICBjb2xsZWN0X21lbWJlciAmXG5cbiAgICBleGVjIGV0Y2QgLS1uYW1lICR7SE9TVE5BTUV9IFxcXG4gICAgICAgIC0tbGlzdGVuLXBlZXItdXJscyBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM4MCBcXFxuICAgICAgICAtLWxpc3Rlbi1jbGllbnQtdXJscyBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM3OSxodHRwOi8vMTI3LjAuMC4xOjIzNzkgXFxcbiAgICAgICAgLS1hZHZlcnRpc2UtY2xpZW50LXVybHMgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzNzkgXFxcbiAgICAgICAgLS1kYXRhLWRpciAvdmFyL3J1bi9ldGNkL2RlZmF1bHQuZXRjZCBcXFxuICAgICAgICAtLWluaXRpYWwtYWR2ZXJ0aXNlLXBlZXItdXJscyBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM4MCBcXFxuICAgICAgICAtLWluaXRpYWwtY2x1c3RlciAke0VUQ0RfSU5JVElBTF9DTFVTVEVSfSBcXFxuICAgICAgICAtLWluaXRpYWwtY2x1c3Rlci1zdGF0ZSAke0VUQ0RfSU5JVElBTF9DTFVTVEVSX1NUQVRFfVxuZmlcblxuZm9yIGkgaW4gJChzZXEgMCAkKCgke0lOSVRJQUxfQ0xVU1RFUl9TSVpFfSAtIDEpKSk7IGRvXG4gICAgd2hpbGUgdHJ1ZTsgZG9cbiAgICAgICAgZWNobyBcIldhaXRpbmcgZm9yICR7U0VUX05BTUV9LSR7aX0uJHtTRVRfTkFNRX0gdG8gY29tZSB1cFwiXG4gICAgICAgIHBpbmcgLVcgMSAtYyAxICR7U0VUX05BTUV9LSR7aX0uJHtTRVRfTkFNRX0gPiAvZGV2L251bGwgJiYgYnJlYWtcbiAgICAgICAgc2xlZXAgMXNcbiAgICBkb25lXG5kb25lXG5cblBFRVJTPVwiXCJcbmZvciBpIGluICQoc2VxIDAgJCgoJHtJTklUSUFMX0NMVVNURVJfU0laRX0gLSAxKSkpOyBkb1xuICAgIFBFRVJTPVwiJHtQRUVSU30ke1BFRVJTOissfSR7U0VUX05BTUV9LSR7aX09aHR0cDovLyR7U0VUX05BTUV9LSR7aX0uJHtTRVRfTkFNRX06MjM4MFwiXG5kb25lXG5cbmNvbGxlY3RfbWVtYmVyICZcblxuIyBqb2luIG1lbWJlclxuZXhlYyBldGNkIC0tbmFtZSAke0hPU1ROQU1FfSBcXFxuICAgIC0taW5pdGlhbC1hZHZlcnRpc2UtcGVlci11cmxzIGh0dHA6Ly8ke0hPU1ROQU1FfS4ke1NFVF9OQU1FfToyMzgwIFxcXG4gICAgLS1saXN0ZW4tcGVlci11cmxzIGh0dHA6Ly8ke0hPU1ROQU1FfS4ke1NFVF9OQU1FfToyMzgwIFxcXG4gICAgLS1saXN0ZW4tY2xpZW50LXVybHMgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzNzksaHR0cDovLzEyNy4wLjAuMToyMzc5IFxcXG4gICAgLS1hZHZlcnRpc2UtY2xpZW50LXVybHMgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzNzkgXFxcbiAgICAtLWluaXRpYWwtY2x1c3Rlci10b2tlbiBldGNkLWNsdXN0ZXItMSBcXFxuICAgIC0taW5pdGlhbC1jbHVzdGVyICR7UEVFUlN9IFxcXG4gICAgLS1pbml0aWFsLWNsdXN0ZXItc3RhdGUgbmV3IFxcXG4gICAgLS1kYXRhLWRpciAvdmFyL3J1bi9ldGNkL2RlZmF1bHQuZXRjZFxuIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1ldGNkIiwKICAgICAgICAgICAgIklOSVRJQUxfQ0xVU1RFUl9TSVpFPTMiLAogICAgICAgICAgICAiU0VUX05BTUU9ZXRjZCIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5ldGNkLVthLXowLTldKiQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9ldGNkIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tZXRjZCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJldGNkIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAicmVnaXN0cnkuazhzLmlvL2V0Y2Q6My4yLjI0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iOWQ2NTZkYjdlMmFkZWY0MjhhZTZhOTk0NGQ3NzdkMjQ2MzhlYTY4OGVjMzhkMTk4Y2VmMmM2ZTIxNmY0NGU4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kYzUzZDUyNmNjZTRiZjJhOTc2MTljYzI4YTY3YzcyZGI5NzhhZmJjNjcyNzM2ZGY5ZDEwNGUwZGE5NWRlMDVjIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWIwMDU2NmI3MzgxZjE2M2Y0MjYzODI0MmE4NmU1MTk5M2Y0ODQyNzUyNjEyZDc5YjZiZTdkNmE3YjVkMWZkZjUiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg0NjQ4MzJiMmQ2MzliMGZhMmY4ODA3MWJlYmFjOTQ2Y2IwZjMzMjEwNzhlNGUwMWQyMGNkOGYwNDU3NmIyN2QiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZGFiZmE4MzMzY2Q4YjAzOGQyYmI2NDI0NzE3YzY5MjIxODgyZDI3YTI3Y2UzNmM5OWQ2NjBmNjE5MDJkMDAzOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMzMxZDQ2YjJiZjRjYzhjYzM5YWQ3NDg1MzMxNWU0YjQ1OWVkYTNkZWQ3ZmE3NjQzZDQzOWM1NzIwNmRhMTM5MCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2RjNTNkNTI2Y2NlNGJmMmE5NzYxOWNjMjhhNjdjNzJkYjk3OGFmYmM2NzI3MzZkZjlkMTA0ZTBkYTk1ZGUwNWMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iOWQ2NTZkYjdlMmFkZWY0MjhhZTZhOTk0NGQ3NzdkMjQ2MzhlYTY4OGVjMzhkMTk4Y2VmMmM2ZTIxNmY0NGU4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy84NDY0ODMyYjJkNjM5YjBmYTJmODgwNzFiZWJhYzk0NmNiMGYzMzIxMDc4ZTRlMDFkMjBjZDhmMDQ1NzZiMjdkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjAwNTY2YjczODFmMTYzZjQyNjM4MjQyYTg2ZTUxOTkzZjQ4NDI3NTI2MTJkNzliNmJlN2Q2YTdiNWQxZmRmNSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMzMxZDQ2YjJiZjRjYzhjYzM5YWQ3NDg1MzMxNWU0YjQ1OWVkYTNkZWQ3ZmE3NjQzZDQzOWM1NzIwNmRhMTM5MCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRhYmZhODMzM2NkOGIwMzhkMmJiNjQyNDcxN2M2OTIyMTg4MmQyN2EyN2NlMzZjOTlkNjYwZjYxOTAyZDAwMzgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZGM1M2Q1MjZjY2U0YmYyYTk3NjE5Y2MyOGE2N2M3MmRiOTc4YWZiYzY3MjczNmRmOWQxMDRlMGRhOTVkZTA1YzovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84NDY0ODMyYjJkNjM5YjBmYTJmODgwNzFiZWJhYzk0NmNiMGYzMzIxMDc4ZTRlMDFkMjBjZDhmMDQ1NzZiMjdkOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzMzMWQ0NmIyYmY0Y2M4Y2MzOWFkNzQ4NTMzMTVlNGI0NTllZGEzZGVkN2ZhNzY0M2Q0MzljNTcyMDZkYTEzOTAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbCiAgICAgICAgIi9iaW4vc2ggLWVjIEVQUz1cIlwiXG5mb3IgaSBpbiAkKHNlcSAwICQoKCR7SU5JVElBTF9DTFVTVEVSX1NJWkV9IC0gMSkpKTsgZG9cbiAgICBFUFM9XCIke0VQU30ke0VQUzorLH1odHRwOi8vJHtTRVRfTkFNRX0tJHtpfS4ke1NFVF9OQU1FfToyMzc5XCJcbmRvbmVcblxuSE9TVE5BTUU9JChob3N0bmFtZSlcblxubWVtYmVyX2hhc2goKSB7XG4gICAgZXRjZGN0bCBtZW1iZXIgbGlzdCB8IGdyZXAgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzODAgfCBjdXQgLWQnOicgLWYxIHwgY3V0IC1kJ1snIC1mMVxufVxuXG5lY2hvIFwiUmVtb3ZpbmcgJHtIT1NUTkFNRX0gZnJvbSBldGNkIGNsdXN0ZXJcIlxuXG5FVENEQ1RMX0VORFBPSU5UPSR7RVBTfSBldGNkY3RsIG1lbWJlciByZW1vdmUgJChtZW1iZXJfaGFzaClcbmlmIFsgJD8gLWVxIDAgXTsgdGhlblxuICAgICMgUmVtb3ZlIGV2ZXJ5dGhpbmcgb3RoZXJ3aXNlIHRoZSBjbHVzdGVyIHdpbGwgbm8gbG9uZ2VyIHNjYWxlLXVwXG4gICAgcm0gLXJmIC92YXIvcnVuL2V0Y2QvKlxuZmlcbiIKICAgICAgXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeZXRjZC1bYS16MC05XSokIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL2V0Y2QiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ldGNkJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvYmluL3NoIiwKICAgICAgICAgICAgIi1lYyIsCiAgICAgICAgICAgICJIT1NUTkFNRT0kKGhvc3RuYW1lKVxuXG4jIHN0b3JlIG1lbWJlciBpZCBpbnRvIFBWQyBmb3IgbGF0ZXIgbWVtYmVyIHJlcGxhY2VtZW50XG5jb2xsZWN0X21lbWJlcigpIHtcbiAgICB3aGlsZSAhIGV0Y2RjdGwgbWVtYmVyIGxpc3QgJj4vZGV2L251bGw7IGRvIHNsZWVwIDE7IGRvbmVcbiAgICBldGNkY3RsIG1lbWJlciBsaXN0IHwgZ3JlcCBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM4MCB8IGN1dCAtZCc6JyAtZjEgfCBjdXQgLWQnWycgLWYxID4gL3Zhci9ydW4vZXRjZC9tZW1iZXJfaWRcbiAgICBleGl0IDBcbn1cblxuZXBzKCkge1xuICAgIEVQUz1cIlwiXG4gICAgZm9yIGkgaW4gJChzZXEgMCAkKCgke0lOSVRJQUxfQ0xVU1RFUl9TSVpFfSAtIDEpKSk7IGRvXG4gICAgICAgIEVQUz1cIiR7RVBTfSR7RVBTOissfWh0dHA6Ly8ke1NFVF9OQU1FfS0ke2l9LiR7U0VUX05BTUV9OjIzNzlcIlxuICAgIGRvbmVcbiAgICBlY2hvICR7RVBTfVxufVxuXG5tZW1iZXJfaGFzaCgpIHtcbiAgICBldGNkY3RsIG1lbWJlciBsaXN0IHwgZ3JlcCBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM4MCB8IGN1dCAtZCc6JyAtZjEgfCBjdXQgLWQnWycgLWYxXG59XG5cbiMgcmUtam9pbmluZyBhZnRlciBmYWlsdXJlP1xuaWYgWyAtZSAvdmFyL3J1bi9ldGNkL2RlZmF1bHQuZXRjZCBdOyB0aGVuXG4gICAgZWNobyBcIlJlLWpvaW5pbmcgZXRjZCBtZW1iZXJcIlxuICAgIG1lbWJlcl9pZD0kKGNhdCAvdmFyL3J1bi9ldGNkL21lbWJlcl9pZClcblxuICAgICMgcmUtam9pbiBtZW1iZXJcbiAgICBFVENEQ1RMX0VORFBPSU5UPSQoZXBzKSBldGNkY3RsIG1lbWJlciB1cGRhdGUgJHttZW1iZXJfaWR9IGh0dHA6Ly8ke0hPU1ROQU1FfS4ke1NFVF9OQU1FfToyMzgwXG4gICAgZXhlYyBldGNkIC0tbmFtZSAke0hPU1ROQU1FfSBcXFxuICAgICAgICAtLWxpc3Rlbi1wZWVyLXVybHMgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzODAgXFxcbiAgICAgICAgLS1saXN0ZW4tY2xpZW50LXVybHMgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzNzksaHR0cDovLzEyNy4wLjAuMToyMzc5IFxcXG4gICAgICAgIC0tYWR2ZXJ0aXNlLWNsaWVudC11cmxzIGh0dHA6Ly8ke0hPU1ROQU1FfS4ke1NFVF9OQU1FfToyMzc5IFxcXG4gICAgICAgIC0tZGF0YS1kaXIgL3Zhci9ydW4vZXRjZC9kZWZhdWx0LmV0Y2RcbmZpXG5cbiMgZXRjZC1TRVRfSURcblNFVF9JRD0ke0hPU1ROQU1FOjU6JHsjSE9TVE5BTUV9fVxuXG4jIGFkZGluZyBhIG5ldyBtZW1iZXIgdG8gZXhpc3RpbmcgY2x1c3RlciAoYXNzdW1pbmcgYWxsIGluaXRpYWwgcG9kcyBhcmUgYXZhaWxhYmxlKVxuaWYgWyBcIiR7U0VUX0lEfVwiIC1nZSAke0lOSVRJQUxfQ0xVU1RFUl9TSVpFfSBdOyB0aGVuXG4gICAgZXhwb3J0IEVUQ0RDVExfRU5EUE9JTlQ9JChlcHMpXG5cbiAgICAjIG1lbWJlciBhbHJlYWR5IGFkZGVkP1xuICAgIE1FTUJFUl9IQVNIPSQobWVtYmVyX2hhc2gpXG4gICAgaWYgWyAtbiBcIiR7TUVNQkVSX0hBU0h9XCIgXTsgdGhlblxuICAgICAgICAjIHRoZSBtZW1iZXIgaGFzaCBleGlzdHMgYnV0IGZvciBzb21lIHJlYXNvbiBldGNkIGZhaWxlZFxuICAgICAgICAjIGFzIHRoZSBkYXRhZGlyIGhhcyBub3QgYmUgY3JlYXRlZCwgd2UgY2FuIHJlbW92ZSB0aGUgbWVtYmVyXG4gICAgICAgICMgYW5kIHJldHJpZXZlIG5ldyBoYXNoXG4gICAgICAgIGV0Y2RjdGwgbWVtYmVyIHJlbW92ZSAke01FTUJFUl9IQVNIfVxuICAgIGZpXG5cbiAgICBlY2hvIFwiQWRkaW5nIG5ldyBtZW1iZXJcIlxuICAgIGV0Y2RjdGwgbWVtYmVyIGFkZCAke0hPU1ROQU1FfSBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM4MCB8IGdyZXAgXCJeRVRDRF9cIiA+IC92YXIvcnVuL2V0Y2QvbmV3X21lbWJlcl9lbnZzXG5cbiAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW5cbiAgICAgICAgZWNobyBcIkV4aXRpbmdcIlxuICAgICAgICBybSAtZiAvdmFyL3J1bi9ldGNkL25ld19tZW1iZXJfZW52c1xuICAgICAgICBleGl0IDFcbiAgICBmaVxuXG4gICAgY2F0IC92YXIvcnVuL2V0Y2QvbmV3X21lbWJlcl9lbnZzXG4gICAgc291cmNlIC92YXIvcnVuL2V0Y2QvbmV3X21lbWJlcl9lbnZzXG5cbiAgICBjb2xsZWN0X21lbWJlciAmXG5cbiAgICBleGVjIGV0Y2QgLS1uYW1lICR7SE9TVE5BTUV9IFxcXG4gICAgICAgIC0tbGlzdGVuLXBlZXItdXJscyBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM4MCBcXFxuICAgICAgICAtLWxpc3Rlbi1jbGllbnQtdXJscyBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM3OSxodHRwOi8vMTI3LjAuMC4xOjIzNzkgXFxcbiAgICAgICAgLS1hZHZlcnRpc2UtY2xpZW50LXVybHMgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzNzkgXFxcbiAgICAgICAgLS1kYXRhLWRpciAvdmFyL3J1bi9ldGNkL2RlZmF1bHQuZXRjZCBcXFxuICAgICAgICAtLWluaXRpYWwtYWR2ZXJ0aXNlLXBlZXItdXJscyBodHRwOi8vJHtIT1NUTkFNRX0uJHtTRVRfTkFNRX06MjM4MCBcXFxuICAgICAgICAtLWluaXRpYWwtY2x1c3RlciAke0VUQ0RfSU5JVElBTF9DTFVTVEVSfSBcXFxuICAgICAgICAtLWluaXRpYWwtY2x1c3Rlci1zdGF0ZSAke0VUQ0RfSU5JVElBTF9DTFVTVEVSX1NUQVRFfVxuZmlcblxuZm9yIGkgaW4gJChzZXEgMCAkKCgke0lOSVRJQUxfQ0xVU1RFUl9TSVpFfSAtIDEpKSk7IGRvXG4gICAgd2hpbGUgdHJ1ZTsgZG9cbiAgICAgICAgZWNobyBcIldhaXRpbmcgZm9yICR7U0VUX05BTUV9LSR7aX0uJHtTRVRfTkFNRX0gdG8gY29tZSB1cFwiXG4gICAgICAgIHBpbmcgLVcgMSAtYyAxICR7U0VUX05BTUV9LSR7aX0uJHtTRVRfTkFNRX0gPiAvZGV2L251bGwgJiYgYnJlYWtcbiAgICAgICAgc2xlZXAgMXNcbiAgICBkb25lXG5kb25lXG5cblBFRVJTPVwiXCJcbmZvciBpIGluICQoc2VxIDAgJCgoJHtJTklUSUFMX0NMVVNURVJfU0laRX0gLSAxKSkpOyBkb1xuICAgIFBFRVJTPVwiJHtQRUVSU30ke1BFRVJTOissfSR7U0VUX05BTUV9LSR7aX09aHR0cDovLyR7U0VUX05BTUV9LSR7aX0uJHtTRVRfTkFNRX06MjM4MFwiXG5kb25lXG5cbmNvbGxlY3RfbWVtYmVyICZcblxuIyBqb2luIG1lbWJlclxuZXhlYyBldGNkIC0tbmFtZSAke0hPU1ROQU1FfSBcXFxuICAgIC0taW5pdGlhbC1hZHZlcnRpc2UtcGVlci11cmxzIGh0dHA6Ly8ke0hPU1ROQU1FfS4ke1NFVF9OQU1FfToyMzgwIFxcXG4gICAgLS1saXN0ZW4tcGVlci11cmxzIGh0dHA6Ly8ke0hPU1ROQU1FfS4ke1NFVF9OQU1FfToyMzgwIFxcXG4gICAgLS1saXN0ZW4tY2xpZW50LXVybHMgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzNzksaHR0cDovLzEyNy4wLjAuMToyMzc5IFxcXG4gICAgLS1hZHZlcnRpc2UtY2xpZW50LXVybHMgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzNzkgXFxcbiAgICAtLWluaXRpYWwtY2x1c3Rlci10b2tlbiBldGNkLWNsdXN0ZXItMSBcXFxuICAgIC0taW5pdGlhbC1jbHVzdGVyICR7UEVFUlN9IFxcXG4gICAgLS1pbml0aWFsLWNsdXN0ZXItc3RhdGUgbmV3IFxcXG4gICAgLS1kYXRhLWRpciAvdmFyL3J1bi9ldGNkL2RlZmF1bHQuZXRjZFxuIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1ldGNkIiwKICAgICAgICAgICAgIklOSVRJQUxfQ0xVU1RFUl9TSVpFPTMiLAogICAgICAgICAgICAiU0VUX05BTUU9ZXRjZCIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5ldGNkLVthLXowLTldKiQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9ldGNkIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tZXRjZCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJldGNkIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAicmVnaXN0cnkuazhzLmlvL2V0Y2Q6My4yLjI0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iOWQ2NTZkYjdlMmFkZWY0MjhhZTZhOTk0NGQ3NzdkMjQ2MzhlYTY4OGVjMzhkMTk4Y2VmMmM2ZTIxNmY0NGU4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kYzUzZDUyNmNjZTRiZjJhOTc2MTljYzI4YTY3YzcyZGI5NzhhZmJjNjcyNzM2ZGY5ZDEwNGUwZGE5NWRlMDVjIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWIwMDU2NmI3MzgxZjE2M2Y0MjYzODI0MmE4NmU1MTk5M2Y0ODQyNzUyNjEyZDc5YjZiZTdkNmE3YjVkMWZkZjUiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg0NjQ4MzJiMmQ2MzliMGZhMmY4ODA3MWJlYmFjOTQ2Y2IwZjMzMjEwNzhlNGUwMWQyMGNkOGYwNDU3NmIyN2QiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZGFiZmE4MzMzY2Q4YjAzOGQyYmI2NDI0NzE3YzY5MjIxODgyZDI3YTI3Y2UzNmM5OWQ2NjBmNjE5MDJkMDAzOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMzMxZDQ2YjJiZjRjYzhjYzM5YWQ3NDg1MzMxNWU0YjQ1OWVkYTNkZWQ3ZmE3NjQzZDQzOWM1NzIwNmRhMTM5MCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWRjNTNkNTI2Y2NlNGJmMmE5NzYxOWNjMjhhNjdjNzJkYjk3OGFmYmM2NzI3MzZkZjlkMTA0ZTBkYTk1ZGUwNWMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iOWQ2NTZkYjdlMmFkZWY0MjhhZTZhOTk0NGQ3NzdkMjQ2MzhlYTY4OGVjMzhkMTk4Y2VmMmM2ZTIxNmY0NGU4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj04NDY0ODMyYjJkNjM5YjBmYTJmODgwNzFiZWJhYzk0NmNiMGYzMzIxMDc4ZTRlMDFkMjBjZDhmMDQ1NzZiMjdkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjAwNTY2YjczODFmMTYzZjQyNjM4MjQyYTg2ZTUxOTkzZjQ4NDI3NTI2MTJkNzliNmJlN2Q2YTdiNWQxZmRmNSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MzMxZDQ2YjJiZjRjYzhjYzM5YWQ3NDg1MzMxNWU0YjQ1OWVkYTNkZWQ3ZmE3NjQzZDQzOWM1NzIwNmRhMTM5MCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRhYmZhODMzM2NkOGIwMzhkMmJiNjQyNDcxN2M2OTIyMTg4MmQyN2EyN2NlMzZjOTlkNjYwZjYxOTAyZDAwMzgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9ZGM1M2Q1MjZjY2U0YmYyYTk3NjE5Y2MyOGE2N2M3MmRiOTc4YWZiYzY3MjczNmRmOWQxMDRlMGRhOTVkZTA1Yzo4NDY0ODMyYjJkNjM5YjBmYTJmODgwNzFiZWJhYzk0NmNiMGYzMzIxMDc4ZTRlMDFkMjBjZDhmMDQ1NzZiMjdkOjMzMWQ0NmIyYmY0Y2M4Y2MzOWFkNzQ4NTMzMTVlNGI0NTllZGEzZGVkN2ZhNzY0M2Q0MzljNTcyMDZkYTEzOTAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbCiAgICAgICAgIi9iaW4vc2ggLWVjIEVQUz1cIlwiXG5mb3IgaSBpbiAkKHNlcSAwICQoKCR7SU5JVElBTF9DTFVTVEVSX1NJWkV9IC0gMSkpKTsgZG9cbiAgICBFUFM9XCIke0VQU30ke0VQUzorLH1odHRwOi8vJHtTRVRfTkFNRX0tJHtpfS4ke1NFVF9OQU1FfToyMzc5XCJcbmRvbmVcblxuSE9TVE5BTUU9JChob3N0bmFtZSlcblxubWVtYmVyX2hhc2goKSB7XG4gICAgZXRjZGN0bCBtZW1iZXIgbGlzdCB8IGdyZXAgaHR0cDovLyR7SE9TVE5BTUV9LiR7U0VUX05BTUV9OjIzODAgfCBjdXQgLWQnOicgLWYxIHwgY3V0IC1kJ1snIC1mMVxufVxuXG5lY2hvIFwiUmVtb3ZpbmcgJHtIT1NUTkFNRX0gZnJvbSBldGNkIGNsdXN0ZXJcIlxuXG5FVENEQ1RMX0VORFBPSU5UPSR7RVBTfSBldGNkY3RsIG1lbWJlciByZW1vdmUgJChtZW1iZXJfaGFzaClcbmlmIFsgJD8gLWVxIDAgXTsgdGhlblxuICAgICMgUmVtb3ZlIGV2ZXJ5dGhpbmcgb3RoZXJ3aXNlIHRoZSBjbHVzdGVyIHdpbGwgbm8gbG9uZ2VyIHNjYWxlLXVwXG4gICAgcm0gLXJmIC92YXIvcnVuL2V0Y2QvKlxuZmlcbiIKICAgICAgXQogICAgfQogIF0KfQ== spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/conformance/netexecrc.yaml b/src/agent/samples/policy/yaml/kubernetes/conformance/netexecrc.yaml index 6997b25f9117..f5dbd5ccd3cc 100644 --- a/src/agent/samples/policy/yaml/kubernetes/conformance/netexecrc.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/conformance/netexecrc.yaml @@ -10,7 +10,7 @@ spec: labels: app: netexec annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebmV0ZXhlYy1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL2Fnbmhvc3QiLAogICAgICAgICAgICAibmV0ZXhlYyIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9bmV0ZXhlYyIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5uZXRleGVjLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAibmV0ZXhlYyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogInJlZ2lzdHJ5Lms4cy5pby9lMmUtdGVzdC1pbWFnZXMvYWduaG9zdDoyLjMyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD03ZjIyNjM3NDMyNzUwZjUwNTZiZTc5NTM4YzU0MWU3MTc1YTM4OTYxZjgyMjg3OTAwZGMzMTI2NzM1ZTFmYTNhIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8wM2FlYmU5YWUwYTdjNTg5OWM0OTUyMGZiMGNkNjhlMDA5MmY4MDEwMGIzM2E1ZGRhMjIxOTViNmNjMDcxNDM2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWNlM2ZiNDQ2MjkzNzNhM2ZhMThhNDI3YWIyZTU5ZmUwM2FkNTU0OWZiNGUzN2ZlMjMwOGU5YjY3NTJkNzQ0YTciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzNmMDBjZWU4NTQ2OGUyYTAxY2RmMTAwMTQ1ZDcxNzFlODZiODlkOGI3Mzc1MjJhZjcxM2NiODJiYzZiYWQyM2MiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZGNiY2Y1ODcwM2U5MzAxYTM0ZWYzYTZlMjgxYWIxNzFiNTNhOTVhNjc5MTBlNWJhOGEzNWUwZmQwZWZiMWZhOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNTMxOTE4M2VlNTg2MGZlNDdkYzQzOTAxMTFmM2ExMjBiOTRkMmU0ZDRlNTY5MWQxNDhlYWUzNjUxZWZkMGJiZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NWM1ZTgzZTBkYTBjMTVkMTJmNGZmYzY0NTA5YjcxZTRiNDk5MzlmMjQ3NTI5NTM1OTU1M2QzN2VhNWNiZjVlIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNmRjN2EwOWNmODUyZDhkYTE0NDMzYzNhNTUxN2JlMWUxMjY0M2YyZDZlZWNhYjEyYjAyZGMxOWY2MjM5YjI2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTZhMTMyMTRjYjAyMTE5MmRjYThmN2E1ZDMyMDRhMWQ5MzRkZGQyOWQ0MjZkMDFlYWE0YzBmODdiNTA0NDJjZjkiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzE3ZmMxZjg2ODcyNTNmNTExODY3MDE4YWQ2Nzk0Yzg0ZjhmZWFiMGVmZDZhNDkwYWUwNjVhYzZlMWY4YzI3NjEiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MTIzMWQ5YjVkMWIwNzBhMDkwZDhmYTA3NGI4NGMxMGU5ZTgzYmFmNWQ3YzQxNmE1ODhhY2RiOTIwYzUxMzQwYyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMDMzNjZhNzMzZDJiMzkyZGU5YWUzYTBhZGI2Mzc5OTAzM2I5MjEyZmE3NTBjYzU0OTQ3Njc1ZjBlYzQ5MDYwMCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lMmFmY2Q5OTM2NjJiM2JjMjYwNDgyN2RlYzI2ZGUzMDg3ZmQxNjlmMDM4MjgzNTNmZjU2Mzk5NDY1OWMzNWVlIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy82MDY3Y2Y0NTA0NDU3Y2EyYWFlZTgzZTA5MmIyY2Q4YTEzYzQ3ZGM4YjM3NTg1YmFlZDIyNWI3ZWNlZTQyNWE2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWJmZjcxNGU0NzAxZWRjZjQyMTI4MGFmNjRmMDRiZjY4MTllMGVmOTFjMjVkYmFhYzdjYmY1YzJiOGFiNWIwNWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2VjMDcxNGRiOWEyOTYxMjBlZWIwZDEzNDk0ZWQ0OWUwMGRmNWQzNzc3ZWU2YWM1ODBmM2I2ZjMyMDEwYmNjNzYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NDdiNjY5ZTVhNzMwM2NkMTNiYzhmYmQ5MjRlNDJhMjVhYmVkM2FlMWFmZmY5YjVjNjI5MjZmN2NlNzdiMDU0YSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMTkwNDczYTdhZjkxMTI1YzJhYWE4MzllZGE2MTY5YmJhNTVkZGEzYjA4M2FhNjcxYjhmMGYyYjRkNzdhOTM1OSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzAzYWViZTlhZTBhN2M1ODk5YzQ5NTIwZmIwY2Q2OGUwMDkyZjgwMTAwYjMzYTVkZGEyMjE5NWI2Y2MwNzE0MzYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD03ZjIyNjM3NDMyNzUwZjUwNTZiZTc5NTM4YzU0MWU3MTc1YTM4OTYxZjgyMjg3OTAwZGMzMTI2NzM1ZTFmYTNhIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8zZjAwY2VlODU0NjhlMmEwMWNkZjEwMDE0NWQ3MTcxZTg2Yjg5ZDhiNzM3NTIyYWY3MTNjYjgyYmM2YmFkMjNjLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Y2UzZmI0NDYyOTM3M2EzZmExOGE0MjdhYjJlNTlmZTAzYWQ1NTQ5ZmI0ZTM3ZmUyMzA4ZTliNjc1MmQ3NDRhNyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNTMxOTE4M2VlNTg2MGZlNDdkYzQzOTAxMTFmM2ExMjBiOTRkMmU0ZDRlNTY5MWQxNDhlYWUzNjUxZWZkMGJiZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRjYmNmNTg3MDNlOTMwMWEzNGVmM2E2ZTI4MWFiMTcxYjUzYTk1YTY3OTEwZTViYThhMzVlMGZkMGVmYjFmYTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzI2ZGM3YTA5Y2Y4NTJkOGRhMTQ0MzNjM2E1NTE3YmUxZTEyNjQzZjJkNmVlY2FiMTJiMDJkYzE5ZjYyMzliMjYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NWM1ZTgzZTBkYTBjMTVkMTJmNGZmYzY0NTA5YjcxZTRiNDk5MzlmMjQ3NTI5NTM1OTU1M2QzN2VhNWNiZjVlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8xN2ZjMWY4Njg3MjUzZjUxMTg2NzAxOGFkNjc5NGM4NGY4ZmVhYjBlZmQ2YTQ5MGFlMDY1YWM2ZTFmOGMyNzYxLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NmExMzIxNGNiMDIxMTkyZGNhOGY3YTVkMzIwNGExZDkzNGRkZDI5ZDQyNmQwMWVhYTRjMGY4N2I1MDQ0MmNmOSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMDMzNjZhNzMzZDJiMzkyZGU5YWUzYTBhZGI2Mzc5OTAzM2I5MjEyZmE3NTBjYzU0OTQ3Njc1ZjBlYzQ5MDYwMCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTEyMzFkOWI1ZDFiMDcwYTA5MGQ4ZmEwNzRiODRjMTBlOWU4M2JhZjVkN2M0MTZhNTg4YWNkYjkyMGM1MTM0MGMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzYwNjdjZjQ1MDQ0NTdjYTJhYWVlODNlMDkyYjJjZDhhMTNjNDdkYzhiMzc1ODViYWVkMjI1YjdlY2VlNDI1YTYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lMmFmY2Q5OTM2NjJiM2JjMjYwNDgyN2RlYzI2ZGUzMDg3ZmQxNjlmMDM4MjgzNTNmZjU2Mzk5NDY1OWMzNWVlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9lYzA3MTRkYjlhMjk2MTIwZWViMGQxMzQ5NGVkNDllMDBkZjVkMzc3N2VlNmFjNTgwZjNiNmYzMjAxMGJjYzc2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YmZmNzE0ZTQ3MDFlZGNmNDIxMjgwYWY2NGYwNGJmNjgxOWUwZWY5MWMyNWRiYWFjN2NiZjVjMmI4YWI1YjA1ZCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMTkwNDczYTdhZjkxMTI1YzJhYWE4MzllZGE2MTY5YmJhNTVkZGEzYjA4M2FhNjcxYjhmMGYyYjRkNzdhOTM1OSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTQ3YjY2OWU1YTczMDNjZDEzYmM4ZmJkOTI0ZTQyYTI1YWJlZDNhZTFhZmZmOWI1YzYyOTI2ZjdjZTc3YjA1NGEiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMDNhZWJlOWFlMGE3YzU4OTljNDk1MjBmYjBjZDY4ZTAwOTJmODAxMDBiMzNhNWRkYTIyMTk1YjZjYzA3MTQzNjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8zZjAwY2VlODU0NjhlMmEwMWNkZjEwMDE0NWQ3MTcxZTg2Yjg5ZDhiNzM3NTIyYWY3MTNjYjgyYmM2YmFkMjNjOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzUzMTkxODNlZTU4NjBmZTQ3ZGM0MzkwMTExZjNhMTIwYjk0ZDJlNGQ0ZTU2OTFkMTQ4ZWFlMzY1MWVmZDBiYmQ6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjZkYzdhMDljZjg1MmQ4ZGExNDQzM2MzYTU1MTdiZTFlMTI2NDNmMmQ2ZWVjYWIxMmIwMmRjMTlmNjIzOWIyNjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8xN2ZjMWY4Njg3MjUzZjUxMTg2NzAxOGFkNjc5NGM4NGY4ZmVhYjBlZmQ2YTQ5MGFlMDY1YWM2ZTFmOGMyNzYxOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzAzMzY2YTczM2QyYjM5MmRlOWFlM2EwYWRiNjM3OTkwMzNiOTIxMmZhNzUwY2M1NDk0NzY3NWYwZWM0OTA2MDA6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNjA2N2NmNDUwNDQ1N2NhMmFhZWU4M2UwOTJiMmNkOGExM2M0N2RjOGIzNzU4NWJhZWQyMjViN2VjZWU0MjVhNjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lYzA3MTRkYjlhMjk2MTIwZWViMGQxMzQ5NGVkNDllMDBkZjVkMzc3N2VlNmFjNTgwZjNiNmYzMjAxMGJjYzc2Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzE5MDQ3M2E3YWY5MTEyNWMyYWFhODM5ZWRhNjE2OWJiYTU1ZGRhM2IwODNhYTY3MWI4ZjBmMmI0ZDc3YTkzNTkiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebmV0ZXhlYy1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL2Fnbmhvc3QiLAogICAgICAgICAgICAibmV0ZXhlYyIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9bmV0ZXhlYyIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5uZXRleGVjLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAibmV0ZXhlYyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogInJlZ2lzdHJ5Lms4cy5pby9lMmUtdGVzdC1pbWFnZXMvYWduaG9zdDoyLjMyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD03ZjIyNjM3NDMyNzUwZjUwNTZiZTc5NTM4YzU0MWU3MTc1YTM4OTYxZjgyMjg3OTAwZGMzMTI2NzM1ZTFmYTNhIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8wM2FlYmU5YWUwYTdjNTg5OWM0OTUyMGZiMGNkNjhlMDA5MmY4MDEwMGIzM2E1ZGRhMjIxOTViNmNjMDcxNDM2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWNlM2ZiNDQ2MjkzNzNhM2ZhMThhNDI3YWIyZTU5ZmUwM2FkNTU0OWZiNGUzN2ZlMjMwOGU5YjY3NTJkNzQ0YTciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzNmMDBjZWU4NTQ2OGUyYTAxY2RmMTAwMTQ1ZDcxNzFlODZiODlkOGI3Mzc1MjJhZjcxM2NiODJiYzZiYWQyM2MiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZGNiY2Y1ODcwM2U5MzAxYTM0ZWYzYTZlMjgxYWIxNzFiNTNhOTVhNjc5MTBlNWJhOGEzNWUwZmQwZWZiMWZhOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNTMxOTE4M2VlNTg2MGZlNDdkYzQzOTAxMTFmM2ExMjBiOTRkMmU0ZDRlNTY5MWQxNDhlYWUzNjUxZWZkMGJiZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NWM1ZTgzZTBkYTBjMTVkMTJmNGZmYzY0NTA5YjcxZTRiNDk5MzlmMjQ3NTI5NTM1OTU1M2QzN2VhNWNiZjVlIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNmRjN2EwOWNmODUyZDhkYTE0NDMzYzNhNTUxN2JlMWUxMjY0M2YyZDZlZWNhYjEyYjAyZGMxOWY2MjM5YjI2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTZhMTMyMTRjYjAyMTE5MmRjYThmN2E1ZDMyMDRhMWQ5MzRkZGQyOWQ0MjZkMDFlYWE0YzBmODdiNTA0NDJjZjkiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzE3ZmMxZjg2ODcyNTNmNTExODY3MDE4YWQ2Nzk0Yzg0ZjhmZWFiMGVmZDZhNDkwYWUwNjVhYzZlMWY4YzI3NjEiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MTIzMWQ5YjVkMWIwNzBhMDkwZDhmYTA3NGI4NGMxMGU5ZTgzYmFmNWQ3YzQxNmE1ODhhY2RiOTIwYzUxMzQwYyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMDMzNjZhNzMzZDJiMzkyZGU5YWUzYTBhZGI2Mzc5OTAzM2I5MjEyZmE3NTBjYzU0OTQ3Njc1ZjBlYzQ5MDYwMCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lMmFmY2Q5OTM2NjJiM2JjMjYwNDgyN2RlYzI2ZGUzMDg3ZmQxNjlmMDM4MjgzNTNmZjU2Mzk5NDY1OWMzNWVlIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy82MDY3Y2Y0NTA0NDU3Y2EyYWFlZTgzZTA5MmIyY2Q4YTEzYzQ3ZGM4YjM3NTg1YmFlZDIyNWI3ZWNlZTQyNWE2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWJmZjcxNGU0NzAxZWRjZjQyMTI4MGFmNjRmMDRiZjY4MTllMGVmOTFjMjVkYmFhYzdjYmY1YzJiOGFiNWIwNWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2VjMDcxNGRiOWEyOTYxMjBlZWIwZDEzNDk0ZWQ0OWUwMGRmNWQzNzc3ZWU2YWM1ODBmM2I2ZjMyMDEwYmNjNzYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NDdiNjY5ZTVhNzMwM2NkMTNiYzhmYmQ5MjRlNDJhMjVhYmVkM2FlMWFmZmY5YjVjNjI5MjZmN2NlNzdiMDU0YSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMTkwNDczYTdhZjkxMTI1YzJhYWE4MzllZGE2MTY5YmJhNTVkZGEzYjA4M2FhNjcxYjhmMGYyYjRkNzdhOTM1OSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTAzYWViZTlhZTBhN2M1ODk5YzQ5NTIwZmIwY2Q2OGUwMDkyZjgwMTAwYjMzYTVkZGEyMjE5NWI2Y2MwNzE0MzYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD03ZjIyNjM3NDMyNzUwZjUwNTZiZTc5NTM4YzU0MWU3MTc1YTM4OTYxZjgyMjg3OTAwZGMzMTI2NzM1ZTFmYTNhIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0zZjAwY2VlODU0NjhlMmEwMWNkZjEwMDE0NWQ3MTcxZTg2Yjg5ZDhiNzM3NTIyYWY3MTNjYjgyYmM2YmFkMjNjLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Y2UzZmI0NDYyOTM3M2EzZmExOGE0MjdhYjJlNTlmZTAzYWQ1NTQ5ZmI0ZTM3ZmUyMzA4ZTliNjc1MmQ3NDRhNyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NTMxOTE4M2VlNTg2MGZlNDdkYzQzOTAxMTFmM2ExMjBiOTRkMmU0ZDRlNTY5MWQxNDhlYWUzNjUxZWZkMGJiZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRjYmNmNTg3MDNlOTMwMWEzNGVmM2E2ZTI4MWFiMTcxYjUzYTk1YTY3OTEwZTViYThhMzVlMGZkMGVmYjFmYTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTI2ZGM3YTA5Y2Y4NTJkOGRhMTQ0MzNjM2E1NTE3YmUxZTEyNjQzZjJkNmVlY2FiMTJiMDJkYzE5ZjYyMzliMjYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NWM1ZTgzZTBkYTBjMTVkMTJmNGZmYzY0NTA5YjcxZTRiNDk5MzlmMjQ3NTI5NTM1OTU1M2QzN2VhNWNiZjVlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0xN2ZjMWY4Njg3MjUzZjUxMTg2NzAxOGFkNjc5NGM4NGY4ZmVhYjBlZmQ2YTQ5MGFlMDY1YWM2ZTFmOGMyNzYxLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NmExMzIxNGNiMDIxMTkyZGNhOGY3YTVkMzIwNGExZDkzNGRkZDI5ZDQyNmQwMWVhYTRjMGY4N2I1MDQ0MmNmOSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MDMzNjZhNzMzZDJiMzkyZGU5YWUzYTBhZGI2Mzc5OTAzM2I5MjEyZmE3NTBjYzU0OTQ3Njc1ZjBlYzQ5MDYwMCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTEyMzFkOWI1ZDFiMDcwYTA5MGQ4ZmEwNzRiODRjMTBlOWU4M2JhZjVkN2M0MTZhNTg4YWNkYjkyMGM1MTM0MGMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTYwNjdjZjQ1MDQ0NTdjYTJhYWVlODNlMDkyYjJjZDhhMTNjNDdkYzhiMzc1ODViYWVkMjI1YjdlY2VlNDI1YTYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lMmFmY2Q5OTM2NjJiM2JjMjYwNDgyN2RlYzI2ZGUzMDg3ZmQxNjlmMDM4MjgzNTNmZjU2Mzk5NDY1OWMzNWVlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1lYzA3MTRkYjlhMjk2MTIwZWViMGQxMzQ5NGVkNDllMDBkZjVkMzc3N2VlNmFjNTgwZjNiNmYzMjAxMGJjYzc2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YmZmNzE0ZTQ3MDFlZGNmNDIxMjgwYWY2NGYwNGJmNjgxOWUwZWY5MWMyNWRiYWFjN2NiZjVjMmI4YWI1YjA1ZCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MTkwNDczYTdhZjkxMTI1YzJhYWE4MzllZGE2MTY5YmJhNTVkZGEzYjA4M2FhNjcxYjhmMGYyYjRkNzdhOTM1OSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTQ3YjY2OWU1YTczMDNjZDEzYmM4ZmJkOTI0ZTQyYTI1YWJlZDNhZTFhZmZmOWI1YzYyOTI2ZjdjZTc3YjA1NGEiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9MDNhZWJlOWFlMGE3YzU4OTljNDk1MjBmYjBjZDY4ZTAwOTJmODAxMDBiMzNhNWRkYTIyMTk1YjZjYzA3MTQzNjozZjAwY2VlODU0NjhlMmEwMWNkZjEwMDE0NWQ3MTcxZTg2Yjg5ZDhiNzM3NTIyYWY3MTNjYjgyYmM2YmFkMjNjOjUzMTkxODNlZTU4NjBmZTQ3ZGM0MzkwMTExZjNhMTIwYjk0ZDJlNGQ0ZTU2OTFkMTQ4ZWFlMzY1MWVmZDBiYmQ6MjZkYzdhMDljZjg1MmQ4ZGExNDQzM2MzYTU1MTdiZTFlMTI2NDNmMmQ2ZWVjYWIxMmIwMmRjMTlmNjIzOWIyNjoxN2ZjMWY4Njg3MjUzZjUxMTg2NzAxOGFkNjc5NGM4NGY4ZmVhYjBlZmQ2YTQ5MGFlMDY1YWM2ZTFmOGMyNzYxOjAzMzY2YTczM2QyYjM5MmRlOWFlM2EwYWRiNjM3OTkwMzNiOTIxMmZhNzUwY2M1NDk0NzY3NWYwZWM0OTA2MDA6NjA2N2NmNDUwNDQ1N2NhMmFhZWU4M2UwOTJiMmNkOGExM2M0N2RjOGIzNzU4NWJhZWQyMjViN2VjZWU0MjVhNjplYzA3MTRkYjlhMjk2MTIwZWViMGQxMzQ5NGVkNDllMDBkZjVkMzc3N2VlNmFjNTgwZjNiNmYzMjAxMGJjYzc2OjE5MDQ3M2E3YWY5MTEyNWMyYWFhODM5ZWRhNjE2OWJiYTU1ZGRhM2IwODNhYTY3MWI4ZjBmMmI0ZDc3YTkzNTkiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/fixtures/appsv1deployment.yaml b/src/agent/samples/policy/yaml/kubernetes/fixtures/appsv1deployment.yaml index 6c586a5658cb..8cd294730387 100644 --- a/src/agent/samples/policy/yaml/kubernetes/fixtures/appsv1deployment.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/fixtures/appsv1deployment.yaml @@ -15,7 +15,7 @@ spec: labels: name: nginx annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeZXhwb3NlLXRlc3QtZGVwbG95bWVudC1bYS16MC05XSotW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIm5naW54IiwKICAgICAgICAgICAgIi1nIiwKICAgICAgICAgICAgImRhZW1vbiBvZmY7IgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJuZ2lueF9jb25mX2ZpbGU9bmdpbnguY29uZiIsCiAgICAgICAgICAgICJkZWZhdWx0X2NvbmZfZmlsZT1kZWZhdWx0LmNvbmYiLAogICAgICAgICAgICAiSE9TVE5BTUU9ZXhwb3NlLXRlc3QtZGVwbG95bWVudCIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5leHBvc2UtdGVzdC1kZXBsb3ltZW50LVthLXowLTldKi1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogIm5naW54IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vY2JsLW1hcmluZXIvYmFzZS9uZ2lueDoxLjIyLjEtNS1jbTIuMC4yMDIzMDYwOS1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ1ZmY3MmEzODkxODRmMjg0NzlmNjVhYzU1YzUxZjljMmRhOTRhZWI4NTA0OGY2ZDgxNDRiMzIwYzk4NjA5ZDYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0NiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgwNDIxMmFiYjE5YzkzYWEwMzY5ZDExY2MzYjgzNmQwZjkwY2M0OTg2NzMwMDVhMGExYzhiNjRiMzk1Yjc4OTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwNDk3NGIxYWRiNjNjYzIzMDVlNjEwOWZmMTgxMTc5OTBkNGJlZGZlY2Q1OTFlY2U4ZDEyNTBjYTUyMDNmOGYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2UyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQ6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2RmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDY6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NDovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeZXhwb3NlLXRlc3QtZGVwbG95bWVudC1bYS16MC05XSotW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIm5naW54IiwKICAgICAgICAgICAgIi1nIiwKICAgICAgICAgICAgImRhZW1vbiBvZmY7IgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJuZ2lueF9jb25mX2ZpbGU9bmdpbnguY29uZiIsCiAgICAgICAgICAgICJkZWZhdWx0X2NvbmZfZmlsZT1kZWZhdWx0LmNvbmYiLAogICAgICAgICAgICAiSE9TVE5BTUU9ZXhwb3NlLXRlc3QtZGVwbG95bWVudCIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5leHBvc2UtdGVzdC1kZXBsb3ltZW50LVthLXowLTldKi1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogIm5naW54IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vY2JsLW1hcmluZXIvYmFzZS9uZ2lueDoxLjIyLjEtNS1jbTIuMC4yMDIzMDYwOS1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ1ZmY3MmEzODkxODRmMjg0NzlmNjVhYzU1YzUxZjljMmRhOTRhZWI4NTA0OGY2ZDgxNDRiMzIwYzk4NjA5ZDYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0NiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9N2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgwNDIxMmFiYjE5YzkzYWEwMzY5ZDExY2MzYjgzNmQwZjkwY2M0OTg2NzMwMDVhMGExYzhiNjRiMzk1Yjc4OTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwNDk3NGIxYWRiNjNjYzIzMDVlNjEwOWZmMTgxMTc5OTBkNGJlZGZlY2Q1OTFlY2U4ZDEyNTBjYTUyMDNmOGYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPWUyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQ6N2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NTo4NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyOmRmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDY6MjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NDo3MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/fixtures/daemon.yaml b/src/agent/samples/policy/yaml/kubernetes/fixtures/daemon.yaml index bc1e1327d2e5..3cc9841c2db9 100644 --- a/src/agent/samples/policy/yaml/kubernetes/fixtures/daemon.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/fixtures/daemon.yaml @@ -15,7 +15,7 @@ spec: daemon: prom-node-exp katacontainers.io/kata-runtime: "true" annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecHJvbWV0aGV1cy1ub2RlLWV4cG9ydGVyLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICJzaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9cHJvbWV0aGV1cy1ub2RlLWV4cG9ydGVyIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXnByb21ldGhldXMtbm9kZS1leHBvcnRlci1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImMiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzksdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecHJvbWV0aGV1cy1ub2RlLWV4cG9ydGVyLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICJzaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9cHJvbWV0aGV1cy1ub2RlLWV4cG9ydGVyIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXnByb21ldGhldXMtbm9kZS1leHBvcnRlci1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImMiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzksdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5OjI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/fixtures/deploy-clientside.yaml b/src/agent/samples/policy/yaml/kubernetes/fixtures/deploy-clientside.yaml index 55cee70c5de9..0e689b095b40 100644 --- a/src/agent/samples/policy/yaml/kubernetes/fixtures/deploy-clientside.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/fixtures/deploy-clientside.yaml @@ -16,7 +16,7 @@ spec: labels: name: nginx annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebmdpbngtZGVwbG95bWVudC1bYS16MC05XSotW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIm5naW54IiwKICAgICAgICAgICAgIi1nIiwKICAgICAgICAgICAgImRhZW1vbiBvZmY7IgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJuZ2lueF9jb25mX2ZpbGU9bmdpbnguY29uZiIsCiAgICAgICAgICAgICJkZWZhdWx0X2NvbmZfZmlsZT1kZWZhdWx0LmNvbmYiLAogICAgICAgICAgICAiSE9TVE5BTUU9bmdpbngtZGVwbG95bWVudCIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5uZ2lueC1kZXBsb3ltZW50LVthLXowLTldKi1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogIm5naW54IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vY2JsLW1hcmluZXIvYmFzZS9uZ2lueDoxLjIyLjEtNS1jbTIuMC4yMDIzMDYwOS1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ1ZmY3MmEzODkxODRmMjg0NzlmNjVhYzU1YzUxZjljMmRhOTRhZWI4NTA0OGY2ZDgxNDRiMzIwYzk4NjA5ZDYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0NiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgwNDIxMmFiYjE5YzkzYWEwMzY5ZDExY2MzYjgzNmQwZjkwY2M0OTg2NzMwMDVhMGExYzhiNjRiMzk1Yjc4OTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwNDk3NGIxYWRiNjNjYzIzMDVlNjEwOWZmMTgxMTc5OTBkNGJlZGZlY2Q1OTFlY2U4ZDEyNTBjYTUyMDNmOGYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2UyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQ6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2RmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDY6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NDovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebmdpbngtZGVwbG95bWVudC1bYS16MC05XSotW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIm5naW54IiwKICAgICAgICAgICAgIi1nIiwKICAgICAgICAgICAgImRhZW1vbiBvZmY7IgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJuZ2lueF9jb25mX2ZpbGU9bmdpbnguY29uZiIsCiAgICAgICAgICAgICJkZWZhdWx0X2NvbmZfZmlsZT1kZWZhdWx0LmNvbmYiLAogICAgICAgICAgICAiSE9TVE5BTUU9bmdpbngtZGVwbG95bWVudCIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5uZ2lueC1kZXBsb3ltZW50LVthLXowLTldKi1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogIm5naW54IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vY2JsLW1hcmluZXIvYmFzZS9uZ2lueDoxLjIyLjEtNS1jbTIuMC4yMDIzMDYwOS1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ1ZmY3MmEzODkxODRmMjg0NzlmNjVhYzU1YzUxZjljMmRhOTRhZWI4NTA0OGY2ZDgxNDRiMzIwYzk4NjA5ZDYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0NiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9N2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgwNDIxMmFiYjE5YzkzYWEwMzY5ZDExY2MzYjgzNmQwZjkwY2M0OTg2NzMwMDVhMGExYzhiNjRiMzk1Yjc4OTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwNDk3NGIxYWRiNjNjYzIzMDVlNjEwOWZmMTgxMTc5OTBkNGJlZGZlY2Q1OTFlY2U4ZDEyNTBjYTUyMDNmOGYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPWUyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQ6N2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NTo4NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyOmRmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDY6MjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NDo3MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/fixtures/job.yaml b/src/agent/samples/policy/yaml/kubernetes/fixtures/job.yaml index 7f6ee5d670e0..b56c05b3b801 100644 --- a/src/agent/samples/policy/yaml/kubernetes/fixtures/job.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/fixtures/job.yaml @@ -8,7 +8,7 @@ spec: metadata: name: pi annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecGktW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgInBlcmwiLAogICAgICAgICAgICAiLU1iaWdudW09YnBpIiwKICAgICAgICAgICAgIi13bGUiLAogICAgICAgICAgICAicHJpbnQgYnBpKDIwMDApIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1waSIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5waS1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogInBpIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAicGVybDo1LjM0LjAiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTA0MjBkYzIzOGI5NzUxZmUxMzI1YTU2ZWU3NTBjMjE1OTczZmNhMDllMDdkYjIwNzUyN2YxMDIyNjM2NTQ2ZTAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzMyZmRiNmJkNTZjMjdlYTlhYzZiY2ZlNTc4NzQ2MTgwZTM1M2NiYzI1ZTMxMDE2YzA1MTQyNmE3Mzk1NWY0NmYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NzVmMzcxNjk4NWVkYWY4NjhiNDc5OTkwYTlhNDViYmZiNWEyOWJmNDJmYmNmODE5MzI1ODM1ZWU0NWY3NzQ3OSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjUwNjRkZmRlMjI4ZTgwOWJmOGMyMDdlYjhlZDI2NzcwNDU4MjNmOThhY2Y3MjdiNzUyZTdkYTYyYmFmOGY3MyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04ZDg3Yjg0NzUwZmIyYjFjMjVlOTkzMmJjNGZiOWQ3YzFiNTYxZDJhNGZiYTA4ZDgwZmQ4OGQ3OTZiMTgwNjY2IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9mM2ExOWYyZmIxOTM3N2IyMzc5N2U2MmFlMjVjZGI2ZjY3MWE4Yjk0YzljY2MzYzdkYzVmMGRiMDZiMDU2NTUxIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTVhZTZmM2Q3ODY3MjRlMDYyZjc0MGEyZGRiZGFkODM0ZDYxNzQzM2VmNzE4MDQ3MDg3NDlmMzdjYjBlMGM5YTMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzM2ZmZlMmJlNzdlMDhjMTQ3ZGIxMTVjNjc1MGYzZjJlNmZjMmI5ZWI3Y2JkMjA5NTBhMGM2YWU4NDM0Mzg3Y2IiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Y2Y0MmZjY2Y3N2I0ZDM1NzI5YWM0ZWU2MThhZTE3ZTg5MDA5MDQzMWZiZmViNjAzNTQ4OTliOGY5MTQ3NWQ5NiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYTU2MzNjNGZiNjExOTMwNzliY2FiMzk3ZWU5ZWExODRlNWE4YjRiY2JmMjBjMjdhZjExYTM3NTI1ZWRmNWI3YSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lOGE3NDlmM2ZhZDU0YTdmYTVkMGEwYjMxYjdhNTExNTMzMWY4ZGJjOGIyZDkwOTkwODI0ZThjOTc1NzZlZmEzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9mOWU4YTVlNjRkNDI5ZWZjMGIzM2ZhYTUxYjk1ZGZlMjJlZWMwYjBjOTVlMTI1MGIzYWVhYzc2MWY4OGUzYzM1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWFjMjhmZmUwMzk5ODA0NjVmYWVjN2E4N2VlOWNhZDQ0MTg1ZTJjZTRmY2EzOGIzYzJhODkwMzcwMDk3N2JjNWMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2I5ZWQ0NzE3MDE0OGI4NWRlMzY1MTlmOTI4NDM1YjhmMDU4YjBkN2VlNWU2MDljZjRmYmIyOTljMmQ4NjgwZGEiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8zMmZkYjZiZDU2YzI3ZWE5YWM2YmNmZTU3ODc0NjE4MGUzNTNjYmMyNWUzMTAxNmMwNTE0MjZhNzM5NTVmNDZmLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDQyMGRjMjM4Yjk3NTFmZTEzMjVhNTZlZTc1MGMyMTU5NzNmY2EwOWUwN2RiMjA3NTI3ZjEwMjI2MzY1NDZlMCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMjUwNjRkZmRlMjI4ZTgwOWJmOGMyMDdlYjhlZDI2NzcwNDU4MjNmOThhY2Y3MjdiNzUyZTdkYTYyYmFmOGY3Myx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTc1ZjM3MTY5ODVlZGFmODY4YjQ3OTk5MGE5YTQ1YmJmYjVhMjliZjQyZmJjZjgxOTMyNTgzNWVlNDVmNzc0NzkiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2YzYTE5ZjJmYjE5Mzc3YjIzNzk3ZTYyYWUyNWNkYjZmNjcxYThiOTRjOWNjYzNjN2RjNWYwZGIwNmIwNTY1NTEsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04ZDg3Yjg0NzUwZmIyYjFjMjVlOTkzMmJjNGZiOWQ3YzFiNTYxZDJhNGZiYTA4ZDgwZmQ4OGQ3OTZiMTgwNjY2IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8zNmZmZTJiZTc3ZTA4YzE0N2RiMTE1YzY3NTBmM2YyZTZmYzJiOWViN2NiZDIwOTUwYTBjNmFlODQzNDM4N2NiLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NWFlNmYzZDc4NjcyNGUwNjJmNzQwYTJkZGJkYWQ4MzRkNjE3NDMzZWY3MTgwNDcwODc0OWYzN2NiMGUwYzlhMyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvYTU2MzNjNGZiNjExOTMwNzliY2FiMzk3ZWU5ZWExODRlNWE4YjRiY2JmMjBjMjdhZjExYTM3NTI1ZWRmNWI3YSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWNmNDJmY2NmNzdiNGQzNTcyOWFjNGVlNjE4YWUxN2U4OTAwOTA0MzFmYmZlYjYwMzU0ODk5YjhmOTE0NzVkOTYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2Y5ZThhNWU2NGQ0MjllZmMwYjMzZmFhNTFiOTVkZmUyMmVlYzBiMGM5NWUxMjUwYjNhZWFjNzYxZjg4ZTNjMzUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lOGE3NDlmM2ZhZDU0YTdmYTVkMGEwYjMxYjdhNTExNTMzMWY4ZGJjOGIyZDkwOTkwODI0ZThjOTc1NzZlZmEzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9iOWVkNDcxNzAxNDhiODVkZTM2NTE5ZjkyODQzNWI4ZjA1OGIwZDdlZTVlNjA5Y2Y0ZmJiMjk5YzJkODY4MGRhLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YWMyOGZmZTAzOTk4MDQ2NWZhZWM3YTg3ZWU5Y2FkNDQxODVlMmNlNGZjYTM4YjNjMmE4OTAzNzAwOTc3YmM1YyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8zMmZkYjZiZDU2YzI3ZWE5YWM2YmNmZTU3ODc0NjE4MGUzNTNjYmMyNWUzMTAxNmMwNTE0MjZhNzM5NTVmNDZmOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI1MDY0ZGZkZTIyOGU4MDliZjhjMjA3ZWI4ZWQyNjc3MDQ1ODIzZjk4YWNmNzI3Yjc1MmU3ZGE2MmJhZjhmNzM6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZjNhMTlmMmZiMTkzNzdiMjM3OTdlNjJhZTI1Y2RiNmY2NzFhOGI5NGM5Y2NjM2M3ZGM1ZjBkYjA2YjA1NjU1MTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8zNmZmZTJiZTc3ZTA4YzE0N2RiMTE1YzY3NTBmM2YyZTZmYzJiOWViN2NiZDIwOTUwYTBjNmFlODQzNDM4N2NiOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2E1NjMzYzRmYjYxMTkzMDc5YmNhYjM5N2VlOWVhMTg0ZTVhOGI0YmNiZjIwYzI3YWYxMWEzNzUyNWVkZjViN2E6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZjllOGE1ZTY0ZDQyOWVmYzBiMzNmYWE1MWI5NWRmZTIyZWVjMGIwYzk1ZTEyNTBiM2FlYWM3NjFmODhlM2MzNTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9iOWVkNDcxNzAxNDhiODVkZTM2NTE5ZjkyODQzNWI4ZjA1OGIwZDdlZTVlNjA5Y2Y0ZmJiMjk5YzJkODY4MGRhIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecGktW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgInBlcmwiLAogICAgICAgICAgICAiLU1iaWdudW09YnBpIiwKICAgICAgICAgICAgIi13bGUiLAogICAgICAgICAgICAicHJpbnQgYnBpKDIwMDApIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1waSIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5waS1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogInBpIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAicGVybDo1LjM0LjAiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTA0MjBkYzIzOGI5NzUxZmUxMzI1YTU2ZWU3NTBjMjE1OTczZmNhMDllMDdkYjIwNzUyN2YxMDIyNjM2NTQ2ZTAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzMyZmRiNmJkNTZjMjdlYTlhYzZiY2ZlNTc4NzQ2MTgwZTM1M2NiYzI1ZTMxMDE2YzA1MTQyNmE3Mzk1NWY0NmYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NzVmMzcxNjk4NWVkYWY4NjhiNDc5OTkwYTlhNDViYmZiNWEyOWJmNDJmYmNmODE5MzI1ODM1ZWU0NWY3NzQ3OSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjUwNjRkZmRlMjI4ZTgwOWJmOGMyMDdlYjhlZDI2NzcwNDU4MjNmOThhY2Y3MjdiNzUyZTdkYTYyYmFmOGY3MyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04ZDg3Yjg0NzUwZmIyYjFjMjVlOTkzMmJjNGZiOWQ3YzFiNTYxZDJhNGZiYTA4ZDgwZmQ4OGQ3OTZiMTgwNjY2IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9mM2ExOWYyZmIxOTM3N2IyMzc5N2U2MmFlMjVjZGI2ZjY3MWE4Yjk0YzljY2MzYzdkYzVmMGRiMDZiMDU2NTUxIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTVhZTZmM2Q3ODY3MjRlMDYyZjc0MGEyZGRiZGFkODM0ZDYxNzQzM2VmNzE4MDQ3MDg3NDlmMzdjYjBlMGM5YTMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzM2ZmZlMmJlNzdlMDhjMTQ3ZGIxMTVjNjc1MGYzZjJlNmZjMmI5ZWI3Y2JkMjA5NTBhMGM2YWU4NDM0Mzg3Y2IiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Y2Y0MmZjY2Y3N2I0ZDM1NzI5YWM0ZWU2MThhZTE3ZTg5MDA5MDQzMWZiZmViNjAzNTQ4OTliOGY5MTQ3NWQ5NiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYTU2MzNjNGZiNjExOTMwNzliY2FiMzk3ZWU5ZWExODRlNWE4YjRiY2JmMjBjMjdhZjExYTM3NTI1ZWRmNWI3YSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lOGE3NDlmM2ZhZDU0YTdmYTVkMGEwYjMxYjdhNTExNTMzMWY4ZGJjOGIyZDkwOTkwODI0ZThjOTc1NzZlZmEzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9mOWU4YTVlNjRkNDI5ZWZjMGIzM2ZhYTUxYjk1ZGZlMjJlZWMwYjBjOTVlMTI1MGIzYWVhYzc2MWY4OGUzYzM1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWFjMjhmZmUwMzk5ODA0NjVmYWVjN2E4N2VlOWNhZDQ0MTg1ZTJjZTRmY2EzOGIzYzJhODkwMzcwMDk3N2JjNWMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2I5ZWQ0NzE3MDE0OGI4NWRlMzY1MTlmOTI4NDM1YjhmMDU4YjBkN2VlNWU2MDljZjRmYmIyOTljMmQ4NjgwZGEiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0zMmZkYjZiZDU2YzI3ZWE5YWM2YmNmZTU3ODc0NjE4MGUzNTNjYmMyNWUzMTAxNmMwNTE0MjZhNzM5NTVmNDZmLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDQyMGRjMjM4Yjk3NTFmZTEzMjVhNTZlZTc1MGMyMTU5NzNmY2EwOWUwN2RiMjA3NTI3ZjEwMjI2MzY1NDZlMCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MjUwNjRkZmRlMjI4ZTgwOWJmOGMyMDdlYjhlZDI2NzcwNDU4MjNmOThhY2Y3MjdiNzUyZTdkYTYyYmFmOGY3Myx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTc1ZjM3MTY5ODVlZGFmODY4YjQ3OTk5MGE5YTQ1YmJmYjVhMjliZjQyZmJjZjgxOTMyNTgzNWVlNDVmNzc0NzkiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWYzYTE5ZjJmYjE5Mzc3YjIzNzk3ZTYyYWUyNWNkYjZmNjcxYThiOTRjOWNjYzNjN2RjNWYwZGIwNmIwNTY1NTEsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04ZDg3Yjg0NzUwZmIyYjFjMjVlOTkzMmJjNGZiOWQ3YzFiNTYxZDJhNGZiYTA4ZDgwZmQ4OGQ3OTZiMTgwNjY2IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0zNmZmZTJiZTc3ZTA4YzE0N2RiMTE1YzY3NTBmM2YyZTZmYzJiOWViN2NiZDIwOTUwYTBjNmFlODQzNDM4N2NiLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NWFlNmYzZDc4NjcyNGUwNjJmNzQwYTJkZGJkYWQ4MzRkNjE3NDMzZWY3MTgwNDcwODc0OWYzN2NiMGUwYzlhMyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9YTU2MzNjNGZiNjExOTMwNzliY2FiMzk3ZWU5ZWExODRlNWE4YjRiY2JmMjBjMjdhZjExYTM3NTI1ZWRmNWI3YSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWNmNDJmY2NmNzdiNGQzNTcyOWFjNGVlNjE4YWUxN2U4OTAwOTA0MzFmYmZlYjYwMzU0ODk5YjhmOTE0NzVkOTYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWY5ZThhNWU2NGQ0MjllZmMwYjMzZmFhNTFiOTVkZmUyMmVlYzBiMGM5NWUxMjUwYjNhZWFjNzYxZjg4ZTNjMzUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lOGE3NDlmM2ZhZDU0YTdmYTVkMGEwYjMxYjdhNTExNTMzMWY4ZGJjOGIyZDkwOTkwODI0ZThjOTc1NzZlZmEzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1iOWVkNDcxNzAxNDhiODVkZTM2NTE5ZjkyODQzNWI4ZjA1OGIwZDdlZTVlNjA5Y2Y0ZmJiMjk5YzJkODY4MGRhLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YWMyOGZmZTAzOTk4MDQ2NWZhZWM3YTg3ZWU5Y2FkNDQxODVlMmNlNGZjYTM4YjNjMmE4OTAzNzAwOTc3YmM1YyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0zMmZkYjZiZDU2YzI3ZWE5YWM2YmNmZTU3ODc0NjE4MGUzNTNjYmMyNWUzMTAxNmMwNTE0MjZhNzM5NTVmNDZmOjI1MDY0ZGZkZTIyOGU4MDliZjhjMjA3ZWI4ZWQyNjc3MDQ1ODIzZjk4YWNmNzI3Yjc1MmU3ZGE2MmJhZjhmNzM6ZjNhMTlmMmZiMTkzNzdiMjM3OTdlNjJhZTI1Y2RiNmY2NzFhOGI5NGM5Y2NjM2M3ZGM1ZjBkYjA2YjA1NjU1MTozNmZmZTJiZTc3ZTA4YzE0N2RiMTE1YzY3NTBmM2YyZTZmYzJiOWViN2NiZDIwOTUwYTBjNmFlODQzNDM4N2NiOmE1NjMzYzRmYjYxMTkzMDc5YmNhYjM5N2VlOWVhMTg0ZTVhOGI0YmNiZjIwYzI3YWYxMWEzNzUyNWVkZjViN2E6ZjllOGE1ZTY0ZDQyOWVmYzBiMzNmYWE1MWI5NWRmZTIyZWVjMGIwYzk1ZTEyNTBiM2FlYWM3NjFmODhlM2MzNTpiOWVkNDcxNzAxNDhiODVkZTM2NTE5ZjkyODQzNWI4ZjA1OGIwZDdlZTVlNjA5Y2Y0ZmJiMjk5YzJkODY4MGRhIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= spec: restartPolicy: Never runtimeClassName: kata-cc diff --git a/src/agent/samples/policy/yaml/kubernetes/fixtures/multi-resource-yaml.yaml b/src/agent/samples/policy/yaml/kubernetes/fixtures/multi-resource-yaml.yaml index b55f38b4d114..9b0604194687 100644 --- a/src/agent/samples/policy/yaml/kubernetes/fixtures/multi-resource-yaml.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/fixtures/multi-resource-yaml.yaml @@ -12,7 +12,7 @@ spec: labels: app: mock annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeZmlyc3QtcmMtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1maXJzdC1yYyIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5maXJzdC1yYy1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogIm1vY2stY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAicmVnaXN0cnkuazhzLmlvL3BhdXNlOjMuOSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YWFjZTgzNDRkODRjNjRiMTQxZDQ4MjRhOWJjNDJjN2Y3NjY2MTljYzVlZmM3MTA3MmFmYzdhZjFkZmE2NjY1MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZDAzNDAwZTI0YjdkZjUzYWEyOTM5NTlhNWY2ZmJhODJmMDFlNzNiOTk2ZWViMzMwOWMyZjczNjhhMjU5YTY0NSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2QwMzQwMGUyNGI3ZGY1M2FhMjkzOTU5YTVmNmZiYTgyZjAxZTczYjk5NmVlYjMzMDljMmY3MzY4YTI1OWE2NDUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hYWNlODM0NGQ4NGM2NGIxNDFkNDgyNGE5YmM0MmM3Zjc2NjYxOWNjNWVmYzcxMDcyYWZjN2FmMWRmYTY2NjUwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2QwMzQwMGUyNGI3ZGY1M2FhMjkzOTU5YTVmNmZiYTgyZjAxZTczYjk5NmVlYjMzMDljMmY3MzY4YTI1OWE2NDUiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeZmlyc3QtcmMtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1maXJzdC1yYyIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5maXJzdC1yYy1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogIm1vY2stY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAicmVnaXN0cnkuazhzLmlvL3BhdXNlOjMuOSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YWFjZTgzNDRkODRjNjRiMTQxZDQ4MjRhOWJjNDJjN2Y3NjY2MTljYzVlZmM3MTA3MmFmYzdhZjFkZmE2NjY1MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZDAzNDAwZTI0YjdkZjUzYWEyOTM5NTlhNWY2ZmJhODJmMDFlNzNiOTk2ZWViMzMwOWMyZjczNjhhMjU5YTY0NSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWQwMzQwMGUyNGI3ZGY1M2FhMjkzOTU5YTVmNmZiYTgyZjAxZTczYjk5NmVlYjMzMDljMmY3MzY4YTI1OWE2NDUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hYWNlODM0NGQ4NGM2NGIxNDFkNDgyNGE5YmM0MmM3Zjc2NjYxOWNjNWVmYzcxMDcyYWZjN2FmMWRmYTY2NjUwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPWQwMzQwMGUyNGI3ZGY1M2FhMjkzOTU5YTVmNmZiYTgyZjAxZTczYjk5NmVlYjMzMDljMmY3MzY4YTI1OWE2NDUiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== spec: runtimeClassName: kata-cc containers: @@ -32,7 +32,7 @@ spec: labels: app: mock annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJec2Vjb25kLXJjLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDY1NTM1LAogICAgICAgICAgICAiZ2lkIjogNjU1MzUKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi9wYXVzZSIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9c2Vjb25kLXJjIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXnNlY29uZC1yYy1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogIm1vY2stY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAicmVnaXN0cnkuazhzLmlvL3BhdXNlOjMuOSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YWFjZTgzNDRkODRjNjRiMTQxZDQ4MjRhOWJjNDJjN2Y3NjY2MTljYzVlZmM3MTA3MmFmYzdhZjFkZmE2NjY1MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZDAzNDAwZTI0YjdkZjUzYWEyOTM5NTlhNWY2ZmJhODJmMDFlNzNiOTk2ZWViMzMwOWMyZjczNjhhMjU5YTY0NSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2QwMzQwMGUyNGI3ZGY1M2FhMjkzOTU5YTVmNmZiYTgyZjAxZTczYjk5NmVlYjMzMDljMmY3MzY4YTI1OWE2NDUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hYWNlODM0NGQ4NGM2NGIxNDFkNDgyNGE5YmM0MmM3Zjc2NjYxOWNjNWVmYzcxMDcyYWZjN2FmMWRmYTY2NjUwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2QwMzQwMGUyNGI3ZGY1M2FhMjkzOTU5YTVmNmZiYTgyZjAxZTczYjk5NmVlYjMzMDljMmY3MzY4YTI1OWE2NDUiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJec2Vjb25kLXJjLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDY1NTM1LAogICAgICAgICAgICAiZ2lkIjogNjU1MzUKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi9wYXVzZSIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9c2Vjb25kLXJjIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXnNlY29uZC1yYy1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogIm1vY2stY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAicmVnaXN0cnkuazhzLmlvL3BhdXNlOjMuOSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YWFjZTgzNDRkODRjNjRiMTQxZDQ4MjRhOWJjNDJjN2Y3NjY2MTljYzVlZmM3MTA3MmFmYzdhZjFkZmE2NjY1MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZDAzNDAwZTI0YjdkZjUzYWEyOTM5NTlhNWY2ZmJhODJmMDFlNzNiOTk2ZWViMzMwOWMyZjczNjhhMjU5YTY0NSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWQwMzQwMGUyNGI3ZGY1M2FhMjkzOTU5YTVmNmZiYTgyZjAxZTczYjk5NmVlYjMzMDljMmY3MzY4YTI1OWE2NDUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hYWNlODM0NGQ4NGM2NGIxNDFkNDgyNGE5YmM0MmM3Zjc2NjYxOWNjNWVmYzcxMDcyYWZjN2FmMWRmYTY2NjUwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPWQwMzQwMGUyNGI3ZGY1M2FhMjkzOTU5YTVmNmZiYTgyZjAxZTczYjk5NmVlYjMzMDljMmY3MzY4YTI1OWE2NDUiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/fixtures/rc-lastapplied.yaml b/src/agent/samples/policy/yaml/kubernetes/fixtures/rc-lastapplied.yaml index cfe43492c654..a102e01555a9 100644 --- a/src/agent/samples/policy/yaml/kubernetes/fixtures/rc-lastapplied.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/fixtures/rc-lastapplied.yaml @@ -14,7 +14,7 @@ spec: labels: name: test-rc annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedGVzdC1yYy1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAibmdpbngiLAogICAgICAgICAgICAiLWciLAogICAgICAgICAgICAiZGFlbW9uIG9mZjsiCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIm5naW54X2NvbmZfZmlsZT1uZ2lueC5jb25mIiwKICAgICAgICAgICAgImRlZmF1bHRfY29uZl9maWxlPWRlZmF1bHQuY29uZiIsCiAgICAgICAgICAgICJIT1NUTkFNRT10ZXN0LXJjIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXnRlc3QtcmMtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJ0ZXN0LXJjIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vY2JsLW1hcmluZXIvYmFzZS9uZ2lueDoxLjIyLjEtNS1jbTIuMC4yMDIzMDYwOS1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ1ZmY3MmEzODkxODRmMjg0NzlmNjVhYzU1YzUxZjljMmRhOTRhZWI4NTA0OGY2ZDgxNDRiMzIwYzk4NjA5ZDYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0NiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgwNDIxMmFiYjE5YzkzYWEwMzY5ZDExY2MzYjgzNmQwZjkwY2M0OTg2NzMwMDVhMGExYzhiNjRiMzk1Yjc4OTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwNDk3NGIxYWRiNjNjYzIzMDVlNjEwOWZmMTgxMTc5OTBkNGJlZGZlY2Q1OTFlY2U4ZDEyNTBjYTUyMDNmOGYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2UyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQ6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2RmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDY6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NDovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedGVzdC1yYy1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAibmdpbngiLAogICAgICAgICAgICAiLWciLAogICAgICAgICAgICAiZGFlbW9uIG9mZjsiCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIm5naW54X2NvbmZfZmlsZT1uZ2lueC5jb25mIiwKICAgICAgICAgICAgImRlZmF1bHRfY29uZl9maWxlPWRlZmF1bHQuY29uZiIsCiAgICAgICAgICAgICJIT1NUTkFNRT10ZXN0LXJjIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXnRlc3QtcmMtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJ0ZXN0LXJjIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vY2JsLW1hcmluZXIvYmFzZS9uZ2lueDoxLjIyLjEtNS1jbTIuMC4yMDIzMDYwOS1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ1ZmY3MmEzODkxODRmMjg0NzlmNjVhYzU1YzUxZjljMmRhOTRhZWI4NTA0OGY2ZDgxNDRiMzIwYzk4NjA5ZDYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0NiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9N2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgwNDIxMmFiYjE5YzkzYWEwMzY5ZDExY2MzYjgzNmQwZjkwY2M0OTg2NzMwMDVhMGExYzhiNjRiMzk1Yjc4OTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwNDk3NGIxYWRiNjNjYzIzMDVlNjEwOWZmMTgxMTc5OTBkNGJlZGZlY2Q1OTFlY2U4ZDEyNTBjYTUyMDNmOGYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPWUyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQ6N2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NTo4NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyOmRmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDY6MjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NDo3MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/fixtures/rc-noexist.yaml b/src/agent/samples/policy/yaml/kubernetes/fixtures/rc-noexist.yaml index 6bf69bdea9e5..ab5d879aec6c 100644 --- a/src/agent/samples/policy/yaml/kubernetes/fixtures/rc-noexist.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/fixtures/rc-noexist.yaml @@ -12,7 +12,7 @@ spec: labels: name: no-exist annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebm8tZXhpc3QtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIm5naW54IiwKICAgICAgICAgICAgIi1nIiwKICAgICAgICAgICAgImRhZW1vbiBvZmY7IgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJuZ2lueF9jb25mX2ZpbGU9bmdpbnguY29uZiIsCiAgICAgICAgICAgICJkZWZhdWx0X2NvbmZfZmlsZT1kZWZhdWx0LmNvbmYiLAogICAgICAgICAgICAiSE9TVE5BTUU9bm8tZXhpc3QiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebm8tZXhpc3QtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJuby1leGlzdCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL2NibC1tYXJpbmVyL2Jhc2Uvbmdpbng6MS4yMi4xLTUtY20yLjAuMjAyMzA2MDktYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM1Y2VjNWIxY2FlODJmMDI5OTc0YWE4NWJhNjllYjQ5YzA0YjkwYTgwYjU3ZGVkZTg3OTdkYjk1Y2I4MTFmNDgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2UyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODA0MjEyYWJiMTljOTNhYTAzNjlkMTFjYzNiODM2ZDBmOTBjYzQ5ODY3MzAwNWEwYTFjOGI2NGIzOTViNzg5NyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAyZjE0MTFiNmRkMjZkNzEyOGY2MTUxMjU4NzYzY2FjZTI5ZmFkOWE5MDczYjRhYmQ3N2VmNjQ1ZTcxZjM3MWYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2RmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YTA0OTc0YjFhZGI2M2NjMjMwNWU2MTA5ZmYxODExNzk5MGQ0YmVkZmVjZDU5MWVjZThkMTI1MGNhNTIwM2Y4ZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM1Y2VjNWIxY2FlODJmMDI5OTc0YWE4NWJhNjllYjQ5YzA0YjkwYTgwYjU3ZGVkZTg3OTdkYjk1Y2I4MTFmNDgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzdhZTkyNTJmMmY5NGEyNDUzMGJmYjJlZTAzZjgwODEwNmE1Njc2MzgyNDIwMzBjYjlhNzdjZmQyMWY2NDAwODUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy84NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDVmZjcyYTM4OTE4NGYyODQ3OWY2NWFjNTVjNTFmOWMyZGE5NGFlYjg1MDQ4ZjZkODE0NGIzMjBjOTg2MDlkNiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0Nix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAyZjE0MTFiNmRkMjZkNzEyOGY2MTUxMjU4NzYzY2FjZTI5ZmFkOWE5MDczYjRhYmQ3N2VmNjQ1ZTcxZjM3MWYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjEyYTc5OGUxNWE4MGFjZTYyMjIyMjVlZjgzMzQ5M2I5YzFkODhmYTA2ZDk1MGIzOGEzZWYyN2Q5N2M4YjZiOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzdhZTkyNTJmMmY5NGEyNDUzMGJmYjJlZTAzZjgwODEwNmE1Njc2MzgyNDIwMzBjYjlhNzdjZmQyMWY2NDAwODU6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvODQ1MTdmY2Y1YWFhMjVjMTlhNWM4YmU4NjE2MjlkYjhkNDYwMDVlOTk2OTVmZTY0ZWYyYmZlMmE0NzQ1YmYwMjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQ6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNzE2MjE5NTkzZWM1NTM4NDg3YTkxMzE4NzIzY2M3MjJhMjlmNzFhNGQ1Y2VjZmQ3YWYzNTIzNDRmNmUwNTk1MyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebm8tZXhpc3QtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIm5naW54IiwKICAgICAgICAgICAgIi1nIiwKICAgICAgICAgICAgImRhZW1vbiBvZmY7IgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJuZ2lueF9jb25mX2ZpbGU9bmdpbnguY29uZiIsCiAgICAgICAgICAgICJkZWZhdWx0X2NvbmZfZmlsZT1kZWZhdWx0LmNvbmYiLAogICAgICAgICAgICAiSE9TVE5BTUU9bm8tZXhpc3QiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebm8tZXhpc3QtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJuby1leGlzdCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL2NibC1tYXJpbmVyL2Jhc2Uvbmdpbng6MS4yMi4xLTUtY20yLjAuMjAyMzA2MDktYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM1Y2VjNWIxY2FlODJmMDI5OTc0YWE4NWJhNjllYjQ5YzA0YjkwYTgwYjU3ZGVkZTg3OTdkYjk1Y2I4MTFmNDgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2UyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODA0MjEyYWJiMTljOTNhYTAzNjlkMTFjYzNiODM2ZDBmOTBjYzQ5ODY3MzAwNWEwYTFjOGI2NGIzOTViNzg5NyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAyZjE0MTFiNmRkMjZkNzEyOGY2MTUxMjU4NzYzY2FjZTI5ZmFkOWE5MDczYjRhYmQ3N2VmNjQ1ZTcxZjM3MWYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2RmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YTA0OTc0YjFhZGI2M2NjMjMwNWU2MTA5ZmYxODExNzk5MGQ0YmVkZmVjZDU5MWVjZThkMTI1MGNhNTIwM2Y4ZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM1Y2VjNWIxY2FlODJmMDI5OTc0YWE4NWJhNjllYjQ5YzA0YjkwYTgwYjU3ZGVkZTg3OTdkYjk1Y2I4MTFmNDgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTdhZTkyNTJmMmY5NGEyNDUzMGJmYjJlZTAzZjgwODEwNmE1Njc2MzgyNDIwMzBjYjlhNzdjZmQyMWY2NDAwODUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj04NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDVmZjcyYTM4OTE4NGYyODQ3OWY2NWFjNTVjNTFmOWMyZGE5NGFlYjg1MDQ4ZjZkODE0NGIzMjBjOTg2MDlkNiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0Nix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAyZjE0MTFiNmRkMjZkNzEyOGY2MTUxMjU4NzYzY2FjZTI5ZmFkOWE5MDczYjRhYmQ3N2VmNjQ1ZTcxZjM3MWYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj03MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjEyYTc5OGUxNWE4MGFjZTYyMjIyMjVlZjgzMzQ5M2I5YzFkODhmYTA2ZDk1MGIzOGEzZWYyN2Q5N2M4YjZiOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj1lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkOjdhZTkyNTJmMmY5NGEyNDUzMGJmYjJlZTAzZjgwODEwNmE1Njc2MzgyNDIwMzBjYjlhNzdjZmQyMWY2NDAwODU6ODQ1MTdmY2Y1YWFhMjVjMTlhNWM4YmU4NjE2MjlkYjhkNDYwMDVlOTk2OTVmZTY0ZWYyYmZlMmE0NzQ1YmYwMjpkZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2OjI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQ6NzE2MjE5NTkzZWM1NTM4NDg3YTkxMzE4NzIzY2M3MjJhMjlmNzFhNGQ1Y2VjZmQ3YWYzNTIzNDRmNmUwNTk1MyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/fixtures/replication.yaml b/src/agent/samples/policy/yaml/kubernetes/fixtures/replication.yaml index 0d894c91453b..2688881b0f08 100644 --- a/src/agent/samples/policy/yaml/kubernetes/fixtures/replication.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/fixtures/replication.yaml @@ -13,7 +13,7 @@ spec: labels: app: nginx annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebmdpbngtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIm5naW54IiwKICAgICAgICAgICAgIi1nIiwKICAgICAgICAgICAgImRhZW1vbiBvZmY7IgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJuZ2lueF9jb25mX2ZpbGU9bmdpbnguY29uZiIsCiAgICAgICAgICAgICJkZWZhdWx0X2NvbmZfZmlsZT1kZWZhdWx0LmNvbmYiLAogICAgICAgICAgICAiSE9TVE5BTUU9bmdpbngiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebmdpbngtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJuZ2lueCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL2NibC1tYXJpbmVyL2Jhc2Uvbmdpbng6MS4yMi4xLTUtY20yLjAuMjAyMzA2MDktYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM1Y2VjNWIxY2FlODJmMDI5OTc0YWE4NWJhNjllYjQ5YzA0YjkwYTgwYjU3ZGVkZTg3OTdkYjk1Y2I4MTFmNDgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2UyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODA0MjEyYWJiMTljOTNhYTAzNjlkMTFjYzNiODM2ZDBmOTBjYzQ5ODY3MzAwNWEwYTFjOGI2NGIzOTViNzg5NyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAyZjE0MTFiNmRkMjZkNzEyOGY2MTUxMjU4NzYzY2FjZTI5ZmFkOWE5MDczYjRhYmQ3N2VmNjQ1ZTcxZjM3MWYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2RmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YTA0OTc0YjFhZGI2M2NjMjMwNWU2MTA5ZmYxODExNzk5MGQ0YmVkZmVjZDU5MWVjZThkMTI1MGNhNTIwM2Y4ZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM1Y2VjNWIxY2FlODJmMDI5OTc0YWE4NWJhNjllYjQ5YzA0YjkwYTgwYjU3ZGVkZTg3OTdkYjk1Y2I4MTFmNDgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzdhZTkyNTJmMmY5NGEyNDUzMGJmYjJlZTAzZjgwODEwNmE1Njc2MzgyNDIwMzBjYjlhNzdjZmQyMWY2NDAwODUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy84NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDVmZjcyYTM4OTE4NGYyODQ3OWY2NWFjNTVjNTFmOWMyZGE5NGFlYjg1MDQ4ZjZkODE0NGIzMjBjOTg2MDlkNiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0Nix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAyZjE0MTFiNmRkMjZkNzEyOGY2MTUxMjU4NzYzY2FjZTI5ZmFkOWE5MDczYjRhYmQ3N2VmNjQ1ZTcxZjM3MWYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjEyYTc5OGUxNWE4MGFjZTYyMjIyMjVlZjgzMzQ5M2I5YzFkODhmYTA2ZDk1MGIzOGEzZWYyN2Q5N2M4YjZiOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzdhZTkyNTJmMmY5NGEyNDUzMGJmYjJlZTAzZjgwODEwNmE1Njc2MzgyNDIwMzBjYjlhNzdjZmQyMWY2NDAwODU6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvODQ1MTdmY2Y1YWFhMjVjMTlhNWM4YmU4NjE2MjlkYjhkNDYwMDVlOTk2OTVmZTY0ZWYyYmZlMmE0NzQ1YmYwMjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQ6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNzE2MjE5NTkzZWM1NTM4NDg3YTkxMzE4NzIzY2M3MjJhMjlmNzFhNGQ1Y2VjZmQ3YWYzNTIzNDRmNmUwNTk1MyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebmdpbngtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIm5naW54IiwKICAgICAgICAgICAgIi1nIiwKICAgICAgICAgICAgImRhZW1vbiBvZmY7IgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJuZ2lueF9jb25mX2ZpbGU9bmdpbnguY29uZiIsCiAgICAgICAgICAgICJkZWZhdWx0X2NvbmZfZmlsZT1kZWZhdWx0LmNvbmYiLAogICAgICAgICAgICAiSE9TVE5BTUU9bmdpbngiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJebmdpbngtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJuZ2lueCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL2NibC1tYXJpbmVyL2Jhc2Uvbmdpbng6MS4yMi4xLTUtY20yLjAuMjAyMzA2MDktYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM1Y2VjNWIxY2FlODJmMDI5OTc0YWE4NWJhNjllYjQ5YzA0YjkwYTgwYjU3ZGVkZTg3OTdkYjk1Y2I4MTFmNDgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2UyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODA0MjEyYWJiMTljOTNhYTAzNjlkMTFjYzNiODM2ZDBmOTBjYzQ5ODY3MzAwNWEwYTFjOGI2NGIzOTViNzg5NyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAyZjE0MTFiNmRkMjZkNzEyOGY2MTUxMjU4NzYzY2FjZTI5ZmFkOWE5MDczYjRhYmQ3N2VmNjQ1ZTcxZjM3MWYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2RmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDYiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YTA0OTc0YjFhZGI2M2NjMjMwNWU2MTA5ZmYxODExNzk5MGQ0YmVkZmVjZDU5MWVjZThkMTI1MGNhNTIwM2Y4ZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTM1Y2VjNWIxY2FlODJmMDI5OTc0YWE4NWJhNjllYjQ5YzA0YjkwYTgwYjU3ZGVkZTg3OTdkYjk1Y2I4MTFmNDgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTdhZTkyNTJmMmY5NGEyNDUzMGJmYjJlZTAzZjgwODEwNmE1Njc2MzgyNDIwMzBjYjlhNzdjZmQyMWY2NDAwODUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj04NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDVmZjcyYTM4OTE4NGYyODQ3OWY2NWFjNTVjNTFmOWMyZGE5NGFlYjg1MDQ4ZjZkODE0NGIzMjBjOTg2MDlkNiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0Nix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAyZjE0MTFiNmRkMjZkNzEyOGY2MTUxMjU4NzYzY2FjZTI5ZmFkOWE5MDczYjRhYmQ3N2VmNjQ1ZTcxZjM3MWYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj03MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjEyYTc5OGUxNWE4MGFjZTYyMjIyMjVlZjgzMzQ5M2I5YzFkODhmYTA2ZDk1MGIzOGEzZWYyN2Q5N2M4YjZiOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj1lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkOjdhZTkyNTJmMmY5NGEyNDUzMGJmYjJlZTAzZjgwODEwNmE1Njc2MzgyNDIwMzBjYjlhNzdjZmQyMWY2NDAwODU6ODQ1MTdmY2Y1YWFhMjVjMTlhNWM4YmU4NjE2MjlkYjhkNDYwMDVlOTk2OTVmZTY0ZWYyYmZlMmE0NzQ1YmYwMjpkZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2OjI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQ6NzE2MjE5NTkzZWM1NTM4NDg3YTkxMzE4NzIzY2M3MjJhMjlmNzFhNGQ1Y2VjZmQ3YWYzNTIzNDRmNmUwNTk1MyIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/fixtures2/rc-service.yaml b/src/agent/samples/policy/yaml/kubernetes/fixtures2/rc-service.yaml index b5a461aa2a95..03a27085beff 100644 --- a/src/agent/samples/policy/yaml/kubernetes/fixtures2/rc-service.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/fixtures2/rc-service.yaml @@ -26,7 +26,7 @@ items: labels: name: test-rc annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedGVzdC1yYy1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAibmdpbngiLAogICAgICAgICAgICAiLWciLAogICAgICAgICAgICAiZGFlbW9uIG9mZjsiCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIm5naW54X2NvbmZfZmlsZT1uZ2lueC5jb25mIiwKICAgICAgICAgICAgImRlZmF1bHRfY29uZl9maWxlPWRlZmF1bHQuY29uZiIsCiAgICAgICAgICAgICJIT1NUTkFNRT10ZXN0LXJjIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXnRlc3QtcmMtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJ0ZXN0LXJjIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vY2JsLW1hcmluZXIvYmFzZS9uZ2lueDoxLjIyLjEtNS1jbTIuMC4yMDIzMDYwOS1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ1ZmY3MmEzODkxODRmMjg0NzlmNjVhYzU1YzUxZjljMmRhOTRhZWI4NTA0OGY2ZDgxNDRiMzIwYzk4NjA5ZDYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0NiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgwNDIxMmFiYjE5YzkzYWEwMzY5ZDExY2MzYjgzNmQwZjkwY2M0OTg2NzMwMDVhMGExYzhiNjRiMzk1Yjc4OTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwNDk3NGIxYWRiNjNjYzIzMDVlNjEwOWZmMTgxMTc5OTBkNGJlZGZlY2Q1OTFlY2U4ZDEyNTBjYTUyMDNmOGYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2UyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQ6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvN2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2RmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDY6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NDovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedGVzdC1yYy1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAibmdpbngiLAogICAgICAgICAgICAiLWciLAogICAgICAgICAgICAiZGFlbW9uIG9mZjsiCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIm5naW54X2NvbmZfZmlsZT1uZ2lueC5jb25mIiwKICAgICAgICAgICAgImRlZmF1bHRfY29uZl9maWxlPWRlZmF1bHQuY29uZiIsCiAgICAgICAgICAgICJIT1NUTkFNRT10ZXN0LXJjIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXnRlc3QtcmMtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJ0ZXN0LXJjIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vY2JsLW1hcmluZXIvYmFzZS9uZ2lueDoxLjIyLjEtNS1jbTIuMC4yMDIzMDYwOS1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MDQyMTJhYmIxOWM5M2FhMDM2OWQxMWNjM2I4MzZkMGY5MGNjNDk4NjczMDA1YTBhMWM4YjY0YjM5NWI3ODk3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ1ZmY3MmEzODkxODRmMjg0NzlmNjVhYzU1YzUxZjljMmRhOTRhZWI4NTA0OGY2ZDgxNDRiMzIwYzk4NjA5ZDYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0NiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MzVjZWM1YjFjYWU4MmYwMjk5NzRhYTg1YmE2OWViNDljMDRiOTBhODBiNTdkZWRlODc5N2RiOTVjYjgxMWY0OCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9N2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgwNDIxMmFiYjE5YzkzYWEwMzY5ZDExY2MzYjgzNmQwZjkwY2M0OTg2NzMwMDVhMGExYzhiNjRiMzk1Yjc4OTciLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNWZmNzJhMzg5MTg0ZjI4NDc5ZjY1YWM1NWM1MWY5YzJkYTk0YWViODUwNDhmNmQ4MTQ0YjMyMGM5ODYwOWQ2IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDJmMTQxMWI2ZGQyNmQ3MTI4ZjYxNTEyNTg3NjNjYWNlMjlmYWQ5YTkwNzNiNGFiZDc3ZWY2NDVlNzFmMzcxZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwNDk3NGIxYWRiNjNjYzIzMDVlNjEwOWZmMTgxMTc5OTBkNGJlZGZlY2Q1OTFlY2U4ZDEyNTBjYTUyMDNmOGYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02MTJhNzk4ZTE1YTgwYWNlNjIyMjIyNWVmODMzNDkzYjljMWQ4OGZhMDZkOTUwYjM4YTNlZjI3ZDk3YzhiNmI4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPWUyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQ6N2FlOTI1MmYyZjk0YTI0NTMwYmZiMmVlMDNmODA4MTA2YTU2NzYzODI0MjAzMGNiOWE3N2NmZDIxZjY0MDA4NTo4NDUxN2ZjZjVhYWEyNWMxOWE1YzhiZTg2MTYyOWRiOGQ0NjAwNWU5OTY5NWZlNjRlZjJiZmUyYTQ3NDViZjAyOmRmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDY6MjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NDo3MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/fixtures2/valid-pod.yaml b/src/agent/samples/policy/yaml/kubernetes/fixtures2/valid-pod.yaml index 13363b32536a..464aac83ffc8 100644 --- a/src/agent/samples/policy/yaml/kubernetes/fixtures2/valid-pod.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/fixtures2/valid-pod.yaml @@ -6,7 +6,7 @@ metadata: labels: name: valid-pod annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedmFsaWQtcG9kJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJ2YWxpZC1wb2QiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvc2VydmVfaG9zdG5hbWUiCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIkhPTUU9LyIsCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT12YWxpZC1wb2QiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedmFsaWQtcG9kJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAia3ViZXJuZXRlcy1zZXJ2ZS1ob3N0bmFtZSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogInJlZ2lzdHJ5Lms4cy5pby9zZXJ2ZV9ob3N0bmFtZTpsYXRlc3QiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJ2YWxpZC1wb2QiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzZkMzg1NjJiMWIxNTEwMzIzZjlhMmM1MTNmODA1M2Q0Nzk4OGE2OTBjMWE3MzdiYzc0ZDRjYWIxYWI1ZjcxZGUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Njc0NTAwODJhYjU2ZGExYWVjYzVlYWUyZjE4ZDk4MGNkOWU3MzA2ZTc5MzM0YTFhODI2YTkxY2ZkOTAxMTRhOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYjllYzMxNzE1YjQ5NDYxNTk1ODYyZjA3YmUxZmJhODA3NWM0ZjFjOGM3MmIwMjczMWNjZGFhMjhlODhjNDgyZSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xMmVkMzU4MWFiNjlmM2Y1MjU1Njg1YWM0OTUzMDg4N2E1NGQ4MjkxZDFlYTZlZDZiZTQ0ZjQxMzhhMzdmODBlIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9iNWFkMDk2MjAzZjlhOWQ3NmZkYTkzNDIyNjg3NWE4YjMwNGYxMDA1NjYzOGY3MzRkMTE2MzVhYzczZmE0OTA0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRlMWI1YThkMjgxYjI0YjQyNGRhYzBjNzg1ODYxMzgwYTlkM2E4NjMyZjkwMTI1YjgyNWU1NmUxY2FmMTJhNTkiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2EzNWQ5YjgzZTkwNDA5NTIzODhkZTEyMWQ4YzIzZGVlYjNlZDkyZWJkNjE0MGVmNGUzZjA4NzkyMDVkMGMxNDIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Njc0NTAwODJhYjU2ZGExYWVjYzVlYWUyZjE4ZDk4MGNkOWU3MzA2ZTc5MzM0YTFhODI2YTkxY2ZkOTAxMTRhOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvODYyZGI5ZjAzNjdhMDNmNjVmM2Q0ODJiYzE2YzI2OWY4YzkzNmU5NTFiZmNlNmFiZGRiYjRhMDMzMmM2NGNhNyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NzQ1MDA4MmFiNTZkYTFhZWNjNWVhZTJmMThkOTgwY2Q5ZTczMDZlNzkzMzRhMWE4MjZhOTFjZmQ5MDExNGE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy82NTI4NThlMGI2ZDI5YTgwYjlhNGRlNmIxNWI3MjRkZDkxZTc0MTMzZGY2ZjM2NjE1MDBkNzFjOTI5YmFmNmVkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNmQzODU2MmIxYjE1MTAzMjNmOWEyYzUxM2Y4MDUzZDQ3OTg4YTY5MGMxYTczN2JjNzRkNGNhYjFhYjVmNzFkZSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2I5ZWMzMTcxNWI0OTQ2MTU5NTg2MmYwN2JlMWZiYTgwNzVjNGYxYzhjNzJiMDI3MzFjY2RhYTI4ZTg4YzQ4MmUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NzQ1MDA4MmFiNTZkYTFhZWNjNWVhZTJmMThkOTgwY2Q5ZTczMDZlNzkzMzRhMWE4MjZhOTFjZmQ5MDExNGE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9iNWFkMDk2MjAzZjlhOWQ3NmZkYTkzNDIyNjg3NWE4YjMwNGYxMDA1NjYzOGY3MzRkMTE2MzVhYzczZmE0OTA0LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MTJlZDM1ODFhYjY5ZjNmNTI1NTY4NWFjNDk1MzA4ODdhNTRkODI5MWQxZWE2ZWQ2YmU0NGY0MTM4YTM3ZjgwZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvYTM1ZDliODNlOTA0MDk1MjM4OGRlMTIxZDhjMjNkZWViM2VkOTJlYmQ2MTQwZWY0ZTNmMDg3OTIwNWQwYzE0Mix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRlMWI1YThkMjgxYjI0YjQyNGRhYzBjNzg1ODYxMzgwYTlkM2E4NjMyZjkwMTI1YjgyNWU1NmUxY2FmMTJhNTkiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzg2MmRiOWYwMzY3YTAzZjY1ZjNkNDgyYmMxNmMyNjlmOGM5MzZlOTUxYmZjZTZhYmRkYmI0YTAzMzJjNjRjYTcsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NzQ1MDA4MmFiNTZkYTFhZWNjNWVhZTJmMThkOTgwY2Q5ZTczMDZlNzkzMzRhMWE4MjZhOTFjZmQ5MDExNGE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy82NTI4NThlMGI2ZDI5YTgwYjlhNGRlNmIxNWI3MjRkZDkxZTc0MTMzZGY2ZjM2NjE1MDBkNzFjOTI5YmFmNmVkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Njc0NTAwODJhYjU2ZGExYWVjYzVlYWUyZjE4ZDk4MGNkOWU3MzA2ZTc5MzM0YTFhODI2YTkxY2ZkOTAxMTRhOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy82ZDM4NTYyYjFiMTUxMDMyM2Y5YTJjNTEzZjgwNTNkNDc5ODhhNjkwYzFhNzM3YmM3NGQ0Y2FiMWFiNWY3MWRlOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2I5ZWMzMTcxNWI0OTQ2MTU5NTg2MmYwN2JlMWZiYTgwNzVjNGYxYzhjNzJiMDI3MzFjY2RhYTI4ZTg4YzQ4MmU6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYjVhZDA5NjIwM2Y5YTlkNzZmZGE5MzQyMjY4NzVhOGIzMDRmMTAwNTY2MzhmNzM0ZDExNjM1YWM3M2ZhNDkwNDovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9hMzVkOWI4M2U5MDQwOTUyMzg4ZGUxMjFkOGMyM2RlZWIzZWQ5MmViZDYxNDBlZjRlM2YwODc5MjA1ZDBjMTQyOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg2MmRiOWYwMzY3YTAzZjY1ZjNkNDgyYmMxNmMyNjlmOGM5MzZlOTUxYmZjZTZhYmRkYmI0YTAzMzJjNjRjYTc6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNjUyODU4ZTBiNmQyOWE4MGI5YTRkZTZiMTViNzI0ZGQ5MWU3NDEzM2RmNmYzNjYxNTAwZDcxYzkyOWJhZjZlZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedmFsaWQtcG9kJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJ2YWxpZC1wb2QiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvc2VydmVfaG9zdG5hbWUiCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIkhPTUU9LyIsCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT12YWxpZC1wb2QiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedmFsaWQtcG9kJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAia3ViZXJuZXRlcy1zZXJ2ZS1ob3N0bmFtZSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogInJlZ2lzdHJ5Lms4cy5pby9zZXJ2ZV9ob3N0bmFtZTpsYXRlc3QiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJ2YWxpZC1wb2QiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzZkMzg1NjJiMWIxNTEwMzIzZjlhMmM1MTNmODA1M2Q0Nzk4OGE2OTBjMWE3MzdiYzc0ZDRjYWIxYWI1ZjcxZGUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Njc0NTAwODJhYjU2ZGExYWVjYzVlYWUyZjE4ZDk4MGNkOWU3MzA2ZTc5MzM0YTFhODI2YTkxY2ZkOTAxMTRhOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYjllYzMxNzE1YjQ5NDYxNTk1ODYyZjA3YmUxZmJhODA3NWM0ZjFjOGM3MmIwMjczMWNjZGFhMjhlODhjNDgyZSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xMmVkMzU4MWFiNjlmM2Y1MjU1Njg1YWM0OTUzMDg4N2E1NGQ4MjkxZDFlYTZlZDZiZTQ0ZjQxMzhhMzdmODBlIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9iNWFkMDk2MjAzZjlhOWQ3NmZkYTkzNDIyNjg3NWE4YjMwNGYxMDA1NjYzOGY3MzRkMTE2MzVhYzczZmE0OTA0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRlMWI1YThkMjgxYjI0YjQyNGRhYzBjNzg1ODYxMzgwYTlkM2E4NjMyZjkwMTI1YjgyNWU1NmUxY2FmMTJhNTkiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2EzNWQ5YjgzZTkwNDA5NTIzODhkZTEyMWQ4YzIzZGVlYjNlZDkyZWJkNjE0MGVmNGUzZjA4NzkyMDVkMGMxNDIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Njc0NTAwODJhYjU2ZGExYWVjYzVlYWUyZjE4ZDk4MGNkOWU3MzA2ZTc5MzM0YTFhODI2YTkxY2ZkOTAxMTRhOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvODYyZGI5ZjAzNjdhMDNmNjVmM2Q0ODJiYzE2YzI2OWY4YzkzNmU5NTFiZmNlNmFiZGRiYjRhMDMzMmM2NGNhNyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NzQ1MDA4MmFiNTZkYTFhZWNjNWVhZTJmMThkOTgwY2Q5ZTczMDZlNzkzMzRhMWE4MjZhOTFjZmQ5MDExNGE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy82NTI4NThlMGI2ZDI5YTgwYjlhNGRlNmIxNWI3MjRkZDkxZTc0MTMzZGY2ZjM2NjE1MDBkNzFjOTI5YmFmNmVkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NmQzODU2MmIxYjE1MTAzMjNmOWEyYzUxM2Y4MDUzZDQ3OTg4YTY5MGMxYTczN2JjNzRkNGNhYjFhYjVmNzFkZSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWI5ZWMzMTcxNWI0OTQ2MTU5NTg2MmYwN2JlMWZiYTgwNzVjNGYxYzhjNzJiMDI3MzFjY2RhYTI4ZTg4YzQ4MmUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NzQ1MDA4MmFiNTZkYTFhZWNjNWVhZTJmMThkOTgwY2Q5ZTczMDZlNzkzMzRhMWE4MjZhOTFjZmQ5MDExNGE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1iNWFkMDk2MjAzZjlhOWQ3NmZkYTkzNDIyNjg3NWE4YjMwNGYxMDA1NjYzOGY3MzRkMTE2MzVhYzczZmE0OTA0LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MTJlZDM1ODFhYjY5ZjNmNTI1NTY4NWFjNDk1MzA4ODdhNTRkODI5MWQxZWE2ZWQ2YmU0NGY0MTM4YTM3ZjgwZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9YTM1ZDliODNlOTA0MDk1MjM4OGRlMTIxZDhjMjNkZWViM2VkOTJlYmQ2MTQwZWY0ZTNmMDg3OTIwNWQwYzE0Mix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRlMWI1YThkMjgxYjI0YjQyNGRhYzBjNzg1ODYxMzgwYTlkM2E4NjMyZjkwMTI1YjgyNWU1NmUxY2FmMTJhNTkiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTg2MmRiOWYwMzY3YTAzZjY1ZjNkNDgyYmMxNmMyNjlmOGM5MzZlOTUxYmZjZTZhYmRkYmI0YTAzMzJjNjRjYTcsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NzQ1MDA4MmFiNTZkYTFhZWNjNWVhZTJmMThkOTgwY2Q5ZTczMDZlNzkzMzRhMWE4MjZhOTFjZmQ5MDExNGE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj02NTI4NThlMGI2ZDI5YTgwYjlhNGRlNmIxNWI3MjRkZDkxZTc0MTMzZGY2ZjM2NjE1MDBkNzFjOTI5YmFmNmVkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Njc0NTAwODJhYjU2ZGExYWVjYzVlYWUyZjE4ZDk4MGNkOWU3MzA2ZTc5MzM0YTFhODI2YTkxY2ZkOTAxMTRhOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj02ZDM4NTYyYjFiMTUxMDMyM2Y5YTJjNTEzZjgwNTNkNDc5ODhhNjkwYzFhNzM3YmM3NGQ0Y2FiMWFiNWY3MWRlOmI5ZWMzMTcxNWI0OTQ2MTU5NTg2MmYwN2JlMWZiYTgwNzVjNGYxYzhjNzJiMDI3MzFjY2RhYTI4ZTg4YzQ4MmU6YjVhZDA5NjIwM2Y5YTlkNzZmZGE5MzQyMjY4NzVhOGIzMDRmMTAwNTY2MzhmNzM0ZDExNjM1YWM3M2ZhNDkwNDphMzVkOWI4M2U5MDQwOTUyMzg4ZGUxMjFkOGMyM2RlZWIzZWQ5MmViZDYxNDBlZjRlM2YwODc5MjA1ZDBjMTQyOjg2MmRiOWYwMzY3YTAzZjY1ZjNkNDgyYmMxNmMyNjlmOGM5MzZlOTUxYmZjZTZhYmRkYmI0YTAzMzJjNjRjYTc6NjUyODU4ZTBiNmQyOWE4MGI5YTRkZTZiMTViNzI0ZGQ5MWU3NDEzM2RmNmYzNjYxNTAwZDcxYzkyOWJhZjZlZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/incomplete-init/cassandra-statefulset.yaml b/src/agent/samples/policy/yaml/kubernetes/incomplete-init/cassandra-statefulset.yaml index 738a213bfe04..65090bf04e6d 100644 --- a/src/agent/samples/policy/yaml/kubernetes/incomplete-init/cassandra-statefulset.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/incomplete-init/cassandra-statefulset.yaml @@ -14,7 +14,7 @@ spec: labels: app: cassandra annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY2Fzc2FuZHJhLVthLXowLTldKiQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Nhc3NhbmRyYV9kYXRhIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY2Fzc2FuZHJhX2RhdGEkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi91c3IvYmluL2R1bWItaW5pdCIsCiAgICAgICAgICAgICIvYmluL2Jhc2giLAogICAgICAgICAgICAiL3J1bi5zaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9saWIvanZtL2phdmEtOC1vcGVuamRrLWFtZDY0L2JpbjovdXNyL2xvY2FsL2FwYWNoZS1jYXNzYW5kcmEtMy4xMS4yL2JpbiIsCiAgICAgICAgICAgICJDQVNTQU5EUkFfSE9NRT0vdXNyL2xvY2FsL2FwYWNoZS1jYXNzYW5kcmEtMy4xMS4yIiwKICAgICAgICAgICAgIkNBU1NBTkRSQV9DT05GPS9ldGMvY2Fzc2FuZHJhIiwKICAgICAgICAgICAgIkNBU1NBTkRSQV9EQVRBPS9jYXNzYW5kcmFfZGF0YSIsCiAgICAgICAgICAgICJDQVNTQU5EUkFfTE9HUz0vdmFyL2xvZy9jYXNzYW5kcmEiLAogICAgICAgICAgICAiSkFWQV9IT01FPS91c3IvbGliL2p2bS9qYXZhLTgtb3Blbmpkay1hbWQ2NCIsCiAgICAgICAgICAgICJIT1NUTkFNRT1jYXNzYW5kcmEiLAogICAgICAgICAgICAiTUFYX0hFQVBfU0laRT01MTJNIiwKICAgICAgICAgICAgIkhFQVBfTkVXU0laRT0xMDBNIiwKICAgICAgICAgICAgIlBPRF9OQU1FU1BBQ0U9ZGVmYXVsdCIsCiAgICAgICAgICAgICJDQVNTQU5EUkFfU0VFRFM9Y2Fzc2FuZHJhLTAuY2Fzc2FuZHJhLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLAogICAgICAgICAgICAiQ0FTU0FORFJBX0NMVVNURVJfTkFNRT1LOERlbW8iLAogICAgICAgICAgICAiQ0FTU0FORFJBX0RDPURDMS1LOERlbW8iLAogICAgICAgICAgICAiQ0FTU0FORFJBX1JBQ0s9UmFjazEtSzhEZW1vIiwKICAgICAgICAgICAgIlBPRF9JUD0kKHBvZC1pcCkiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfSVBDX0xPQ0siCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIsCiAgICAgICAgICAgICAgIkNBUF9JUENfTE9DSyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY2Fzc2FuZHJhLVthLXowLTldKiQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvY2Fzc2FuZHJhX2RhdGEiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1jYXNzYW5kcmFfZGF0YSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJjYXNzYW5kcmEiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJnY3IuaW8vZ29vZ2xlLXNhbXBsZXMvY2Fzc2FuZHJhOnYxMyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OTU4ZTVlOGM1NjAyYmJlYmNmZGEyMjBmMzhiY2JiYzRjZGRmZmM0YzU3NTIzMGZiN2YwYmQ5MGJhZjQ4MWRmNSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTU5MTRjZmMxNDdlMTNlNjViMjliMzZmMzE4NzU2YzFlODUxYTgwMDRhNTBmMTYyMGNmNjNjNGRiNDljNjZiOCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zMGM4NmMwZWU0NTVhMzZjODk0NzI1NTRjZDRjMjMxOWFlNDc5MWZkZjEyNzFiYTg5NzkzYjY2MmZiOTNmNDUwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9jNWQyMmZkYTE4NGU5ZTgzZGIyMDUxY2Y3OGEzODg1MDc1M2Q3YTQ0YzcwMDhlNzEwODQ2N2M1N2JjNTgwNTRkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAxY2RiZDhmNDEwYWMyMDc5ZTAzMGUyMTNjYzFkMmQxZDkzMzU4YjgzMDVkZGYxMjUyNTQ5NDZhOGMzNmM4MjciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVmOGEyZWNlY2JlNjBlZmUyZGMxNmU4MGIzNjVhNDBhNDE4OGU1N2RkNGUzZDZjMjVlN2U1MTNhNjJkNjdjMTUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9lNTkxNGNmYzE0N2UxM2U2NWIyOWIzNmYzMTg3NTZjMWU4NTFhODAwNGE1MGYxNjIwY2Y2M2M0ZGI0OWM2NmI4LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OTU4ZTVlOGM1NjAyYmJlYmNmZGEyMjBmMzhiY2JiYzRjZGRmZmM0YzU3NTIzMGZiN2YwYmQ5MGJhZjQ4MWRmNSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvYzVkMjJmZGExODRlOWU4M2RiMjA1MWNmNzhhMzg4NTA3NTNkN2E0NGM3MDA4ZTcxMDg0NjdjNTdiYzU4MDU0ZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTMwYzg2YzBlZTQ1NWEzNmM4OTQ3MjU1NGNkNGMyMzE5YWU0NzkxZmRmMTI3MWJhODk3OTNiNjYyZmI5M2Y0NTAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzVmOGEyZWNlY2JlNjBlZmUyZGMxNmU4MGIzNjVhNDBhNDE4OGU1N2RkNGUzZDZjMjVlN2U1MTNhNjJkNjdjMTUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0wMWNkYmQ4ZjQxMGFjMjA3OWUwMzBlMjEzY2MxZDJkMWQ5MzM1OGI4MzA1ZGRmMTI1MjU0OTQ2YThjMzZjODI3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2U1OTE0Y2ZjMTQ3ZTEzZTY1YjI5YjM2ZjMxODc1NmMxZTg1MWE4MDA0YTUwZjE2MjBjZjYzYzRkYjQ5YzY2Yjg6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYzVkMjJmZGExODRlOWU4M2RiMjA1MWNmNzhhMzg4NTA3NTNkN2E0NGM3MDA4ZTcxMDg0NjdjNTdiYzU4MDU0ZDovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81ZjhhMmVjZWNiZTYwZWZlMmRjMTZlODBiMzY1YTQwYTQxODhlNTdkZDRlM2Q2YzI1ZTdlNTEzYTYyZDY3YzE1IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogWwogICAgICAgICIvYmluL2Jhc2ggLWMgL3JlYWR5LXByb2JlLnNoIiwKICAgICAgICAiL2Jpbi9zaCAtYyBub2RldG9vbCBkcmFpbiIKICAgICAgXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY2Fzc2FuZHJhLVthLXowLTldKiQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Nhc3NhbmRyYV9kYXRhIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY2Fzc2FuZHJhX2RhdGEkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi91c3IvYmluL2R1bWItaW5pdCIsCiAgICAgICAgICAgICIvYmluL2Jhc2giLAogICAgICAgICAgICAiL3J1bi5zaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9saWIvanZtL2phdmEtOC1vcGVuamRrLWFtZDY0L2JpbjovdXNyL2xvY2FsL2FwYWNoZS1jYXNzYW5kcmEtMy4xMS4yL2JpbiIsCiAgICAgICAgICAgICJDQVNTQU5EUkFfSE9NRT0vdXNyL2xvY2FsL2FwYWNoZS1jYXNzYW5kcmEtMy4xMS4yIiwKICAgICAgICAgICAgIkNBU1NBTkRSQV9DT05GPS9ldGMvY2Fzc2FuZHJhIiwKICAgICAgICAgICAgIkNBU1NBTkRSQV9EQVRBPS9jYXNzYW5kcmFfZGF0YSIsCiAgICAgICAgICAgICJDQVNTQU5EUkFfTE9HUz0vdmFyL2xvZy9jYXNzYW5kcmEiLAogICAgICAgICAgICAiSkFWQV9IT01FPS91c3IvbGliL2p2bS9qYXZhLTgtb3Blbmpkay1hbWQ2NCIsCiAgICAgICAgICAgICJIT1NUTkFNRT1jYXNzYW5kcmEiLAogICAgICAgICAgICAiTUFYX0hFQVBfU0laRT01MTJNIiwKICAgICAgICAgICAgIkhFQVBfTkVXU0laRT0xMDBNIiwKICAgICAgICAgICAgIlBPRF9OQU1FU1BBQ0U9ZGVmYXVsdCIsCiAgICAgICAgICAgICJDQVNTQU5EUkFfU0VFRFM9Y2Fzc2FuZHJhLTAuY2Fzc2FuZHJhLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLAogICAgICAgICAgICAiQ0FTU0FORFJBX0NMVVNURVJfTkFNRT1LOERlbW8iLAogICAgICAgICAgICAiQ0FTU0FORFJBX0RDPURDMS1LOERlbW8iLAogICAgICAgICAgICAiQ0FTU0FORFJBX1JBQ0s9UmFjazEtSzhEZW1vIiwKICAgICAgICAgICAgIlBPRF9JUD0kKHBvZC1pcCkiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfSVBDX0xPQ0siCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIsCiAgICAgICAgICAgICAgIkNBUF9JUENfTE9DSyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY2Fzc2FuZHJhLVthLXowLTldKiQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvY2Fzc2FuZHJhX2RhdGEiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1jYXNzYW5kcmFfZGF0YSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJjYXNzYW5kcmEiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJnY3IuaW8vZ29vZ2xlLXNhbXBsZXMvY2Fzc2FuZHJhOnYxMyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OTU4ZTVlOGM1NjAyYmJlYmNmZGEyMjBmMzhiY2JiYzRjZGRmZmM0YzU3NTIzMGZiN2YwYmQ5MGJhZjQ4MWRmNSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTU5MTRjZmMxNDdlMTNlNjViMjliMzZmMzE4NzU2YzFlODUxYTgwMDRhNTBmMTYyMGNmNjNjNGRiNDljNjZiOCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zMGM4NmMwZWU0NTVhMzZjODk0NzI1NTRjZDRjMjMxOWFlNDc5MWZkZjEyNzFiYTg5NzkzYjY2MmZiOTNmNDUwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9jNWQyMmZkYTE4NGU5ZTgzZGIyMDUxY2Y3OGEzODg1MDc1M2Q3YTQ0YzcwMDhlNzEwODQ2N2M1N2JjNTgwNTRkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAxY2RiZDhmNDEwYWMyMDc5ZTAzMGUyMTNjYzFkMmQxZDkzMzU4YjgzMDVkZGYxMjUyNTQ5NDZhOGMzNmM4MjciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVmOGEyZWNlY2JlNjBlZmUyZGMxNmU4MGIzNjVhNDBhNDE4OGU1N2RkNGUzZDZjMjVlN2U1MTNhNjJkNjdjMTUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1lNTkxNGNmYzE0N2UxM2U2NWIyOWIzNmYzMTg3NTZjMWU4NTFhODAwNGE1MGYxNjIwY2Y2M2M0ZGI0OWM2NmI4LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OTU4ZTVlOGM1NjAyYmJlYmNmZGEyMjBmMzhiY2JiYzRjZGRmZmM0YzU3NTIzMGZiN2YwYmQ5MGJhZjQ4MWRmNSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9YzVkMjJmZGExODRlOWU4M2RiMjA1MWNmNzhhMzg4NTA3NTNkN2E0NGM3MDA4ZTcxMDg0NjdjNTdiYzU4MDU0ZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTMwYzg2YzBlZTQ1NWEzNmM4OTQ3MjU1NGNkNGMyMzE5YWU0NzkxZmRmMTI3MWJhODk3OTNiNjYyZmI5M2Y0NTAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTVmOGEyZWNlY2JlNjBlZmUyZGMxNmU4MGIzNjVhNDBhNDE4OGU1N2RkNGUzZDZjMjVlN2U1MTNhNjJkNjdjMTUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0wMWNkYmQ4ZjQxMGFjMjA3OWUwMzBlMjEzY2MxZDJkMWQ5MzM1OGI4MzA1ZGRmMTI1MjU0OTQ2YThjMzZjODI3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPWU1OTE0Y2ZjMTQ3ZTEzZTY1YjI5YjM2ZjMxODc1NmMxZTg1MWE4MDA0YTUwZjE2MjBjZjYzYzRkYjQ5YzY2Yjg6YzVkMjJmZGExODRlOWU4M2RiMjA1MWNmNzhhMzg4NTA3NTNkN2E0NGM3MDA4ZTcxMDg0NjdjNTdiYzU4MDU0ZDo1ZjhhMmVjZWNiZTYwZWZlMmRjMTZlODBiMzY1YTQwYTQxODhlNTdkZDRlM2Q2YzI1ZTdlNTEzYTYyZDY3YzE1IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogWwogICAgICAgICIvYmluL2Jhc2ggLWMgL3JlYWR5LXByb2JlLnNoIiwKICAgICAgICAiL2Jpbi9zaCAtYyBub2RldG9vbCBkcmFpbiIKICAgICAgXQogICAgfQogIF0KfQ== spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/incomplete-init/cockroachdb-statefulset.yaml b/src/agent/samples/policy/yaml/kubernetes/incomplete-init/cockroachdb-statefulset.yaml index 2967d4dca41f..900220f0cd23 100644 --- a/src/agent/samples/policy/yaml/kubernetes/incomplete-init/cockroachdb-statefulset.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/incomplete-init/cockroachdb-statefulset.yaml @@ -14,7 +14,7 @@ spec: labels: app: cockroachdb annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY29ja3JvYWNoZGItW2EtejAtOV0qJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvY29ja3JvYWNoL2NvY2tyb2FjaC1kYXRhIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY29ja3JvYWNoLWRhdGEkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9jb2Nrcm9hY2gvY29ja3JvYWNoLWRhdGEiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1jb2Nrcm9hY2gtZGF0YSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BlZXItZmluZGVyIiwKICAgICAgICAgICAgIi1vbi1zdGFydD0vb24tc3RhcnQuc2giLAogICAgICAgICAgICAiLXNlcnZpY2U9Y29ja3JvYWNoZGIiCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIkhPU1ROQU1FPWNvY2tyb2FjaGRiIiwKICAgICAgICAgICAgIlBPRF9OQU1FU1BBQ0U9ZGVmYXVsdCIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5jb2Nrcm9hY2hkYi1bYS16MC05XSokIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2NvY2tyb2FjaC9jb2Nrcm9hY2gtZGF0YSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWNvY2tyb2FjaC1kYXRhJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvY29ja3JvYWNoL2NvY2tyb2FjaC1kYXRhIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY29ja3JvYWNoLWRhdGEkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAiYm9vdHN0cmFwIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAiY29ja3JvYWNoZGIvY29ja3JvYWNoLWs4cy1pbml0OjAuMSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDFjODVkYjkwMmQyZjM2NDg4MTE3NmYzMjUxMDZlZjRkM2M1MWQyZjY0Yjg4M2I0ZDUwODMyN2NiMjEwOGY2MSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvOTlhMTQyMDU2Y2EzYWIxNDA0OTY3YTI5ODBkZWEzZWU1NmE2M2U5YWM0YWUxY2IyNjAyODlmZDBiMjUxOWRlOCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kMWM4NWRiOTAyZDJmMzY0ODgxMTc2ZjMyNTEwNmVmNGQzYzUxZDJmNjRiODgzYjRkNTA4MzI3Y2IyMTA4ZjYxIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84NDg3MGJjMzRjODViMDk0OWY5YmIzYjJkZDE4M2ZkOTgxNmM0MDk3ZjYyNTUzODMyZDA2YTZkZjAzYjg4ODJmIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2EwYWRlOTJmZTAzODIwNGUzZTFlZGU5OTU3MjYxM2FjMWYzNGNiNDU1ZmQwNjY1M2E2NjU5YjNmZmIwNGU4OTAiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Njc0NTAwODJhYjU2ZGExYWVjYzVlYWUyZjE4ZDk4MGNkOWU3MzA2ZTc5MzM0YTFhODI2YTkxY2ZkOTAxMTRhOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMzI0MTczN2IxZGIwNDZjZjAzY2NhY2Y0YWVlZjI0MmViOTBhMDE2ZWU1YTIwMjE5OGQ3ZmQ4YzJmZGNhNTQ0YiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jZjMzMDA1YTdiZWU2YmNkMDIzODJmNzdlOGJlOWI4YTc0Y2I3YmE1NjdiODk5Y2E2ODFlMWU5MmQ3ZjM0YjU4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8wNTRlZmMxNjI3YzQ3YWY0NWM1NDAyYzA0MmViYWVmMDUyM2QzNjI1MDI3NjA3ZWMwMzNlOWJmNzA0MzEyZGNlIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg3OGFjZjFiODA2ZWZkNzg1ZjhmNTJkNTBhZjA4ODk1N2NmM2ZiZDcyYzYzY2MzMjEyODhhZGYyMGVhZmJkMzUiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzUwNDU5MzVjYmJiZDYyZmFmMjBmNGVjZGUwMzJlMGE1ODk1MzM2MWI3NDkzMzQwOTA4YjIxMTIxZGQxYzNkYTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NmQ4NTIzYzVhZjFmNjBjNTk5NGExMWRiYTNlN2RlNjg1ZGU1OTc3NzkxMzYwMGIxZWU2NDFlMGUxZjc2NDE5YiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvM2FmMjcyMjU3Y2QxYzI0MTgyNjhkZDFkMGY5Y2JhNzA4NzE4NTNhODQ5YzVkMjU0ZmMwMjdiYWI4YzJmNWY4ZSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NzQ1MDA4MmFiNTZkYTFhZWNjNWVhZTJmMThkOTgwY2Q5ZTczMDZlNzkzMzRhMWE4MjZhOTFjZmQ5MDExNGE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9hYWI0NDQzYjc3NjQwM2MyNWFkOTcwZDc4ZTc2Mzk1MGU5NzA2ZmJiYzIyMjRjODUxMjBiZDZlNWFkOWNjY2MxIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI5NjE3NmMzYjBiYTYxOWYxMTNiNTQxNjU5MWRjYWMyOWQwMTY5ODZmMTc3MDA1MzRlOWIzMTk4OTAzZjQyOGUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDc1MmM5YmU1NDYzYjgzNzViZDJhZmU2M2M1MWMwODZiZTJhYzJiYTY1Nzg4MTRhNjNiZjA1MjJjMjJjYzk0MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjNiYTdiYTU5ZDIxNTI1NTU1Zjk1Njk0YTIwZDdiYTdiZDkxMTUzOWE0YTgyZDU2NTU2ZGU1YjY0OTNhOGE0YyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzk5YTE0MjA1NmNhM2FiMTQwNDk2N2EyOTgwZGVhM2VlNTZhNjNlOWFjNGFlMWNiMjYwMjg5ZmQwYjI1MTlkZTgsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kMWM4NWRiOTAyZDJmMzY0ODgxMTc2ZjMyNTEwNmVmNGQzYzUxZDJmNjRiODgzYjRkNTA4MzI3Y2IyMTA4ZjYxIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy84NDg3MGJjMzRjODViMDk0OWY5YmIzYjJkZDE4M2ZkOTgxNmM0MDk3ZjYyNTUzODMyZDA2YTZkZjAzYjg4ODJmLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDFjODVkYjkwMmQyZjM2NDg4MTE3NmYzMjUxMDZlZjRkM2M1MWQyZjY0Yjg4M2I0ZDUwODMyN2NiMjEwOGY2MSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvYTBhZGU5MmZlMDM4MjA0ZTNlMWVkZTk5NTcyNjEzYWMxZjM0Y2I0NTVmZDA2NjUzYTY2NTliM2ZmYjA0ZTg5MCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzMyNDE3MzdiMWRiMDQ2Y2YwM2NjYWNmNGFlZWYyNDJlYjkwYTAxNmVlNWEyMDIxOThkN2ZkOGMyZmRjYTU0NGIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NzQ1MDA4MmFiNTZkYTFhZWNjNWVhZTJmMThkOTgwY2Q5ZTczMDZlNzkzMzRhMWE4MjZhOTFjZmQ5MDExNGE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8wNTRlZmMxNjI3YzQ3YWY0NWM1NDAyYzA0MmViYWVmMDUyM2QzNjI1MDI3NjA3ZWMwMzNlOWJmNzA0MzEyZGNlLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Y2YzMzAwNWE3YmVlNmJjZDAyMzgyZjc3ZThiZTliOGE3NGNiN2JhNTY3Yjg5OWNhNjgxZTFlOTJkN2YzNGI1OCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNTA0NTkzNWNiYmJkNjJmYWYyMGY0ZWNkZTAzMmUwYTU4OTUzMzYxYjc0OTMzNDA5MDhiMjExMjFkZDFjM2RhMyx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg3OGFjZjFiODA2ZWZkNzg1ZjhmNTJkNTBhZjA4ODk1N2NmM2ZiZDcyYzYzY2MzMjEyODhhZGYyMGVhZmJkMzUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzNhZjI3MjI1N2NkMWMyNDE4MjY4ZGQxZDBmOWNiYTcwODcxODUzYTg0OWM1ZDI1NGZjMDI3YmFiOGMyZjVmOGUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02ZDg1MjNjNWFmMWY2MGM1OTk0YTExZGJhM2U3ZGU2ODVkZTU5Nzc3OTEzNjAwYjFlZTY0MWUwZTFmNzY0MTliIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9hYWI0NDQzYjc3NjQwM2MyNWFkOTcwZDc4ZTc2Mzk1MGU5NzA2ZmJiYzIyMjRjODUxMjBiZDZlNWFkOWNjY2MxLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Njc0NTAwODJhYjU2ZGExYWVjYzVlYWUyZjE4ZDk4MGNkOWU3MzA2ZTc5MzM0YTFhODI2YTkxY2ZkOTAxMTRhOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMjk2MTc2YzNiMGJhNjE5ZjExM2I1NDE2NTkxZGNhYzI5ZDAxNjk4NmYxNzcwMDUzNGU5YjMxOTg5MDNmNDI4ZSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzIzYmE3YmE1OWQyMTUyNTU1NWY5NTY5NGEyMGQ3YmE3YmQ5MTE1MzlhNGE4MmQ1NjU1NmRlNWI2NDkzYThhNGMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNzUyYzliZTU0NjNiODM3NWJkMmFmZTYzYzUxYzA4NmJlMmFjMmJhNjU3ODgxNGE2M2JmMDUyMmMyMmNjOTQwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzk5YTE0MjA1NmNhM2FiMTQwNDk2N2EyOTgwZGVhM2VlNTZhNjNlOWFjNGFlMWNiMjYwMjg5ZmQwYjI1MTlkZTg6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvODQ4NzBiYzM0Yzg1YjA5NDlmOWJiM2IyZGQxODNmZDk4MTZjNDA5N2Y2MjU1MzgzMmQwNmE2ZGYwM2I4ODgyZjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9hMGFkZTkyZmUwMzgyMDRlM2UxZWRlOTk1NzI2MTNhYzFmMzRjYjQ1NWZkMDY2NTNhNjY1OWIzZmZiMDRlODkwOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzMyNDE3MzdiMWRiMDQ2Y2YwM2NjYWNmNGFlZWYyNDJlYjkwYTAxNmVlNWEyMDIxOThkN2ZkOGMyZmRjYTU0NGI6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMDU0ZWZjMTYyN2M0N2FmNDVjNTQwMmMwNDJlYmFlZjA1MjNkMzYyNTAyNzYwN2VjMDMzZTliZjcwNDMxMmRjZTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81MDQ1OTM1Y2JiYmQ2MmZhZjIwZjRlY2RlMDMyZTBhNTg5NTMzNjFiNzQ5MzM0MDkwOGIyMTEyMWRkMWMzZGEzOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzNhZjI3MjI1N2NkMWMyNDE4MjY4ZGQxZDBmOWNiYTcwODcxODUzYTg0OWM1ZDI1NGZjMDI3YmFiOGMyZjVmOGU6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYWFiNDQ0M2I3NzY0MDNjMjVhZDk3MGQ3OGU3NjM5NTBlOTcwNmZiYmMyMjI0Yzg1MTIwYmQ2ZTVhZDljY2NjMTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yOTYxNzZjM2IwYmE2MTlmMTEzYjU0MTY1OTFkY2FjMjlkMDE2OTg2ZjE3NzAwNTM0ZTliMzE5ODkwM2Y0MjhlOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzIzYmE3YmE1OWQyMTUyNTU1NWY5NTY5NGEyMGQ3YmE3YmQ5MTE1MzlhNGE4MmQ1NjU1NmRlNWI2NDkzYThhNGMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL2Jpbi9iYXNoIiwKICAgICAgICAgICAgIi1lY3giLAogICAgICAgICAgICAiIyBUaGUgdXNlIG9mIHF1YWxpZmllZCBgaG9zdG5hbWUgLWZgIGlzIGNydWNpYWw6XG4jIE90aGVyIG5vZGVzIGFyZW4ndCBhYmxlIHRvIGxvb2sgdXAgdGhlIHVucXVhbGlmaWVkIGhvc3RuYW1lLlxuQ1JBUkdTPShcInN0YXJ0XCIgXCItLWxvZ3Rvc3RkZXJyXCIgXCItLWluc2VjdXJlXCIgXCItLWhvc3RcIiBcIiQoaG9zdG5hbWUgLWYpXCIgXCItLWh0dHAtaG9zdFwiIFwiMC4wLjAuMFwiKVxuIyBXZSBvbmx5IHdhbnQgdG8gaW5pdGlhbGl6ZSBhIG5ldyBjbHVzdGVyIChieSBvbWl0dGluZyB0aGUgam9pbiBmbGFnKVxuIyBpZiB3ZSdyZSBzdXJlIHRoYXQgd2UncmUgdGhlIGZpcnN0IG5vZGUgKGkuZS4gaW5kZXggMCkgYW5kIHRoYXRcbiMgdGhlcmUgYXJlbid0IGFueSBvdGhlciBub2RlcyBydW5uaW5nIGFzIHBhcnQgb2YgdGhlIGNsdXN0ZXIgdGhhdFxuIyB0aGlzIGlzIHN1cHBvc2VkIHRvIGJlIGEgcGFydCBvZiAod2hpY2ggaW5kaWNhdGVzIHRoYXQgYSBjbHVzdGVyXG4jIGFscmVhZHkgZXhpc3RzIGFuZCB3ZSBzaG91bGQgbWFrZSBzdXJlIG5vdCB0byBjcmVhdGUgYSBuZXcgb25lKS5cbiMgSXQncyBmaW5lIHRvIHJ1biB3aXRob3V0IC0tam9pbiBvbiBhIHJlc3RhcnQgaWYgdGhlcmUgYXJlbid0IGFueVxuIyBvdGhlciBub2Rlcy5cbmlmIFsgISBcIiQoaG9zdG5hbWUpXCIgPT0gXCJjb2Nrcm9hY2hkYi0wXCIgXSB8fCBcXFxuICAgWyAtZSBcIi9jb2Nrcm9hY2gvY29ja3JvYWNoLWRhdGEvY2x1c3Rlcl9leGlzdHNfbWFya2VyXCIgXVxudGhlblxuICAjIFdlIGRvbid0IGpvaW4gY29ja3JvYWNoZGIgaW4gb3JkZXIgdG8gYXZvaWQgYSBub2RlIGF0dGVtcHRpbmdcbiAgIyB0byBqb2luIGl0c2VsZiwgd2hpY2ggY3VycmVudGx5IGRvZXNuJ3Qgd29ya1xuICAjIChodHRwczovL2dpdGh1Yi5jb20vY29ja3JvYWNoZGIvY29ja3JvYWNoL2lzc3Vlcy85NjI1KS5cbiAgQ1JBUkdTKz0oXCItLWpvaW5cIiBcImNvY2tyb2FjaGRiLTAuY29ja3JvYWNoZGIsY29ja3JvYWNoZGItMS5jb2Nrcm9hY2hkYixjb2Nrcm9hY2hkYi0yLmNvY2tyb2FjaGRiXCIpXG5maVxuZXhlYyAvY29ja3JvYWNoL2NvY2tyb2FjaCAke0NSQVJHU1sqXX1cbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9Y29ja3JvYWNoZGIiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvY29ja3JvYWNoIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY29ja3JvYWNoZGItW2EtejAtOV0qJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9jb2Nrcm9hY2gvY29ja3JvYWNoLWRhdGEiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1jb2Nrcm9hY2gtZGF0YSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2NvY2tyb2FjaC9jb2Nrcm9hY2gtZGF0YSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWNvY2tyb2FjaC1kYXRhJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImNvY2tyb2FjaGRiIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAiY29ja3JvYWNoZGIvY29ja3JvYWNoOnYxLjAiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTFmODQzZjFkMDFhZGIzYjJlMTA4MGQ0YzBhYzUyYWRlN2QwNGE5MzAyYjcyMmNlZGJjN2I0ZWQzODAyODhjNTIiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2VmZTFiOTJjNDNiY2M3OWI0M2M0NjJiMTJhYjBkNDQ3NGVjNjA5MmI3ZDMzYzM2MTRjOTZlOThmOGIxN2VkY2IiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjNhNGNhNDJjMTE1MTUwYWQ4NTQ3MjdkNWMyNzBmZmQ3ZmM2MjI0YzQ2NWQxYjU4MTk1YjcwMjM1ODFjMWVlOSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjEzNGQ2NTZjNTMyNTZiYzVkYmQxNGYyZjEzMmE4YjY1MWYzZmY3NWZiNTYwYjFiNWJmNzBjYWI4MTEyNTliZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lYTdkOTEwOTQ1N2ZiNDRkYjU5YzE4YjVlMDk0ZjQ5ZTExYTY4MjU3MTczNDJkM2JhNWJkNzc3MTk4OTEwMDE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lMzgzNjliMjk1NjUzOWVkZjI1NWU2YjA1NWYxZDNhZTkwMmE5ODljODQ0ZDFiNjFhMDVjNTQ2MDdhMjM2MGQ4IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZWZlMWI5MmM0M2JjYzc5YjQzYzQ2MmIxMmFiMGQ0NDc0ZWM2MDkyYjdkMzNjMzYxNGM5NmU5OGY4YjE3ZWRjYix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTFmODQzZjFkMDFhZGIzYjJlMTA4MGQ0YzBhYzUyYWRlN2QwNGE5MzAyYjcyMmNlZGJjN2I0ZWQzODAyODhjNTIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzIxMzRkNjU2YzUzMjU2YmM1ZGJkMTRmMmYxMzJhOGI2NTFmM2ZmNzVmYjU2MGIxYjViZjcwY2FiODExMjU5YmQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iM2E0Y2E0MmMxMTUxNTBhZDg1NDcyN2Q1YzI3MGZmZDdmYzYyMjRjNDY1ZDFiNTgxOTViNzAyMzU4MWMxZWU5IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9lMzgzNjliMjk1NjUzOWVkZjI1NWU2YjA1NWYxZDNhZTkwMmE5ODljODQ0ZDFiNjFhMDVjNTQ2MDdhMjM2MGQ4LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZWE3ZDkxMDk0NTdmYjQ0ZGI1OWMxOGI1ZTA5NGY0OWUxMWE2ODI1NzE3MzQyZDNiYTViZDc3NzE5ODkxMDAxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lZmUxYjkyYzQzYmNjNzliNDNjNDYyYjEyYWIwZDQ0NzRlYzYwOTJiN2QzM2MzNjE0Yzk2ZTk4ZjhiMTdlZGNiOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzIxMzRkNjU2YzUzMjU2YmM1ZGJkMTRmMmYxMzJhOGI2NTFmM2ZmNzVmYjU2MGIxYjViZjcwY2FiODExMjU5YmQ6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTM4MzY5YjI5NTY1MzllZGYyNTVlNmIwNTVmMWQzYWU5MDJhOTg5Yzg0NGQxYjYxYTA1YzU0NjA3YTIzNjBkOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY29ja3JvYWNoZGItW2EtejAtOV0qJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvY29ja3JvYWNoL2NvY2tyb2FjaC1kYXRhIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY29ja3JvYWNoLWRhdGEkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9jb2Nrcm9hY2gvY29ja3JvYWNoLWRhdGEiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1jb2Nrcm9hY2gtZGF0YSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BlZXItZmluZGVyIiwKICAgICAgICAgICAgIi1vbi1zdGFydD0vb24tc3RhcnQuc2giLAogICAgICAgICAgICAiLXNlcnZpY2U9Y29ja3JvYWNoZGIiCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIkhPU1ROQU1FPWNvY2tyb2FjaGRiIiwKICAgICAgICAgICAgIlBPRF9OQU1FU1BBQ0U9ZGVmYXVsdCIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5jb2Nrcm9hY2hkYi1bYS16MC05XSokIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2NvY2tyb2FjaC9jb2Nrcm9hY2gtZGF0YSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWNvY2tyb2FjaC1kYXRhJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvY29ja3JvYWNoL2NvY2tyb2FjaC1kYXRhIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY29ja3JvYWNoLWRhdGEkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAiYm9vdHN0cmFwIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAiY29ja3JvYWNoZGIvY29ja3JvYWNoLWs4cy1pbml0OjAuMSIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDFjODVkYjkwMmQyZjM2NDg4MTE3NmYzMjUxMDZlZjRkM2M1MWQyZjY0Yjg4M2I0ZDUwODMyN2NiMjEwOGY2MSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvOTlhMTQyMDU2Y2EzYWIxNDA0OTY3YTI5ODBkZWEzZWU1NmE2M2U5YWM0YWUxY2IyNjAyODlmZDBiMjUxOWRlOCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kMWM4NWRiOTAyZDJmMzY0ODgxMTc2ZjMyNTEwNmVmNGQzYzUxZDJmNjRiODgzYjRkNTA4MzI3Y2IyMTA4ZjYxIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84NDg3MGJjMzRjODViMDk0OWY5YmIzYjJkZDE4M2ZkOTgxNmM0MDk3ZjYyNTUzODMyZDA2YTZkZjAzYjg4ODJmIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2EwYWRlOTJmZTAzODIwNGUzZTFlZGU5OTU3MjYxM2FjMWYzNGNiNDU1ZmQwNjY1M2E2NjU5YjNmZmIwNGU4OTAiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Njc0NTAwODJhYjU2ZGExYWVjYzVlYWUyZjE4ZDk4MGNkOWU3MzA2ZTc5MzM0YTFhODI2YTkxY2ZkOTAxMTRhOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMzI0MTczN2IxZGIwNDZjZjAzY2NhY2Y0YWVlZjI0MmViOTBhMDE2ZWU1YTIwMjE5OGQ3ZmQ4YzJmZGNhNTQ0YiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jZjMzMDA1YTdiZWU2YmNkMDIzODJmNzdlOGJlOWI4YTc0Y2I3YmE1NjdiODk5Y2E2ODFlMWU5MmQ3ZjM0YjU4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8wNTRlZmMxNjI3YzQ3YWY0NWM1NDAyYzA0MmViYWVmMDUyM2QzNjI1MDI3NjA3ZWMwMzNlOWJmNzA0MzEyZGNlIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg3OGFjZjFiODA2ZWZkNzg1ZjhmNTJkNTBhZjA4ODk1N2NmM2ZiZDcyYzYzY2MzMjEyODhhZGYyMGVhZmJkMzUiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzUwNDU5MzVjYmJiZDYyZmFmMjBmNGVjZGUwMzJlMGE1ODk1MzM2MWI3NDkzMzQwOTA4YjIxMTIxZGQxYzNkYTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NmQ4NTIzYzVhZjFmNjBjNTk5NGExMWRiYTNlN2RlNjg1ZGU1OTc3NzkxMzYwMGIxZWU2NDFlMGUxZjc2NDE5YiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvM2FmMjcyMjU3Y2QxYzI0MTgyNjhkZDFkMGY5Y2JhNzA4NzE4NTNhODQ5YzVkMjU0ZmMwMjdiYWI4YzJmNWY4ZSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NzQ1MDA4MmFiNTZkYTFhZWNjNWVhZTJmMThkOTgwY2Q5ZTczMDZlNzkzMzRhMWE4MjZhOTFjZmQ5MDExNGE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9hYWI0NDQzYjc3NjQwM2MyNWFkOTcwZDc4ZTc2Mzk1MGU5NzA2ZmJiYzIyMjRjODUxMjBiZDZlNWFkOWNjY2MxIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI5NjE3NmMzYjBiYTYxOWYxMTNiNTQxNjU5MWRjYWMyOWQwMTY5ODZmMTc3MDA1MzRlOWIzMTk4OTAzZjQyOGUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDc1MmM5YmU1NDYzYjgzNzViZDJhZmU2M2M1MWMwODZiZTJhYzJiYTY1Nzg4MTRhNjNiZjA1MjJjMjJjYzk0MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjNiYTdiYTU5ZDIxNTI1NTU1Zjk1Njk0YTIwZDdiYTdiZDkxMTUzOWE0YTgyZDU2NTU2ZGU1YjY0OTNhOGE0YyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTk5YTE0MjA1NmNhM2FiMTQwNDk2N2EyOTgwZGVhM2VlNTZhNjNlOWFjNGFlMWNiMjYwMjg5ZmQwYjI1MTlkZTgsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kMWM4NWRiOTAyZDJmMzY0ODgxMTc2ZjMyNTEwNmVmNGQzYzUxZDJmNjRiODgzYjRkNTA4MzI3Y2IyMTA4ZjYxIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj04NDg3MGJjMzRjODViMDk0OWY5YmIzYjJkZDE4M2ZkOTgxNmM0MDk3ZjYyNTUzODMyZDA2YTZkZjAzYjg4ODJmLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDFjODVkYjkwMmQyZjM2NDg4MTE3NmYzMjUxMDZlZjRkM2M1MWQyZjY0Yjg4M2I0ZDUwODMyN2NiMjEwOGY2MSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9YTBhZGU5MmZlMDM4MjA0ZTNlMWVkZTk5NTcyNjEzYWMxZjM0Y2I0NTVmZDA2NjUzYTY2NTliM2ZmYjA0ZTg5MCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTMyNDE3MzdiMWRiMDQ2Y2YwM2NjYWNmNGFlZWYyNDJlYjkwYTAxNmVlNWEyMDIxOThkN2ZkOGMyZmRjYTU0NGIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02NzQ1MDA4MmFiNTZkYTFhZWNjNWVhZTJmMThkOTgwY2Q5ZTczMDZlNzkzMzRhMWE4MjZhOTFjZmQ5MDExNGE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0wNTRlZmMxNjI3YzQ3YWY0NWM1NDAyYzA0MmViYWVmMDUyM2QzNjI1MDI3NjA3ZWMwMzNlOWJmNzA0MzEyZGNlLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Y2YzMzAwNWE3YmVlNmJjZDAyMzgyZjc3ZThiZTliOGE3NGNiN2JhNTY3Yjg5OWNhNjgxZTFlOTJkN2YzNGI1OCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NTA0NTkzNWNiYmJkNjJmYWYyMGY0ZWNkZTAzMmUwYTU4OTUzMzYxYjc0OTMzNDA5MDhiMjExMjFkZDFjM2RhMyx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg3OGFjZjFiODA2ZWZkNzg1ZjhmNTJkNTBhZjA4ODk1N2NmM2ZiZDcyYzYzY2MzMjEyODhhZGYyMGVhZmJkMzUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTNhZjI3MjI1N2NkMWMyNDE4MjY4ZGQxZDBmOWNiYTcwODcxODUzYTg0OWM1ZDI1NGZjMDI3YmFiOGMyZjVmOGUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02ZDg1MjNjNWFmMWY2MGM1OTk0YTExZGJhM2U3ZGU2ODVkZTU5Nzc3OTEzNjAwYjFlZTY0MWUwZTFmNzY0MTliIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1hYWI0NDQzYjc3NjQwM2MyNWFkOTcwZDc4ZTc2Mzk1MGU5NzA2ZmJiYzIyMjRjODUxMjBiZDZlNWFkOWNjY2MxLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9Njc0NTAwODJhYjU2ZGExYWVjYzVlYWUyZjE4ZDk4MGNkOWU3MzA2ZTc5MzM0YTFhODI2YTkxY2ZkOTAxMTRhOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9Mjk2MTc2YzNiMGJhNjE5ZjExM2I1NDE2NTkxZGNhYzI5ZDAxNjk4NmYxNzcwMDUzNGU5YjMxOTg5MDNmNDI4ZSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTY3NDUwMDgyYWI1NmRhMWFlY2M1ZWFlMmYxOGQ5ODBjZDllNzMwNmU3OTMzNGExYTgyNmE5MWNmZDkwMTE0YTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTIzYmE3YmE1OWQyMTUyNTU1NWY5NTY5NGEyMGQ3YmE3YmQ5MTE1MzlhNGE4MmQ1NjU1NmRlNWI2NDkzYThhNGMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNzUyYzliZTU0NjNiODM3NWJkMmFmZTYzYzUxYzA4NmJlMmFjMmJhNjU3ODgxNGE2M2JmMDUyMmMyMmNjOTQwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTk5YTE0MjA1NmNhM2FiMTQwNDk2N2EyOTgwZGVhM2VlNTZhNjNlOWFjNGFlMWNiMjYwMjg5ZmQwYjI1MTlkZTg6ODQ4NzBiYzM0Yzg1YjA5NDlmOWJiM2IyZGQxODNmZDk4MTZjNDA5N2Y2MjU1MzgzMmQwNmE2ZGYwM2I4ODgyZjphMGFkZTkyZmUwMzgyMDRlM2UxZWRlOTk1NzI2MTNhYzFmMzRjYjQ1NWZkMDY2NTNhNjY1OWIzZmZiMDRlODkwOjMyNDE3MzdiMWRiMDQ2Y2YwM2NjYWNmNGFlZWYyNDJlYjkwYTAxNmVlNWEyMDIxOThkN2ZkOGMyZmRjYTU0NGI6MDU0ZWZjMTYyN2M0N2FmNDVjNTQwMmMwNDJlYmFlZjA1MjNkMzYyNTAyNzYwN2VjMDMzZTliZjcwNDMxMmRjZTo1MDQ1OTM1Y2JiYmQ2MmZhZjIwZjRlY2RlMDMyZTBhNTg5NTMzNjFiNzQ5MzM0MDkwOGIyMTEyMWRkMWMzZGEzOjNhZjI3MjI1N2NkMWMyNDE4MjY4ZGQxZDBmOWNiYTcwODcxODUzYTg0OWM1ZDI1NGZjMDI3YmFiOGMyZjVmOGU6YWFiNDQ0M2I3NzY0MDNjMjVhZDk3MGQ3OGU3NjM5NTBlOTcwNmZiYmMyMjI0Yzg1MTIwYmQ2ZTVhZDljY2NjMToyOTYxNzZjM2IwYmE2MTlmMTEzYjU0MTY1OTFkY2FjMjlkMDE2OTg2ZjE3NzAwNTM0ZTliMzE5ODkwM2Y0MjhlOjIzYmE3YmE1OWQyMTUyNTU1NWY5NTY5NGEyMGQ3YmE3YmQ5MTE1MzlhNGE4MmQ1NjU1NmRlNWI2NDkzYThhNGMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL2Jpbi9iYXNoIiwKICAgICAgICAgICAgIi1lY3giLAogICAgICAgICAgICAiIyBUaGUgdXNlIG9mIHF1YWxpZmllZCBgaG9zdG5hbWUgLWZgIGlzIGNydWNpYWw6XG4jIE90aGVyIG5vZGVzIGFyZW4ndCBhYmxlIHRvIGxvb2sgdXAgdGhlIHVucXVhbGlmaWVkIGhvc3RuYW1lLlxuQ1JBUkdTPShcInN0YXJ0XCIgXCItLWxvZ3Rvc3RkZXJyXCIgXCItLWluc2VjdXJlXCIgXCItLWhvc3RcIiBcIiQoaG9zdG5hbWUgLWYpXCIgXCItLWh0dHAtaG9zdFwiIFwiMC4wLjAuMFwiKVxuIyBXZSBvbmx5IHdhbnQgdG8gaW5pdGlhbGl6ZSBhIG5ldyBjbHVzdGVyIChieSBvbWl0dGluZyB0aGUgam9pbiBmbGFnKVxuIyBpZiB3ZSdyZSBzdXJlIHRoYXQgd2UncmUgdGhlIGZpcnN0IG5vZGUgKGkuZS4gaW5kZXggMCkgYW5kIHRoYXRcbiMgdGhlcmUgYXJlbid0IGFueSBvdGhlciBub2RlcyBydW5uaW5nIGFzIHBhcnQgb2YgdGhlIGNsdXN0ZXIgdGhhdFxuIyB0aGlzIGlzIHN1cHBvc2VkIHRvIGJlIGEgcGFydCBvZiAod2hpY2ggaW5kaWNhdGVzIHRoYXQgYSBjbHVzdGVyXG4jIGFscmVhZHkgZXhpc3RzIGFuZCB3ZSBzaG91bGQgbWFrZSBzdXJlIG5vdCB0byBjcmVhdGUgYSBuZXcgb25lKS5cbiMgSXQncyBmaW5lIHRvIHJ1biB3aXRob3V0IC0tam9pbiBvbiBhIHJlc3RhcnQgaWYgdGhlcmUgYXJlbid0IGFueVxuIyBvdGhlciBub2Rlcy5cbmlmIFsgISBcIiQoaG9zdG5hbWUpXCIgPT0gXCJjb2Nrcm9hY2hkYi0wXCIgXSB8fCBcXFxuICAgWyAtZSBcIi9jb2Nrcm9hY2gvY29ja3JvYWNoLWRhdGEvY2x1c3Rlcl9leGlzdHNfbWFya2VyXCIgXVxudGhlblxuICAjIFdlIGRvbid0IGpvaW4gY29ja3JvYWNoZGIgaW4gb3JkZXIgdG8gYXZvaWQgYSBub2RlIGF0dGVtcHRpbmdcbiAgIyB0byBqb2luIGl0c2VsZiwgd2hpY2ggY3VycmVudGx5IGRvZXNuJ3Qgd29ya1xuICAjIChodHRwczovL2dpdGh1Yi5jb20vY29ja3JvYWNoZGIvY29ja3JvYWNoL2lzc3Vlcy85NjI1KS5cbiAgQ1JBUkdTKz0oXCItLWpvaW5cIiBcImNvY2tyb2FjaGRiLTAuY29ja3JvYWNoZGIsY29ja3JvYWNoZGItMS5jb2Nrcm9hY2hkYixjb2Nrcm9hY2hkYi0yLmNvY2tyb2FjaGRiXCIpXG5maVxuZXhlYyAvY29ja3JvYWNoL2NvY2tyb2FjaCAke0NSQVJHU1sqXX1cbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9Y29ja3JvYWNoZGIiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvY29ja3JvYWNoIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY29ja3JvYWNoZGItW2EtejAtOV0qJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9jb2Nrcm9hY2gvY29ja3JvYWNoLWRhdGEiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1jb2Nrcm9hY2gtZGF0YSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2NvY2tyb2FjaC9jb2Nrcm9hY2gtZGF0YSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWNvY2tyb2FjaC1kYXRhJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImNvY2tyb2FjaGRiIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAiY29ja3JvYWNoZGIvY29ja3JvYWNoOnYxLjAiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTFmODQzZjFkMDFhZGIzYjJlMTA4MGQ0YzBhYzUyYWRlN2QwNGE5MzAyYjcyMmNlZGJjN2I0ZWQzODAyODhjNTIiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2VmZTFiOTJjNDNiY2M3OWI0M2M0NjJiMTJhYjBkNDQ3NGVjNjA5MmI3ZDMzYzM2MTRjOTZlOThmOGIxN2VkY2IiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjNhNGNhNDJjMTE1MTUwYWQ4NTQ3MjdkNWMyNzBmZmQ3ZmM2MjI0YzQ2NWQxYjU4MTk1YjcwMjM1ODFjMWVlOSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjEzNGQ2NTZjNTMyNTZiYzVkYmQxNGYyZjEzMmE4YjY1MWYzZmY3NWZiNTYwYjFiNWJmNzBjYWI4MTEyNTliZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1lYTdkOTEwOTQ1N2ZiNDRkYjU5YzE4YjVlMDk0ZjQ5ZTExYTY4MjU3MTczNDJkM2JhNWJkNzc3MTk4OTEwMDE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lMzgzNjliMjk1NjUzOWVkZjI1NWU2YjA1NWYxZDNhZTkwMmE5ODljODQ0ZDFiNjFhMDVjNTQ2MDdhMjM2MGQ4IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZWZlMWI5MmM0M2JjYzc5YjQzYzQ2MmIxMmFiMGQ0NDc0ZWM2MDkyYjdkMzNjMzYxNGM5NmU5OGY4YjE3ZWRjYix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTFmODQzZjFkMDFhZGIzYjJlMTA4MGQ0YzBhYzUyYWRlN2QwNGE5MzAyYjcyMmNlZGJjN2I0ZWQzODAyODhjNTIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTIxMzRkNjU2YzUzMjU2YmM1ZGJkMTRmMmYxMzJhOGI2NTFmM2ZmNzVmYjU2MGIxYjViZjcwY2FiODExMjU5YmQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iM2E0Y2E0MmMxMTUxNTBhZDg1NDcyN2Q1YzI3MGZmZDdmYzYyMjRjNDY1ZDFiNTgxOTViNzAyMzU4MWMxZWU5IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1lMzgzNjliMjk1NjUzOWVkZjI1NWU2YjA1NWYxZDNhZTkwMmE5ODljODQ0ZDFiNjFhMDVjNTQ2MDdhMjM2MGQ4LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZWE3ZDkxMDk0NTdmYjQ0ZGI1OWMxOGI1ZTA5NGY0OWUxMWE2ODI1NzE3MzQyZDNiYTViZDc3NzE5ODkxMDAxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj1lZmUxYjkyYzQzYmNjNzliNDNjNDYyYjEyYWIwZDQ0NzRlYzYwOTJiN2QzM2MzNjE0Yzk2ZTk4ZjhiMTdlZGNiOjIxMzRkNjU2YzUzMjU2YmM1ZGJkMTRmMmYxMzJhOGI2NTFmM2ZmNzVmYjU2MGIxYjViZjcwY2FiODExMjU5YmQ6ZTM4MzY5YjI5NTY1MzllZGYyNTVlNmIwNTVmMWQzYWU5MDJhOTg5Yzg0NGQxYjYxYTA1YzU0NjA3YTIzNjBkOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 spec: runtimeClassName: kata-cc initContainers: diff --git a/src/agent/samples/policy/yaml/kubernetes/incomplete-init/controller.yaml b/src/agent/samples/policy/yaml/kubernetes/incomplete-init/controller.yaml index 60bd043c40b7..6fd3e484b224 100644 --- a/src/agent/samples/policy/yaml/kubernetes/incomplete-init/controller.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/incomplete-init/controller.yaml @@ -10,7 +10,7 @@ spec: labels: app: cassandra annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY2Fzc2FuZHJhLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvcnVuLnNoIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2xpYi9qdm0vamF2YS04LW9wZW5qZGstYW1kNjQvYmluOi91c3IvbG9jYWwvYXBhY2hlLWNhc3NhbmRyYS0zLjExLjIvYmluIiwKICAgICAgICAgICAgIkNBU1NBTkRSQV9IT01FPS91c3IvbG9jYWwvYXBhY2hlLWNhc3NhbmRyYS0zLjExLjIiLAogICAgICAgICAgICAiQ0FTU0FORFJBX0NPTkY9L2V0Yy9jYXNzYW5kcmEiLAogICAgICAgICAgICAiQ0FTU0FORFJBX0RBVEE9L2Nhc3NhbmRyYV9kYXRhIiwKICAgICAgICAgICAgIkNBU1NBTkRSQV9MT0dTPS92YXIvbG9nL2Nhc3NhbmRyYSIsCiAgICAgICAgICAgICJKQVZBX0hPTUU9L3Vzci9saWIvanZtL2phdmEtOC1vcGVuamRrLWFtZDY0IiwKICAgICAgICAgICAgIkhPU1ROQU1FPWNhc3NhbmRyYSIsCiAgICAgICAgICAgICJNQVhfSEVBUF9TSVpFPTUxMk0iLAogICAgICAgICAgICAiSEVBUF9ORVdTSVpFPTEwME0iLAogICAgICAgICAgICAiQ0FTU0FORFJBX1NFRURfUFJPVklERVI9aW8uazhzLmNhc3NhbmRyYS5LdWJlcm5ldGVzU2VlZFByb3ZpZGVyIiwKICAgICAgICAgICAgIlBPRF9OQU1FU1BBQ0U9ZGVmYXVsdCIsCiAgICAgICAgICAgICJQT0RfSVA9JChwb2QtaXApIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXmNhc3NhbmRyYS1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvY2Fzc2FuZHJhX2RhdGEiLAogICAgICAgICAgICAidHlwZSI6ICJsb2NhbCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoc2FuZGJveC1pZCkvbG9jYWwvZGF0YSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJjYXNzYW5kcmEiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJnY3IuaW8vZ29vZ2xlLXNhbXBsZXMvY2Fzc2FuZHJhOnYxMyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OTU4ZTVlOGM1NjAyYmJlYmNmZGEyMjBmMzhiY2JiYzRjZGRmZmM0YzU3NTIzMGZiN2YwYmQ5MGJhZjQ4MWRmNSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTU5MTRjZmMxNDdlMTNlNjViMjliMzZmMzE4NzU2YzFlODUxYTgwMDRhNTBmMTYyMGNmNjNjNGRiNDljNjZiOCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zMGM4NmMwZWU0NTVhMzZjODk0NzI1NTRjZDRjMjMxOWFlNDc5MWZkZjEyNzFiYTg5NzkzYjY2MmZiOTNmNDUwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9jNWQyMmZkYTE4NGU5ZTgzZGIyMDUxY2Y3OGEzODg1MDc1M2Q3YTQ0YzcwMDhlNzEwODQ2N2M1N2JjNTgwNTRkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAxY2RiZDhmNDEwYWMyMDc5ZTAzMGUyMTNjYzFkMmQxZDkzMzU4YjgzMDVkZGYxMjUyNTQ5NDZhOGMzNmM4MjciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVmOGEyZWNlY2JlNjBlZmUyZGMxNmU4MGIzNjVhNDBhNDE4OGU1N2RkNGUzZDZjMjVlN2U1MTNhNjJkNjdjMTUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9lNTkxNGNmYzE0N2UxM2U2NWIyOWIzNmYzMTg3NTZjMWU4NTFhODAwNGE1MGYxNjIwY2Y2M2M0ZGI0OWM2NmI4LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OTU4ZTVlOGM1NjAyYmJlYmNmZGEyMjBmMzhiY2JiYzRjZGRmZmM0YzU3NTIzMGZiN2YwYmQ5MGJhZjQ4MWRmNSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvYzVkMjJmZGExODRlOWU4M2RiMjA1MWNmNzhhMzg4NTA3NTNkN2E0NGM3MDA4ZTcxMDg0NjdjNTdiYzU4MDU0ZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTMwYzg2YzBlZTQ1NWEzNmM4OTQ3MjU1NGNkNGMyMzE5YWU0NzkxZmRmMTI3MWJhODk3OTNiNjYyZmI5M2Y0NTAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzVmOGEyZWNlY2JlNjBlZmUyZGMxNmU4MGIzNjVhNDBhNDE4OGU1N2RkNGUzZDZjMjVlN2U1MTNhNjJkNjdjMTUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0wMWNkYmQ4ZjQxMGFjMjA3OWUwMzBlMjEzY2MxZDJkMWQ5MzM1OGI4MzA1ZGRmMTI1MjU0OTQ2YThjMzZjODI3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2U1OTE0Y2ZjMTQ3ZTEzZTY1YjI5YjM2ZjMxODc1NmMxZTg1MWE4MDA0YTUwZjE2MjBjZjYzYzRkYjQ5YzY2Yjg6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYzVkMjJmZGExODRlOWU4M2RiMjA1MWNmNzhhMzg4NTA3NTNkN2E0NGM3MDA4ZTcxMDg0NjdjNTdiYzU4MDU0ZDovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81ZjhhMmVjZWNiZTYwZWZlMmRjMTZlODBiMzY1YTQwYTQxODhlNTdkZDRlM2Q2YzI1ZTdlNTEzYTYyZDY3YzE1IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAibG9jYWwiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogImxvY2FsIiwKICAgICAgICAgICJmc3R5cGUiOiAibG9jYWwiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJtb2RlPTA3NzciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKHNhbmRib3gtaWQpL2xvY2FsL2RhdGEkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY2Fzc2FuZHJhLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvcnVuLnNoIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2xpYi9qdm0vamF2YS04LW9wZW5qZGstYW1kNjQvYmluOi91c3IvbG9jYWwvYXBhY2hlLWNhc3NhbmRyYS0zLjExLjIvYmluIiwKICAgICAgICAgICAgIkNBU1NBTkRSQV9IT01FPS91c3IvbG9jYWwvYXBhY2hlLWNhc3NhbmRyYS0zLjExLjIiLAogICAgICAgICAgICAiQ0FTU0FORFJBX0NPTkY9L2V0Yy9jYXNzYW5kcmEiLAogICAgICAgICAgICAiQ0FTU0FORFJBX0RBVEE9L2Nhc3NhbmRyYV9kYXRhIiwKICAgICAgICAgICAgIkNBU1NBTkRSQV9MT0dTPS92YXIvbG9nL2Nhc3NhbmRyYSIsCiAgICAgICAgICAgICJKQVZBX0hPTUU9L3Vzci9saWIvanZtL2phdmEtOC1vcGVuamRrLWFtZDY0IiwKICAgICAgICAgICAgIkhPU1ROQU1FPWNhc3NhbmRyYSIsCiAgICAgICAgICAgICJNQVhfSEVBUF9TSVpFPTUxMk0iLAogICAgICAgICAgICAiSEVBUF9ORVdTSVpFPTEwME0iLAogICAgICAgICAgICAiQ0FTU0FORFJBX1NFRURfUFJPVklERVI9aW8uazhzLmNhc3NhbmRyYS5LdWJlcm5ldGVzU2VlZFByb3ZpZGVyIiwKICAgICAgICAgICAgIlBPRF9OQU1FU1BBQ0U9ZGVmYXVsdCIsCiAgICAgICAgICAgICJQT0RfSVA9JChwb2QtaXApIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaG9zdG5hbWUiOiAiXmNhc3NhbmRyYS1bYS16MC05XXs1fSQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvY2Fzc2FuZHJhX2RhdGEiLAogICAgICAgICAgICAidHlwZSI6ICJsb2NhbCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoc2FuZGJveC1pZCkvbG9jYWwvZGF0YSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJjYXNzYW5kcmEiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJnY3IuaW8vZ29vZ2xlLXNhbXBsZXMvY2Fzc2FuZHJhOnYxMyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OTU4ZTVlOGM1NjAyYmJlYmNmZGEyMjBmMzhiY2JiYzRjZGRmZmM0YzU3NTIzMGZiN2YwYmQ5MGJhZjQ4MWRmNSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTU5MTRjZmMxNDdlMTNlNjViMjliMzZmMzE4NzU2YzFlODUxYTgwMDRhNTBmMTYyMGNmNjNjNGRiNDljNjZiOCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zMGM4NmMwZWU0NTVhMzZjODk0NzI1NTRjZDRjMjMxOWFlNDc5MWZkZjEyNzFiYTg5NzkzYjY2MmZiOTNmNDUwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9jNWQyMmZkYTE4NGU5ZTgzZGIyMDUxY2Y3OGEzODg1MDc1M2Q3YTQ0YzcwMDhlNzEwODQ2N2M1N2JjNTgwNTRkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTAxY2RiZDhmNDEwYWMyMDc5ZTAzMGUyMTNjYzFkMmQxZDkzMzU4YjgzMDVkZGYxMjUyNTQ5NDZhOGMzNmM4MjciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVmOGEyZWNlY2JlNjBlZmUyZGMxNmU4MGIzNjVhNDBhNDE4OGU1N2RkNGUzZDZjMjVlN2U1MTNhNjJkNjdjMTUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1lNTkxNGNmYzE0N2UxM2U2NWIyOWIzNmYzMTg3NTZjMWU4NTFhODAwNGE1MGYxNjIwY2Y2M2M0ZGI0OWM2NmI4LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OTU4ZTVlOGM1NjAyYmJlYmNmZGEyMjBmMzhiY2JiYzRjZGRmZmM0YzU3NTIzMGZiN2YwYmQ5MGJhZjQ4MWRmNSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9YzVkMjJmZGExODRlOWU4M2RiMjA1MWNmNzhhMzg4NTA3NTNkN2E0NGM3MDA4ZTcxMDg0NjdjNTdiYzU4MDU0ZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTMwYzg2YzBlZTQ1NWEzNmM4OTQ3MjU1NGNkNGMyMzE5YWU0NzkxZmRmMTI3MWJhODk3OTNiNjYyZmI5M2Y0NTAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTVmOGEyZWNlY2JlNjBlZmUyZGMxNmU4MGIzNjVhNDBhNDE4OGU1N2RkNGUzZDZjMjVlN2U1MTNhNjJkNjdjMTUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0wMWNkYmQ4ZjQxMGFjMjA3OWUwMzBlMjEzY2MxZDJkMWQ5MzM1OGI4MzA1ZGRmMTI1MjU0OTQ2YThjMzZjODI3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPWU1OTE0Y2ZjMTQ3ZTEzZTY1YjI5YjM2ZjMxODc1NmMxZTg1MWE4MDA0YTUwZjE2MjBjZjYzYzRkYjQ5YzY2Yjg6YzVkMjJmZGExODRlOWU4M2RiMjA1MWNmNzhhMzg4NTA3NTNkN2E0NGM3MDA4ZTcxMDg0NjdjNTdiYzU4MDU0ZDo1ZjhhMmVjZWNiZTYwZWZlMmRjMTZlODBiMzY1YTQwYTQxODhlNTdkZDRlM2Q2YzI1ZTdlNTEzYTYyZDY3YzE1IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAibG9jYWwiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogImxvY2FsIiwKICAgICAgICAgICJmc3R5cGUiOiAibG9jYWwiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJtb2RlPTA3NzciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKHNhbmRib3gtaWQpL2xvY2FsL2RhdGEkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/kubernetes/incomplete-init/node_ds.yaml b/src/agent/samples/policy/yaml/kubernetes/incomplete-init/node_ds.yaml index bf9d316b4ef0..daac9f552ba5 100644 --- a/src/agent/samples/policy/yaml/kubernetes/incomplete-init/node_ds.yaml +++ b/src/agent/samples/policy/yaml/kubernetes/incomplete-init/node_ds.yaml @@ -12,7 +12,7 @@ spec: labels: app: gcp-compute-persistent-disk-csi-driver annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY3NpLWdjZS1wZC1ub2RlLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvY3NpLW5vZGUtZHJpdmVyLXJlZ2lzdHJhciIsCiAgICAgICAgICAgICItLXY9NSIsCiAgICAgICAgICAgICItLWNzaS1hZGRyZXNzPS9jc2kvY3NpLnNvY2siLAogICAgICAgICAgICAiLS1rdWJlbGV0LXJlZ2lzdHJhdGlvbi1wYXRoPS92YXIvbGliL2t1YmVsZXQvcGx1Z2lucy9wZC5jc2kuc3RvcmFnZS5na2UuaW8vY3NpLnNvY2siLAogICAgICAgICAgICAiLS1odHRwLWVuZHBvaW50PToyMjAxMyIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiU1NMX0NFUlRfRklMRT0vZXRjL3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IiwKICAgICAgICAgICAgIkhPU1ROQU1FPWNzaS1nY2UtcGQtbm9kZSIsCiAgICAgICAgICAgICJLVUJFX05PREVfTkFNRT0kKG5vZGUtbmFtZSkiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY3NpLWdjZS1wZC1ub2RlLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9yZWdpc3RyYXRpb24iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZWdpc3RyYXRpb24kIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9jc2kiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1jc2kkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAiY3NpLWRyaXZlci1yZWdpc3RyYXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJyZWdpc3RyeS5rOHMuaW8vc2lnLXN0b3JhZ2UvY3NpLW5vZGUtZHJpdmVyLXJlZ2lzdHJhcjp2Mi41LjEiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWFlMWMwNTY5OThmYWZjYzMwNzg0ODVlMDNjMWQxOWY1OTMwYzRhNDQ0ZjBmZWEyZWU1NjM5YmU2ZjkwNzhmMjUiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2MzYjQwNGE3ODI2ZDdmNjk5M2U0MWI4NzFjZjNjYzU1MWJkNDIzY2E3MzhiYmM0MGZkMzIyZmZkMWUwOWNhMjAiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NGYzZTM4ZTBlMGMwNmY4NWUyZDIxNGMwYTc4MjZlMmMwZGRiOWQwMTEzMDc2YTQ2YjE1ZGE1OTYzOTlkNDVkZSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvM2MxOGYyN2RmMWQxZjI5NjA0M2Q1YjNjOGQ2MmEyOTMyYmRlY2ZmYThmZDBjZTRmMTk1YjY5NmYyNjM0NzRmNiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2MzYjQwNGE3ODI2ZDdmNjk5M2U0MWI4NzFjZjNjYzU1MWJkNDIzY2E3MzhiYmM0MGZkMzIyZmZkMWUwOWNhMjAsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hZTFjMDU2OTk4ZmFmY2MzMDc4NDg1ZTAzYzFkMTlmNTkzMGM0YTQ0NGYwZmVhMmVlNTYzOWJlNmY5MDc4ZjI1IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8zYzE4ZjI3ZGYxZDFmMjk2MDQzZDViM2M4ZDYyYTI5MzJiZGVjZmZhOGZkMGNlNGYxOTViNjk2ZjI2MzQ3NGY2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NGYzZTM4ZTBlMGMwNmY4NWUyZDIxNGMwYTc4MjZlMmMwZGRiOWQwMTEzMDc2YTQ2YjE1ZGE1OTYzOTlkNDVkZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9jM2I0MDRhNzgyNmQ3ZjY5OTNlNDFiODcxY2YzY2M1NTFiZDQyM2NhNzM4YmJjNDBmZDMyMmZmZDFlMDljYTIwOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzNjMThmMjdkZjFkMWYyOTYwNDNkNWIzYzhkNjJhMjkzMmJkZWNmZmE4ZmQwY2U0ZjE5NWI2OTZmMjYzNDc0ZjYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbCiAgICAgICAgIi9iaW4vc2ggLWMgcm0gLXJmIC9yZWdpc3RyYXRpb24vcGQuY3NpLnN0b3JhZ2UuZ2tlLmlvIC9yZWdpc3RyYXRpb24vcGQuY3NpLnN0b3JhZ2UuZ2tlLmlvLXJlZy5zb2NrIgogICAgICBdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvZ2NlLXBkLWNzaS1kcml2ZXIiLAogICAgICAgICAgICAiLS12PTUiLAogICAgICAgICAgICAiLS1lbmRwb2ludD11bml4Oi9jc2kvY3NpLnNvY2siLAogICAgICAgICAgICAiLS1ydW4tY29udHJvbGxlci1zZXJ2aWNlPWZhbHNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1jc2ktZ2NlLXBkLW5vZGUiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY3NpLWdjZS1wZC1ub2RlLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvZGV2IiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvc3lzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL2xpYi9rdWJlbGV0IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0ta3ViZWxldCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJyc2hhcmVkIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvY3NpIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY3NpJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3VkZXYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS11ZGV2JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvbGliL3VkZXYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS11ZGV2JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcnVuL3VkZXYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS11ZGV2JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImdjZS1wZC1kcml2ZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJyZWdpc3RyeS5rOHMuaW8vY2xvdWQtcHJvdmlkZXItZ2NwL2djcC1jb21wdXRlLXBlcnNpc3RlbnQtZGlzay1jc2ktZHJpdmVyOnYxLjIuMiIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTljYzVmODZjYTdlYTgxOWU1Zjk4NTljNDdlNDJhNWE2ZjVkNzk1ODBiMGYzODZhNjM3N2FiYWI5YjQ5YTk0ZTMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzU1ZjI3MjA4MGE4NTA5ZWI4ZmViOTAxMTgyNWM5MWYxNGE4YThiYjdlNzc0Zjk2NjY2ZDllMjQ3NDM1NDlmZjIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OGFkNDlmZTFkN2YyOTUxMTlkZmU1NDMxZTJkMzVhYzVlYTI2Y2ZjNWMzM2YwZjBjYzdlNTZhYjM3ZTgwMmMzYSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNjZhMTMzYWRhOGM4MmJiNjY2NzhhMWNiNzczNmM3YWVmZTc2NTUwN2NjZjdlN2FhMWEyZDJmMWI5Y2NmYTk5YSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD01MGZiM2UxOGQ3OGE1ZjIyZmY4ZWVhMmQ2M2JjNGUwOTNkMzYwYTkzNWZlNGM0YWMzMjRkMTIzYjRjYzg1MjBhIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9mOGVjYTYwMjdiZDRlZWUxYzVhOGE0YWRlNTBjYjk3YmJiYmY3M2JkMjRlMTM2MjA5YmM4ZjQ3Nzg3OGViMGU3IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWZmZWZhODIxYTMzNTI4MWFiNGVhZWMwY2JmNDBiYzk5MDA0NGYwY2NkYTA5Y2FkOTQ0Y2M5MzBkYmE4ODNkM2YiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzgwYTY4YmQ1MzdiMDFmMjI4YzZlNzk1Y2NlNmM4ZjY2NmRlNTdiMDNjODRiMjgxNzlkNzIwZWY5ODlkYmQ4ODEiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81NWYyNzIwODBhODUwOWViOGZlYjkwMTE4MjVjOTFmMTRhOGE4YmI3ZTc3NGY5NjY2NmQ5ZTI0NzQzNTQ5ZmYyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OWNjNWY4NmNhN2VhODE5ZTVmOTg1OWM0N2U0MmE1YTZmNWQ3OTU4MGIwZjM4NmE2Mzc3YWJhYjliNDlhOTRlMyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNjZhMTMzYWRhOGM4MmJiNjY2NzhhMWNiNzczNmM3YWVmZTc2NTUwN2NjZjdlN2FhMWEyZDJmMWI5Y2NmYTk5YSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPThhZDQ5ZmUxZDdmMjk1MTE5ZGZlNTQzMWUyZDM1YWM1ZWEyNmNmYzVjMzNmMGYwY2M3ZTU2YWIzN2U4MDJjM2EiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2Y4ZWNhNjAyN2JkNGVlZTFjNWE4YTRhZGU1MGNiOTdiYmJiZjczYmQyNGUxMzYyMDliYzhmNDc3ODc4ZWIwZTcsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD01MGZiM2UxOGQ3OGE1ZjIyZmY4ZWVhMmQ2M2JjNGUwOTNkMzYwYTkzNWZlNGM0YWMzMjRkMTIzYjRjYzg1MjBhIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy84MGE2OGJkNTM3YjAxZjIyOGM2ZTc5NWNjZTZjOGY2NjZkZTU3YjAzYzg0YjI4MTc5ZDcyMGVmOTg5ZGJkODgxLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZmZlZmE4MjFhMzM1MjgxYWI0ZWFlYzBjYmY0MGJjOTkwMDQ0ZjBjY2RhMDljYWQ5NDRjYzkzMGRiYTg4M2QzZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81NWYyNzIwODBhODUwOWViOGZlYjkwMTE4MjVjOTFmMTRhOGE4YmI3ZTc3NGY5NjY2NmQ5ZTI0NzQzNTQ5ZmYyOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzY2YTEzM2FkYThjODJiYjY2Njc4YTFjYjc3MzZjN2FlZmU3NjU1MDdjY2Y3ZTdhYTFhMmQyZjFiOWNjZmE5OWE6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZjhlY2E2MDI3YmQ0ZWVlMWM1YThhNGFkZTUwY2I5N2JiYmJmNzNiZDI0ZTEzNjIwOWJjOGY0Nzc4NzhlYjBlNzovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy84MGE2OGJkNTM3YjAxZjIyOGM2ZTc5NWNjZTZjOGY2NjZkZTU3YjAzYzg0YjI4MTc5ZDcyMGVmOTg5ZGJkODgxIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY3NpLWdjZS1wZC1ub2RlLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvY3NpLW5vZGUtZHJpdmVyLXJlZ2lzdHJhciIsCiAgICAgICAgICAgICItLXY9NSIsCiAgICAgICAgICAgICItLWNzaS1hZGRyZXNzPS9jc2kvY3NpLnNvY2siLAogICAgICAgICAgICAiLS1rdWJlbGV0LXJlZ2lzdHJhdGlvbi1wYXRoPS92YXIvbGliL2t1YmVsZXQvcGx1Z2lucy9wZC5jc2kuc3RvcmFnZS5na2UuaW8vY3NpLnNvY2siLAogICAgICAgICAgICAiLS1odHRwLWVuZHBvaW50PToyMjAxMyIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiU1NMX0NFUlRfRklMRT0vZXRjL3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IiwKICAgICAgICAgICAgIkhPU1ROQU1FPWNzaS1nY2UtcGQtbm9kZSIsCiAgICAgICAgICAgICJLVUJFX05PREVfTkFNRT0kKG5vZGUtbmFtZSkiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY3NpLWdjZS1wZC1ub2RlLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9yZWdpc3RyYXRpb24iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZWdpc3RyYXRpb24kIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9jc2kiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1jc2kkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAiY3NpLWRyaXZlci1yZWdpc3RyYXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJyZWdpc3RyeS5rOHMuaW8vc2lnLXN0b3JhZ2UvY3NpLW5vZGUtZHJpdmVyLXJlZ2lzdHJhcjp2Mi41LjEiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWFlMWMwNTY5OThmYWZjYzMwNzg0ODVlMDNjMWQxOWY1OTMwYzRhNDQ0ZjBmZWEyZWU1NjM5YmU2ZjkwNzhmMjUiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2MzYjQwNGE3ODI2ZDdmNjk5M2U0MWI4NzFjZjNjYzU1MWJkNDIzY2E3MzhiYmM0MGZkMzIyZmZkMWUwOWNhMjAiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NGYzZTM4ZTBlMGMwNmY4NWUyZDIxNGMwYTc4MjZlMmMwZGRiOWQwMTEzMDc2YTQ2YjE1ZGE1OTYzOTlkNDVkZSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvM2MxOGYyN2RmMWQxZjI5NjA0M2Q1YjNjOGQ2MmEyOTMyYmRlY2ZmYThmZDBjZTRmMTk1YjY5NmYyNjM0NzRmNiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWMzYjQwNGE3ODI2ZDdmNjk5M2U0MWI4NzFjZjNjYzU1MWJkNDIzY2E3MzhiYmM0MGZkMzIyZmZkMWUwOWNhMjAsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hZTFjMDU2OTk4ZmFmY2MzMDc4NDg1ZTAzYzFkMTlmNTkzMGM0YTQ0NGYwZmVhMmVlNTYzOWJlNmY5MDc4ZjI1IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0zYzE4ZjI3ZGYxZDFmMjk2MDQzZDViM2M4ZDYyYTI5MzJiZGVjZmZhOGZkMGNlNGYxOTViNjk2ZjI2MzQ3NGY2LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NGYzZTM4ZTBlMGMwNmY4NWUyZDIxNGMwYTc4MjZlMmMwZGRiOWQwMTEzMDc2YTQ2YjE1ZGE1OTYzOTlkNDVkZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj1jM2I0MDRhNzgyNmQ3ZjY5OTNlNDFiODcxY2YzY2M1NTFiZDQyM2NhNzM4YmJjNDBmZDMyMmZmZDFlMDljYTIwOjNjMThmMjdkZjFkMWYyOTYwNDNkNWIzYzhkNjJhMjkzMmJkZWNmZmE4ZmQwY2U0ZjE5NWI2OTZmMjYzNDc0ZjYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbCiAgICAgICAgIi9iaW4vc2ggLWMgcm0gLXJmIC9yZWdpc3RyYXRpb24vcGQuY3NpLnN0b3JhZ2UuZ2tlLmlvIC9yZWdpc3RyYXRpb24vcGQuY3NpLnN0b3JhZ2UuZ2tlLmlvLXJlZy5zb2NrIgogICAgICBdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICIvZ2NlLXBkLWNzaS1kcml2ZXIiLAogICAgICAgICAgICAiLS12PTUiLAogICAgICAgICAgICAiLS1lbmRwb2ludD11bml4Oi9jc2kvY3NpLnNvY2siLAogICAgICAgICAgICAiLS1ydW4tY29udHJvbGxlci1zZXJ2aWNlPWZhbHNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1jc2ktZ2NlLXBkLW5vZGUiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeY3NpLWdjZS1wZC1ub2RlLVthLXowLTldezV9JCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvZGV2IiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvc3lzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL2xpYi9rdWJlbGV0IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0ta3ViZWxldCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJyc2hhcmVkIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvY3NpIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tY3NpJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3VkZXYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS11ZGV2JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvbGliL3VkZXYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS11ZGV2JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcnVuL3VkZXYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS11ZGV2JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImdjZS1wZC1kcml2ZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJyZWdpc3RyeS5rOHMuaW8vY2xvdWQtcHJvdmlkZXItZ2NwL2djcC1jb21wdXRlLXBlcnNpc3RlbnQtZGlzay1jc2ktZHJpdmVyOnYxLjIuMiIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTljYzVmODZjYTdlYTgxOWU1Zjk4NTljNDdlNDJhNWE2ZjVkNzk1ODBiMGYzODZhNjM3N2FiYWI5YjQ5YTk0ZTMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzU1ZjI3MjA4MGE4NTA5ZWI4ZmViOTAxMTgyNWM5MWYxNGE4YThiYjdlNzc0Zjk2NjY2ZDllMjQ3NDM1NDlmZjIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OGFkNDlmZTFkN2YyOTUxMTlkZmU1NDMxZTJkMzVhYzVlYTI2Y2ZjNWMzM2YwZjBjYzdlNTZhYjM3ZTgwMmMzYSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNjZhMTMzYWRhOGM4MmJiNjY2NzhhMWNiNzczNmM3YWVmZTc2NTUwN2NjZjdlN2FhMWEyZDJmMWI5Y2NmYTk5YSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD01MGZiM2UxOGQ3OGE1ZjIyZmY4ZWVhMmQ2M2JjNGUwOTNkMzYwYTkzNWZlNGM0YWMzMjRkMTIzYjRjYzg1MjBhIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9mOGVjYTYwMjdiZDRlZWUxYzVhOGE0YWRlNTBjYjk3YmJiYmY3M2JkMjRlMTM2MjA5YmM4ZjQ3Nzg3OGViMGU3IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWZmZWZhODIxYTMzNTI4MWFiNGVhZWMwY2JmNDBiYzk5MDA0NGYwY2NkYTA5Y2FkOTQ0Y2M5MzBkYmE4ODNkM2YiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzgwYTY4YmQ1MzdiMDFmMjI4YzZlNzk1Y2NlNmM4ZjY2NmRlNTdiMDNjODRiMjgxNzlkNzIwZWY5ODlkYmQ4ODEiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01NWYyNzIwODBhODUwOWViOGZlYjkwMTE4MjVjOTFmMTRhOGE4YmI3ZTc3NGY5NjY2NmQ5ZTI0NzQzNTQ5ZmYyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OWNjNWY4NmNhN2VhODE5ZTVmOTg1OWM0N2U0MmE1YTZmNWQ3OTU4MGIwZjM4NmE2Mzc3YWJhYjliNDlhOTRlMyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NjZhMTMzYWRhOGM4MmJiNjY2NzhhMWNiNzczNmM3YWVmZTc2NTUwN2NjZjdlN2FhMWEyZDJmMWI5Y2NmYTk5YSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPThhZDQ5ZmUxZDdmMjk1MTE5ZGZlNTQzMWUyZDM1YWM1ZWEyNmNmYzVjMzNmMGYwY2M3ZTU2YWIzN2U4MDJjM2EiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWY4ZWNhNjAyN2JkNGVlZTFjNWE4YTRhZGU1MGNiOTdiYmJiZjczYmQyNGUxMzYyMDliYzhmNDc3ODc4ZWIwZTcsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD01MGZiM2UxOGQ3OGE1ZjIyZmY4ZWVhMmQ2M2JjNGUwOTNkMzYwYTkzNWZlNGM0YWMzMjRkMTIzYjRjYzg1MjBhIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj04MGE2OGJkNTM3YjAxZjIyOGM2ZTc5NWNjZTZjOGY2NjZkZTU3YjAzYzg0YjI4MTc5ZDcyMGVmOTg5ZGJkODgxLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZmZlZmE4MjFhMzM1MjgxYWI0ZWFlYzBjYmY0MGJjOTkwMDQ0ZjBjY2RhMDljYWQ5NDRjYzkzMGRiYTg4M2QzZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01NWYyNzIwODBhODUwOWViOGZlYjkwMTE4MjVjOTFmMTRhOGE4YmI3ZTc3NGY5NjY2NmQ5ZTI0NzQzNTQ5ZmYyOjY2YTEzM2FkYThjODJiYjY2Njc4YTFjYjc3MzZjN2FlZmU3NjU1MDdjY2Y3ZTdhYTFhMmQyZjFiOWNjZmE5OWE6ZjhlY2E2MDI3YmQ0ZWVlMWM1YThhNGFkZTUwY2I5N2JiYmJmNzNiZDI0ZTEzNjIwOWJjOGY0Nzc4NzhlYjBlNzo4MGE2OGJkNTM3YjAxZjIyOGM2ZTc5NWNjZTZjOGY2NjZkZTU3YjAzYzg0YjI4MTc5ZDcyMGVmOTg5ZGJkODgxIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= spec: nodeSelector: kubernetes.io/os: linux diff --git a/src/agent/samples/policy/yaml/pod/pod-one-container.yaml b/src/agent/samples/policy/yaml/pod/pod-one-container.yaml index 31544104b6c5..acbd90dcb5ab 100644 --- a/src/agent/samples/policy/yaml/pod/pod-one-container.yaml +++ b/src/agent/samples/policy/yaml/pod/pod-one-container.yaml @@ -6,7 +6,7 @@ metadata: labels: run: busybox annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeb25lLWNvbnRhaW5lciQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAib25lLWNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi9iaW4vc2giLAogICAgICAgICAgICAiLWMiLAogICAgICAgICAgICAid2hpbGUgdHJ1ZTsgZG8gZWNobyBoZWxsbzsgc2xlZXAgMTA7IGRvbmUiCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIkhPU1ROQU1FPW9uZS1jb250YWluZXIiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeb25lLWNvbnRhaW5lciQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImJ1c3lib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJvbmUtY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzk6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeb25lLWNvbnRhaW5lciQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAib25lLWNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi9iaW4vc2giLAogICAgICAgICAgICAiLWMiLAogICAgICAgICAgICAid2hpbGUgdHJ1ZTsgZG8gZWNobyBoZWxsbzsgc2xlZXAgMTA7IGRvbmUiCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIkhPU1ROQU1FPW9uZS1jb250YWluZXIiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfUkVBRF9TRUFSQ0giLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9MSU5VWF9JTU1VVEFCTEUiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQlJPQURDQVNUIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19MT0NLIiwKICAgICAgICAgICAgICAiQ0FQX0lQQ19PV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTU9EVUxFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19SQVdJTyIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19QVFJBQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1BBQ0NUIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19BRE1JTiIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfTklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfUkVTT1VSQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RJTUUiLAogICAgICAgICAgICAgICJDQVBfU1lTX1RUWV9DT05GSUciLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTEVBU0UiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfQ09OVFJPTCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX01BQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9NQUNfQURNSU4iLAogICAgICAgICAgICAgICJDQVBfU1lTTE9HIiwKICAgICAgICAgICAgICAiQ0FQX1dBS0VfQUxBUk0iLAogICAgICAgICAgICAgICJDQVBfQkxPQ0tfU1VTUEVORCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9SRUFEIiwKICAgICAgICAgICAgICAiQ0FQX1BFUkZNT04iLAogICAgICAgICAgICAgICJDQVBfQlBGIiwKICAgICAgICAgICAgICAiQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeb25lLWNvbnRhaW5lciQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImJ1c3lib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJvbmUtY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzk6MjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 spec: restartPolicy: Never runtimeClassName: kata-cc diff --git a/src/agent/samples/policy/yaml/pod/pod-persistent-volumes.yaml b/src/agent/samples/policy/yaml/pod/pod-persistent-volumes.yaml index 060deb5b8bb9..607bd1c3c6e7 100644 --- a/src/agent/samples/policy/yaml/pod/pod-persistent-volumes.yaml +++ b/src/agent/samples/policy/yaml/pod/pod-persistent-volumes.yaml @@ -31,7 +31,7 @@ metadata: labels: run: busybox annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecGVyc2lzdGVudCQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAicGVyc2lzdGVudCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgInNoIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1wZXJzaXN0ZW50IgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecGVyc2lzdGVudCQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvYnVzeTEiLAogICAgICAgICAgICAidHlwZSI6ICJsb2NhbCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoc2FuZGJveC1pZCkvbG9jYWwvZGF0YSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL215LXZvbHVtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LW15LXZvbHVtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90dHlTMCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9kZXYvdHR5UzAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJidXN5Ym94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vYWtzL2UyZS9saWJyYXJ5LWJ1c3lib3g6bWFzdGVyLjIyMDMxNC4xLWxpbnV4LWFtZDY0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAicGVyc2lzdGVudCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzk6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImxvY2FsIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICJsb2NhbCIsCiAgICAgICAgICAiZnN0eXBlIjogImxvY2FsIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAibW9kZT0wNzc3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9sb2NhbC9kYXRhJCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecGVyc2lzdGVudCQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAicGVyc2lzdGVudCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgInNoIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1wZXJzaXN0ZW50IgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecGVyc2lzdGVudCQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvYnVzeTEiLAogICAgICAgICAgICAidHlwZSI6ICJsb2NhbCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoc2FuZGJveC1pZCkvbG9jYWwvZGF0YSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL215LXZvbHVtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LW15LXZvbHVtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90dHlTMCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9kZXYvdHR5UzAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJidXN5Ym94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vYWtzL2UyZS9saWJyYXJ5LWJ1c3lib3g6bWFzdGVyLjIyMDMxNC4xLWxpbnV4LWFtZDY0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAicGVyc2lzdGVudCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1iNjQzYjYyMTc3NDg5ODM4MzBiMjZhYzE0YTM1YTMzMjJkZDUyOGMwMDk2M2VhYWRkOTFlZjU1ZjUxM2RjNzNmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzk6MjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImxvY2FsIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICJsb2NhbCIsCiAgICAgICAgICAiZnN0eXBlIjogImxvY2FsIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAibW9kZT0wNzc3IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9sb2NhbC9kYXRhJCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== spec: restartPolicy: Never runtimeClassName: kata-cc diff --git a/src/agent/samples/policy/yaml/pod/pod-spark.yaml b/src/agent/samples/policy/yaml/pod/pod-spark.yaml index 29d435072c0f..64cc502760dd 100644 --- a/src/agent/samples/policy/yaml/pod/pod-spark.yaml +++ b/src/agent/samples/policy/yaml/pod/pod-spark.yaml @@ -4,7 +4,7 @@ kind: Pod metadata: name: spark annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJec3BhcmskIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIjogInNwYXJrIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL2Jpbi9zaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9saWIvanZtL2phdmEtMS44LW9wZW5qZGsvanJlL2JpbjovdXNyL2xpYi9qdm0vamF2YS0xLjgtb3Blbmpkay9iaW46L29wdC9zcGFyay9iaW4iLAogICAgICAgICAgICAiTEFORz1DLlVURi04IiwKICAgICAgICAgICAgIkpBVkFfSE9NRT0vdXNyL2xpYi9qdm0vamF2YS0xLjgtb3BlbmpkayIsCiAgICAgICAgICAgICJKQVZBX1ZFUlNJT049OHUyMTIiLAogICAgICAgICAgICAiSkFWQV9BTFBJTkVfVkVSU0lPTj04LjIxMi4wNC1yMCIsCiAgICAgICAgICAgICJBUEFDSEVfU1BBUktfVkVSU0lPTj0yLjQuMyIsCiAgICAgICAgICAgICJIQURPT1BfVkVSU0lPTj0zLjEuMiIsCiAgICAgICAgICAgICJIQURPT1BfR0lUX0NPTU1JVD1yZWxlYXNlLTMuMi4wLVJDMSIsCiAgICAgICAgICAgICJTUEFSS19IT01FPS9vcHQvc3BhcmsiLAogICAgICAgICAgICAiSEFET09QX0hPTUU9L29wdC9oYWRvb3AiLAogICAgICAgICAgICAiSE9TVE5BTUU9c3BhcmsiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJec3BhcmskIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJzcGFyayIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL21tbHNwYXJrL3NwYXJrMi40OnY0X21pbmkiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJzcGFyayIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OWM1ZTllNjUzZDI2ZWQ1MjNmMDIyYmQyOWUxOWU5MjY3MzU5OTk1ZDVhMGM4ZmQyMjc1NmY4NGNhZDU0NWQzZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNjg5ODZjMmY4NDhlYmM0MWM4NTYxY2IxYzVkMzAyODg3NjQyOTk0NDhiMDMzZWQ2ZWJiMjU3YTQzZTMxYTNiOSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02YmRhZWY1NjgyNDQ0NTI5ZmZkNjI0MjgwZGJhZDFhZjc1Nzk2M2Q2YjQ0ZDYxNGNiNmNhOTExZjM5YjVmODAzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81NmQzNDA2NmRhMGQ5OWU3NjJmNjM3ZDBkMzJkOTVlNTQ2MjIzNjlmMDQ4ZTI4OWUzN2RiMDJiZTE5NzUzMzA1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTVhZGE5N2FlMjVkOWJmZDEyODMzNjM5N2I4NTdlMWEwN2RjZTIxMzdiZmFiMDc1NzFiZjQxZjlkNDBkN2I1OTAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzBlZjJiZTU0ODVmOGU3YzVjOGEyMDE1MjFiZjA4NjE5N2FhOWJkMWQ5NDk3ZmE4NTBmNzZlZTFkZWI3NzcyYmIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NWI3N2M2ZGY2ODM4MTAzYTg1ODc4N2M5Y2U0ODY1YjZkMTFiYmRkOTg2MTY5ZWQwOGUwMzYyYWM2ZmRlNGQ3NCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNDAzM2VlNmE3NzIzM2MwZDNiNDMzZDM5MDkyZTA5OTY4Mzc5OTRlZWYyYmQxZjFmOTJiODU4Y2U2NDM3Mzk2ZiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04Y2JmNDU5NWYwZTExZDgwNjUzMTBkMmFkMDQ2ZTcxMTM0OTc1ZDAwNmEwNjk5MzFjM2ZmNzFmNTc1NDk0OGEwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8wZjA4YjM4MTE3YmUwYTI3YjFkNDNkMzk1NGYyMTA0MmFlNDNmMDJhMTAwZTA5ZWQwZjQzNzBjZTUzZjNhMjYyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTA1MDA0ZGMzYTExYzgyZThjODBhZjQ2YWJhZTcyOGNkNmNlYmZmYzM0MDE4MWE0OTMxMGFkYmNjNGQ3NmIxMzgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzM1YTI4OWMzMTZmMWRlNTAyMTcyZTRhOGQ5ZTE1MzEzM2JhY2E0YmVjYjM4YjA3MDg4MDA3NjRkY2NjNDYyNTEiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9M2VhNWE2NDNkODg2MDAyOTRlMmEzN2NkOWVlYmQxNGUxNzU4MDM1MmQxNGZlZDMyYmZlNTFmYmRmMDNkZGQ0NSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZjQ2YjA0YjQ5YTdlMDdmY2JiYmUzNDI5MDI3NDQ0ZmIyMDM0YjdmZDhkM2E1OWU2Njc4YjMyOWFiMmI2NTc2MyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yNTgxODdkZTU1YWYxZmNlN2M4MTE0YTU4MjJlMDQ2NTlmOTE1OTZiMGE5YzBmNDdhZDU3Yjk0Y2NkY2Y3ZmMyIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83ZTFhYjNiMjcwNWVmMzc5NGIyYzg0NmNiYWM3NTcxNDRkMmE0MGQzODNiM2QzYzg1ZTI3YTVkOGMzOWM4NGYxIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTNhZTRkMTZmNWQ2NmVmMGExYmY4NzNiMTIzZjg2NTM4ODA3NThiZjBhZDc0NDNlMzQ4ZDEzMTU5ZDY4NDM2YWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzAxMmIxODYwYWY5MDc1MzdlMTE0YWUzOGQ5MjViY2UxZWFhZjNkMWQ4NzgxZmRjMWY3N2VmODI4YzhiNGUyYmIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NzkwYmI1MWU1OTU4MTM3YmZjMTVkOGEyY2E2OTNlZDdlZmY2NmY0ZmM0NjkxMTE0Y2YxN2JmMWZkNTFjMTJlZSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMmI4NjNmYTI1NzU2MWM1OWYxOWZlZGE0YjViZTA1YTg3MWZmZGRkMzMwNmZkNDNlNWMwNDA1MWQ0ODQyOTliYiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xMjA1NTMyNmMyNzU0MDVhMTkyMDYyMTM3NDY5ODg4ZTFhNDk4Y2Q4MjlhNWM1MWJjMGRkY2MxODgwYTEwYmMzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTI4Nzk3YWJhNTcyM2JlZjA3NDc3YWM5ZGI2Mzc2NzAxZTEzMzM1MjQxZTJiYjVjNjdkZjQ2NGRjY2UxMTJkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNjg5ODZjMmY4NDhlYmM0MWM4NTYxY2IxYzVkMzAyODg3NjQyOTk0NDhiMDMzZWQ2ZWJiMjU3YTQzZTMxYTNiOSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTljNWU5ZTY1M2QyNmVkNTIzZjAyMmJkMjllMTllOTI2NzM1OTk5NWQ1YTBjOGZkMjI3NTZmODRjYWQ1NDVkM2YiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzU2ZDM0MDY2ZGEwZDk5ZTc2MmY2MzdkMGQzMmQ5NWU1NDYyMjM2OWYwNDhlMjg5ZTM3ZGIwMmJlMTk3NTMzMDUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02YmRhZWY1NjgyNDQ0NTI5ZmZkNjI0MjgwZGJhZDFhZjc1Nzk2M2Q2YjQ0ZDYxNGNiNmNhOTExZjM5YjVmODAzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8wZWYyYmU1NDg1ZjhlN2M1YzhhMjAxNTIxYmYwODYxOTdhYTliZDFkOTQ5N2ZhODUwZjc2ZWUxZGViNzc3MmJiLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NWFkYTk3YWUyNWQ5YmZkMTI4MzM2Mzk3Yjg1N2UxYTA3ZGNlMjEzN2JmYWIwNzU3MWJmNDFmOWQ0MGQ3YjU5MCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNDAzM2VlNmE3NzIzM2MwZDNiNDMzZDM5MDkyZTA5OTY4Mzc5OTRlZWYyYmQxZjFmOTJiODU4Y2U2NDM3Mzk2Zix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTViNzdjNmRmNjgzODEwM2E4NTg3ODdjOWNlNDg2NWI2ZDExYmJkZDk4NjE2OWVkMDhlMDM2MmFjNmZkZTRkNzQiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzBmMDhiMzgxMTdiZTBhMjdiMWQ0M2QzOTU0ZjIxMDQyYWU0M2YwMmExMDBlMDllZDBmNDM3MGNlNTNmM2EyNjIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04Y2JmNDU5NWYwZTExZDgwNjUzMTBkMmFkMDQ2ZTcxMTM0OTc1ZDAwNmEwNjk5MzFjM2ZmNzFmNTc1NDk0OGEwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8zNWEyODljMzE2ZjFkZTUwMjE3MmU0YThkOWUxNTMxMzNiYWNhNGJlY2IzOGIwNzA4ODAwNzY0ZGNjYzQ2MjUxLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDUwMDRkYzNhMTFjODJlOGM4MGFmNDZhYmFlNzI4Y2Q2Y2ViZmZjMzQwMTgxYTQ5MzEwYWRiY2M0ZDc2YjEzOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvZjQ2YjA0YjQ5YTdlMDdmY2JiYmUzNDI5MDI3NDQ0ZmIyMDM0YjdmZDhkM2E1OWU2Njc4YjMyOWFiMmI2NTc2Myx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTNlYTVhNjQzZDg4NjAwMjk0ZTJhMzdjZDllZWJkMTRlMTc1ODAzNTJkMTRmZWQzMmJmZTUxZmJkZjAzZGRkNDUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzdlMWFiM2IyNzA1ZWYzNzk0YjJjODQ2Y2JhYzc1NzE0NGQyYTQwZDM4M2IzZDNjODVlMjdhNWQ4YzM5Yzg0ZjEsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yNTgxODdkZTU1YWYxZmNlN2M4MTE0YTU4MjJlMDQ2NTlmOTE1OTZiMGE5YzBmNDdhZDU3Yjk0Y2NkY2Y3ZmMyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8wMTJiMTg2MGFmOTA3NTM3ZTExNGFlMzhkOTI1YmNlMWVhYWYzZDFkODc4MWZkYzFmNzdlZjgyOGM4YjRlMmJiLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9M2FlNGQxNmY1ZDY2ZWYwYTFiZjg3M2IxMjNmODY1Mzg4MDc1OGJmMGFkNzQ0M2UzNDhkMTMxNTlkNjg0MzZhZCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMmI4NjNmYTI1NzU2MWM1OWYxOWZlZGE0YjViZTA1YTg3MWZmZGRkMzMwNmZkNDNlNWMwNDA1MWQ0ODQyOTliYix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTc5MGJiNTFlNTk1ODEzN2JmYzE1ZDhhMmNhNjkzZWQ3ZWZmNjZmNGZjNDY5MTExNGNmMTdiZjFmZDUxYzEyZWUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzVhMjg3OTdhYmE1NzIzYmVmMDc0NzdhYzlkYjYzNzY3MDFlMTMzMzUyNDFlMmJiNWM2N2RmNDY0ZGNjZTExMmQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xMjA1NTMyNmMyNzU0MDVhMTkyMDYyMTM3NDY5ODg4ZTFhNDk4Y2Q4MjlhNWM1MWJjMGRkY2MxODgwYTEwYmMzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzY4OTg2YzJmODQ4ZWJjNDFjODU2MWNiMWM1ZDMwMjg4NzY0Mjk5NDQ4YjAzM2VkNmViYjI1N2E0M2UzMWEzYjk6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNTZkMzQwNjZkYTBkOTllNzYyZjYzN2QwZDMyZDk1ZTU0NjIyMzY5ZjA0OGUyODllMzdkYjAyYmUxOTc1MzMwNTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8wZWYyYmU1NDg1ZjhlN2M1YzhhMjAxNTIxYmYwODYxOTdhYTliZDFkOTQ5N2ZhODUwZjc2ZWUxZGViNzc3MmJiOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzQwMzNlZTZhNzcyMzNjMGQzYjQzM2QzOTA5MmUwOTk2ODM3OTk0ZWVmMmJkMWYxZjkyYjg1OGNlNjQzNzM5NmY6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMGYwOGIzODExN2JlMGEyN2IxZDQzZDM5NTRmMjEwNDJhZTQzZjAyYTEwMGUwOWVkMGY0MzcwY2U1M2YzYTI2MjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8zNWEyODljMzE2ZjFkZTUwMjE3MmU0YThkOWUxNTMxMzNiYWNhNGJlY2IzOGIwNzA4ODAwNzY0ZGNjYzQ2MjUxOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2Y0NmIwNGI0OWE3ZTA3ZmNiYmJlMzQyOTAyNzQ0NGZiMjAzNGI3ZmQ4ZDNhNTllNjY3OGIzMjlhYjJiNjU3NjM6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvN2UxYWIzYjI3MDVlZjM3OTRiMmM4NDZjYmFjNzU3MTQ0ZDJhNDBkMzgzYjNkM2M4NWUyN2E1ZDhjMzljODRmMTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8wMTJiMTg2MGFmOTA3NTM3ZTExNGFlMzhkOTI1YmNlMWVhYWYzZDFkODc4MWZkYzFmNzdlZjgyOGM4YjRlMmJiOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJiODYzZmEyNTc1NjFjNTlmMTlmZWRhNGI1YmUwNWE4NzFmZmRkZDMzMDZmZDQzZTVjMDQwNTFkNDg0Mjk5YmI6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWEyODc5N2FiYTU3MjNiZWYwNzQ3N2FjOWRiNjM3NjcwMWUxMzMzNTI0MWUyYmI1YzY3ZGY0NjRkY2NlMTEyZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJec3BhcmskIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIjogInNwYXJrIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL2Jpbi9zaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9saWIvanZtL2phdmEtMS44LW9wZW5qZGsvanJlL2JpbjovdXNyL2xpYi9qdm0vamF2YS0xLjgtb3Blbmpkay9iaW46L29wdC9zcGFyay9iaW4iLAogICAgICAgICAgICAiTEFORz1DLlVURi04IiwKICAgICAgICAgICAgIkpBVkFfSE9NRT0vdXNyL2xpYi9qdm0vamF2YS0xLjgtb3BlbmpkayIsCiAgICAgICAgICAgICJKQVZBX1ZFUlNJT049OHUyMTIiLAogICAgICAgICAgICAiSkFWQV9BTFBJTkVfVkVSU0lPTj04LjIxMi4wNC1yMCIsCiAgICAgICAgICAgICJBUEFDSEVfU1BBUktfVkVSU0lPTj0yLjQuMyIsCiAgICAgICAgICAgICJIQURPT1BfVkVSU0lPTj0zLjEuMiIsCiAgICAgICAgICAgICJIQURPT1BfR0lUX0NPTU1JVD1yZWxlYXNlLTMuMi4wLVJDMSIsCiAgICAgICAgICAgICJTUEFSS19IT01FPS9vcHQvc3BhcmsiLAogICAgICAgICAgICAiSEFET09QX0hPTUU9L29wdC9oYWRvb3AiLAogICAgICAgICAgICAiSE9TVE5BTUU9c3BhcmsiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJec3BhcmskIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJzcGFyayIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL21tbHNwYXJrL3NwYXJrMi40OnY0X21pbmkiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJzcGFyayIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9OWM1ZTllNjUzZDI2ZWQ1MjNmMDIyYmQyOWUxOWU5MjY3MzU5OTk1ZDVhMGM4ZmQyMjc1NmY4NGNhZDU0NWQzZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNjg5ODZjMmY4NDhlYmM0MWM4NTYxY2IxYzVkMzAyODg3NjQyOTk0NDhiMDMzZWQ2ZWJiMjU3YTQzZTMxYTNiOSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02YmRhZWY1NjgyNDQ0NTI5ZmZkNjI0MjgwZGJhZDFhZjc1Nzk2M2Q2YjQ0ZDYxNGNiNmNhOTExZjM5YjVmODAzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81NmQzNDA2NmRhMGQ5OWU3NjJmNjM3ZDBkMzJkOTVlNTQ2MjIzNjlmMDQ4ZTI4OWUzN2RiMDJiZTE5NzUzMzA1IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTVhZGE5N2FlMjVkOWJmZDEyODMzNjM5N2I4NTdlMWEwN2RjZTIxMzdiZmFiMDc1NzFiZjQxZjlkNDBkN2I1OTAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzBlZjJiZTU0ODVmOGU3YzVjOGEyMDE1MjFiZjA4NjE5N2FhOWJkMWQ5NDk3ZmE4NTBmNzZlZTFkZWI3NzcyYmIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NWI3N2M2ZGY2ODM4MTAzYTg1ODc4N2M5Y2U0ODY1YjZkMTFiYmRkOTg2MTY5ZWQwOGUwMzYyYWM2ZmRlNGQ3NCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNDAzM2VlNmE3NzIzM2MwZDNiNDMzZDM5MDkyZTA5OTY4Mzc5OTRlZWYyYmQxZjFmOTJiODU4Y2U2NDM3Mzk2ZiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04Y2JmNDU5NWYwZTExZDgwNjUzMTBkMmFkMDQ2ZTcxMTM0OTc1ZDAwNmEwNjk5MzFjM2ZmNzFmNTc1NDk0OGEwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8wZjA4YjM4MTE3YmUwYTI3YjFkNDNkMzk1NGYyMTA0MmFlNDNmMDJhMTAwZTA5ZWQwZjQzNzBjZTUzZjNhMjYyIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTA1MDA0ZGMzYTExYzgyZThjODBhZjQ2YWJhZTcyOGNkNmNlYmZmYzM0MDE4MWE0OTMxMGFkYmNjNGQ3NmIxMzgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzM1YTI4OWMzMTZmMWRlNTAyMTcyZTRhOGQ5ZTE1MzEzM2JhY2E0YmVjYjM4YjA3MDg4MDA3NjRkY2NjNDYyNTEiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9M2VhNWE2NDNkODg2MDAyOTRlMmEzN2NkOWVlYmQxNGUxNzU4MDM1MmQxNGZlZDMyYmZlNTFmYmRmMDNkZGQ0NSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZjQ2YjA0YjQ5YTdlMDdmY2JiYmUzNDI5MDI3NDQ0ZmIyMDM0YjdmZDhkM2E1OWU2Njc4YjMyOWFiMmI2NTc2MyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yNTgxODdkZTU1YWYxZmNlN2M4MTE0YTU4MjJlMDQ2NTlmOTE1OTZiMGE5YzBmNDdhZDU3Yjk0Y2NkY2Y3ZmMyIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83ZTFhYjNiMjcwNWVmMzc5NGIyYzg0NmNiYWM3NTcxNDRkMmE0MGQzODNiM2QzYzg1ZTI3YTVkOGMzOWM4NGYxIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTNhZTRkMTZmNWQ2NmVmMGExYmY4NzNiMTIzZjg2NTM4ODA3NThiZjBhZDc0NDNlMzQ4ZDEzMTU5ZDY4NDM2YWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzAxMmIxODYwYWY5MDc1MzdlMTE0YWUzOGQ5MjViY2UxZWFhZjNkMWQ4NzgxZmRjMWY3N2VmODI4YzhiNGUyYmIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NzkwYmI1MWU1OTU4MTM3YmZjMTVkOGEyY2E2OTNlZDdlZmY2NmY0ZmM0NjkxMTE0Y2YxN2JmMWZkNTFjMTJlZSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMmI4NjNmYTI1NzU2MWM1OWYxOWZlZGE0YjViZTA1YTg3MWZmZGRkMzMwNmZkNDNlNWMwNDA1MWQ0ODQyOTliYiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xMjA1NTMyNmMyNzU0MDVhMTkyMDYyMTM3NDY5ODg4ZTFhNDk4Y2Q4MjlhNWM1MWJjMGRkY2MxODgwYTEwYmMzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTI4Nzk3YWJhNTcyM2JlZjA3NDc3YWM5ZGI2Mzc2NzAxZTEzMzM1MjQxZTJiYjVjNjdkZjQ2NGRjY2UxMTJkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9Njg5ODZjMmY4NDhlYmM0MWM4NTYxY2IxYzVkMzAyODg3NjQyOTk0NDhiMDMzZWQ2ZWJiMjU3YTQzZTMxYTNiOSx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTljNWU5ZTY1M2QyNmVkNTIzZjAyMmJkMjllMTllOTI2NzM1OTk5NWQ1YTBjOGZkMjI3NTZmODRjYWQ1NDVkM2YiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTU2ZDM0MDY2ZGEwZDk5ZTc2MmY2MzdkMGQzMmQ5NWU1NDYyMjM2OWYwNDhlMjg5ZTM3ZGIwMmJlMTk3NTMzMDUsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD02YmRhZWY1NjgyNDQ0NTI5ZmZkNjI0MjgwZGJhZDFhZjc1Nzk2M2Q2YjQ0ZDYxNGNiNmNhOTExZjM5YjVmODAzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0wZWYyYmU1NDg1ZjhlN2M1YzhhMjAxNTIxYmYwODYxOTdhYTliZDFkOTQ5N2ZhODUwZjc2ZWUxZGViNzc3MmJiLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NWFkYTk3YWUyNWQ5YmZkMTI4MzM2Mzk3Yjg1N2UxYTA3ZGNlMjEzN2JmYWIwNzU3MWJmNDFmOWQ0MGQ3YjU5MCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NDAzM2VlNmE3NzIzM2MwZDNiNDMzZDM5MDkyZTA5OTY4Mzc5OTRlZWYyYmQxZjFmOTJiODU4Y2U2NDM3Mzk2Zix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTViNzdjNmRmNjgzODEwM2E4NTg3ODdjOWNlNDg2NWI2ZDExYmJkZDk4NjE2OWVkMDhlMDM2MmFjNmZkZTRkNzQiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTBmMDhiMzgxMTdiZTBhMjdiMWQ0M2QzOTU0ZjIxMDQyYWU0M2YwMmExMDBlMDllZDBmNDM3MGNlNTNmM2EyNjIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04Y2JmNDU5NWYwZTExZDgwNjUzMTBkMmFkMDQ2ZTcxMTM0OTc1ZDAwNmEwNjk5MzFjM2ZmNzFmNTc1NDk0OGEwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0zNWEyODljMzE2ZjFkZTUwMjE3MmU0YThkOWUxNTMxMzNiYWNhNGJlY2IzOGIwNzA4ODAwNzY0ZGNjYzQ2MjUxLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MDUwMDRkYzNhMTFjODJlOGM4MGFmNDZhYmFlNzI4Y2Q2Y2ViZmZjMzQwMTgxYTQ5MzEwYWRiY2M0ZDc2YjEzOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ZjQ2YjA0YjQ5YTdlMDdmY2JiYmUzNDI5MDI3NDQ0ZmIyMDM0YjdmZDhkM2E1OWU2Njc4YjMyOWFiMmI2NTc2Myx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTNlYTVhNjQzZDg4NjAwMjk0ZTJhMzdjZDllZWJkMTRlMTc1ODAzNTJkMTRmZWQzMmJmZTUxZmJkZjAzZGRkNDUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTdlMWFiM2IyNzA1ZWYzNzk0YjJjODQ2Y2JhYzc1NzE0NGQyYTQwZDM4M2IzZDNjODVlMjdhNWQ4YzM5Yzg0ZjEsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0yNTgxODdkZTU1YWYxZmNlN2M4MTE0YTU4MjJlMDQ2NTlmOTE1OTZiMGE5YzBmNDdhZDU3Yjk0Y2NkY2Y3ZmMyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0wMTJiMTg2MGFmOTA3NTM3ZTExNGFlMzhkOTI1YmNlMWVhYWYzZDFkODc4MWZkYzFmNzdlZjgyOGM4YjRlMmJiLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9M2FlNGQxNmY1ZDY2ZWYwYTFiZjg3M2IxMjNmODY1Mzg4MDc1OGJmMGFkNzQ0M2UzNDhkMTMxNTlkNjg0MzZhZCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MmI4NjNmYTI1NzU2MWM1OWYxOWZlZGE0YjViZTA1YTg3MWZmZGRkMzMwNmZkNDNlNWMwNDA1MWQ0ODQyOTliYix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTc5MGJiNTFlNTk1ODEzN2JmYzE1ZDhhMmNhNjkzZWQ3ZWZmNjZmNGZjNDY5MTExNGNmMTdiZjFmZDUxYzEyZWUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTVhMjg3OTdhYmE1NzIzYmVmMDc0NzdhYzlkYjYzNzY3MDFlMTMzMzUyNDFlMmJiNWM2N2RmNDY0ZGNjZTExMmQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xMjA1NTMyNmMyNzU0MDVhMTkyMDYyMTM3NDY5ODg4ZTFhNDk4Y2Q4MjlhNWM1MWJjMGRkY2MxODgwYTEwYmMzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTY4OTg2YzJmODQ4ZWJjNDFjODU2MWNiMWM1ZDMwMjg4NzY0Mjk5NDQ4YjAzM2VkNmViYjI1N2E0M2UzMWEzYjk6NTZkMzQwNjZkYTBkOTllNzYyZjYzN2QwZDMyZDk1ZTU0NjIyMzY5ZjA0OGUyODllMzdkYjAyYmUxOTc1MzMwNTowZWYyYmU1NDg1ZjhlN2M1YzhhMjAxNTIxYmYwODYxOTdhYTliZDFkOTQ5N2ZhODUwZjc2ZWUxZGViNzc3MmJiOjQwMzNlZTZhNzcyMzNjMGQzYjQzM2QzOTA5MmUwOTk2ODM3OTk0ZWVmMmJkMWYxZjkyYjg1OGNlNjQzNzM5NmY6MGYwOGIzODExN2JlMGEyN2IxZDQzZDM5NTRmMjEwNDJhZTQzZjAyYTEwMGUwOWVkMGY0MzcwY2U1M2YzYTI2MjozNWEyODljMzE2ZjFkZTUwMjE3MmU0YThkOWUxNTMxMzNiYWNhNGJlY2IzOGIwNzA4ODAwNzY0ZGNjYzQ2MjUxOmY0NmIwNGI0OWE3ZTA3ZmNiYmJlMzQyOTAyNzQ0NGZiMjAzNGI3ZmQ4ZDNhNTllNjY3OGIzMjlhYjJiNjU3NjM6N2UxYWIzYjI3MDVlZjM3OTRiMmM4NDZjYmFjNzU3MTQ0ZDJhNDBkMzgzYjNkM2M4NWUyN2E1ZDhjMzljODRmMTowMTJiMTg2MGFmOTA3NTM3ZTExNGFlMzhkOTI1YmNlMWVhYWYzZDFkODc4MWZkYzFmNzdlZjgyOGM4YjRlMmJiOjJiODYzZmEyNTc1NjFjNTlmMTlmZWRhNGI1YmUwNWE4NzFmZmRkZDMzMDZmZDQzZTVjMDQwNTFkNDg0Mjk5YmI6NWEyODc5N2FiYTU3MjNiZWYwNzQ3N2FjOWRiNjM3NjcwMWUxMzMzNTI0MWUyYmI1YzY3ZGY0NjRkY2NlMTEyZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9CiAgXQp9 spec: restartPolicy: Never runtimeClassName: kata-cc diff --git a/src/agent/samples/policy/yaml/pod/pod-three-containers.yaml b/src/agent/samples/policy/yaml/pod/pod-three-containers.yaml index 14dad2391812..9cde9e245078 100644 --- a/src/agent/samples/policy/yaml/pod/pod-three-containers.yaml +++ b/src/agent/samples/policy/yaml/pod/pod-three-containers.yaml @@ -6,7 +6,7 @@ metadata: labels: run: busybox annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedGhyZWUtY29udGFpbmVycyQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAidGhyZWUtY29udGFpbmVycyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgImF6IiwKICAgICAgICAgICAgIi0taGVscCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9dGhyZWUtY29udGFpbmVycyIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl50aHJlZS1jb250YWluZXJzJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAibWFyaW5lci1jbGkiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9jYmwtbWFyaW5lci9iYXNlL2F6dXJlLWNsaToyLjQ5LjAtMS1jbTIuMC4yMDIzMDYwOS1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIjogInRocmVlLWNvbnRhaW5lcnMiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI1N2JhNmYzNjJlOWQzM2JhYzVlZDI0Njc5NzBjZjYzOTJkN2YzNGE1MjY4NWEwMGQ1NzQ1NmJlN2MzY2E5YzEiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzY4NzhmMmJjZDY1MzY2OWZiN2M0NDMyYmRmMDg1MDIzNGIxYTIwNWQ1OWFiYTQwM2Q1MDgzYTQwMTA0NDEyM2MiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZGQyMjNkOWJkZjE1ZjIyZWY1ODZmY2RhYTAxMDgyNzE5ZDczZjdkNDY2ZjRlMDIwYmU2MDI4YWM0YzRiMzg0OSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYjUyY2JiNTViZmNmMGIzZGJhMzIxZDk1YTNmODQ2NzIwN2M0OTc0ZmUxMGE2MTcyNDFjMGU0MDYyNWMyMjEzYiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy82ODc4ZjJiY2Q2NTM2NjlmYjdjNDQzMmJkZjA4NTAyMzRiMWEyMDVkNTlhYmE0MDNkNTA4M2E0MDEwNDQxMjNjLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjU3YmE2ZjM2MmU5ZDMzYmFjNWVkMjQ2Nzk3MGNmNjM5MmQ3ZjM0YTUyNjg1YTAwZDU3NDU2YmU3YzNjYTljMSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvYjUyY2JiNTViZmNmMGIzZGJhMzIxZDk1YTNmODQ2NzIwN2M0OTc0ZmUxMGE2MTcyNDFjMGU0MDYyNWMyMjEzYix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRkMjIzZDliZGYxNWYyMmVmNTg2ZmNkYWEwMTA4MjcxOWQ3M2Y3ZDQ2NmY0ZTAyMGJlNjAyOGFjNGM0YjM4NDkiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjEyYTc5OGUxNWE4MGFjZTYyMjIyMjVlZjgzMzQ5M2I5YzFkODhmYTA2ZDk1MGIzOGEzZWYyN2Q5N2M4YjZiOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy82ODc4ZjJiY2Q2NTM2NjlmYjdjNDQzMmJkZjA4NTAyMzRiMWEyMDVkNTlhYmE0MDNkNTA4M2E0MDEwNDQxMjNjOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzL2I1MmNiYjU1YmZjZjBiM2RiYTMyMWQ5NWEzZjg0NjcyMDdjNDk3NGZlMTBhNjE3MjQxYzBlNDA2MjVjMjIxM2I6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NDovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi9iaW4vZWNobyIsCiAgICAgICAgICAgICJoZWxsbyIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9dGhyZWUtY29udGFpbmVycyIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedGhyZWUtY29udGFpbmVycyQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImJ1c3lib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJ0aHJlZS1jb250YWluZXJzIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1Mix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgImJhc2giCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIkhPU1ROQU1FPXRocmVlLWNvbnRhaW5lcnMiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvYWNvdXN0aWNzL3Rvb2xzIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl50aHJlZS1jb250YWluZXJzJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAiYWNvdXN0aWNzLWJha2V0b29scyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL2Fjb3VzdGljcy9iYWtldG9vbHM6MjAyMi4xLkxpbnV4IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAidGhyZWUtY29udGFpbmVycyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDYxNTFlYThjMGFlNWY2ZDBiMTBmYjViNTdhNmRmMGNiZjkxYTkzZGIwZmE0MWFhZWMzNTdlOWM5ZWE4OGIzYSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvOGJhMGRlMjY2ZWQ0NGJjYTFkMTY2N2Y2NzY4ZWQ5N2Q1MDVhYzRmOTIxMzk0MDM0MTU2ZTU3ZmMwMzdlYTU0MiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xMDAzOWU1ODJlNzNjMzFhNGE2YmYxOGJhMmY5MjNhYjM2NTk0YWM0YzIwOTM5MjhkMTg5ZTE5NzViN2M0OGM4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kMGEyOWYwODFiY2JkZmUxYmFhMzZhNDkwMzhlMzM2ZTkzZmQ2ZDZkYzZkMzk5NGJmMDFmMWFlMDQ5ODk2MDYzIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTcwNWZkMmRhNDkyYTRiYjdiMmMwNDQzMzQyMTBiMTI3Njc4OWE5MGY5MDE1MzA0ZTA2ZTNjMGM1NDAyMDkwZmEiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzc1YTZkMmMzMDdhMTcwNDRiY2UwNGRmZWIwZTg5YjcwMjU1YWQwZGE5ZTc1YjBmMTdhODYxOWNlNWQ0NWMyZjIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZmJkOTgyYWU2YWQwZjM4YjEyNTRhYTRiMTUxMDQxY2FjZjdhYWZlMTU3NjdmMmE1ZWJkNGIzNjgyMGNjOWI4NCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMTZhN2U4N2VjZGNiMzcwYTgxYzMxOTFiYTEyODBiZmRiZWVkMTY1YWFkMmY5ODcxYzU0ZGFkNzRiYjM5MjJkYSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzhiYTBkZTI2NmVkNDRiY2ExZDE2NjdmNjc2OGVkOTdkNTA1YWM0ZjkyMTM5NDAzNDE1NmU1N2ZjMDM3ZWE1NDIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNjE1MWVhOGMwYWU1ZjZkMGIxMGZiNWI1N2E2ZGYwY2JmOTFhOTNkYjBmYTQxYWFlYzM1N2U5YzllYTg4YjNhIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy9kMGEyOWYwODFiY2JkZmUxYmFhMzZhNDkwMzhlMzM2ZTkzZmQ2ZDZkYzZkMzk5NGJmMDFmMWFlMDQ5ODk2MDYzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MTAwMzllNTgyZTczYzMxYTRhNmJmMThiYTJmOTIzYWIzNjU5NGFjNGMyMDkzOTI4ZDE4OWUxOTc1YjdjNDhjOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNzVhNmQyYzMwN2ExNzA0NGJjZTA0ZGZlYjBlODliNzAyNTVhZDBkYTllNzViMGYxN2E4NjE5Y2U1ZDQ1YzJmMix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTcwNWZkMmRhNDkyYTRiYjdiMmMwNDQzMzQyMTBiMTI3Njc4OWE5MGY5MDE1MzA0ZTA2ZTNjMGM1NDAyMDkwZmEiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzE2YTdlODdlY2RjYjM3MGE4MWMzMTkxYmExMjgwYmZkYmVlZDE2NWFhZDJmOTg3MWM1NGRhZDc0YmIzOTIyZGEsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1mYmQ5ODJhZTZhZDBmMzhiMTI1NGFhNGIxNTEwNDFjYWNmN2FhZmUxNTc2N2YyYTVlYmQ0YjM2ODIwY2M5Yjg0IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzhiYTBkZTI2NmVkNDRiY2ExZDE2NjdmNjc2OGVkOTdkNTA1YWM0ZjkyMTM5NDAzNDE1NmU1N2ZjMDM3ZWE1NDI6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZDBhMjlmMDgxYmNiZGZlMWJhYTM2YTQ5MDM4ZTMzNmU5M2ZkNmQ2ZGM2ZDM5OTRiZjAxZjFhZTA0OTg5NjA2MzovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83NWE2ZDJjMzA3YTE3MDQ0YmNlMDRkZmViMGU4OWI3MDI1NWFkMGRhOWU3NWIwZjE3YTg2MTljZTVkNDVjMmYyOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzE2YTdlODdlY2RjYjM3MGE4MWMzMTkxYmExMjgwYmZkYmVlZDE2NWFhZDJmOTg3MWM1NGRhZDc0YmIzOTIyZGEiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedGhyZWUtY29udGFpbmVycyQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAidGhyZWUtY29udGFpbmVycyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgImF6IiwKICAgICAgICAgICAgIi0taGVscCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9dGhyZWUtY29udGFpbmVycyIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl50aHJlZS1jb250YWluZXJzJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAibWFyaW5lci1jbGkiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9jYmwtbWFyaW5lci9iYXNlL2F6dXJlLWNsaToyLjQ5LjAtMS1jbTIuMC4yMDIzMDYwOS1hbWQ2NCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIjogInRocmVlLWNvbnRhaW5lcnMiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI1N2JhNmYzNjJlOWQzM2JhYzVlZDI0Njc5NzBjZjYzOTJkN2YzNGE1MjY4NWEwMGQ1NzQ1NmJlN2MzY2E5YzEiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzY4NzhmMmJjZDY1MzY2OWZiN2M0NDMyYmRmMDg1MDIzNGIxYTIwNWQ1OWFiYTQwM2Q1MDgzYTQwMTA0NDEyM2MiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZGQyMjNkOWJkZjE1ZjIyZWY1ODZmY2RhYTAxMDgyNzE5ZDczZjdkNDY2ZjRlMDIwYmU2MDI4YWM0YzRiMzg0OSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvYjUyY2JiNTViZmNmMGIzZGJhMzIxZDk1YTNmODQ2NzIwN2M0OTc0ZmUxMGE2MTcyNDFjMGU0MDYyNWMyMjEzYiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj02ODc4ZjJiY2Q2NTM2NjlmYjdjNDQzMmJkZjA4NTAyMzRiMWEyMDVkNTlhYmE0MDNkNTA4M2E0MDEwNDQxMjNjLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjU3YmE2ZjM2MmU5ZDMzYmFjNWVkMjQ2Nzk3MGNmNjM5MmQ3ZjM0YTUyNjg1YTAwZDU3NDU2YmU3YzNjYTljMSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9YjUyY2JiNTViZmNmMGIzZGJhMzIxZDk1YTNmODQ2NzIwN2M0OTc0ZmUxMGE2MTcyNDFjMGU0MDYyNWMyMjEzYix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWRkMjIzZDliZGYxNWYyMmVmNTg2ZmNkYWEwMTA4MjcxOWQ3M2Y3ZDQ2NmY0ZTAyMGJlNjAyOGFjNGM0YjM4NDkiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1hMDQ5NzRiMWFkYjYzY2MyMzA1ZTYxMDlmZjE4MTE3OTkwZDRiZWRmZWNkNTkxZWNlOGQxMjUwY2E1MjAzZjhmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj03MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjEyYTc5OGUxNWE4MGFjZTYyMjIyMjVlZjgzMzQ5M2I5YzFkODhmYTA2ZDk1MGIzOGEzZWYyN2Q5N2M4YjZiOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj02ODc4ZjJiY2Q2NTM2NjlmYjdjNDQzMmJkZjA4NTAyMzRiMWEyMDVkNTlhYmE0MDNkNTA4M2E0MDEwNDQxMjNjOmI1MmNiYjU1YmZjZjBiM2RiYTMyMWQ5NWEzZjg0NjcyMDdjNDk3NGZlMTBhNjE3MjQxYzBlNDA2MjVjMjIxM2I6MjRjNjY1Y2IwYjY3Yzc1ZmVjNzJiNmNmMTJkZDZjYTg3YzliNTBkZDI3YWI3NTMyNTliNDhlYjIyMGYxMDU1NDo3MTYyMTk1OTNlYzU1Mzg0ODdhOTEzMTg3MjNjYzcyMmEyOWY3MWE0ZDVjZWNmZDdhZjM1MjM0NGY2ZTA1OTUzIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi9iaW4vZWNobyIsCiAgICAgICAgICAgICJoZWxsbyIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9dGhyZWUtY29udGFpbmVycyIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJedGhyZWUtY29udGFpbmVycyQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMvZnMvY2dyb3VwIiwKICAgICAgICAgICAgInR5cGUiOiAiY2dyb3VwIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJyZWxhdGltZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RzJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXRlcm1pbmF0aW9uLWxvZyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9ob3N0bmFtZSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWhvc3RuYW1lJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlcnZpY2VhY2NvdW50JCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImJ1c3lib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJ0aHJlZS1jb250YWluZXJzIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1Mix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9MmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OToyNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgImJhc2giCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIkhPU1ROQU1FPXRocmVlLWNvbnRhaW5lcnMiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvYWNvdXN0aWNzL3Rvb2xzIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl50aHJlZS1jb250YWluZXJzJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAiYWNvdXN0aWNzLWJha2V0b29scyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAiY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5pbWFnZS1uYW1lIjogIm1jci5taWNyb3NvZnQuY29tL2Fjb3VzdGljcy9iYWtldG9vbHM6MjAyMi4xLkxpbnV4IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAidGhyZWUtY29udGFpbmVycyIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDYxNTFlYThjMGFlNWY2ZDBiMTBmYjViNTdhNmRmMGNiZjkxYTkzZGIwZmE0MWFhZWMzNTdlOWM5ZWE4OGIzYSIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvOGJhMGRlMjY2ZWQ0NGJjYTFkMTY2N2Y2NzY4ZWQ5N2Q1MDVhYzRmOTIxMzk0MDM0MTU2ZTU3ZmMwMzdlYTU0MiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0xMDAzOWU1ODJlNzNjMzFhNGE2YmYxOGJhMmY5MjNhYjM2NTk0YWM0YzIwOTM5MjhkMTg5ZTE5NzViN2M0OGM4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kMGEyOWYwODFiY2JkZmUxYmFhMzZhNDkwMzhlMzM2ZTkzZmQ2ZDZkYzZkMzk5NGJmMDFmMWFlMDQ5ODk2MDYzIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTcwNWZkMmRhNDkyYTRiYjdiMmMwNDQzMzQyMTBiMTI3Njc4OWE5MGY5MDE1MzA0ZTA2ZTNjMGM1NDAyMDkwZmEiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzc1YTZkMmMzMDdhMTcwNDRiY2UwNGRmZWIwZTg5YjcwMjU1YWQwZGE5ZTc1YjBmMTdhODYxOWNlNWQ0NWMyZjIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZmJkOTgyYWU2YWQwZjM4YjEyNTRhYTRiMTUxMDQxY2FjZjdhYWZlMTU3NjdmMmE1ZWJkNGIzNjgyMGNjOWI4NCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMTZhN2U4N2VjZGNiMzcwYTgxYzMxOTFiYTEyODBiZmRiZWVkMTY1YWFkMmY5ODcxYzU0ZGFkNzRiYjM5MjJkYSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPThiYTBkZTI2NmVkNDRiY2ExZDE2NjdmNjc2OGVkOTdkNTA1YWM0ZjkyMTM5NDAzNDE1NmU1N2ZjMDM3ZWE1NDIsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1kNjE1MWVhOGMwYWU1ZjZkMGIxMGZiNWI1N2E2ZGYwY2JmOTFhOTNkYjBmYTQxYWFlYzM1N2U5YzllYTg4YjNhIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj1kMGEyOWYwODFiY2JkZmUxYmFhMzZhNDkwMzhlMzM2ZTkzZmQ2ZDZkYzZkMzk5NGJmMDFmMWFlMDQ5ODk2MDYzLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9MTAwMzllNTgyZTczYzMxYTRhNmJmMThiYTJmOTIzYWIzNjU5NGFjNGMyMDkzOTI4ZDE4OWUxOTc1YjdjNDhjOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NzVhNmQyYzMwN2ExNzA0NGJjZTA0ZGZlYjBlODliNzAyNTVhZDBkYTllNzViMGYxN2E4NjE5Y2U1ZDQ1YzJmMix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTcwNWZkMmRhNDkyYTRiYjdiMmMwNDQzMzQyMTBiMTI3Njc4OWE5MGY5MDE1MzA0ZTA2ZTNjMGM1NDAyMDkwZmEiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTE2YTdlODdlY2RjYjM3MGE4MWMzMTkxYmExMjgwYmZkYmVlZDE2NWFhZDJmOTg3MWM1NGRhZDc0YmIzOTIyZGEsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1mYmQ5ODJhZTZhZDBmMzhiMTI1NGFhNGIxNTEwNDFjYWNmN2FhZmUxNTc2N2YyYTVlYmQ0YjM2ODIwY2M5Yjg0IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPThiYTBkZTI2NmVkNDRiY2ExZDE2NjdmNjc2OGVkOTdkNTA1YWM0ZjkyMTM5NDAzNDE1NmU1N2ZjMDM3ZWE1NDI6ZDBhMjlmMDgxYmNiZGZlMWJhYTM2YTQ5MDM4ZTMzNmU5M2ZkNmQ2ZGM2ZDM5OTRiZjAxZjFhZTA0OTg5NjA2Mzo3NWE2ZDJjMzA3YTE3MDQ0YmNlMDRkZmViMGU4OWI3MDI1NWFkMGRhOWU3NWIwZjE3YTg2MTljZTVkNDVjMmYyOjE2YTdlODdlY2RjYjM3MGE4MWMzMTkxYmExMjgwYmZkYmVlZDE2NWFhZDJmOTg3MWM1NGRhZDc0YmIzOTIyZGEiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== spec: restartPolicy: Never runtimeClassName: kata-cc diff --git a/src/agent/samples/policy/yaml/replica-set/replica-busy.yaml b/src/agent/samples/policy/yaml/replica-set/replica-busy.yaml index f4bcad2766c1..96372f84c8aa 100644 --- a/src/agent/samples/policy/yaml/replica-set/replica-busy.yaml +++ b/src/agent/samples/policy/yaml/replica-set/replica-busy.yaml @@ -14,7 +14,7 @@ spec: labels: app: replica1 annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecmVwbGljYTEtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgInNoIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1yZXBsaWNhMSIsCiAgICAgICAgICAgICJHRVRfSE9TVFNfRlJPTT1kbnMiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecmVwbGljYTEtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJidXN5IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vYWtzL2UyZS9saWJyYXJ5LWJ1c3lib3g6bWFzdGVyLjIyMDMxNC4xLWxpbnV4LWFtZDY0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1Mix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OTovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecmVwbGljYTEtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL3Jlc29sdi5jb25mIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcmVzb2x2LmNvbmYkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicm8iLAogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgIm5vZXhlYyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX3NhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogInNhbmRib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbG9nLWRpcmVjdG9yeSI6ICJeL3Zhci9sb2cvcG9kcy8kKHNhbmRib3gtbmFtZXNwYWNlKV8kKHNhbmRib3gtbmFtZSlfWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiOiAiZGVmYXVsdCIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgInNoIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsCiAgICAgICAgICAgICJIT1NUTkFNRT1yZXBsaWNhMSIsCiAgICAgICAgICAgICJHRVRfSE9TVFNfRlJPTT1kbnMiCiAgICAgICAgICBdLAogICAgICAgICAgImN3ZCI6ICIvIiwKICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICJib3VuZGluZyI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJlZmZlY3RpdmUiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicGVybWl0dGVkIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJub05ld1ByaXZpbGVnZXMiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInJvb3QiOiB7CiAgICAgICAgICAicGF0aCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgInJlYWRvbmx5IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecmVwbGljYTEtW2EtejAtOV17NX0kIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJidXN5IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vYWtzL2UyZS9saWJyYXJ5LWJ1c3lib3g6bWFzdGVyLjIyMDMxNC4xLWxpbnV4LWFtZDY0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODU2OGM3MGMwY2NmZTAwNTEwOTJlODE4ZGE3NjkxMTFhNTk4ODJjZDE5ZGQ3OTlkM2JjYTVmZmE4Mjc5MTA4MCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9MjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1Mix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWI2NDNiNjIxNzc0ODk4MzgzMGIyNmFjMTRhMzVhMzMyMmRkNTI4YzAwOTYzZWFhZGQ5MWVmNTVmNTEzZGM3M2YiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9MmMzNDJhMTM3ZTY5M2M3ODk4YWVjMzZkYTEwNDdmMTkxZGM3YzE2ODdlNjYxOThhZGFjYzQzOWNmNGFkZjM3OToyNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0KICBdCn0= spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/secrets/azure-file-secrets.yaml b/src/agent/samples/policy/yaml/secrets/azure-file-secrets.yaml index f85ce23d139f..5889ac40d8db 100644 --- a/src/agent/samples/policy/yaml/secrets/azure-file-secrets.yaml +++ b/src/agent/samples/policy/yaml/secrets/azure-file-secrets.yaml @@ -6,7 +6,7 @@ metadata: labels: run: busybox annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeYXp1cmUtZmlsZS1zZWNyZXRzJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJhenVyZS1maWxlLXNlY3JldHMiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICJzaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9YXp1cmUtZmlsZS1zZWNyZXRzIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeYXp1cmUtZmlsZS1zZWNyZXRzJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9tbnQvcGVyZnNoYXJlIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcGVyZnNoYXJlJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImJ1c3lib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJhenVyZS1maWxlLXNlY3JldHMiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzksdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeYXp1cmUtZmlsZS1zZWNyZXRzJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJhenVyZS1maWxlLXNlY3JldHMiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICJzaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAiSE9TVE5BTUU9YXp1cmUtZmlsZS1zZWNyZXRzIgogICAgICAgICAgXSwKICAgICAgICAgICJjd2QiOiAiLyIsCiAgICAgICAgICAiY2FwYWJpbGl0aWVzIjogewogICAgICAgICAgICAiYm91bmRpbmciOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZWZmZWN0aXZlIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAibm9OZXdQcml2aWxlZ2VzIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeYXp1cmUtZmlsZS1zZWNyZXRzJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9tbnQvcGVyZnNoYXJlIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tcGVyZnNoYXJlJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9jb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIjogImJ1c3lib3giLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9ha3MvZTJlL2xpYnJhcnktYnVzeWJveDptYXN0ZXIuMjIwMzE0LjEtbGludXgtYW1kNjQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJhenVyZS1maWxlLXNlY3JldHMiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzksdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5OjI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== spec: restartPolicy: Never runtimeClassName: kata-cc diff --git a/src/agent/samples/policy/yaml/stateful-set/web.yaml b/src/agent/samples/policy/yaml/stateful-set/web.yaml index 0ca70bcf13f0..945b570dc43b 100644 --- a/src/agent/samples/policy/yaml/stateful-set/web.yaml +++ b/src/agent/samples/policy/yaml/stateful-set/web.yaml @@ -28,7 +28,7 @@ spec: labels: app: nginx annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJed2ViLVthLXowLTldKiQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Vzci9zaGFyZS9uZ2lueC9odG1sIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taHRtbCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPS9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL2Jpbi9zaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAibmdpbnhfY29uZl9maWxlPW5naW54LmNvbmYiLAogICAgICAgICAgICAiZGVmYXVsdF9jb25mX2ZpbGU9ZGVmYXVsdC5jb25mIiwKICAgICAgICAgICAgIkhPU1ROQU1FPXdlYiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl53ZWItW2EtejAtOV0qJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi91c3Ivc2hhcmUvbmdpbngvaHRtbCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWh0bWwkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAibmdpbngiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9jYmwtbWFyaW5lci9iYXNlL25naW54OjEuMjIuMS01LWNtMi4wLjIwMjMwNjA5LWFtZDY0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zNWNlYzViMWNhZTgyZjAyOTk3NGFhODViYTY5ZWI0OWMwNGI5MGE4MGI1N2RlZGU4Nzk3ZGI5NWNiODExZjQ4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgwNDIxMmFiYjE5YzkzYWEwMzY5ZDExY2MzYjgzNmQwZjkwY2M0OTg2NzMwMDVhMGExYzhiNjRiMzk1Yjc4OTciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzdhZTkyNTJmMmY5NGEyNDUzMGJmYjJlZTAzZjgwODEwNmE1Njc2MzgyNDIwMzBjYjlhNzdjZmQyMWY2NDAwODUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDVmZjcyYTM4OTE4NGYyODQ3OWY2NWFjNTVjNTFmOWMyZGE5NGFlYjg1MDQ4ZjZkODE0NGIzMjBjOTg2MDlkNiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvODQ1MTdmY2Y1YWFhMjVjMTlhNWM4YmU4NjE2MjlkYjhkNDYwMDVlOTk2OTVmZTY0ZWYyYmZlMmE0NzQ1YmYwMiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0wMmYxNDExYjZkZDI2ZDcxMjhmNjE1MTI1ODc2M2NhY2UyOWZhZDlhOTA3M2I0YWJkNzdlZjY0NWU3MWYzNzFmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwNDk3NGIxYWRiNjNjYzIzMDVlNjEwOWZmMTgxMTc5OTBkNGJlZGZlY2Q1OTFlY2U4ZDEyNTBjYTUyMDNmOGYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjEyYTc5OGUxNWE4MGFjZTYyMjIyMjVlZjgzMzQ5M2I5YzFkODhmYTA2ZDk1MGIzOGEzZWYyN2Q5N2M4YjZiOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNzE2MjE5NTkzZWM1NTM4NDg3YTkxMzE4NzIzY2M3MjJhMjlmNzFhNGQ1Y2VjZmQ3YWYzNTIzNDRmNmUwNTk1MyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2UyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zNWNlYzViMWNhZTgyZjAyOTk3NGFhODViYTY5ZWI0OWMwNGI5MGE4MGI1N2RlZGU4Nzk3ZGI5NWNiODExZjQ4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy83YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODA0MjEyYWJiMTljOTNhYTAzNjlkMTFjYzNiODM2ZDBmOTBjYzQ5ODY3MzAwNWEwYTFjOGI2NGIzOTViNzg5NyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvODQ1MTdmY2Y1YWFhMjVjMTlhNWM4YmU4NjE2MjlkYjhkNDYwMDVlOTk2OTVmZTY0ZWYyYmZlMmE0NzQ1YmYwMix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ1ZmY3MmEzODkxODRmMjg0NzlmNjVhYzU1YzUxZjljMmRhOTRhZWI4NTA0OGY2ZDgxNDRiMzIwYzk4NjA5ZDYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzL2RmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0wMmYxNDExYjZkZDI2ZDcxMjhmNjE1MTI1ODc2M2NhY2UyOWZhZDlhOTA3M2I0YWJkNzdlZjY0NWU3MWYzNzFmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YTA0OTc0YjFhZGI2M2NjMjMwNWU2MTA5ZmYxODExNzk5MGQ0YmVkZmVjZDU5MWVjZThkMTI1MGNhNTIwM2Y4ZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNzE2MjE5NTkzZWM1NTM4NDg3YTkxMzE4NzIzY2M3MjJhMjlmNzFhNGQ1Y2VjZmQ3YWYzNTIzNDRmNmUwNTk1Myx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZDovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy83YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDI6L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0NjovcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJed2ViLVthLXowLTldKiQiLAogICAgICAgICJtb3VudHMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvcHJvYyIsCiAgICAgICAgICAgICJ0eXBlIjogInByb2MiLAogICAgICAgICAgICAic291cmNlIjogInByb2MiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2IiwKICAgICAgICAgICAgInR5cGUiOiAidG1wZnMiLAogICAgICAgICAgICAic291cmNlIjogInRtcGZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgInN0cmljdGF0aW1lIiwKICAgICAgICAgICAgICAibW9kZT03NTUiLAogICAgICAgICAgICAgICJzaXplPTY1NTM2ayIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvcHRzIiwKICAgICAgICAgICAgInR5cGUiOiAiZGV2cHRzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibmV3aW5zdGFuY2UiLAogICAgICAgICAgICAgICJwdG14bW9kZT0wNjY2IiwKICAgICAgICAgICAgICAibW9kZT0wNjIwIiwKICAgICAgICAgICAgICAiZ2lkPTUiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3NobSIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvc2htIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9tcXVldWUiLAogICAgICAgICAgICAidHlwZSI6ICJtcXVldWUiLAogICAgICAgICAgICAic291cmNlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9zeXMiLAogICAgICAgICAgICAidHlwZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAic3lzZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAibm9leGVjIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Vzci9zaGFyZS9uZ2lueC9odG1sIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taHRtbCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2Rfc2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiOiAic2FuZGJveCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCI6ICJeW2EtejAtOV17NjR9JCIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5IjogIl4vdmFyL2xvZy9wb2RzLyQoc2FuZGJveC1uYW1lc3BhY2UpXyQoc2FuZGJveC1uYW1lKV9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIjogIl4vdmFyL3J1bi9uZXRucy9jbmktWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCIKICAgICAgICB9LAogICAgICAgICJsaW51eCI6IHsKICAgICAgICAgICJuYW1lc3BhY2VzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAiaXBjIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAidXRzIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgInR5cGUiOiAibW91bnQiCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAibWFza2VkUGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hY3BpIiwKICAgICAgICAgICAgIi9wcm9jL2Fzb3VuZCIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIiwKICAgICAgICAgICAgIi9wcm9jL3Njc2kiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9idXMiLAogICAgICAgICAgICAiL3Byb2MvZnMiLAogICAgICAgICAgICAiL3Byb2MvaXJxIiwKICAgICAgICAgICAgIi9wcm9jL3N5cyIsCiAgICAgICAgICAgICIvcHJvYy9zeXNycS10cmlnZ2VyIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5vdmVybGF5LXJ3IiwKICAgICAgICAgICAgImxvd2VyZGlyPTVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfSwKICAgIHsKICAgICAgIm9jaSI6IHsKICAgICAgICAib2NpVmVyc2lvbiI6ICIxLjEuMC1yYy4xIiwKICAgICAgICAicHJvY2VzcyI6IHsKICAgICAgICAgICJ0ZXJtaW5hbCI6IGZhbHNlLAogICAgICAgICAgInVzZXIiOiB7CiAgICAgICAgICAgICJ1aWQiOiAwLAogICAgICAgICAgICAiZ2lkIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL2Jpbi9zaCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAogICAgICAgICAgICAibmdpbnhfY29uZl9maWxlPW5naW54LmNvbmYiLAogICAgICAgICAgICAiZGVmYXVsdF9jb25mX2ZpbGU9ZGVmYXVsdC5jb25mIiwKICAgICAgICAgICAgIkhPU1ROQU1FPXdlYiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl53ZWItW2EtejAtOV0qJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cy9mcy9jZ3JvdXAiLAogICAgICAgICAgICAidHlwZSI6ICJjZ3JvdXAiLAogICAgICAgICAgICAic291cmNlIjogImNncm91cCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJlbGF0aW1lIiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RzIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdHMkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvdGVybWluYXRpb24tbG9nIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tdGVybWluYXRpb24tbG9nJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZXRjL2hvc3RuYW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0taG9zdG5hbWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvcmVzb2x2LmNvbmYiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1yZXNvbHYuY29uZiQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50IiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VydmljZWFjY291bnQkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi91c3Ivc2hhcmUvbmdpbngvaHRtbCIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LWh0bWwkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAibmdpbngiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJtY3IubWljcm9zb2Z0LmNvbS9jYmwtbWFyaW5lci9iYXNlL25naW54OjEuMjIuMS01LWNtMi4wLjIwMjMwNjA5LWFtZDY0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJkZWZhdWx0IgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIsCiAgICAgICAgICAgICIvc3lzL2Zpcm13YXJlIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zNWNlYzViMWNhZTgyZjAyOTk3NGFhODViYTY5ZWI0OWMwNGI5MGE4MGI1N2RlZGU4Nzk3ZGI5NWNiODExZjQ4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9lMjE3MWE3Njg4NjFjM2NmNThmZWRmZGFlZDllNWRjOGFjNjNhMmZhMTQ5ZDViM2NhMzM1Zjg3MDJmNGEzMDBkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgwNDIxMmFiYjE5YzkzYWEwMzY5ZDExY2MzYjgzNmQwZjkwY2M0OTg2NzMwMDVhMGExYzhiNjRiMzk1Yjc4OTciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzdhZTkyNTJmMmY5NGEyNDUzMGJmYjJlZTAzZjgwODEwNmE1Njc2MzgyNDIwMzBjYjlhNzdjZmQyMWY2NDAwODUiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZDVmZjcyYTM4OTE4NGYyODQ3OWY2NWFjNTVjNTFmOWMyZGE5NGFlYjg1MDQ4ZjZkODE0NGIzMjBjOTg2MDlkNiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvODQ1MTdmY2Y1YWFhMjVjMTlhNWM4YmU4NjE2MjlkYjhkNDYwMDVlOTk2OTVmZTY0ZWYyYmZlMmE0NzQ1YmYwMiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0wMmYxNDExYjZkZDI2ZDcxMjhmNjE1MTI1ODc2M2NhY2UyOWZhZDlhOTA3M2I0YWJkNzdlZjY0NWU3MWYzNzFmIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy9kZmJiZGMxM2IwODcxMmRmMWMyYmE3NDJkMmQ0ZDdkOWIyODMwZWI2NTk3YTBkZjIyOTcwNTdkYzA1ZmY4YjQ2IiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWEwNDk3NGIxYWRiNjNjYzIzMDVlNjEwOWZmMTgxMTc5OTBkNGJlZGZlY2Q1OTFlY2U4ZDEyNTBjYTUyMDNmOGYiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI0YzY2NWNiMGI2N2M3NWZlYzcyYjZjZjEyZGQ2Y2E4N2M5YjUwZGQyN2FiNzUzMjU5YjQ4ZWIyMjBmMTA1NTQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9NjEyYTc5OGUxNWE4MGFjZTYyMjIyMjVlZjgzMzQ5M2I5YzFkODhmYTA2ZDk1MGIzOGEzZWYyN2Q5N2M4YjZiOCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNzE2MjE5NTkzZWM1NTM4NDg3YTkxMzE4NzIzY2M3MjJhMjlmNzFhNGQ1Y2VjZmQ3YWYzNTIzNDRmNmUwNTk1MyIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWUyMTcxYTc2ODg2MWMzY2Y1OGZlZGZkYWVkOWU1ZGM4YWM2M2EyZmExNDlkNWIzY2EzMzVmODcwMmY0YTMwMGQsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0zNWNlYzViMWNhZTgyZjAyOTk3NGFhODViYTY5ZWI0OWMwNGI5MGE4MGI1N2RlZGU4Nzk3ZGI5NWNiODExZjQ4IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj03YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODA0MjEyYWJiMTljOTNhYTAzNjlkMTFjYzNiODM2ZDBmOTBjYzQ5ODY3MzAwNWEwYTFjOGI2NGIzOTViNzg5NyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9ODQ1MTdmY2Y1YWFhMjVjMTlhNWM4YmU4NjE2MjlkYjhkNDYwMDVlOTk2OTVmZTY0ZWYyYmZlMmE0NzQ1YmYwMix0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWQ1ZmY3MmEzODkxODRmMjg0NzlmNjVhYzU1YzUxZjljMmRhOTRhZWI4NTA0OGY2ZDgxNDRiMzIwYzk4NjA5ZDYiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPWRmYmJkYzEzYjA4NzEyZGYxYzJiYTc0MmQyZDRkN2Q5YjI4MzBlYjY1OTdhMGRmMjI5NzA1N2RjMDVmZjhiNDYsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD0wMmYxNDExYjZkZDI2ZDcxMjhmNjE1MTI1ODc2M2NhY2UyOWZhZDlhOTA3M2I0YWJkNzdlZjY0NWU3MWYzNzFmIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0yNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0LHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YTA0OTc0YjFhZGI2M2NjMjMwNWU2MTA5ZmYxODExNzk5MGQ0YmVkZmVjZDU5MWVjZThkMTI1MGNhNTIwM2Y4ZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NzE2MjE5NTkzZWM1NTM4NDg3YTkxMzE4NzIzY2M3MjJhMjlmNzFhNGQ1Y2VjZmQ3YWYzNTIzNDRmNmUwNTk1Myx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTYxMmE3OThlMTVhODBhY2U2MjIyMjI1ZWY4MzM0OTNiOWMxZDg4ZmEwNmQ5NTBiMzhhM2VmMjdkOTdjOGI2YjgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9ZTIxNzFhNzY4ODYxYzNjZjU4ZmVkZmRhZWQ5ZTVkYzhhYzYzYTJmYTE0OWQ1YjNjYTMzNWY4NzAyZjRhMzAwZDo3YWU5MjUyZjJmOTRhMjQ1MzBiZmIyZWUwM2Y4MDgxMDZhNTY3NjM4MjQyMDMwY2I5YTc3Y2ZkMjFmNjQwMDg1Ojg0NTE3ZmNmNWFhYTI1YzE5YTVjOGJlODYxNjI5ZGI4ZDQ2MDA1ZTk5Njk1ZmU2NGVmMmJmZTJhNDc0NWJmMDI6ZGZiYmRjMTNiMDg3MTJkZjFjMmJhNzQyZDJkNGQ3ZDliMjgzMGViNjU5N2EwZGYyMjk3MDU3ZGMwNWZmOGI0NjoyNGM2NjVjYjBiNjdjNzVmZWM3MmI2Y2YxMmRkNmNhODdjOWI1MGRkMjdhYjc1MzI1OWI0OGViMjIwZjEwNTU0OjcxNjIxOTU5M2VjNTUzODQ4N2E5MTMxODcyM2NjNzIyYTI5ZjcxYTRkNWNlY2ZkN2FmMzUyMzQ0ZjZlMDU5NTMiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== spec: runtimeClassName: kata-cc containers: diff --git a/src/agent/samples/policy/yaml/webhook/webhook-pod1.yaml b/src/agent/samples/policy/yaml/webhook/webhook-pod1.yaml index 4ce6f4056fcf..9a4e8ca71e1b 100644 --- a/src/agent/samples/policy/yaml/webhook/webhook-pod1.yaml +++ b/src/agent/samples/policy/yaml/webhook/webhook-pod1.yaml @@ -4,7 +4,7 @@ kind: Pod metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: "{\"apiVersion\":\"v1\",\"kind\":\"Pod\",\"metadata\":{\"annotations\":{},\"name\":\"hello-kata-webhook\",\"namespace\":\"default\"},\"spec\":{\"containers\":[{\"command\":[\"echo\",\"Hello Webhook\"],\"image\":\"quay.io/prometheus/busybox:latest\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"hello-kata-webhook\"}],\"restartPolicy\":\"Never\"}}\n" - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeaGVsbG8ta2F0YS13ZWJob29rJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJoZWxsby1rYXRhLXdlYmhvb2siLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9L3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICJlY2hvIiwKICAgICAgICAgICAgIkhlbGxvIFdlYmhvb2siCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIkhPU1ROQU1FPWhlbGxvLWthdGEtd2ViaG9vayIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5oZWxsby1rYXRhLXdlYmhvb2skIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJoZWxsby1rYXRhLXdlYmhvb2siLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJxdWF5LmlvL3Byb21ldGhldXMvYnVzeWJveDpsYXRlc3QiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJoZWxsby1rYXRhLXdlYmhvb2siLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWNmMGExMjA5NDc1N2U2YTQ2YmYwOTgzZjMxNmQ2Y2Y1YzU2ZjlhOGZmYjk5MmE5NDNjYmFmODBlODAxMzJiODciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzNmNGE0OTQ1Mzk4NWI4YmNjN2QwYTg3ODllMzMzZmI5NDc1N2Y1ODNhNjY5NTc5OTcxZjE1N2NhMDAyMGI1MzMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZjQxZDdlNmU0Zjg4NGQzYTgyODRiNjJmOTVmOGNmODcxYjI1N2E5YzA2NmZlMmJiMmI0MmQ4YWIxMjBlMmUzYiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNzU3YjA4MGNhODM3M2Y2MmQzZjdkZjI5NjJmYzMzZDJlZDRhNTQwYWVjYzg2OGQyMzcxZjkxMzVjNWRjZGRlZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzNmNGE0OTQ1Mzk4NWI4YmNjN2QwYTg3ODllMzMzZmI5NDc1N2Y1ODNhNjY5NTc5OTcxZjE1N2NhMDAyMGI1MzMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jZjBhMTIwOTQ3NTdlNmE0NmJmMDk4M2YzMTZkNmNmNWM1NmY5YThmZmI5OTJhOTQzY2JhZjgwZTgwMTMyYjg3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy83NTdiMDgwY2E4MzczZjYyZDNmN2RmMjk2MmZjMzNkMmVkNGE1NDBhZWNjODY4ZDIzNzFmOTEzNWM1ZGNkZGVkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZjQxZDdlNmU0Zjg4NGQzYTgyODRiNjJmOTVmOGNmODcxYjI1N2E5YzA2NmZlMmJiMmI0MmQ4YWIxMjBlMmUzYiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8zZjRhNDk0NTM5ODViOGJjYzdkMGE4Nzg5ZTMzM2ZiOTQ3NTdmNTgzYTY2OTU3OTk3MWYxNTdjYTAwMjBiNTMzOi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzc1N2IwODBjYTgzNzNmNjJkM2Y3ZGYyOTYyZmMzM2QyZWQ0YTU0MGFlY2M4NjhkMjM3MWY5MTM1YzVkY2RkZWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJeaGVsbG8ta2F0YS13ZWJob29rJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJoZWxsby1rYXRhLXdlYmhvb2siLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiLAogICAgICAgICAgIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiOiAiXi92YXIvcnVuL25ldG5zL2NuaS1bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIgogICAgICAgIH0sCiAgICAgICAgImxpbnV4IjogewogICAgICAgICAgIm5hbWVzcGFjZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJpcGMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJ1dHMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidHlwZSI6ICJtb3VudCIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJtYXNrZWRQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2FjcGkiLAogICAgICAgICAgICAiL3Byb2MvYXNvdW5kIiwKICAgICAgICAgICAgIi9wcm9jL2tjb3JlIiwKICAgICAgICAgICAgIi9wcm9jL2tleXMiLAogICAgICAgICAgICAiL3Byb2MvbGF0ZW5jeV9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9saXN0IiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3NjaGVkX2RlYnVnIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiLAogICAgICAgICAgICAiL3Byb2Mvc2NzaSIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVhZG9ubHlQYXRocyI6IFsKICAgICAgICAgICAgIi9wcm9jL2J1cyIsCiAgICAgICAgICAgICIvcHJvYy9mcyIsCiAgICAgICAgICAgICIvcHJvYy9pcnEiLAogICAgICAgICAgICAiL3Byb2Mvc3lzIiwKICAgICAgICAgICAgIi9wcm9jL3N5c3JxLXRyaWdnZXIiCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9LAogICAgICAic3RvcmFnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJibGsiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhciIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04MTcyNTBmMWEzZTMzNmRhNzZmNWJkM2ZhNzg0ZTFiMjZkOTU5YjljMTMxODc2ODE1YmEyNjA0MDQ4YjcwYzE4IgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogIm92ZXJsYXlmcyIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyLW92ZXJsYXkiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXItc3JjLXByZWZpeD0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQubGF5ZXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCx0YXIscm8saW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllcixpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0Lm92ZXJsYXktcnciLAogICAgICAgICAgICAibG93ZXJkaXI9NWE1YWFkODAwNTVmZjIwMDEyYTUwZGMyNWY4ZGY3YTI5OTI0NDc0MzI0ZDY1ZjdkNTMwNmVlOGVlMjdmZjcxZCIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJmc19ncm91cCI6IHsKICAgICAgICAgICAgImdyb3VwX2lkIjogMCwKICAgICAgICAgICAgImdyb3VwX2NoYW5nZV9wb2xpY3kiOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICAiZXhlY19jb21tYW5kcyI6IFtdCiAgICB9LAogICAgewogICAgICAib2NpIjogewogICAgICAgICJvY2lWZXJzaW9uIjogIjEuMS4wLXJjLjEiLAogICAgICAgICJwcm9jZXNzIjogewogICAgICAgICAgInRlcm1pbmFsIjogZmFsc2UsCiAgICAgICAgICAidXNlciI6IHsKICAgICAgICAgICAgInVpZCI6IDAsCiAgICAgICAgICAgICJnaWQiOiAwCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAgICJlY2hvIiwKICAgICAgICAgICAgIkhlbGxvIFdlYmhvb2siCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIkhPU1ROQU1FPWhlbGxvLWthdGEtd2ViaG9vayIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5oZWxsby1rYXRhLXdlYmhvb2skIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCI6ICIvcnVuL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5ydW50aW1lLnYyLnRhc2svazhzLmlvLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSI6ICJwb2RfY29udGFpbmVyIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSI6ICJoZWxsby1rYXRhLXdlYmhvb2siLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci10eXBlIjogImNvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuaW1hZ2UtbmFtZSI6ICJxdWF5LmlvL3Byb21ldGhldXMvYnVzeWJveDpsYXRlc3QiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiOiAiXlthLXowLTldezY0fSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJoZWxsby1rYXRhLXdlYmhvb2siLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogImRlZmF1bHQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPWNmMGExMjA5NDc1N2U2YTQ2YmYwOTgzZjMxNmQ2Y2Y1YzU2ZjlhOGZmYjk5MmE5NDNjYmFmODBlODAxMzJiODciCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzNmNGE0OTQ1Mzk4NWI4YmNjN2QwYTg3ODllMzMzZmI5NDc1N2Y1ODNhNjY5NTc5OTcxZjE1N2NhMDAyMGI1MzMiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZjQxZDdlNmU0Zjg4NGQzYTgyODRiNjJmOTVmOGNmODcxYjI1N2E5YzA2NmZlMmJiMmI0MmQ4YWIxMjBlMmUzYiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvNzU3YjA4MGNhODM3M2Y2MmQzZjdkZjI5NjJmYzMzZDJlZDRhNTQwYWVjYzg2OGQyMzcxZjkxMzVjNWRjZGRlZCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTNmNGE0OTQ1Mzk4NWI4YmNjN2QwYTg3ODllMzMzZmI5NDc1N2Y1ODNhNjY5NTc5OTcxZjE1N2NhMDAyMGI1MzMsdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD1jZjBhMTIwOTQ3NTdlNmE0NmJmMDk4M2YzMTZkNmNmNWM1NmY5YThmZmI5OTJhOTQzY2JhZjgwZTgwMTMyYjg3IiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj03NTdiMDgwY2E4MzczZjYyZDNmN2RmMjk2MmZjMzNkMmVkNGE1NDBhZWNjODY4ZDIzNzFmOTEzNWM1ZGNkZGVkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ZjQxZDdlNmU0Zjg4NGQzYTgyODRiNjJmOTVmOGNmODcxYjI1N2E5YzA2NmZlMmJiMmI0MmQ4YWIxMjBlMmUzYiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0zZjRhNDk0NTM5ODViOGJjYzdkMGE4Nzg5ZTMzM2ZiOTQ3NTdmNTgzYTY2OTU3OTk3MWYxNTdjYTAwMjBiNTMzOjc1N2IwODBjYTgzNzNmNjJkM2Y3ZGYyOTYyZmMzM2QyZWQ0YTU0MGFlY2M4NjhkMjM3MWY5MTM1YzVkY2RkZWQiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== creationTimestamp: ~ managedFields: - apiVersion: v1 diff --git a/src/agent/samples/policy/yaml/webhook/webhook-pod2.yaml b/src/agent/samples/policy/yaml/webhook/webhook-pod2.yaml index 4a13c0d8b7f8..7466ddec0599 100644 --- a/src/agent/samples/policy/yaml/webhook/webhook-pod2.yaml +++ b/src/agent/samples/policy/yaml/webhook/webhook-pod2.yaml @@ -59,7 +59,7 @@ metadata: name: pod-secrets-918a3370-ad19-46b2-a2e6-a4e393f2ee2b namespace: secrets-7157 annotations: - io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecG9kLXNlY3JldHMtOTE4YTMzNzAtYWQxOS00NmIyLWEyZTYtYTRlMzkzZjJlZTJiJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJwb2Qtc2VjcmV0cy05MThhMzM3MC1hZDE5LTQ2YjItYTJlNi1hNGUzOTNmMmVlMmIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogInNlY3JldHMtNzE1NyIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy81YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi9iaW4vc2giCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIkhPU1ROQU1FPXBvZC1zZWNyZXRzLTkxOGEzMzcwLWFkMTktNDZiMi1hMmU2LWE0ZTM5M2YyZWUyYiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5wb2Qtc2VjcmV0cy05MThhMzM3MC1hZDE5LTQ2YjItYTJlNi1hNGUzOTNmMmVlMmIkIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9zZWNyZXQtdm9sdW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzL3dhdGNoYWJsZS8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlY3JldC12b2x1bWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAic2VjcmV0LXZvbHVtZS10ZXN0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vYWtzL2UyZS9saWJyYXJ5LWJ1c3lib3g6bWFzdGVyLjIyMDMxNC4xLWxpbnV4LWFtZDY0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAicG9kLXNlY3JldHMtOTE4YTMzNzAtYWQxOS00NmIyLWEyZTYtYTRlMzkzZjJlZTJiIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJzZWNyZXRzLTcxNTciCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzksdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0vdmFyL2xpYi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQuc25hcHNob3R0ZXIudjEudGFyZGV2L2xheWVycy8yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0vcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L2xheWVycy8yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5Oi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJ3YXRjaGFibGUtYmluZCIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VjcmV0LXZvbHVtZSQiLAogICAgICAgICAgImZzdHlwZSI6ICJiaW5kIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAicm8iCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy93YXRjaGFibGUvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZWNyZXQtdm9sdW1lJCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== + io.katacontainers.config.agent.policy: cGFja2FnZSBjb2NvX3BvbGljeQoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmV2ZXJ5CgppbXBvcnQgaW5wdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZhdWx0IHZhbHVlczoKIwojIC0gdHJ1ZSBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LgojIC0gZmFsc2UgZm9yIHJlcXVlc3RzIHRoYXQgaGF2ZSBhZGRpdGlvbmFsIHBvbGljeSBydWxlcywgZGVmaW5lZCBiZWxvdy4KIyAtIFJlcXVlc3RzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaGVyZSBnZXQgcmVqZWN0ZWQgYnkgZGVmYXVsdC4KCiMgTW9yZSBkZXRhaWxlZCBwb2xpY3kgcnVsZXMgYXJlIGJlbG93LgpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gZmFsc2UKZGVmYXVsdCBFeGVjUHJvY2Vzc1JlcXVlc3QgOj0gZmFsc2UKCiMgUmVxdWVzdHMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQuCmRlZmF1bHQgQ3JlYXRlU2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IERlc3Ryb3lTYW5kYm94UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0T09NRXZlbnRSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBHdWVzdERldGFpbHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQdWxsSW1hZ2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZWFkU3RyZWFtUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgUmVtb3ZlQ29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBUdHlXaW5SZXNpemVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVJbnRlcmZhY2VSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBVcGRhdGVSb3V0ZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBXYWl0UHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdyaXRlU3RyZWFtUmVxdWVzdCA6PSB0cnVlCgojIENvbmZpZ3VyZSB0aGUgQWdlbnQgdG8gKmFsbG93IGFueSByZXF1ZXN0cyBjYXVzaW5nIGEgcG9saWN5IGZhaWx1cmUqLgojIFRoaXMgaXMgYW4gdW5zZWN1cmUgY29uZmlndXJhdGlvbiBidXQgaXMgdXNlZnVsIGZvciBhbGxvd2luZyB1bnNlY3VyZQojIHBvZHMgdG8gc3RhcnQsIHRoZW4gY29ubmVjdCB0byB0aGVtIGFuZCBpbnNwZWN0IE9QQSBsb2dzIGZvciB0aGUgcm9vdAojIGNhdXNlIG9mIGEgZmFpbHVyZS4KIyBkZWZhdWx0IEFsbG93UmVxdWVzdHNGYWlsaW5nUG9saWN5IDo9IHRydWUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ3JlYXRlQ29udGFpbmVyUmVxdWVzdCB7CiAgICBzb21lIHBvbGljeV9jb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwoKICAgIHBvbGljeV9vY2kgOj0gcG9saWN5X2NvbnRhaW5lci5vY2kKICAgIHBvbGljeV9zdG9yYWdlcyA6PSBwb2xpY3lfY29udGFpbmVyLnN0b3JhZ2VzCgogICAgaW5wdXRfb2NpIDo9IGlucHV0Lm9jaQogICAgaW5wdXRfc3RvcmFnZXMgOj0gaW5wdXQuc3RvcmFnZXMKCiAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5vY2lWZXJzaW9uIikKICAgIHBvbGljeV9vY2kub2NpVmVyc2lvbiAgICAgPT0gaW5wdXRfb2NpLm9jaVZlcnNpb24KCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogcG9saWN5X29jaS5yb290LnJlYWRvbmx5IikKICAgIHBvbGljeV9vY2kucm9vdC5yZWFkb25seSAgPT0gaW5wdXRfb2NpLnJvb3QucmVhZG9ubHkKCiAgICBwcmludCgiQ3JlYXRlQ29udGFpbmVyUmVxdWVzdDogYWxsb3dfYnlfYW5ub3RhdGlvbnMiKQogICAgYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKQoKICAgIHByaW50KCJDcmVhdGVDb250YWluZXJSZXF1ZXN0OiBhbGxvd19saW51eCIpCiAgICBhbGxvd19saW51eChwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoIkNyZWF0ZUNvbnRhaW5lclJlcXVlc3Q6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0ICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiLCBhbmQgY29ycmVsYXRlIGl0cyB2YWx1ZSB3aXRoIG90aGVyCiMgYW5ub3RhdGlvbnMgYW5kIHByb2Nlc3MgZmllbGRzLgoKYWxsb3dfYnlfYW5ub3RhdGlvbnMocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzKSB7CiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMTogbm8gaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIGluIHBvbGljeSIpCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lIl0KCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAxOiBhbGxvd19ieV9zYW5kYm94X25hbWUiLCBpbnB1dF9zYW5kYm94X25hbWUpCiAgICBhbGxvd19ieV9zYW5kYm94X25hbWUocG9saWN5X29jaSwgaW5wdXRfb2NpLCBwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBpbnB1dF9zYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2J5X2Fubm90YXRpb25zKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSIpCiAgICBwb2xpY3lfc2FuZGJveF9uYW1lIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSJdCiAgICBpbnB1dF9zYW5kYm94X25hbWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiXQoKICAgIHByaW50KCJhbGxvd19ieV9hbm5vdGF0aW9ucyAyOiBpbnB1dCBzYW5kYm94ID0iLCBpbnB1dF9zYW5kYm94X25hbWUsICJwb2xpY3kgc2FuZGJveCA9IiwgcG9saWN5X3NhbmRib3hfbmFtZSkKICAgIHBvbGljeV9zYW5kYm94X25hbWUgPT0gaW5wdXRfc2FuZGJveF9uYW1lCgogICAgcHJpbnQoImFsbG93X2J5X2Fubm90YXRpb25zIDI6IGFsbG93X2J5X3NhbmRib3hfbmFtZSIsIGlucHV0X3NhbmRib3hfbmFtZSkKICAgIGFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGlucHV0X3NhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfYnlfYW5ub3RhdGlvbnMgMjogc3VjY2VzcyIpCn0KCmFsbG93X2J5X3NhbmRib3hfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3RhcnRpbmciKQoKICAgIHBvbGljeV9uYW1lc3BhY2UgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1uYW1lc3BhY2UiXQogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogcG9saWN5X25hbWVzcGFjZSA9IiwgcG9saWN5X25hbWVzcGFjZSwgImlucHV0X25hbWVzcGFjZSA9IiwgaW5wdXRfbmFtZXNwYWNlKQogICAgcG9saWN5X25hbWVzcGFjZSA9PSBpbnB1dF9uYW1lc3BhY2UKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19ieV9jb250YWluZXJfdHlwZXMiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBwb2xpY3lfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9zYW5kYm94X25hbWU6IGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkIikKICAgIGFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykKCiAgICBwcmludCgiYWxsb3dfYnlfc2FuZGJveF9uYW1lOiBhbGxvd19wcm9jZXNzIikKICAgIGFsbG93X3Byb2Nlc3MocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUpCgogICAgcHJpbnQoImFsbG93X2J5X3NhbmRib3hfbmFtZTogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAtIENoZWNrIHRoYXQgdGhlICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSIgYW5kCiMgICAiaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5jb250YWluZXJfdHlwZSIgYW5ub3RhdGlvbnMKIyAgIGRlc2lnbmF0ZSB0aGUgZXhwZWN0ZWQgdHlwZSAtIGVpdGhlciBhICJzYW5kYm94IiBvciBhCiMgICAiY29udGFpbmVyIiB0eXBlLgojCiMgLSBUaGVuLCB2YWxpZGF0ZSBvdGhlciBhbm5vdGF0aW9ucyBiYXNlZCBvbiB0aGUgYWN0dWFsCiMgICAic2FuZGJveCIgb3IgImNvbnRhaW5lciIgdmFsdWUgZnJvbSB0aGUgaW5wdXQgY29udGFpbmVyLgoKYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzKHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogY2hlY2tpbmcgaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiKQogICAgCiAgICBwb2xpY3lfY3JpX3R5cGUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLXR5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogcG9saWN5IHR5cGUgPSIsIHBvbGljeV9jcmlfdHlwZSkKICAgIAogICAgaW5wdXRfY3JpX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSJdCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIAogICAgcG9saWN5X2NyaV90eXBlID09IGlucHV0X2NyaV90eXBlCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlczogYWxsb3dfYnlfY29udGFpbmVyX3R5cGUiKQogICAgYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkKCiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGVzOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAic2FuZGJveCIgY29udGFpbmVyIHR5cGUKYWxsb3dfYnlfY29udGFpbmVyX3R5cGUoaW5wdXRfY3JpX3R5cGUsIHBvbGljeV9vY2ksIGlucHV0X29jaSwgc2FuZGJveF9uYW1lLCBzYW5kYm94X25hbWVzcGFjZSkgewogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0X2NyaV90eXBlID0iLCBpbnB1dF9jcmlfdHlwZSkKICAgIGlucHV0X2NyaV90eXBlID09ICJzYW5kYm94IgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBpbnB1dCBob3N0bmFtZSA9IiwgaW5wdXRfb2NpLmhvc3RuYW1lLCAicG9saWN5IGhvc3RuYW1lID0iLCBwb2xpY3lfb2NpLmhvc3RuYW1lKQogICAgcmVnZXgubWF0Y2gocG9saWN5X29jaS5ob3N0bmFtZSwgaW5wdXRfb2NpLmhvc3RuYW1lKQoKICAgIGlucHV0X2thdGFfdHlwZSA6PSBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiXQogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDE6IGlucHV0IGNvbnRhaW5lciB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2Rfc2FuZGJveCIKCiAgICBhbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkKICAgIGFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCiAgICBhbGxvd19zYW5kYm94X2xvZ19kaXJlY3RvcnkocG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKQoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAxOiBzdWNjZXNzIikKfQoKIyBSdWxlcyBhcHBsaWNhYmxlIHRvIHRoZSAiY29udGFpbmVyIiBjb250YWluZXIgdHlwZQphbGxvd19ieV9jb250YWluZXJfdHlwZShpbnB1dF9jcmlfdHlwZSwgcG9saWN5X29jaSwgaW5wdXRfb2NpLCBzYW5kYm94X25hbWUsIHNhbmRib3hfbmFtZXNwYWNlKSB7CiAgICBwcmludCgiYWxsb3dfYnlfY29udGFpbmVyX3R5cGUgMjogaW5wdXRfY3JpX3R5cGUgPSIsIGlucHV0X2NyaV90eXBlKQogICAgaW5wdXRfY3JpX3R5cGUgPT0gImNvbnRhaW5lciIKCiAgICBpbnB1dF9rYXRhX3R5cGUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zWyJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIl0KICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBpbnB1dCB0eXBlIiwgaW5wdXRfa2F0YV90eXBlKQogICAgaW5wdXRfa2F0YV90eXBlID09ICJwb2RfY29udGFpbmVyIgoKICAgIHByaW50KCJhbGxvd19ieV9jb250YWluZXJfdHlwZSAyOiBhbGxvd19jb250YWluZXJfbmFtZSIpCiAgICBhbGxvd19jb250YWluZXJfbmFtZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X25ldF9uYW1lc3BhY2UiKQogICAgYWxsb3dfbmV0X25hbWVzcGFjZShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IGFsbG93X2xvZ19kaXJlY3RvcnkiKQogICAgYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpCgogICAgcHJpbnQoImFsbG93X2J5X2NvbnRhaW5lcl90eXBlIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgImlvLmt1YmVybmV0ZXMuY3JpLmNvbnRhaW5lci1uYW1lIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3NhbmRib3hfY29udGFpbmVyX25hbWU6IGNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3NpbmciKQogICAgY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9jb250YWluZXJfbmFtZTogc3VjY2VzcyIpCn0KCmFsbG93X2NvbnRhaW5lcl9uYW1lKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9uYW1lOiBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbiIpCiAgICBhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItbmFtZSIpCiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX25hbWU6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQW5ub3Rpb25zIHJlcXVpcmVkIGZvciAiY29udGFpbmVyIiB0eXBlLCBhbmQgbm90IGFsbG93ZWQgZm9yICJzYW5kYm94IiB0eXBlLgoKY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiY29udGFpbmVyX2Fubm90YXRpb25fbWlzc2luZzoiLCBhbm5vdGF0aW9uX2tleSkKCiAgICBub3QgcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl9rZXldCgogICAgcHJpbnQoImNvbnRhaW5lcl9hbm5vdGF0aW9uX21pc3Npbmc6IHN1Y2Nlc3MiKQp9CgphbGxvd19jb250YWluZXJfYW5ub3RhdGlvbihwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIGFubm90YXRpb25fa2V5KSB7CiAgICBwcmludCgiYWxsb3dfY29udGFpbmVyX2Fubm90YXRpb246IGFubm90YXRpb25fa2V5ID0iLCBhbm5vdGF0aW9uX2tleSkKCiAgICBwb2xpY3lfdmFsdWUgOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uX2tleV0KICAgIHByaW50KCJhbGxvd19jb250YWluZXJfYW5ub3RhdGlvbjogcG9saWN5X3ZhbHVlID0iLCBwb2xpY3lfdmFsdWUpCgogICAgaW5wdXRfdmFsdWUgOj0gaW5wdXRfb2NpLmFubm90YXRpb25zW2Fubm90YXRpb25fa2V5XQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBpbnB1dF92YWx1ZSA9ICIsIGlucHV0X3ZhbHVlKQoKICAgIHBvbGljeV92YWx1ZSA9PSBpbnB1dF92YWx1ZQogICAgcHJpbnQoImFsbG93X2NvbnRhaW5lcl9hbm5vdGF0aW9uOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIiBhbm5vdGF0aW9uCgphbGxvd19zYW5kYm94X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9uZXRfbmFtZXNwYWNlOiBzdGFydCIpCiAgICBwb2xpY3lfbmFtZXNwYWNlIDo9IHBvbGljeV9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQogICAgaW5wdXRfbmFtZXNwYWNlIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1sibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSJdCgogICAgcmVnZXgubWF0Y2gocG9saWN5X25hbWVzcGFjZSwgaW5wdXRfbmFtZXNwYWNlKQogICAgcHJpbnQoImFsbG93X3NhbmRib3hfbmV0X25hbWVzcGFjZTogc3VjY2VzcyIpCn0KCmFsbG93X25ldF9uYW1lc3BhY2UocG9saWN5X29jaSwgaW5wdXRfb2NpKSB7CiAgICBwcmludCgiYWxsb3dfbmV0X25hbWVzcGFjZTogc3RhcnQiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJuZXJkY3RsL25ldHdvcmstbmFtZXNwYWNlIl0KICAgIG5vdCBpbnB1dF9vY2kuYW5ub3RhdGlvbnNbIm5lcmRjdGwvbmV0d29yay1uYW1lc3BhY2UiXQoKICAgIHByaW50KCJhbGxvd19uZXRfbmFtZXNwYWNlOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiIGFubm90YXRpb24KCmFsbG93X3NhbmRib3hfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSwgc2FuZGJveF9uYW1lc3BhY2UpIHsKICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IHN0YXJ0IikKCiAgICBwb2xpY3lfbG9nX2RpcmVjdG9yeSA6PSBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgZGlyZWN0b3J5X3JlZ2V4X3RtcCA6PSByZXBsYWNlKHBvbGljeV9sb2dfZGlyZWN0b3J5LCAiJChzYW5kYm94LW5hbWUpIiwgc2FuZGJveF9uYW1lKQogICAgZGlyZWN0b3J5X3JlZ2V4IDo9IHJlcGxhY2UoZGlyZWN0b3J5X3JlZ2V4X3RtcCwgIiQoc2FuZGJveC1uYW1lc3BhY2UpIiwgc2FuZGJveF9uYW1lc3BhY2UpCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBwb2xpY3kgcmVnZXggPSIsIGRpcmVjdG9yeV9yZWdleCkKCiAgICBpbnB1dF9sb2dfZGlyZWN0b3J5IDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KICAgIHByaW50KCJhbGxvd19zYW5kYm94X2xvZ19kaXJlY3Rvcnk6IGlucHV0ID0iLCBpbnB1dF9sb2dfZGlyZWN0b3J5KQoKICAgIHJlZ2V4Lm1hdGNoKGRpcmVjdG9yeV9yZWdleCwgaW5wdXRfbG9nX2RpcmVjdG9yeSkKCiAgICBwcmludCgiYWxsb3dfc2FuZGJveF9sb2dfZGlyZWN0b3J5OiBzdWNjZXNzIikKfQoKYWxsb3dfbG9nX2RpcmVjdG9yeShwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIG5vdCBwb2xpY3lfb2NpLmFubm90YXRpb25zWyJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiXQogICAgbm90IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1sb2ctZGlyZWN0b3J5Il0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBsaW51eCBmaWVsZHMgZnJvbSBjb25maWcuanNvbi4KCmFsbG93X2xpbnV4KHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X2xpbnV4OiBwb2xpY3kgbmFtZXNwYWNlcyA9IiwgcG9saWN5X29jaS5saW51eC5uYW1lc3BhY2VzLCAiaW5wdXQgbmFtZXNwYWNlcyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm5hbWVzcGFjZXMpCiAgICBwb2xpY3lfb2NpLmxpbnV4Lm5hbWVzcGFjZXMgICAgID09IGlucHV0X29jaS5saW51eC5uYW1lc3BhY2VzCgogICAgcHJpbnQoImFsbG93X2xpbnV4OiBhbGxvd19tYXNrZWRfcGF0aHMiKQogICAgYWxsb3dfbWFza2VkX3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IGFsbG93X3JlYWRvbmx5X3BhdGhzIikKICAgIGFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkKCiAgICBwcmludCgiYWxsb3dfbGludXg6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMTogcG9saWN5IG1hc2tlZFBhdGhzID0iLCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAxOiBpbnB1dCBtYXNrZWRQYXRocyA9IiwgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgubWFza2VkUGF0aHMsIGlucHV0X29jaS5saW51eC5tYXNrZWRQYXRocykKCiAgICBwcmludCgiYWxsb3dfbWFza2VkX3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X21hc2tlZF9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19tYXNrZWRfcGF0aHMgMjogbm8gbWFza2VkUGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCiAgICBub3QgaW5wdXRfb2NpLmxpbnV4Lm1hc2tlZFBhdGhzCgogICAgcHJpbnQoImFsbG93X21hc2tlZF9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19yZWFkb25seV9wYXRocyhwb2xpY3lfb2NpLCBpbnB1dF9vY2kpIHsKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAxOiBwb2xpY3kgcmVhZG9ubHlQYXRocyA9IiwgcG9saWN5X29jaS5saW51eC5yZWFkb25seVBhdGhzKQogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IGlucHV0IHJlYWRvbmx5UGF0aHMgPSIsIGlucHV0X29jaS5saW51eC5yZWFkb25seVBhdGhzKQoKICAgIGFsbG93X2FycmF5KHBvbGljeV9vY2kubGludXgucmVhZG9ubHlQYXRocywgaW5wdXRfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMpCgogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X3JlYWRvbmx5X3BhdGhzKHBvbGljeV9vY2ksIGlucHV0X29jaSkgewogICAgcHJpbnQoImFsbG93X3JlYWRvbmx5X3BhdGhzIDI6IG5vIHJlYWRvbmx5UGF0aHMiKQoKICAgIG5vdCBwb2xpY3lfb2NpLmxpbnV4LnJlYWRvbmx5UGF0aHMKICAgIG5vdCBpbnB1dF9vY2kubGludXgucmVhZG9ubHlQYXRocwoKICAgIHByaW50KCJhbGxvd19yZWFkb25seV9wYXRocyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwphbGxvd19hcnJheShwb2xpY3lfYXJyYXksIGlucHV0X2FycmF5KSB7CiAgICBldmVyeSBpbnB1dF9lbGVtZW50IGluIGlucHV0X2FycmF5IHsKICAgICAgICBhbGxvd19hcnJheV9lbGVtZW50KHBvbGljeV9hcnJheSwgaW5wdXRfZWxlbWVudCkKICAgIH0KfQoKYWxsb3dfYXJyYXlfZWxlbWVudChwb2xpY3lfYXJyYXksIGlucHV0X2VsZW1lbnQpIHsKICAgIHByaW50KCJhbGxvd19hcnJheV9lbGVtZW50OiBpbnB1dF9lbGVtZW50ID0iLCBpbnB1dF9lbGVtZW50KQoKICAgIHNvbWUgcG9saWN5X2VsZW1lbnQgaW4gcG9saWN5X2FycmF5CiAgICBwb2xpY3lfZWxlbWVudCA9PSBpbnB1dF9lbGVtZW50CgogICAgcHJpbnQoImFsbG93X2FycmF5X2VsZW1lbnQ6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgR2V0IHRoZSBpbnB1dDoKIwojIC0gYnVuZGxlX2lkIGZyb20gImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiCiMgLSBzYW5kYm94X2lkIGZyb20gImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtaWQiCiMKIyBhbmQgY2hlY2sgdGhlaXIgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBydWxlcy4KCmFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkKHBvbGljeV9vY2ksIGlucHV0X29jaSwgcG9saWN5X3N0b3JhZ2VzLCBpbnB1dF9zdG9yYWdlcykgewogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBjaGVja2luZyBpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIikKICAgIGJ1bmRsZV9wYXRoIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua2F0YWNvbnRhaW5lcnMucGtnLm9jaS5idW5kbGVfcGF0aCJdCiAgICBidW5kbGVfaWQgOj0gcmVwbGFjZShidW5kbGVfcGF0aCwgIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vIiwgIiIpCgogICAgcG9saWN5X3NhbmRib3hfcmVnZXggOj0gcG9saWN5X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCiAgICBzYW5kYm94X2lkIDo9IGlucHV0X29jaS5hbm5vdGF0aW9uc1siaW8ua3ViZXJuZXRlcy5jcmkuc2FuZGJveC1pZCJdCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiByZWdleC5tYXRjaCBzYW5kYm94X2lkID0iLCBzYW5kYm94X2lkLCAicmVnZXggPSIsIHBvbGljeV9zYW5kYm94X3JlZ2V4KQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NhbmRib3hfcmVnZXgsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19yb290X3BhdGgiKQogICAgYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKQoKICAgIGV2ZXJ5IGlucHV0X21vdW50IGluIGlucHV0Lm9jaS5tb3VudHMgewogICAgICAgIHByaW50KCJhbGxvd19ieV9idW5kbGVfb3Jfc2FuZGJveF9pZDogYWxsb3dfbW91bnQiKQogICAgICAgIGFsbG93X21vdW50KHBvbGljeV9vY2ksIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCiAgICB9CgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBhbGxvd19zdG9yYWdlcyIpCiAgICBhbGxvd19zdG9yYWdlcyhwb2xpY3lfc3RvcmFnZXMsIGlucHV0X3N0b3JhZ2VzLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoImFsbG93X2J5X2J1bmRsZV9vcl9zYW5kYm94X2lkOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZhbGlkYXRlIHRoZSBwcm9jZXNzIGZpZWxkcyBmcm9tIGNvbmZpZy5qc29uLgoKYWxsb3dfcHJvY2Vzcyhwb2xpY3lfb2NpLCBpbnB1dF9vY2ksIHNhbmRib3hfbmFtZSkgewogICAgcG9saWN5X3Byb2Nlc3MgOj0gcG9saWN5X29jaS5wcm9jZXNzCiAgICBpbnB1dF9wcm9jZXNzIDo9IGlucHV0X29jaS5wcm9jZXNzCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGlucHV0IHRlcm1pbmFsID0iLCBpbnB1dF9wcm9jZXNzLnRlcm1pbmFsLCAicG9saWN5IHRlcm1pbmFsID0iLCBwb2xpY3lfcHJvY2Vzcy50ZXJtaW5hbCkKICAgIHBvbGljeV9wcm9jZXNzLnRlcm1pbmFsICAgICAgICAgPT0gaW5wdXRfcHJvY2Vzcy50ZXJtaW5hbAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjd2QgPSIsIGlucHV0X3Byb2Nlc3MuY3dkLCAicG9saWN5IGN3ZCA9IiwgcG9saWN5X3Byb2Nlc3MuY3dkKQogICAgcG9saWN5X3Byb2Nlc3MuY3dkICAgICAgICAgICAgICA9PSBpbnB1dF9wcm9jZXNzLmN3ZAoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBpbnB1dCBjYXBhYmlsaXRpZXMgPSIsIGlucHV0X3Byb2Nlc3MuY2FwYWJpbGl0aWVzKQogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IHBvbGljeSBjYXBhYmlsaXRpZXMgPSIsIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcykKICAgIHBvbGljeV9wcm9jZXNzLmNhcGFiaWxpdGllcyAgICAgPT0gaW5wdXRfcHJvY2Vzcy5jYXBhYmlsaXRpZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogaW5wdXQgbm9OZXdQcml2aWxlZ2VzID0iLCBpbnB1dF9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcywgInBvbGljeSBub05ld1ByaXZpbGVnZXMgPSIsIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcykKICAgIHBvbGljeV9wcm9jZXNzLm5vTmV3UHJpdmlsZWdlcyAgPT0gaW5wdXRfcHJvY2Vzcy5ub05ld1ByaXZpbGVnZXMKCiAgICBwcmludCgiYWxsb3dfcHJvY2VzczogYWxsb3dfdXNlciIpCiAgICBhbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKQoKICAgIHByaW50KCJhbGxvd19wcm9jZXNzOiBhbGxvd19hcmdzIikKICAgIGFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpCgogICAgcHJpbnQoImFsbG93X3Byb2Nlc3M6IGFsbG93X2VudiIpCiAgICBhbGxvd19lbnYocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIHNhbmRib3hfbmFtZSkKCiAgICBwcmludCgiYWxsb3dfcHJvY2Vzczogc3VjY2VzcyIpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPQ0kgcHJvY2Vzcy51c2VyIGZpZWxkCgphbGxvd191c2VyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzKSB7CiAgICBwb2xpY3lfdXNlciA6PSBwb2xpY3lfcHJvY2Vzcy51c2VyCiAgICBpbnB1dF91c2VyIDo9IGlucHV0X3Byb2Nlc3MudXNlcgoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciBtY3IubWljcm9zb2Z0LmNvbS9vc3MvYml0bmFtaS9yZWRpczo2LjAuOCBiZWluZwogICAgIyAgICAgICBleGVjdXRlZCB3aXRoIHVpZCA9IDAgZGVzcGl0ZSBoYXZpbmcgIlVzZXIiOiAiMTAwMSIgaW4gaXRzIGNvbnRhaW5lciBpbWFnZQogICAgIyAgICAgICBjb25maWcuCiAgICAjcHJpbnQoImFsbG93X3VzZXI6IGlucHV0IHVpZCA9IiwgaW5wdXRfdXNlci51aWQsICJwb2xpY3kgdWlkID0iLCBwb2xpY3lfdXNlci51aWQpCiAgICAjcG9saWN5X3VzZXIudWlkICAgICAgICAgICAgICAgICA9PSBpbnB1dF91c2VyLnVpZAoKICAgICMgVE9ETzogdHJhY2sgZG93biB0aGUgcmVhc29uIGZvciByZWdpc3RyeS5rOHMuaW8vcGF1c2U6My45IGJlaW5nCiAgICAjICAgICAgIGV4ZWN1dGVkIHdpdGggZ2lkID0gMCBkZXNwaXRlIGhhdmluZyAiNjU1MzU6NjU1MzUiIGluIGl0cyBjb250YWluZXIgaW1hZ2UKICAgICMgICAgICAgY29uZmlnLgogICAgI3ByaW50KCJhbGxvd191c2VyOiBpbnB1dCBnaWQgPSIsIGlucHV0X3VzZXIuZ2lkLCAicG9saWN5IGdpZCA9IiwgcG9saWN5X3VzZXIuZ2lkKQogICAgI3BvbGljeV91c2VyLmdpZCAgICAgICAgICAgICAgICAgPT0gaW5wdXRfdXNlci5naWQKCiAgICAjIFRPRE86IGNvbXBhcmUgdGhlIGFkZGl0aW9uYWxHaWRzIGZpZWxkIHRvbyBhZnRlciBjb21wdXRpbmcgaXRzIHZhbHVlCiAgICAjIGJhc2VkIG9uIC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwIGZyb20gdGhlIGNvbnRhaW5lciBpbWFnZS4KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmFyZ3MgZmllbGQKCmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IG5vIHBvbGljeSBvciBpbnB1dCBhcmdzIikKCiAgICBub3QgcG9saWN5X3Byb2Nlc3MuYXJncwogICAgbm90IGlucHV0X3Byb2Nlc3MuYXJncwoKICAgIHByaW50KCJhbGxvd19hcmdzIDE6IHN1Y2Nlc3MiKQp9CmFsbG93X2FyZ3MocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MpIHsKICAgIHByaW50KCJhbGxvd19hcmdzIDI6IHBvbGljeSBhcmdzID0iLCBwb2xpY3lfcHJvY2Vzcy5hcmdzLCAiaW5wdXQgYXJncyA9IiwgaW5wdXRfcHJvY2Vzcy5hcmcpCgogICAgcG9saWN5X3Byb2Nlc3MuYXJncyA9PSBpbnB1dF9wcm9jZXNzLmFyZ3MKCiAgICBwcmludCgiYWxsb3dfYXJncyAyOiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9DSSBwcm9jZXNzLmVudiBmaWVsZAoKYWxsb3dfZW52KHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBzYW5kYm94X25hbWUpIHsKICAgIGV2ZXJ5IGVudl92YXIgaW4gaW5wdXRfcHJvY2Vzcy5lbnYgewogICAgICAgIHByaW50KCJhbGxvd19lbnYgPT4iLCBlbnZfdmFyKQogICAgICAgIGFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkKICAgIH0KCiAgICBwcmludCgiYWxsb3dfZW52OiBzdWNjZXNzIikKfQoKIyBBbGxvdyBpbnB1dCBlbnYgdmFyaWFibGVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHBvbGljeSBkYXRhIHRvby4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAxOiBzb21lIHBvbGljeV9lbnZfdmFyID09IGVudl92YXIiKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBwb2xpY3lfZW52X3ZhciA9PSBlbnZfdmFyCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTogc3VjY2VzcyIpCn0KCiMgQWxsb3cgIkhPU1ROQU1FPTxzYW5kYm94X25hbWU+Ii4KYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBIT1NUTkFNRSIpCiAgICBob3N0X25hbWVfZW52X3ZhciA6PSBjb25jYXQoIiIsIFsiSE9TVE5BTUU9Iiwgc2FuZGJveF9uYW1lXSkKCiAgICBwcmludChob3N0X25hbWVfZW52X3ZhciwgZW52X3ZhcikKICAgIGhvc3RfbmFtZV9lbnZfdmFyID09IGVudl92YXIKCiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAyOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBzZXJ2aWNlLXJlbGF0ZWQgZW52IHZhcmlhYmxlczoKCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BST1RPPXRjcCIKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciAzOiBLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9QUk9UTz10Y3AiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIG5hbWVfdmFsdWVbMV0gPT0gInRjcCIKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gNQogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiUFJPVE8iCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMzogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBwb3J0ID0gbmFtZV92YWx1ZVsxXQogICAgaXNfcG9ydChwb3J0KQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA1CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJQT1JUIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAyXSA9PSAiVENQIgogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAzXSA9PSBwb3J0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDQ6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlRfNDQzX1RDUF9BRERSPTEwLjAuMC4xIgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDU6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQX0FERFI9MTAuMC4wLjEiKQoKICAgIG5hbWVfdmFsdWUgOj0gc3BsaXQoZW52X3ZhciwgIj0iKQogICAgY291bnQobmFtZV92YWx1ZSkgPT0gMgoKICAgIGlzX2lwKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDUKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIkFERFIiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJUQ1AiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDRdID09ICJQT1JUIgogICAgcG9ydCA6PSBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdCiAgICBpc19wb3J0KHBvcnQpCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9IT1NUPTEwLjAuMC4xIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA2OiBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVD0xMC4wLjAuMSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfaXAobmFtZV92YWx1ZVsxXSkKCiAgICBuYW1lX2NvbXBvbmVudHMgPSBzcGxpdChuYW1lX3ZhbHVlWzBdLCAiXyIpCiAgICBjb21wb25lbnRzX2NvdW50IDo9IGNvdW50KG5hbWVfY29tcG9uZW50cykKICAgIGNvbXBvbmVudHNfY291bnQgPj0gMwogICAgbmFtZV9jb21wb25lbnRzW2NvbXBvbmVudHNfY291bnQgLSAxXSA9PSAiSE9TVCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlNFUlZJQ0UiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNjogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfU0VSVklDRV9QT1JUPTQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgNzogS1VCRVJORVRFU19TRVJWSUNFX1BPUlQ9NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc19wb3J0KG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDMKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDJdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDc6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1NFUlZJQ0VfUE9SVF9IVFRQUz00NDMiLAphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IEtVQkVSTkVURVNfU0VSVklDRV9QT1JUX0hUVFBTPTQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgaXNfcG9ydChuYW1lX3ZhbHVlWzFdKQoKICAgIG5hbWVfY29tcG9uZW50cyA9IHNwbGl0KG5hbWVfdmFsdWVbMF0sICJfIikKICAgIGNvbXBvbmVudHNfY291bnQgOj0gY291bnQobmFtZV9jb21wb25lbnRzKQogICAgY29tcG9uZW50c19jb3VudCA+PSA0CiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDFdID09ICJIVFRQUyIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0gPT0gIlBPUlQiCiAgICBuYW1lX2NvbXBvbmVudHNbY29tcG9uZW50c19jb3VudCAtIDNdID09ICJTRVJWSUNFIgoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDg6IHN1Y2Nlc3MiKQp9CgojICJLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIiwKYWxsb3dfZW52X3Zhcihwb2xpY3lfcHJvY2VzcywgaW5wdXRfcHJvY2VzcywgZW52X3Zhciwgc2FuZGJveF9uYW1lKSB7CiAgICBwcmludCgiYWxsb3dfZW52X3ZhciA5OiBLVUJFUk5FVEVTX1BPUlQ9dGNwOi8vMTAuMC4wLjE6NDQzIikKCiAgICBuYW1lX3ZhbHVlIDo9IHNwbGl0KGVudl92YXIsICI9IikKICAgIGNvdW50KG5hbWVfdmFsdWUpID09IDIKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlBPUlQiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgOTogc3VjY2VzcyIpCn0KCiMgIktVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIsCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IEtVQkVSTkVURVNfUE9SVF80NDNfVENQPXRjcDovLzEwLjAuMC4xOjQ0MyIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCgogICAgbmFtZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVswXSwgIl8iKQogICAgY29tcG9uZW50c19jb3VudCA6PSBjb3VudChuYW1lX2NvbXBvbmVudHMpCiAgICBjb21wb25lbnRzX2NvdW50ID49IDQKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMV0gPT0gIlRDUCIKICAgIG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gM10gPT0gIlBPUlQiCiAgICBwb3J0IDo9IG5hbWVfY29tcG9uZW50c1tjb21wb25lbnRzX2NvdW50IC0gMl0KICAgIGlzX3BvcnQocG9ydCkKCiAgICBpc190Y3BfdXJpKG5hbWVfdmFsdWVbMV0pCiAgICB2YWx1ZV9jb21wb25lbnRzID0gc3BsaXQobmFtZV92YWx1ZVsxXSwgIjoiKQogICAgY291bnQodmFsdWVfY29tcG9uZW50cykgPT0gMwogICAgdmFsdWVfY29tcG9uZW50c1syXSA9PSBwb3J0CgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTA6IHN1Y2Nlc3MiKQp9CgojIEFsbG93IGZpZWxkUmVmICJmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIgdmFsdWVzLgphbGxvd19lbnZfdmFyKHBvbGljeV9wcm9jZXNzLCBpbnB1dF9wcm9jZXNzLCBlbnZfdmFyLCBzYW5kYm94X25hbWUpIHsKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBmaWVsZFBhdGg6IHN0YXR1cy5wb2RJUCIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICBpc19pcChuYW1lX3ZhbHVlWzFdKQoKICAgIHNvbWUgcG9saWN5X2Vudl92YXIgaW4gcG9saWN5X3Byb2Nlc3MuZW52CiAgICBhbGxvd19wb2RfaXBfdmFyKG5hbWVfdmFsdWVbMF0sIHBvbGljeV9lbnZfdmFyKQoKICAgIHByaW50KCJhbGxvd19lbnZfdmFyIDExOiBzdWNjZXNzIikKfQoKIyBBbGxvdyBmaWVsZFJlZiAiZmllbGRQYXRoOiBzcGVjLm5vZGVOYW1lIiB2YWx1ZXMuCmFsbG93X2Vudl92YXIocG9saWN5X3Byb2Nlc3MsIGlucHV0X3Byb2Nlc3MsIGVudl92YXIsIHNhbmRib3hfbmFtZSkgewogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IGZpZWxkUGF0aDogc3BlYy5ub2RlTmFtZSIpCgogICAgbmFtZV92YWx1ZSA6PSBzcGxpdChlbnZfdmFyLCAiPSIpCiAgICBjb3VudChuYW1lX3ZhbHVlKSA9PSAyCiAgICAjIFRPRE86IGNoZWNrIHRoYXQgbmFtZV92YWx1ZVsxXSBsb29rcyBsaWtlIGEgaG9zdG5hbWUuCgogICAgc29tZSBwb2xpY3lfZW52X3ZhciBpbiBwb2xpY3lfcHJvY2Vzcy5lbnYKICAgIHBvbGljeV9uYW1lX3ZhbHVlIDo9IHNwbGl0KHBvbGljeV9lbnZfdmFyLCAiPSIpCiAgICBjb3VudChwb2xpY3lfbmFtZV92YWx1ZSkgPT0gMgoKICAgIHBvbGljeV9uYW1lX3ZhbHVlWzBdID09IG5hbWVfdmFsdWVbMF0KICAgIHBvbGljeV9uYW1lX3ZhbHVlWzFdID09ICIkKG5vZGUtbmFtZSkiCgogICAgcHJpbnQoImFsbG93X2Vudl92YXIgMTI6IHN1Y2Nlc3MiKQp9CgphbGxvd19wb2RfaXBfdmFyKHZhcl9uYW1lLCBwb2xpY3lfZW52X3ZhcikgewogICAgcHJpbnQoImFsbG93X3BvZF9pcF92YXI6IHZhcl9uYW1lID0iLCB2YXJfbmFtZSwgInBvbGljeV9lbnZfdmFyID0iLCBwb2xpY3lfZW52X3ZhcikKCiAgICBwb2xpY3lfbmFtZV92YWx1ZSA6PSBzcGxpdChwb2xpY3lfZW52X3ZhciwgIj0iKQogICAgY291bnQocG9saWN5X25hbWVfdmFsdWUpID09IDIKCiAgICBwb2xpY3lfbmFtZV92YWx1ZVswXSA9PSB2YXJfbmFtZQogICAgcG9saWN5X25hbWVfdmFsdWVbMV0gPT0gIiQocG9kLWlwKSIKCiAgICBwcmludCgiYWxsb3dfcG9kX2lwX3Zhcjogc3VjY2VzcyIpCn0KCmlzX2lwKHZhbHVlKSB7CiAgICBieXRlcyA9IHNwbGl0KHZhbHVlLCAiLiIpCiAgICBjb3VudChieXRlcykgPT0gNAoKICAgIGlzX2lwX2ZpcnN0X2J5dGUoYnl0ZXNbMF0pCiAgICBpc19pcF9vdGhlcl9ieXRlKGJ5dGVzWzFdKQogICAgaXNfaXBfb3RoZXJfYnl0ZShieXRlc1syXSkKICAgIGlzX2lwX290aGVyX2J5dGUoYnl0ZXNbM10pCn0KaXNfaXBfZmlyc3RfYnl0ZShjb21wb25lbnQpIHsKICAgIG51bWJlciA9IHRvX251bWJlcihjb21wb25lbnQpCiAgICBudW1iZXIgPj0gMQogICAgbnVtYmVyIDw9IDI1NQp9CmlzX2lwX290aGVyX2J5dGUoY29tcG9uZW50KSB7CiAgICBudW1iZXIgPSB0b19udW1iZXIoY29tcG9uZW50KQogICAgbnVtYmVyID49IDAKICAgIG51bWJlciA8PSAyNTUKfQoKaXNfcG9ydCh2YWx1ZSkgewogICAgbnVtYmVyID0gdG9fbnVtYmVyKHZhbHVlKQogICAgbnVtYmVyID49IDEKICAgIG51bWJlciA8PSA2NTYzNQp9CgojIEUuZy4sICJ0Y3A6Ly8xMC4wLjAuMTo0NDMiCmlzX3RjcF91cmkodmFsdWUpIHsKICAgIGNvbXBvbmVudHMgPSBzcGxpdCh2YWx1ZSwgIi8vIikKICAgIGNvdW50KGNvbXBvbmVudHMpID09IDIKICAgIGNvbXBvbmVudHNbMF0gPT0gInRjcDoiCgogICAgaXBfYW5kX3BvcnQgPSBzcGxpdChjb21wb25lbnRzWzFdLCAiOiIpCiAgICBjb3VudChpcF9hbmRfcG9ydCkgPT0gMgogICAgaXNfaXAoaXBfYW5kX3BvcnRbMF0pCiAgICBpc19wb3J0KGlwX2FuZF9wb3J0WzFdKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT0NJIHJvb3QucGF0aAoKYWxsb3dfcm9vdF9wYXRoKHBvbGljeV9vY2ksIGlucHV0X29jaSwgYnVuZGxlX2lkKSB7CiAgICBwb2xpY3lfcGF0aCA6PSByZXBsYWNlKHBvbGljeV9vY2kucm9vdC5wYXRoLCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcG9saWN5X3BhdGggPT0gaW5wdXRfb2NpLnJvb3QucGF0aAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbW91bnRzCgphbGxvd19tb3VudChwb2xpY3lfb2NpLCBpbnB1dF9tb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnQ6IGlucHV0X21vdW50LmRlc3RpbmF0aW9uID0iLCBpbnB1dF9tb3VudC5kZXN0aW5hdGlvbikKCiAgICBzb21lIHBvbGljeV9tb3VudCBpbiBwb2xpY3lfb2NpLm1vdW50cwogICAgcG9saWN5X21vdW50X2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgIyBUT0RPOiBhcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIHBvbGljeSBjaGVja3MgZm9yIG1vdW50cyAtIGUuZy4sCiAgICAjICAgICAgIG11bHRpcGxlIG1vdW50cyB3aXRoIHNhbWUgc291cmNlIG9yIGRlc3RpbmF0aW9uPwp9Cgpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMTogcG9saWN5X21vdW50ID0iLCBwb2xpY3lfbW91bnQpCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAxOiBpbnB1dF9tb3VudCA9IiwgaW5wdXRfbW91bnQpCgogICAgcG9saWN5X21vdW50ID09IGlucHV0X21vdW50CgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMSBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogaW5wdXRfbW91bnQuZGVzdGluYXRpb24gPSIsIGlucHV0X21vdW50LmRlc3RpbmF0aW9uLCAicG9saWN5X21vdW50LmRlc3RpbmF0aW9uID0iLCBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24pCiAgICBwb2xpY3lfbW91bnQuZGVzdGluYXRpb24gICAgPT0gaW5wdXRfbW91bnQuZGVzdGluYXRpb24KCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCB0eXBlID0iLCBpbnB1dF9tb3VudC50eXBlLCAicG9saWN5IHR5cGUgPSIsIHBvbGljeV9tb3VudC50eXBlKQogICAgcG9saWN5X21vdW50LnR5cGUgICAgICAgICAgID09IGlucHV0X21vdW50LnR5cGUKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBpbnB1dCBvcHRpb25zID0iLCBpbnB1dF9tb3VudC5vcHRpb25zKQogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogcG9saWN5IG9wdGlvbnMgPSIsIHBvbGljeV9tb3VudC5vcHRpb25zKQogICAgcG9saWN5X21vdW50Lm9wdGlvbnMgICAgICAgID09IGlucHV0X21vdW50Lm9wdGlvbnMKCiAgICBwcmludCgicG9saWN5X21vdW50X2FsbG93cyAyOiBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyIpCiAgICBwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9hbGxvd3MgMjogc3VjY2VzcyIpCn0KCnBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzKHBvbGljeV9tb3VudCwgaW5wdXRfbW91bnQsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgIyBFLmcuLCAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICBwb2xpY3lfc291cmNlX3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X21vdW50LnNvdXJjZSwgIiQoYnVuZGxlLWlkKSIsIGJ1bmRsZV9pZCkKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBwb2xpY3lfc291cmNlX3JlZ2V4ID0iLCBwb2xpY3lfc291cmNlX3JlZ2V4KQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBpbnB1dF9tb3VudC5zb3VyY2U9IiwgaW5wdXRfbW91bnQuc291cmNlKQogICAgcmVnZXgubWF0Y2gocG9saWN5X3NvdXJjZV9yZWdleCwgaW5wdXRfbW91bnQuc291cmNlKQoKICAgIHByaW50KCJwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyAxOiBzdWNjZXNzIikKfQpwb2xpY3lfbW91bnRfc291cmNlX2FsbG93cyhwb2xpY3lfbW91bnQsIGlucHV0X21vdW50LCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgICMgRS5nLiwgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChzYW5kYm94LWlkKS9yb290ZnMvbG9jYWwvZGF0YSQiLAogICAgcG9saWN5X3NvdXJjZV9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9tb3VudC5zb3VyY2UsICIkKHNhbmRib3gtaWQpIiwgc2FuZGJveF9pZCkKCiAgICBwcmludCgicG9saWN5X21vdW50X3NvdXJjZV9hbGxvd3MgMjogcG9saWN5X3NvdXJjZV9yZWdleCA9IiwgcG9saWN5X3NvdXJjZV9yZWdleCwgImlucHV0X21vdW50LnNvdXJjZT0iLCBpbnB1dF9tb3VudC5zb3VyY2UpCiAgICByZWdleC5tYXRjaChwb2xpY3lfc291cmNlX3JlZ2V4LCBpbnB1dF9tb3VudC5zb3VyY2UpCgogICAgcHJpbnQoInBvbGljeV9tb3VudF9zb3VyY2VfYWxsb3dzIDI6IHN1Y2Nlc3MiKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU3RvcmFnZXMKCmFsbG93X3N0b3JhZ2VzKHBvbGljeV9zdG9yYWdlcywgaW5wdXRfc3RvcmFnZXMsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X2NvdW50IDo9IGNvdW50KHBvbGljeV9zdG9yYWdlcykKICAgIGlucHV0X2NvdW50IDo9IGNvdW50KGlucHV0X3N0b3JhZ2VzKQogICAgcHJpbnQoImFsbG93X3N0b3JhZ2VzOiBwb2xpY3lfY291bnQgPSIsIHBvbGljeV9jb3VudCwgImlucHV0X2NvdW50ID0iLCBpbnB1dF9jb3VudCkKICAgIHBvbGljeV9jb3VudCA9PSBpbnB1dF9jb3VudAoKICAgIHNvbWUgaSwgaW5wdXRfc3RvcmFnZSBpbiBpbnB1dF9zdG9yYWdlcwogICAgYWxsb3dfaW5wdXRfc3RvcmFnZShpLCBpbnB1dF9zdG9yYWdlLCBwb2xpY3lfc3RvcmFnZXMsIHBvbGljeV9jb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgIHByaW50KCJhbGxvd19zdG9yYWdlczogc3VjY2VzcyIpCn0KCmFsbG93X2lucHV0X3N0b3JhZ2UoaSwgaW5wdXRfc3RvcmFnZSwgcG9saWN5X3N0b3JhZ2VzLCBjb3VudCwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgImlucHV0X3N0b3JhZ2UgPSIsIGlucHV0X3N0b3JhZ2UpCgogICAgcG9saWN5X3N0b3JhZ2UgOj0gcG9saWN5X3N0b3JhZ2VzW2ldCiAgICBwcmludCgiYWxsb3dfaW5wdXRfc3RvcmFnZTogaSA9IiwgaSwgInBvbGljeV9zdG9yYWdlID0iLCBwb2xpY3lfc3RvcmFnZSkKCiAgICBzdG9yYWdlc19tYXRjaChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKQoKICAgICMgU3RvcCB3aGVuIHJlYWNoaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHN0b3JhZ2VzIGFycmF5LgogICAgaSA9PSBjb3VudCAtIDEKfQoKc3RvcmFnZXNfbWF0Y2gocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyICAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcgogICAgcG9saWN5X3N0b3JhZ2UuZHJpdmVyX29wdGlvbnMgICA9PSBpbnB1dF9zdG9yYWdlLmRyaXZlcl9vcHRpb25zCiAgICBwb2xpY3lfc3RvcmFnZS5vcHRpb25zICAgICAgICAgID09IGlucHV0X3N0b3JhZ2Uub3B0aW9ucwogICAgcG9saWN5X3N0b3JhZ2UuZnNfZ3JvdXAgICAgICAgICA9PSBpbnB1dF9zdG9yYWdlLmZzX2dyb3VwCgogICAgYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkKCiAgICAjIFRPRE86IHZhbGlkYXRlIHRoZSBzb3VyY2UgZmllbGQgdG9vLgoKICAgIHByaW50KCJzdG9yYWdlc19tYXRjaDogc3VjY2VzcyIpCn0KCmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBmc3R5cGUgPT0gdGFyIikKICAgIHBvbGljeV9zdG9yYWdlLmZzdHlwZSA9PSAidGFyIgoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAxOiBwb2xpY3lfc3RvcmFnZS5tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50IikKICAgIHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50ID09IGlucHV0X3N0b3JhZ2UubW91bnRfcG9pbnQKCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMTogc3VjY2VzcyIpCn0KYWxsb3dfbW91bnRfcG9pbnQocG9saWN5X3N0b3JhZ2UsIGlucHV0X3N0b3JhZ2UsIGJ1bmRsZV9pZCwgc2FuZGJveF9pZCkgewogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IGZzdHlwZSA9PSB0YXItb3ZlcmxheSIpCiAgICBwb2xpY3lfc3RvcmFnZS5mc3R5cGUgPT0gInRhci1vdmVybGF5IgoKICAgIHBvbGljeV9tb3VudF9wb2ludCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChidW5kbGUtaWQpIiwgYnVuZGxlX2lkKQogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHBvbGljeV9tb3VudF9wb2ludCA9IiwgcG9saWN5X21vdW50X3BvaW50KQoKICAgIHBvbGljeV9tb3VudF9wb2ludCA9PSBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50CgogICAgcHJpbnQoImFsbG93X21vdW50X3BvaW50IDI6IHN1Y2Nlc3MiKQp9CmFsbG93X21vdW50X3BvaW50KHBvbGljeV9zdG9yYWdlLCBpbnB1dF9zdG9yYWdlLCBidW5kbGVfaWQsIHNhbmRib3hfaWQpIHsKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBmc3R5cGUgPT0gbG9jYWwiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJsb2NhbCIKCiAgICBtb3VudF9wb2ludF9yZWdleCA6PSByZXBsYWNlKHBvbGljeV9zdG9yYWdlLm1vdW50X3BvaW50LCAiJChzYW5kYm94LWlkKSIsIHNhbmRib3hfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgMzogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCAzOiBzdWNjZXNzIikKfQphbGxvd19tb3VudF9wb2ludChwb2xpY3lfc3RvcmFnZSwgaW5wdXRfc3RvcmFnZSwgYnVuZGxlX2lkLCBzYW5kYm94X2lkKSB7CiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogZnN0eXBlID09IGJpbmQiKQogICAgcG9saWN5X3N0b3JhZ2UuZnN0eXBlID09ICJiaW5kIgoKICAgIG1vdW50X3BvaW50X3JlZ2V4IDo9IHJlcGxhY2UocG9saWN5X3N0b3JhZ2UubW91bnRfcG9pbnQsICIkKGJ1bmRsZS1pZCkiLCBidW5kbGVfaWQpCiAgICBwcmludCgiYWxsb3dfbW91bnRfcG9pbnQgNDogbW91bnRfcG9pbnRfcmVnZXggPSIsIG1vdW50X3BvaW50X3JlZ2V4KQoKICAgIHJlZ2V4Lm1hdGNoKG1vdW50X3BvaW50X3JlZ2V4LCBpbnB1dF9zdG9yYWdlLm1vdW50X3BvaW50KQoKICAgIHByaW50KCJhbGxvd19tb3VudF9wb2ludCA0OiBzdWNjZXNzIikKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpFeGVjUHJvY2Vzc1JlcXVlc3QgewogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgaW5wdXRfY29tbWFuZCA9IGNvbmNhdCgiICIsIGlucHV0LnByb2Nlc3MuYXJncykKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IGlucHV0X2NvbW1hbmQgPSIsIGlucHV0X2NvbW1hbmQpCgogICAgc29tZSBjb250YWluZXIgaW4gcG9saWN5X2RhdGEuY29udGFpbmVycwogICAgc29tZSBwb2xpY3lfY29tbWFuZCBpbiBjb250YWluZXIuZXhlY19jb21tYW5kcwogICAgcHJpbnQoIkV4ZWNQcm9jZXNzUmVxdWVzdDogcG9saWN5X2NvbW1hbmQgPSIsIHBvbGljeV9jb21tYW5kKQoKICAgICMgVE9ETzogc2hvdWxkIG90aGVyIGlucHV0IGRhdGEgZmllbGRzIGJlIHZhbGlkYXRlZCBhcyB3ZWxsPwogICAgcG9saWN5X2NvbW1hbmQgPT0gaW5wdXRfY29tbWFuZAoKICAgIHByaW50KCJFeGVjUHJvY2Vzc1JlcXVlc3Q6IHN1Y2Nlc3MiKQp9Cgpwb2xpY3lfZGF0YSA6PSB7CiAgImNvbnRhaW5lcnMiOiBbCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogNjU1MzUsCiAgICAgICAgICAgICJnaWQiOiA2NTUzNQogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAiL3BhdXNlIgogICAgICAgICAgXSwKICAgICAgICAgICJlbnYiOiBbCiAgICAgICAgICAgICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyb290IjogewogICAgICAgICAgInBhdGgiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpIiwKICAgICAgICAgICJyZWFkb25seSI6IHRydWUKICAgICAgICB9LAogICAgICAgICJob3N0bmFtZSI6ICJecG9kLXNlY3JldHMtOTE4YTMzNzAtYWQxOS00NmIyLWEyZTYtYTRlMzkzZjJlZTJiJCIsCiAgICAgICAgIm1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9wcm9jIiwKICAgICAgICAgICAgInR5cGUiOiAicHJvYyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAicHJvYyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYiLAogICAgICAgICAgICAidHlwZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAidG1wZnMiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAic3RyaWN0YXRpbWUiLAogICAgICAgICAgICAgICJtb2RlPTc1NSIsCiAgICAgICAgICAgICAgInNpemU9NjU1MzZrIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9wdHMiLAogICAgICAgICAgICAidHlwZSI6ICJkZXZwdHMiLAogICAgICAgICAgICAic291cmNlIjogImRldnB0cyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJuZXdpbnN0YW5jZSIsCiAgICAgICAgICAgICAgInB0bXhtb2RlPTA2NjYiLAogICAgICAgICAgICAgICJtb2RlPTA2MjAiLAogICAgICAgICAgICAgICJnaWQ9NSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvc2htIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9zaG0iLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L21xdWV1ZSIsCiAgICAgICAgICAgICJ0eXBlIjogIm1xdWV1ZSIsCiAgICAgICAgICAgICJzb3VyY2UiOiAibXF1ZXVlIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3N5cyIsCiAgICAgICAgICAgICJ0eXBlIjogInN5c2ZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJzeXNmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJub2V4ZWMiLAogICAgICAgICAgICAgICJub2RldiIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJvIiwKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9kZXYiLAogICAgICAgICAgICAgICJub2V4ZWMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmJ1bmRsZV9wYXRoIjogIi9ydW4vY29udGFpbmVyZC9pby5jb250YWluZXJkLnJ1bnRpbWUudjIudGFzay9rOHMuaW8vJChidW5kbGUtaWQpIiwKICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5wa2cub2NpLmNvbnRhaW5lcl90eXBlIjogInBvZF9zYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJzYW5kYm94IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWxvZy1kaXJlY3RvcnkiOiAiXi92YXIvbG9nL3BvZHMvJChzYW5kYm94LW5hbWVzcGFjZSlfJChzYW5kYm94LW5hbWUpX1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZSI6ICJwb2Qtc2VjcmV0cy05MThhMzM3MC1hZDE5LTQ2YjItYTJlNi1hNGUzOTNmMmVlMmIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLnNhbmRib3gtbmFtZXNwYWNlIjogInNlY3JldHMtNzE1NyIsCiAgICAgICAgICAibmVyZGN0bC9uZXR3b3JrLW5hbWVzcGFjZSI6ICJeL3Zhci9ydW4vbmV0bnMvY25pLVswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQiCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2Mva2NvcmUiLAogICAgICAgICAgICAiL3Byb2Mva2V5cyIsCiAgICAgICAgICAgICIvcHJvYy9sYXRlbmN5X3N0YXRzIiwKICAgICAgICAgICAgIi9wcm9jL3RpbWVyX2xpc3QiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2Mvc2NoZWRfZGVidWciLAogICAgICAgICAgICAiL3N5cy9maXJtd2FyZSIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIgogICAgICAgICAgXSwKICAgICAgICAgICJyZWFkb25seVBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTgxNzI1MGYxYTNlMzM2ZGE3NmY1YmQzZmE3ODRlMWIyNmQ5NTliOWMxMzE4NzY4MTViYTI2MDQwNDhiNzBjMTgiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzVhNWFhZDgwMDU1ZmYyMDAxMmE1MGRjMjVmOGRmN2EyOTkyNDQ3NDMyNGQ2NWY3ZDUzMDZlZThlZTI3ZmY3MWQiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAib3ZlcmxheWZzIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXItb3ZlcmxheSIsCiAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllci1zcmMtcHJlZml4PS92YXIvbGliL2NvbnRhaW5lcmQvaW8uY29udGFpbmVyZC5zbmFwc2hvdHRlci52MS50YXJkZXYvbGF5ZXJzIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9ODE3MjUwZjFhM2UzMzZkYTc2ZjViZDNmYTc4NGUxYjI2ZDk1OWI5YzEzMTg3NjgxNWJhMjYwNDA0OGI3MGMxOCIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj01YTVhYWQ4MDA1NWZmMjAwMTJhNTBkYzI1ZjhkZjdhMjk5MjQ0NzQzMjRkNjVmN2Q1MzA2ZWU4ZWUyN2ZmNzFkIgogICAgICAgICAgXSwKICAgICAgICAgICJtb3VudF9wb2ludCI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0sCiAgICAgICJleGVjX2NvbW1hbmRzIjogW10KICAgIH0sCiAgICB7CiAgICAgICJvY2kiOiB7CiAgICAgICAgIm9jaVZlcnNpb24iOiAiMS4xLjAtcmMuMSIsCiAgICAgICAgInByb2Nlc3MiOiB7CiAgICAgICAgICAidGVybWluYWwiOiBmYWxzZSwKICAgICAgICAgICJ1c2VyIjogewogICAgICAgICAgICAidWlkIjogMCwKICAgICAgICAgICAgImdpZCI6IDAKICAgICAgICAgIH0sCiAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgIi9iaW4vc2giCiAgICAgICAgICBdLAogICAgICAgICAgImVudiI6IFsKICAgICAgICAgICAgIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKICAgICAgICAgICAgIkhPU1ROQU1FPXBvZC1zZWNyZXRzLTkxOGEzMzcwLWFkMTktNDZiMi1hMmU2LWE0ZTM5M2YyZWUyYiIKICAgICAgICAgIF0sCiAgICAgICAgICAiY3dkIjogIi8iLAogICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgImJvdW5kaW5nIjogWwogICAgICAgICAgICAgICJDQVBfQ0hPV04iLAogICAgICAgICAgICAgICJDQVBfREFDX09WRVJSSURFIiwKICAgICAgICAgICAgICAiQ0FQX0ZTRVRJRCIsCiAgICAgICAgICAgICAgIkNBUF9GT1dORVIiLAogICAgICAgICAgICAgICJDQVBfTUtOT0QiLAogICAgICAgICAgICAgICJDQVBfTkVUX1JBVyIsCiAgICAgICAgICAgICAgIkNBUF9TRVRHSUQiLAogICAgICAgICAgICAgICJDQVBfU0VUVUlEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEZDQVAiLAogICAgICAgICAgICAgICJDQVBfU0VUUENBUCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfQklORF9TRVJWSUNFIiwKICAgICAgICAgICAgICAiQ0FQX1NZU19DSFJPT1QiLAogICAgICAgICAgICAgICJDQVBfS0lMTCIsCiAgICAgICAgICAgICAgIkNBUF9BVURJVF9XUklURSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImVmZmVjdGl2ZSI6IFsKICAgICAgICAgICAgICAiQ0FQX0NIT1dOIiwKICAgICAgICAgICAgICAiQ0FQX0RBQ19PVkVSUklERSIsCiAgICAgICAgICAgICAgIkNBUF9GU0VUSUQiLAogICAgICAgICAgICAgICJDQVBfRk9XTkVSIiwKICAgICAgICAgICAgICAiQ0FQX01LTk9EIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9SQVciLAogICAgICAgICAgICAgICJDQVBfU0VUR0lEIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFVJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRGQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX1NFVFBDQVAiLAogICAgICAgICAgICAgICJDQVBfTkVUX0JJTkRfU0VSVklDRSIsCiAgICAgICAgICAgICAgIkNBUF9TWVNfQ0hST09UIiwKICAgICAgICAgICAgICAiQ0FQX0tJTEwiLAogICAgICAgICAgICAgICJDQVBfQVVESVRfV1JJVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbCiAgICAgICAgICAgICAgIkNBUF9DSE9XTiIsCiAgICAgICAgICAgICAgIkNBUF9EQUNfT1ZFUlJJREUiLAogICAgICAgICAgICAgICJDQVBfRlNFVElEIiwKICAgICAgICAgICAgICAiQ0FQX0ZPV05FUiIsCiAgICAgICAgICAgICAgIkNBUF9NS05PRCIsCiAgICAgICAgICAgICAgIkNBUF9ORVRfUkFXIiwKICAgICAgICAgICAgICAiQ0FQX1NFVEdJRCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRVSUQiLAogICAgICAgICAgICAgICJDQVBfU0VURkNBUCIsCiAgICAgICAgICAgICAgIkNBUF9TRVRQQ0FQIiwKICAgICAgICAgICAgICAiQ0FQX05FVF9CSU5EX1NFUlZJQ0UiLAogICAgICAgICAgICAgICJDQVBfU1lTX0NIUk9PVCIsCiAgICAgICAgICAgICAgIkNBUF9LSUxMIiwKICAgICAgICAgICAgICAiQ0FQX0FVRElUX1dSSVRFIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgIm5vTmV3UHJpdmlsZWdlcyI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAicm9vdCI6IHsKICAgICAgICAgICJwYXRoIjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAicmVhZG9ubHkiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImhvc3RuYW1lIjogIl5wb2Qtc2VjcmV0cy05MThhMzM3MC1hZDE5LTQ2YjItYTJlNi1hNGUzOTNmMmVlMmIkIiwKICAgICAgICAibW91bnRzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL3Byb2MiLAogICAgICAgICAgICAidHlwZSI6ICJwcm9jIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJwcm9jIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2RldiIsCiAgICAgICAgICAgICJ0eXBlIjogInRtcGZzIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJ0bXBmcyIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJub3N1aWQiLAogICAgICAgICAgICAgICJzdHJpY3RhdGltZSIsCiAgICAgICAgICAgICAgIm1vZGU9NzU1IiwKICAgICAgICAgICAgICAic2l6ZT02NTUzNmsiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvZGV2L3B0cyIsCiAgICAgICAgICAgICJ0eXBlIjogImRldnB0cyIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiZGV2cHRzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5ld2luc3RhbmNlIiwKICAgICAgICAgICAgICAicHRteG1vZGU9MDY2NiIsCiAgICAgICAgICAgICAgIm1vZGU9MDYyMCIsCiAgICAgICAgICAgICAgImdpZD01IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi9zaG0iLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICIvcnVuL2thdGEtY29udGFpbmVycy9zYW5kYm94L3NobSIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9kZXYvbXF1ZXVlIiwKICAgICAgICAgICAgInR5cGUiOiAibXF1ZXVlIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJtcXVldWUiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAibm9zdWlkIiwKICAgICAgICAgICAgICAibm9leGVjIiwKICAgICAgICAgICAgICAibm9kZXYiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzIiwKICAgICAgICAgICAgInR5cGUiOiAic3lzZnMiLAogICAgICAgICAgICAic291cmNlIjogInN5c2ZzIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicm8iCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvc3lzL2ZzL2Nncm91cCIsCiAgICAgICAgICAgICJ0eXBlIjogImNncm91cCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiY2dyb3VwIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgIm5vc3VpZCIsCiAgICAgICAgICAgICAgIm5vZXhlYyIsCiAgICAgICAgICAgICAgIm5vZGV2IiwKICAgICAgICAgICAgICAicmVsYXRpbWUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdHMiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0cyQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS10ZXJtaW5hdGlvbi1sb2ckIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJydyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc3RpbmF0aW9uIjogIi9ldGMvaG9zdG5hbWUiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1ob3N0bmFtZSQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJ3IgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAgICAgICAgICJ0eXBlIjogImJpbmQiLAogICAgICAgICAgICAic291cmNlIjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXJlc29sdi5jb25mJCIsCiAgICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAgICJyYmluZCIsCiAgICAgICAgICAgICAgInJwcml2YXRlIiwKICAgICAgICAgICAgICAicnciCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXN0aW5hdGlvbiI6ICIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQiLAogICAgICAgICAgICAidHlwZSI6ICJiaW5kIiwKICAgICAgICAgICAgInNvdXJjZSI6ICJeL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2hhcmVkL2NvbnRhaW5lcnMvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZXJ2aWNlYWNjb3VudCQiLAogICAgICAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAgICJycHJpdmF0ZSIsCiAgICAgICAgICAgICAgInJvIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzdGluYXRpb24iOiAiL2V0Yy9zZWNyZXQtdm9sdW1lIiwKICAgICAgICAgICAgInR5cGUiOiAiYmluZCIsCiAgICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzL3dhdGNoYWJsZS8kKGJ1bmRsZS1pZCktW2EtejAtOV17MTZ9LXNlY3JldC12b2x1bWUkIiwKICAgICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICAgInJiaW5kIiwKICAgICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAgICJybyIKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuYnVuZGxlX3BhdGgiOiAiL3J1bi9jb250YWluZXJkL2lvLmNvbnRhaW5lcmQucnVudGltZS52Mi50YXNrL2s4cy5pby8kKGJ1bmRsZS1pZCkiLAogICAgICAgICAgImlvLmthdGFjb250YWluZXJzLnBrZy5vY2kuY29udGFpbmVyX3R5cGUiOiAicG9kX2NvbnRhaW5lciIsCiAgICAgICAgICAiaW8ua3ViZXJuZXRlcy5jcmkuY29udGFpbmVyLW5hbWUiOiAic2VjcmV0LXZvbHVtZS10ZXN0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5jb250YWluZXItdHlwZSI6ICJjb250YWluZXIiLAogICAgICAgICAgImlvLmt1YmVybmV0ZXMuY3JpLmltYWdlLW5hbWUiOiAibWNyLm1pY3Jvc29mdC5jb20vYWtzL2UyZS9saWJyYXJ5LWJ1c3lib3g6bWFzdGVyLjIyMDMxNC4xLWxpbnV4LWFtZDY0IiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LWlkIjogIl5bYS16MC05XXs2NH0kIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWUiOiAicG9kLXNlY3JldHMtOTE4YTMzNzAtYWQxOS00NmIyLWEyZTYtYTRlMzkzZjJlZTJiIiwKICAgICAgICAgICJpby5rdWJlcm5ldGVzLmNyaS5zYW5kYm94LW5hbWVzcGFjZSI6ICJzZWNyZXRzLTcxNTciCiAgICAgICAgfSwKICAgICAgICAibGludXgiOiB7CiAgICAgICAgICAibmFtZXNwYWNlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogImlwYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogInV0cyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0eXBlIjogIm1vdW50IgogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgIm1hc2tlZFBhdGhzIjogWwogICAgICAgICAgICAiL3Byb2MvYWNwaSIsCiAgICAgICAgICAgICIvcHJvYy9rY29yZSIsCiAgICAgICAgICAgICIvcHJvYy9rZXlzIiwKICAgICAgICAgICAgIi9wcm9jL2xhdGVuY3lfc3RhdHMiLAogICAgICAgICAgICAiL3Byb2MvdGltZXJfbGlzdCIsCiAgICAgICAgICAgICIvcHJvYy90aW1lcl9zdGF0cyIsCiAgICAgICAgICAgICIvcHJvYy9zY2hlZF9kZWJ1ZyIsCiAgICAgICAgICAgICIvcHJvYy9zY3NpIiwKICAgICAgICAgICAgIi9zeXMvZmlybXdhcmUiCiAgICAgICAgICBdLAogICAgICAgICAgInJlYWRvbmx5UGF0aHMiOiBbCiAgICAgICAgICAgICIvcHJvYy9hc291bmQiLAogICAgICAgICAgICAiL3Byb2MvYnVzIiwKICAgICAgICAgICAgIi9wcm9jL2ZzIiwKICAgICAgICAgICAgIi9wcm9jL2lycSIsCiAgICAgICAgICAgICIvcHJvYy9zeXMiLAogICAgICAgICAgICAiL3Byb2Mvc3lzcnEtdHJpZ2dlciIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0sCiAgICAgICJzdG9yYWdlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZHJpdmVyIjogImJsayIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiIiwKICAgICAgICAgICJmc3R5cGUiOiAidGFyIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicm8iLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmJsb2NrX2RldmljZT1maWxlIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5pcy1sYXllciIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQucm9vdC1oYXNoPTg1NjhjNzBjMGNjZmUwMDUxMDkyZTgxOGRhNzY5MTExYTU5ODgyY2QxOWRkNzk5ZDNiY2E1ZmZhODI3OTEwODAiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NhbmRib3gvbGF5ZXJzLzJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzkiLAogICAgICAgICAgImZzX2dyb3VwIjogewogICAgICAgICAgICAiZ3JvdXBfaWQiOiAwLAogICAgICAgICAgICAiZ3JvdXBfY2hhbmdlX3BvbGljeSI6IDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkcml2ZXIiOiAiYmxrIiwKICAgICAgICAgICJkcml2ZXJfb3B0aW9ucyI6IFtdLAogICAgICAgICAgInNvdXJjZSI6ICIiLAogICAgICAgICAgImZzdHlwZSI6ICJ0YXIiLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgICJybyIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIKICAgICAgICAgIF0sCiAgICAgICAgICAibW91bnRfcG9pbnQiOiAiL3J1bi9rYXRhLWNvbnRhaW5lcnMvc2FuZGJveC9sYXllcnMvMjU3MGUzYTE5ZTFiZjIwZGRkYTQ1NDk4YTk2MjdmNjE1NTVkMmQ2YzAxNDc5YjliNzY0NjBiNjc5YjI3ZDU1MiIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJvdmVybGF5ZnMiLAogICAgICAgICAgImRyaXZlcl9vcHRpb25zIjogW10sCiAgICAgICAgICAic291cmNlIjogIiIsCiAgICAgICAgICAiZnN0eXBlIjogInRhci1vdmVybGF5IiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyLXNyYy1wcmVmaXg9L3Zhci9saWIvY29udGFpbmVyZC9pby5jb250YWluZXJkLnNuYXBzaG90dGVyLnYxLnRhcmRldi9sYXllcnMiLAogICAgICAgICAgICAiaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmxheWVyPTJjMzQyYTEzN2U2OTNjNzg5OGFlYzM2ZGExMDQ3ZjE5MWRjN2MxNjg3ZTY2MTk4YWRhY2M0MzljZjRhZGYzNzksdGFyLHJvLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5ibG9ja19kZXZpY2U9ZmlsZSxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuaXMtbGF5ZXIsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LnJvb3QtaGFzaD04NTY4YzcwYzBjY2ZlMDA1MTA5MmU4MThkYTc2OTExMWE1OTg4MmNkMTlkZDc5OWQzYmNhNWZmYTgyNzkxMDgwIiwKICAgICAgICAgICAgImlvLmthdGFjb250YWluZXJzLmZzLW9wdC5sYXllcj0yNTcwZTNhMTllMWJmMjBkZGRhNDU0OThhOTYyN2Y2MTU1NWQyZDZjMDE0NzliOWI3NjQ2MGI2NzliMjdkNTUyLHRhcixybyxpby5rYXRhY29udGFpbmVycy5mcy1vcHQuYmxvY2tfZGV2aWNlPWZpbGUsaW8ua2F0YWNvbnRhaW5lcnMuZnMtb3B0LmlzLWxheWVyLGlvLmthdGFjb250YWluZXJzLmZzLW9wdC5yb290LWhhc2g9YjY0M2I2MjE3NzQ4OTgzODMwYjI2YWMxNGEzNWEzMzIyZGQ1MjhjMDA5NjNlYWFkZDkxZWY1NWY1MTNkYzczZiIsCiAgICAgICAgICAgICJpby5rYXRhY29udGFpbmVycy5mcy1vcHQub3ZlcmxheS1ydyIsCiAgICAgICAgICAgICJsb3dlcmRpcj0yYzM0MmExMzdlNjkzYzc4OThhZWMzNmRhMTA0N2YxOTFkYzdjMTY4N2U2NjE5OGFkYWNjNDM5Y2Y0YWRmMzc5OjI1NzBlM2ExOWUxYmYyMGRkZGE0NTQ5OGE5NjI3ZjYxNTU1ZDJkNmMwMTQ3OWI5Yjc2NDYwYjY3OWIyN2Q1NTIiCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKSIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRyaXZlciI6ICJ3YXRjaGFibGUtYmluZCIsCiAgICAgICAgICAiZHJpdmVyX29wdGlvbnMiOiBbXSwKICAgICAgICAgICJzb3VyY2UiOiAiXi9ydW4va2F0YS1jb250YWluZXJzL3NoYXJlZC9jb250YWluZXJzLyQoYnVuZGxlLWlkKS1bYS16MC05XXsxNn0tc2VjcmV0LXZvbHVtZSQiLAogICAgICAgICAgImZzdHlwZSI6ICJiaW5kIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICAicmJpbmQiLAogICAgICAgICAgICAicnByaXZhdGUiLAogICAgICAgICAgICAicm8iCiAgICAgICAgICBdLAogICAgICAgICAgIm1vdW50X3BvaW50IjogIl4vcnVuL2thdGEtY29udGFpbmVycy9zaGFyZWQvY29udGFpbmVycy93YXRjaGFibGUvJChidW5kbGUtaWQpLVthLXowLTldezE2fS1zZWNyZXQtdm9sdW1lJCIsCiAgICAgICAgICAiZnNfZ3JvdXAiOiB7CiAgICAgICAgICAgICJncm91cF9pZCI6IDAsCiAgICAgICAgICAgICJncm91cF9jaGFuZ2VfcG9saWN5IjogMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXSwKICAgICAgImV4ZWNfY29tbWFuZHMiOiBbXQogICAgfQogIF0KfQ== spec: containers: - args: diff --git a/src/tools/genpolicy/src/policy.rs b/src/tools/genpolicy/src/policy.rs index 49e2c792349e..e7d463d27c75 100644 --- a/src/tools/genpolicy/src/policy.rs +++ b/src/tools/genpolicy/src/policy.rs @@ -288,14 +288,12 @@ fn get_image_layer_storages( }); let mut fs_opt_layer = "io.katacontainers.fs-opt.layer=".to_string(); - fs_opt_layer += "/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers/"; fs_opt_layer += &layer_name; fs_opt_layer += ",tar,ro,io.katacontainers.fs-opt.block_device=file,io.katacontainers.fs-opt.is-layer,io.katacontainers.fs-opt.root-hash="; fs_opt_layer += &layer.verity_hash; overlay_storage.options.push(fs_opt_layer); - let lowerdir = "/run/kata-containers/sandbox/layers/".to_string() + &layer_name; - lowerdirs.push(lowerdir); + lowerdirs.push(layer_name); } new_storages.reverse(); @@ -304,12 +302,17 @@ fn get_image_layer_storages( } overlay_storage.options.reverse(); + overlay_storage.options.insert(0, + "io.katacontainers.fs-opt.layer-src-prefix=/var/lib/containerd/io.containerd.snapshotter.v1.tardev/layers".to_string() + ); overlay_storage .options .push("io.katacontainers.fs-opt.overlay-rw".to_string()); lowerdirs.reverse(); - overlay_storage.options.push("lowerdir=".to_string() + &lowerdirs.join(":")); + overlay_storage + .options + .push("lowerdir=".to_string() + &lowerdirs.join(":")); storages.push(overlay_storage); }