From 425fe29d476802f63262513319f1b68f7f39c497 Mon Sep 17 00:00:00 2001 From: John Kjell Date: Fri, 28 Jun 2024 13:06:35 -0700 Subject: [PATCH] Merge recent GHA and Witness updates into main (#8) Update to new version of Witness and GitHub action. Also enhances the policy. --------- Signed-off-by: John Kjell Co-authored-by: Mikhail Swift --- .github/workflows/pipeline.yml | 81 ++++++++++--------- .github/workflows/witness.yml | 80 ------------------- Dockerfile | 2 +- policy-signed.json | 2 +- policy.json | 141 ++++++++++++++++++++------------- policy.rego | 29 +++++++ 6 files changed, 161 insertions(+), 174 deletions(-) delete mode 100644 .github/workflows/witness.yml create mode 100644 policy.rego diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 6db3648..e523934 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -6,59 +6,68 @@ name: pipeline on: push: - branches: [ "main", "feat/witness-run-action" ] + branches: + - '*' pull_request: - branches: [ "main", "feat/witness-run-action" ] + branches: + - '*' jobs: fmt: - uses: ./.github/workflows/witness.yml + uses: testifysec/witness-run-action/.github/workflows/witness.yml@reusable-workflow with: pull_request: ${{ github.event_name == 'pull_request' }} step: fmt attestations: "git github environment" + archivista-server: "https://judge-api.aws-sandbox-staging.testifysec.dev" command: go fmt ./... vet: - uses: ./.github/workflows/witness.yml + uses: testifysec/witness-run-action/.github/workflows/witness.yml@reusable-workflow with: pull_request: ${{ github.event_name == 'pull_request' }} step: vet attestations: "git github environment" + archivista-server: "https://judge-api.aws-sandbox-staging.testifysec.dev" command: go vet ./... # --ignore DL3002 lint: - uses: ./.github/workflows/witness.yml + uses: testifysec/witness-run-action/.github/workflows/witness.yml@reusable-workflow with: pull_request: ${{ github.event_name == 'pull_request' }} step: lint + pre-command-attestations: "git github environment" attestations: "git github environment" + archivista-server: "https://judge-api.aws-sandbox-staging.testifysec.dev" pre-command: | curl -sSfL https://github.com/hadolint/hadolint/releases/download/v2.12.0/hadolint-Linux-x86_64 -o /usr/local/bin/hadolint && \ chmod +x /usr/local/bin/hadolint - command: hadolint -f sarif --ignore DL3002 Dockerfile > hadolint.sarif + command: hadolint -f sarif Dockerfile > hadolint.sarif artifact-upload-name: hadolint.sarif artifact-upload-path: hadolint.sarif unit-test: needs: [ fmt, vet, lint ] - uses: ./.github/workflows/witness.yml + uses: testifysec/witness-run-action/.github/workflows/witness.yml@reusable-workflow with: pull_request: ${{ github.event_name == 'pull_request' }} step: unit-test attestations: "git github environment" + archivista-server: "https://judge-api.aws-sandbox-staging.testifysec.dev" command: go test ./... -coverprofile cover.out artifact-upload-name: cover.out artifact-upload-path: cover.out sast: needs: [ fmt, vet, lint ] - uses: ./.github/workflows/witness.yml + uses: testifysec/witness-run-action/.github/workflows/witness.yml@reusable-workflow with: pull_request: ${{ github.event_name == 'pull_request' }} step: sast + pre-command-attestations: "git github environment" attestations: "git github environment" + archivista-server: "https://judge-api.aws-sandbox-staging.testifysec.dev" pre-command: python3 -m pip install semgrep==1.45.0 command: semgrep scan --config auto ./ --sarif -o semgrep.sarif artifact-upload-name: semgrep.sarif @@ -66,7 +75,7 @@ jobs: build: needs: [ unit-test, sast ] - uses: ./.github/workflows/witness.yml + uses: testifysec/witness-run-action/.github/workflows/witness.yml@reusable-workflow with: pull_request: ${{ github.event_name == 'pull_request' }} step: build @@ -107,10 +116,12 @@ jobs: use: true - name: Build Image - uses: testifysec/witness-run-action@2ae7f93c013ccf24b8ff52b4f042b32ca95ec7b8 # v0.1.5 + uses: testifysec/witness-run-action@reusable-workflow # v0.2.0 with: + version: 0.6.0 step: build-image - attestations: "git github environment" + attestations: "git github environment slsa" + archivista-server: "https://judge-api.aws-sandbox-staging.testifysec.dev" command: | /bin/sh -c "docker buildx build --platform linux/amd64,linux/arm64 -t ${{ steps.meta.outputs.tags }} --push ." outputs: @@ -118,11 +129,12 @@ jobs: save-image: needs: build-image - uses: ./.github/workflows/witness.yml + uses: testifysec/witness-run-action/.github/workflows/witness.yml@reusable-workflow with: pull_request: ${{ github.event_name == 'pull_request' }} - step: save-image - attestations: "git github environment oci" + step: save-image + attestations: "git github environment slsa oci" + archivista-server: "https://judge-api.aws-sandbox-staging.testifysec.dev" command: | docker pull ${{ needs.build-image.outputs.tags }} && docker save ${{ needs.build-image.outputs.tags }} -o image.tar artifact-upload-name: image.tar @@ -130,41 +142,30 @@ jobs: generate-sbom: needs: save-image - uses: ./.github/workflows/witness.yml + uses: testifysec/witness-run-action/.github/workflows/witness.yml@reusable-workflow with: pull_request: ${{ github.event_name == 'pull_request' }} step: generate-sbom - attestations: "git github environment" + pre-command-attestations: "git github environment" + attestations: "git github environment sbom" + archivista-server: "https://judge-api.aws-sandbox-staging.testifysec.dev" artifact-download: image.tar pre-command: | curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin command: | - syft packages docker-archive:/tmp/image.tar -o spdx-json --file syft.spdx.json - artifact-upload-name: syft.spdx.json - artifact-upload-path: syft.spdx.json - - cve-scan: - needs: save-image - uses: ./.github/workflows/witness.yml - with: - pull_request: ${{ github.event_name == 'pull_request' }} - step: cve-scan - attestations: "git github environment" - artifact-download: image.tar - pre-command: | - curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin - command: | - grype docker-archive:/tmp/image.tar -o sarif --file grype.sarif - artifact-upload-name: grype.sarif - artifact-upload-path: grype.sarif + syft packages docker-archive:/tmp/image.tar --source-name=pkg:oci/testifysec/swf -o cyclonedx-json --file sbom.cdx.json + artifact-upload-name: sbom.cdx.json + artifact-upload-path: sbom.cdx.json secret-scan: needs: save-image - uses: ./.github/workflows/witness.yml + uses: testifysec/witness-run-action/.github/workflows/witness.yml@reusable-workflow with: pull_request: ${{ github.event_name == 'pull_request' }} step: secret-scan + pre-command-attestations: "git github environment" attestations: "git github environment" + archivista-server: "https://judge-api.aws-sandbox-staging.testifysec.dev" artifact-download: image.tar pre-command: | curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin @@ -174,17 +175,19 @@ jobs: artifact-upload-path: trufflehog.json verify: - needs: [ generate-sbom, cve-scan, secret-scan] + needs: [ generate-sbom, secret-scan] if: ${{ github.event_name == 'push' }} - uses: ./.github/workflows/witness.yml + uses: testifysec/witness-run-action/.github/workflows/witness.yml@reusable-workflow with: pull_request: ${{ github.event_name == 'pull_request' }} step: verify + pre-command-attestations: "git github environment" attestations: "git github environment" + archivista-server: "https://judge-api.aws-sandbox-staging.testifysec.dev" artifact-download: image.tar pre-command: | - curl -sSfL https://github.com/in-toto/witness/releases/download/v0.1.14/witness_0.1.14_linux_amd64.tar.gz -o witness.tar.gz && \ + curl -sSfL https://github.com/in-toto/witness/releases/download/v0.6.0/witness_0.6.0_linux_amd64.tar.gz -o witness.tar.gz && \ tar -xzvf witness.tar.gz -C /usr/local/bin/ && rm ./witness.tar.gz command: | - witness verify -p policy-signed.json -k swfpublic.pem -f /tmp/image.tar --enable-archivista -l debug + witness verify -p policy-signed.json -k swfpublic.pem -f /tmp/image.tar --enable-archivista --archivista-server https://judge-api.aws-sandbox-staging.testifysec.dev -l debug diff --git a/.github/workflows/witness.yml b/.github/workflows/witness.yml deleted file mode 100644 index b08bff3..0000000 --- a/.github/workflows/witness.yml +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright 2023 The Archivista Contributors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -on: - workflow_call: - inputs: - pull_request: - required: true - type: boolean - artifact-download: - required: false - type: string - artifact-upload-name: - required: false - type: string - artifact-upload-path: - required: false - type: string - pre-command: - required: false - type: string - command: - required: true - type: string - step: - required: true - type: string - attestations: - required: true - type: string - -jobs: - witness: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 - with: - go-version: 1.21.x - - - if: ${{ inputs.artifact-download != '' }} - uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1 - with: - name: ${{ inputs.artifact-download }} - path: /tmp - - - if: ${{ inputs.pre-command != '' && inputs.pull_request == false }} - uses: testifysec/witness-run-action@2ae7f93c013ccf24b8ff52b4f042b32ca95ec7b8 # v0.1.5 - with: - step: pre-${{ inputs.step }} - attestations: ${{ inputs.attestations }} - command: /bin/sh -c "${{ inputs.pre-command }}" - - if: ${{ inputs.pre-command != '' && inputs.pull_request == true }} - run: ${{ inputs.pre-command }} - - - if: ${{ inputs.pull_request == false }} - uses: testifysec/witness-run-action@2ae7f93c013ccf24b8ff52b4f042b32ca95ec7b8 # v0.1.5 - with: - step: ${{ inputs.step }} - attestations: ${{ inputs.attestations }} - command: /bin/sh -c "${{ inputs.command }}" - - if: ${{ inputs.pull_request == true }} - run: ${{ inputs.command }} - - - if: ${{ inputs.artifact-upload-path != '' && inputs.artifact-upload-name != ''}} - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 - with: - name: ${{ inputs.artifact-upload-name }} - path: ${{ inputs.artifact-upload-path }} diff --git a/Dockerfile b/Dockerfile index 6c4c1a5..be2ec66 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,7 @@ RUN go build -o bin/software FROM cgr.dev/chainguard/static@sha256:676e989769aa9a5254fbfe14abb698804674b91c4d574bb33368d87930c5c472 -USER root +#USER root COPY --from=builder /build/bin/software /software diff --git a/policy-signed.json b/policy-signed.json index 1a4c74d..8fde404 100644 --- a/policy-signed.json +++ b/policy-signed.json @@ -1 +1 @@ -{"payload":"ewogICAgImV4cGlyZXMiOiAiMjAyNS0xMi0xN1QyMzo1Nzo0MC0wNTowMCIsCiAgICAic3RlcHMiOiB7CiAgICAgICJmbXQiOiB7CiAgICAgICAgIm5hbWUiOiAiZm10IiwKICAgICAgICAiYXR0ZXN0YXRpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9lbnZpcm9ubWVudC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZ2l0L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9tYXRlcmlhbC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvY29tbWFuZC1ydW4vdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL3Byb2R1Y3QvdjAuMSIKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJmdW5jdGlvbmFyaWVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJyb290IiwKICAgICAgICAgICAgImNlcnRDb25zdHJhaW50IjogewogICAgICAgICAgICAgICJjb21tb25uYW1lIjogIioiLAogICAgICAgICAgICAgICJkbnNuYW1lcyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImVtYWlscyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm9yZ2FuaXphdGlvbnMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ1cmlzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicm9vdHMiOiBbCiAgICAgICAgICAgICAgICAiZGNmMTY2ZWViZTdjYmQ5NzYwOTQ3YTg4MjEzZDk0ZTY1NjM0OWM2NDdkNDM5NTY5ZGM3NmEyNzVmMDViNzE1OSIKICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgICJ2ZXQiOiB7CiAgICAgICAgIm5hbWUiOiAidmV0IiwKICAgICAgICAiYXR0ZXN0YXRpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9lbnZpcm9ubWVudC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZ2l0L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9tYXRlcmlhbC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvY29tbWFuZC1ydW4vdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL3Byb2R1Y3QvdjAuMSIKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJmdW5jdGlvbmFyaWVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJyb290IiwKICAgICAgICAgICAgImNlcnRDb25zdHJhaW50IjogewogICAgICAgICAgICAgICJjb21tb25uYW1lIjogIioiLAogICAgICAgICAgICAgICJkbnNuYW1lcyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImVtYWlscyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm9yZ2FuaXphdGlvbnMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ1cmlzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicm9vdHMiOiBbCiAgICAgICAgICAgICAgICAiZGNmMTY2ZWViZTdjYmQ5NzYwOTQ3YTg4MjEzZDk0ZTY1NjM0OWM2NDdkNDM5NTY5ZGM3NmEyNzVmMDViNzE1OSIKICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgICJsaW50IjogewogICAgICAgICJuYW1lIjogImxpbnQiLAogICAgICAgICJhdHRlc3RhdGlvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2Vudmlyb25tZW50L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9naXQvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL21hdGVyaWFsL3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9jb21tYW5kLXJ1bi92MC4xIiwKICAgICAgICAgICAgInJlZ29wb2xpY2llcyI6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJleHBlY3RlZCBjb21tYW5kIiwKICAgICAgICAgICAgICAgICJtb2R1bGUiOiAiY0dGamEyRm5aU0JqYjIxdFlXNWtjblZ1TG1OdFpBb0taR1Z1ZVZ0dGMyZGRJSHNLQ1dsdWNIVjBMbU50WkNBaFBTQmJJaTlpYVc0dmMyZ2lMQ0FpTFdNaUxDQWlhR0ZrYjJ4cGJuUWdMV1lnYzJGeWFXWWdSRzlqYTJWeVptbHNaU0ErSUdoaFpHOXNhVzUwTG5OaGNtbG1JbDBLQ1cxelp5QTZQU0FpZFc1bGVIQmxZM1JsWkNCamJXUWlDbjBLIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvcHJvZHVjdC92MC4xIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImZ1bmN0aW9uYXJpZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogInJvb3QiLAogICAgICAgICAgICAiY2VydENvbnN0cmFpbnQiOiB7CiAgICAgICAgICAgICAgImNvbW1vbm5hbWUiOiAiKiIsCiAgICAgICAgICAgICAgImRuc25hbWVzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAiZW1haWxzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAib3JnYW5pemF0aW9ucyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInVyaXMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJyb290cyI6IFsKICAgICAgICAgICAgICAgICJkY2YxNjZlZWJlN2NiZDk3NjA5NDdhODgyMTNkOTRlNjU2MzQ5YzY0N2Q0Mzk1NjlkYzc2YTI3NWYwNWI3MTU5IgogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInVuaXQtdGVzdCI6IHsKICAgICAgICAibmFtZSI6ICJ1bml0LXRlc3QiLAogICAgICAgICJhdHRlc3RhdGlvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2Vudmlyb25tZW50L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9naXQvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL21hdGVyaWFsL3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9jb21tYW5kLXJ1bi92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvcHJvZHVjdC92MC4xIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImZ1bmN0aW9uYXJpZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogInJvb3QiLAogICAgICAgICAgICAiY2VydENvbnN0cmFpbnQiOiB7CiAgICAgICAgICAgICAgImNvbW1vbm5hbWUiOiAiKiIsCiAgICAgICAgICAgICAgImRuc25hbWVzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAiZW1haWxzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAib3JnYW5pemF0aW9ucyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInVyaXMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJyb290cyI6IFsKICAgICAgICAgICAgICAgICJkY2YxNjZlZWJlN2NiZDk3NjA5NDdhODgyMTNkOTRlNjU2MzQ5YzY0N2Q0Mzk1NjlkYzc2YTI3NWYwNWI3MTU5IgogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInNhc3QiOiB7CiAgICAgICAgIm5hbWUiOiAic2FzdCIsCiAgICAgICAgImF0dGVzdGF0aW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZW52aXJvbm1lbnQvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2dpdC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvbWF0ZXJpYWwvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2NvbW1hbmQtcnVuL3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9wcm9kdWN0L3YwLjEiCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZnVuY3Rpb25hcmllcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAicm9vdCIsCiAgICAgICAgICAgICJjZXJ0Q29uc3RyYWludCI6IHsKICAgICAgICAgICAgICAiY29tbW9ubmFtZSI6ICIqIiwKICAgICAgICAgICAgICAiZG5zbmFtZXMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJlbWFpbHMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJvcmdhbml6YXRpb25zIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidXJpcyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInJvb3RzIjogWwogICAgICAgICAgICAgICAgImRjZjE2NmVlYmU3Y2JkOTc2MDk0N2E4ODIxM2Q5NGU2NTYzNDljNjQ3ZDQzOTU2OWRjNzZhMjc1ZjA1YjcxNTkiCiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAiYnVpbGQtaW1hZ2UiOiB7CiAgICAgICAgIm5hbWUiOiAiYnVpbGQtaW1hZ2UiLAogICAgICAgICJhdHRlc3RhdGlvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2Vudmlyb25tZW50L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9naXQvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL21hdGVyaWFsL3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9jb21tYW5kLXJ1bi92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvcHJvZHVjdC92MC4xIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImZ1bmN0aW9uYXJpZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogInJvb3QiLAogICAgICAgICAgICAiY2VydENvbnN0cmFpbnQiOiB7CiAgICAgICAgICAgICAgImNvbW1vbm5hbWUiOiAiKiIsCiAgICAgICAgICAgICAgImRuc25hbWVzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAiZW1haWxzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAib3JnYW5pemF0aW9ucyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInVyaXMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJyb290cyI6IFsKICAgICAgICAgICAgICAgICJkY2YxNjZlZWJlN2NiZDk3NjA5NDdhODgyMTNkOTRlNjU2MzQ5YzY0N2Q0Mzk1NjlkYzc2YTI3NWYwNWI3MTU5IgogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInNhdmUtaW1hZ2UiOiB7CiAgICAgICAgIm5hbWUiOiAic2F2ZS1pbWFnZSIsCiAgICAgICAgImF0dGVzdGF0aW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZW52aXJvbm1lbnQvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2dpdC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvbWF0ZXJpYWwvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2NvbW1hbmQtcnVuL3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9wcm9kdWN0L3YwLjEiCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZnVuY3Rpb25hcmllcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAicm9vdCIsCiAgICAgICAgICAgICJjZXJ0Q29uc3RyYWludCI6IHsKICAgICAgICAgICAgICAiY29tbW9ubmFtZSI6ICIqIiwKICAgICAgICAgICAgICAiZG5zbmFtZXMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJlbWFpbHMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJvcmdhbml6YXRpb25zIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidXJpcyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInJvb3RzIjogWwogICAgICAgICAgICAgICAgImRjZjE2NmVlYmU3Y2JkOTc2MDk0N2E4ODIxM2Q5NGU2NTYzNDljNjQ3ZDQzOTU2OWRjNzZhMjc1ZjA1YjcxNTkiCiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAiZ2VuZXJhdGUtc2JvbSI6IHsKICAgICAgICAibmFtZSI6ICJnZW5lcmF0ZS1zYm9tIiwKICAgICAgICAiYXR0ZXN0YXRpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9lbnZpcm9ubWVudC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZ2l0L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9tYXRlcmlhbC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvY29tbWFuZC1ydW4vdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL3Byb2R1Y3QvdjAuMSIKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJmdW5jdGlvbmFyaWVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJyb290IiwKICAgICAgICAgICAgImNlcnRDb25zdHJhaW50IjogewogICAgICAgICAgICAgICJjb21tb25uYW1lIjogIioiLAogICAgICAgICAgICAgICJkbnNuYW1lcyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImVtYWlscyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm9yZ2FuaXphdGlvbnMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ1cmlzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicm9vdHMiOiBbCiAgICAgICAgICAgICAgICAiZGNmMTY2ZWViZTdjYmQ5NzYwOTQ3YTg4MjEzZDk0ZTY1NjM0OWM2NDdkNDM5NTY5ZGM3NmEyNzVmMDViNzE1OSIKICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgICJjdmUtc2NhbiI6IHsKICAgICAgICAibmFtZSI6ICJjdmUtc2NhbiIsCiAgICAgICAgImF0dGVzdGF0aW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZW52aXJvbm1lbnQvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2dpdC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvbWF0ZXJpYWwvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2NvbW1hbmQtcnVuL3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9wcm9kdWN0L3YwLjEiCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZnVuY3Rpb25hcmllcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAicm9vdCIsCiAgICAgICAgICAgICJjZXJ0Q29uc3RyYWludCI6IHsKICAgICAgICAgICAgICAiY29tbW9ubmFtZSI6ICIqIiwKICAgICAgICAgICAgICAiZG5zbmFtZXMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJlbWFpbHMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJvcmdhbml6YXRpb25zIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidXJpcyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInJvb3RzIjogWwogICAgICAgICAgICAgICAgImRjZjE2NmVlYmU3Y2JkOTc2MDk0N2E4ODIxM2Q5NGU2NTYzNDljNjQ3ZDQzOTU2OWRjNzZhMjc1ZjA1YjcxNTkiCiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAic2VjcmV0LXNjYW4iOiB7CiAgICAgICAgIm5hbWUiOiAic2VjcmV0LXNjYW4iLAogICAgICAgICJhdHRlc3RhdGlvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2Vudmlyb25tZW50L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9naXQvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL21hdGVyaWFsL3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9jb21tYW5kLXJ1bi92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvcHJvZHVjdC92MC4xIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImZ1bmN0aW9uYXJpZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogInJvb3QiLAogICAgICAgICAgICAiY2VydENvbnN0cmFpbnQiOiB7CiAgICAgICAgICAgICAgImNvbW1vbm5hbWUiOiAiKiIsCiAgICAgICAgICAgICAgImRuc25hbWVzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAiZW1haWxzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAib3JnYW5pemF0aW9ucyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInVyaXMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJyb290cyI6IFsKICAgICAgICAgICAgICAgICJkY2YxNjZlZWJlN2NiZDk3NjA5NDdhODgyMTNkOTRlNjU2MzQ5YzY0N2Q0Mzk1NjlkYzc2YTI3NWYwNWI3MTU5IgogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgfSwKICAgICJyb290cyI6IHsKICAgICAgImRjZjE2NmVlYmU3Y2JkOTc2MDk0N2E4ODIxM2Q5NGU2NTYzNDljNjQ3ZDQzOTU2OWRjNzZhMjc1ZjA1YjcxNTkiOiB7CiAgICAgICAgImNlcnRpZmljYXRlIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVUk1ZWtORFFWaDVaMEYzU1VKQlowbFZRVXhhVGtGUVJtUjRTRkIzYW1WRWJHOUVkM2xaUTJoQlR5ODBkME5uV1VsTGIxcEplbW93UlVGM1RYY0tTMnBGVmsxQ1RVZEJNVlZGUTJoTlRXTXliRzVqTTFKMlkyMVZkVnBIVmpKTlVrVjNSSGRaUkZaUlVVUkZkMmg2WVZka2VtUkhPWGxhVkVGbFJuY3dlUXBOVkVWM1RVUmplRTE2VlRKT1ZHeGhSbmN3ZWsxVVJYZE5SRlY0VFhwVk1rNVVhR0ZOUTI5NFJsUkJWRUpuVGxaQ1FXOVVSRWhPY0ZvelRqQmlNMHBzQ2t4dFVteGtha1ZTVFVFNFIwRXhWVVZCZUUxSll6SnNibU16VW5aamJWVjNaR3BCVVVKblkzRm9hMnBQVUZGSlFrSm5WWEpuVVZGQlNXZE9hVUZCVkRjS1dHVkdWRFJ5WWpOUVVVZDNVelJKWVdwMFRHc3pMMDlzYm5CbllXNW5ZVUpqYkZsd2MxbENjalZwS3pSNWJrSXdOMk5sWWpOTVVEQlBTVTlhWkhobGVBcFlOamxqTldsV2RYbEtVbEVyU0hvd05YbHBLMVZHTTNWQ1YwRnNTSEJwVXpWemFEQXJTREpIU0VVM1UxaHlhekZGUXpWdE1WUnlNVGxNT1dkbk9USnFDbGw2UW1oTlFUUkhRVEZWWkVSM1JVSXZkMUZGUVhkSlFrSnFRVkJDWjA1V1NGSk5Ra0ZtT0VWQ1ZFRkVRVkZJTDAxQ01FZEJNVlZrUkdkUlYwSkNVbGtLZDBJMVptdFZWMnhhY1d3MmVrcERhR3Q1VEZGTGMxaEdLMnBCWmtKblRsWklVMDFGUjBSQlYyZENVbGwzUWpWbWExVlhiRnB4YkRaNlNrTm9hM2xNVVFwTGMxaEdLMnBCUzBKblozRm9hMnBQVUZGUlJFRjNUbkJCUkVKdFFXcEZRV294YmtobFdGcHdLekV6VGxkQ1RtRXJSVVJ6UkZBNFJ6RlhWMmN4ZEVOTkNsZFFMMWRJVUhGd1lWWnZNR3BvYzNkbFRrWmFaMU56TUdWRk4zZFpTVFJ4UVdwRlFUSlhRamx2ZERrNGMwbHJiMFl6ZGxwWlpHUXpMMVowVjBJMVlqa0tWRTVOWldFM1NYZ3ZjM1JLTlZSbVkweE1aVUZDVEVVMFFrNUtUM05STkhadVFraEtDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsiLAogICAgICAgICJpbnRlcm1lZGlhdGVzIjogWwogICAgICAgICAgIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVUk1ZWtORFFWaDVaMEYzU1VKQlowbFZRVXhhVGtGUVJtUjRTRkIzYW1WRWJHOUVkM2xaUTJoQlR5ODBkME5uV1VsTGIxcEplbW93UlVGM1RYY0tTMnBGVmsxQ1RVZEJNVlZGUTJoTlRXTXliRzVqTTFKMlkyMVZkVnBIVmpKTlVrVjNSSGRaUkZaUlVVUkZkMmg2WVZka2VtUkhPWGxhVkVGbFJuY3dlUXBOVkVWM1RVUmplRTE2VlRKT1ZHeGhSbmN3ZWsxVVJYZE5SRlY0VFhwVk1rNVVhR0ZOUTI5NFJsUkJWRUpuVGxaQ1FXOVVSRWhPY0ZvelRqQmlNMHBzQ2t4dFVteGtha1ZTVFVFNFIwRXhWVVZCZUUxSll6SnNibU16VW5aamJWVjNaR3BCVVVKblkzRm9hMnBQVUZGSlFrSm5WWEpuVVZGQlNXZE9hVUZCVkRjS1dHVkdWRFJ5WWpOUVVVZDNVelJKWVdwMFRHc3pMMDlzYm5CbllXNW5ZVUpqYkZsd2MxbENjalZwS3pSNWJrSXdOMk5sWWpOTVVEQlBTVTlhWkhobGVBcFlOamxqTldsV2RYbEtVbEVyU0hvd05YbHBLMVZHTTNWQ1YwRnNTSEJwVXpWemFEQXJTREpIU0VVM1UxaHlhekZGUXpWdE1WUnlNVGxNT1dkbk9USnFDbGw2UW1oTlFUUkhRVEZWWkVSM1JVSXZkMUZGUVhkSlFrSnFRVkJDWjA1V1NGSk5Ra0ZtT0VWQ1ZFRkVRVkZJTDAxQ01FZEJNVlZrUkdkUlYwSkNVbGtLZDBJMVptdFZWMnhhY1d3MmVrcERhR3Q1VEZGTGMxaEdLMnBCWmtKblRsWklVMDFGUjBSQlYyZENVbGwzUWpWbWExVlhiRnB4YkRaNlNrTm9hM2xNVVFwTGMxaEdLMnBCUzBKblozRm9hMnBQVUZGUlJFRjNUbkJCUkVKdFFXcEZRV294YmtobFdGcHdLekV6VGxkQ1RtRXJSVVJ6UkZBNFJ6RlhWMmN4ZEVOTkNsZFFMMWRJVUhGd1lWWnZNR3BvYzNkbFRrWmFaMU56TUdWRk4zZFpTVFJ4UVdwRlFUSlhRamx2ZERrNGMwbHJiMFl6ZGxwWlpHUXpMMVowVjBJMVlqa0tWRTVOWldFM1NYZ3ZjM1JLTlZSbVkweE1aVUZDVEVVMFFrNUtUM05STkhadVFraEtDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsiCiAgICAgICAgXQogICAgICB9CiAgICB9LAogICAgInRpbWVzdGFtcGF1dGhvcml0aWVzIjogewogICAgICAiZnJlZXRzYSI6IHsKICAgICAgICAiY2VydGlmaWNhdGUiOiAiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVZ3Zla05EUW1WbFowRjNTVUpCWjBsS1FVMUljR2hvV1U1eFQyMUJUVUV3UjBOVGNVZFRTV0l6UkZGRlFrUlJWVUZOU1VkV1RWSkZkMFIzV1VRS1ZsRlJTMFYzYUVkamJWWnNTVVpTVkZGVVJWRk5RVFJIUVRGVlJVTjRUVWhWYlRsMlpFTkNSRkZVUlZsTlFsbEhRVEZWUlVGNFRWQmtNMlF6VEcxYWVRcGFWMVl3WXpKRmRXSXpTbTVOVTBsM1NVRlpTa3R2V2tsb2RtTk9RVkZyUWtab1RtbGtXRTV3WWtkV05sbFlUa0ZhTWpGb1lWZDNkVmt5T1hSTlVrbDNDa1ZCV1VSV1VWRklSWGRzV0dSWFZubGxiVW94WTIxamVFUjZRVTVDWjA1V1FrRm5WRUpyU21obFYxWjVZbXBGVEUxQmEwZEJNVlZGUW1oTlExSkZWWGNLU0doalRrMVVXWGROZWtWNlRVUkZNVTFxUlhwWGFHTk9Ua1JGZDAxNlFUTk5SRVV4VFdwRmVsZHFRMEpzVkVWU1RVRTRSMEV4VlVWRGFFMUpVbTVLYkFwYVUwSlZWVEJGZUVWRVFVOUNaMDVXUWtGelZFSXhTblppTTFGblVUQkZlRWRFUVZkQ1owNVdRa0ZOVkVRelpETmtlVFZ0WTIxV2JHUklUbWhNYlRsNUNscDZSV2xOUTBGSFExTnhSMU5KWWpORVVVVktRVkpaVkZsdVZucGhWM2hzWlcxR2VsRkhaSFJaVjJ4elRHMU9kbUpVUlZOTlFrRkhRVEZWUlVKNFRVb0tWak5XYkdOdWNHbGtXRXB1VFZFNGQwUlJXVVJXVVZGSlJYZGFRMWxZYkd4amJUUjRRM3BCU2tKblRsWkNRVmxVUVd0U1JrMUpTVU5KYWtGT1FtZHJjUXBvYTJsSE9YY3dRa0ZSUlVaQlFVOURRV2M0UVUxSlNVTkRaMHREUVdkRlFYUm5TMDlFYWtGNU9GSkZVVEpYVkU1eFZYVmtRVzVxYUd4RGNuQkZObkZzQ20xUlprNXdjR1ZVYlZaMlduSklOSHAxZEc0clRuZFVZVWhCUjNCcVUwZDJOQzlYVW5CYU1YZGFNMEpTV2pWdFVGVkNXbmxNWjNFd1dYSkpabEUxUm5nS01ITXZUVkphVUhwak1YSXpiRXRYY2sxU09YTkJVWGcwYlU0MGVqRXhlRVpGVHpVeU9Vd3daRVpLYWxCR09VMUVPRWR3WkRKbVpWZDZSM2x3ZEd4bGJBcGlLMUJ4VkNzcksyWlBZVEp2V1RBclRtRk5UVGRzTDNoalRraFFUMkZOZWpBdk1tOXNhekJwTWpKb1lrdGxWbWgyYjJ0UVEzRm9SbWg2YzNWb1MzTnRDbkUwVDJZdmJ5dDBObVJKTjNONE5XZ3dibEJOYlRSblIxTlNhR1p4SzNvMlFsUlNaME55Y1ZGSE1rWlBURzlXUm1kME5tbEpiUzlDYms1bVpsVnlOMVlLUkZsa00zcGFiVWwzUms5cUwwZ3pSRXRJYjBkcGF5OTRTek5GT0RKWlFUSmFkV3hXVDBaU1Z5OTZhalJCY0dwUVlUVlBSbUp3U1d0a01IQnRlbmg2WkFwRlkwdzBOemxvVTBFNVpFWnBlVlp0VTNoUWRGazFlbVV4VUN0Q1JUbGlUVlV4VUZOamNGSjZkemhOU0VaWWVIbExjVmN4TTFGMk4weFhkelJ6WW1zekNsTmphVUkzUjBGRFlsRnBWa2Q2WjJ0MldFYzJlVGcxU0U5MWRsZE9ka00xUjB4VGFYbFFPVWRzVUVJd1ZqWTRkR0o0ZWpSS1ZsUlNaSGN2V0c0dldGUUtSazU2VWtKTk0yTnhPR3hDVDBGV2RDOVFRVmcxSzNWR1kzWXhVemwzUmtVNFdXcGhRbVpYUTFBeGFtUkNhV3dyWXpSbEt6QjBaSGwzVkRKdlNtMVpRZ3BDUmk5clJYUXhkMjFIZDAxdFNIVnVUa1YxVVU1NmFERkdkRXBaTlRSb1lsVm1hVmRwTXpodFFWTkZOM2hOZEUxb1ptb3ZRelJUZG1Gd2FVUk9PRE0zQ21kWllWQm1jemg0TTB0YWVHSllOME16V1VGelJtNUthVzVzZDBGVmMzTXhabVJMWVhJNFVTOVpWbk0zU0M5dVZUUmpORWw0ZUhoNk5HWTJOMlpqVm5FS1RUSkpWRXRsYm5SaVEwMURRWGRGUVVGaFQwTkJhelIzWjJkS1MwMUJkMGRCTVZWa1JYZFJSazFCVFVKQlpqaDNSR2RaUkZaU01GQkJVVWd2UWtGUlJBcEJaMGhIVFVJd1IwRXhWV1JFWjFGWFFrSlVObFpSTWsxT1IxcFNVVEI2TXpVM1QyNWlTbGQyWlhWaGEyeDZRMEo1WjFsRVZsSXdha0pKU0VOTlNVY3ZDbWRDVkRaV1VUSk5Ua2RhVWxFd2VqTTFOMDl1WWtwWGRtVjFZV3RzTmtkQ2JUWlRRbTFFUTBKc1ZFVlNUVUU0UjBFeFZVVkRhRTFKVW01S2JGcFRRbFVLVlRCRmVFVkVRVTlDWjA1V1FrRnpWRUl4U25aaU0xRm5VVEJGZUVkRVFWZENaMDVXUWtGTlZFUXpaRE5rZVRWdFkyMVdiR1JJVG1oTWJUbDVXbnBGYVFwTlEwRkhRMU54UjFOSllqTkVVVVZLUVZKWlZGbHVWbnBoVjNoc1pXMUdlbEZIWkhSWlYyeHpURzFPZG1KVVJWTk5Ra0ZIUVRGVlJVSjRUVXBXTTFac0NtTnVjR2xrV0VwdVRWRTRkMFJSV1VSV1VWRkpSWGRhUTFsWWJHeGpiVFI0UTNwQlNrSm5UbFpDUVZsVVFXdFNSbWRuYTBGM1pXMUhSbWN5YnpaWlFYY0tUWGRaUkZaU01HWkNRM2QzUzJwQmIyOURZV2RLU1ZscFlVaFNNR05FYjNaTU0yUXpaSGsxYldOdFZteGtTRTVvVEcwNWVWcDVPWGxpTWprd1dESk9hQXBNYlU1NVlrUkRRbnAzV1VSV1VqQm5Ra2xJU0UxSlNFVk5TVWhDUW1kdmNrSm5SVVZCV1VoNVNrRkZRazFKUjNsTlJFMUhRME56UjBGUlZVWkNkMGxDQ2tacFpHOWtTRkozVDJrNGRtUXpaRE5NYlZwNVdsZFdNR015UlhWaU0wcHVUREphZVZwWFZqQmpNa1ptV1ROQ2VreHRhREJpVjNkM1RXZFpTVXQzV1VJS1FsRlZTRUZuUlZkS2JXZ3daRWhCTmt4NU9UTmtNMk4xV201S2JGcFlVbnBaVXpWMlkyMWpkbHB1U214YVdGSjZXVlk1YW1OSVRYVmpSMUp0VFVWalJ3cERRM05IUVZGVlJrSjNTVU5OUkhOaFQxVmFlVnBYVmxWVk1FVm5aRWhLTVdNelVteGFRMEl3WVZjeGJHTXpVbWhpV0VKd1ltMWpaMVV5T1cxa1NHUm9DbU50VldkWldFMW5XVk5DVkZwWVNqSmhWMDVzU1VOb1ZGbFhSbFJMVkVFelFtZG5ja0puUlVaQ1VXTkNRVkZSY2sxRGEzZEtkMWxKUzNkWlFrSlJWVWdLVFVGSFIwY3lhREJrU0VFMlRIazVNMlF6WTNWYWJrcHNXbGhTZWxsVE5YWmpiV00yVFdwVk1rMUVRVTVDWjJ0eGFHdHBSemwzTUVKQlVUQkdRVUZQUXdwQlowVkJZVXM1SzNZMVQwWlpkVGxOTm5wMFdVTXJURFk1YzNjeGIyMWtlV3hwT0Rsc1drRm1jRmROVFdnNVExSnRTbWhOTmt0Q2NVMHZhWEIzYjB4MENtNTRlWGhIYzJKRFVHaGpVV3AxVkhaNmJTdDViRTQyVm5kVVRXMUpiRlo1VmxOTVMxbGFZMlJUYW5RdlpVTlZUaXMwTVVzM2MwUTNSMVp0ZUZwQ1FVWUtTVXh1UWtSdFZFZEtiVXhyY2xVd1MzVjFTWEJxT0d4SkwwVTJXalpPYm0xMVVESXJVa0ZSVTBoelprSlJhVFp6YzNOdVdFMXZORWhQVnpWbmRGQlBOd3BuUkhKVmNGWllTVVFyS3pGUU5GaHVaR3R2UzI0M1UzWjNOVzR3ZWxNNVpuWXhhSGhDWTFsSlNGQlFVVlY2WlRKMU16QmlRVkYwTUc0d2FVbDVVa3g2Q21GWGRXaDBjRUYwWkRkbVpuZEZZa0ZUWjNwQ04wVXJUa2RHTkhSd1ZqTTNaVGhMYVVFeWVHbEhVMUp4VkRWdVpIVXlPR1puY0U5Wk9EZG5SRE5CY2xvS1JHTjBXbloyVkVObVNHUkJVelZyUlU4eloyNUhSMlZhUlZaTVJHMW1SWE4yT0ZSSFNtRXpRV3hxVm1FMVJUUXdTVkZFYzFWWWNGRk1hVGhISzFWRE5Bb3hSRmRhZFRoRlZsUTBjbTVaWVVOM01WWllOMU5vVDFJeFVFNURRM1pxWWpoVE9IUm1aSFZrWkRsNmFGVXpaMFZDTUhKNFpHVlVlVEYwVm1KT1RGaFhDams1ZVRrd2VHTjNjakZhU1VSVmQwMHZlRkV2Ym05UE9FWlNhRzB3VEc5UVF6Y3pSV1lyU2pSYVFtUnlkbGQzWVhWR00zcEtaVE16WkRScFluaEZZMklLT0M5d2VqVlhla1pyWldsNFdVMHlibk5JYUhGSWMwSkxkemRLVUc5MVMwNVlVbTVzTlVsQlJURmxSbTF4UkhsRE4wY3ZWbFEzVDBZMk5qbDRUVFpvWWdwVmREVkhNakZLUlRSalRrczJUazUxWTFNclpucG5NVXBRV0RBck0xWm9jMWxhYW1vM1JEVjFiR3BTZGxGWWNrbzRhVWhuY2k5Tk5tb3liMHhJZGxSQkNra3lUVXhrY1RKeGFscEdSRTlEV0hONFFuaEtjR0p0VEVkQ2VEbHZkelphWlhKc1ZYaDZkM015UVZkMk1uQnJQUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09IgogICAgICB9CiAgICB9CiAgfQ==","payloadType":"https://witness.testifysec.com/policy/v0.1","signatures":[{"keyid":"6516d0812cb5a0d01f7f014f88e04c5d4c2d89a64e788a12950ba950fb43ef45","sig":"t/Ggcxbx79DHhE+pPbnIng3WHNe2nur5i/hGPL4Qjj0MldtW4LYSm7DiVyn4OM9YkkTDCfDztxYydYCQVOmCbRPbAOMpMLVsRwjqYAxCCbocQmO/+U1B8kzhjGDMxX8G5K9QL7FsV32qf7AIEOPH876cLJWJ4YukD8DJxJR7+6PQ2HzyA3+Oq3LOqVjw9rOtBjNaz3qjiV3SlnR+DDGqIP8wWCL/ApthhojPKShKfFkx8RHShTvydvo8qaAm1x5R59D20J7pun8R8hfZ1BGGHhsv19rY6wDmMAlwwyxgaO/nkQ+jcFX2Ay+qkhneXO6jP8JsZlhuqYyuehIxkrZqhw=="}]} +{"payload":"ewogICAgImV4cGlyZXMiOiAiMjAyNS0xMi0xN1QyMzo1Nzo0MC0wNTowMCIsCiAgICAic3RlcHMiOiB7CiAgICAgICJmbXQiOiB7CiAgICAgICAgIm5hbWUiOiAiZm10IiwKICAgICAgICAiYXR0ZXN0YXRpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9lbnZpcm9ubWVudC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZ2l0L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9tYXRlcmlhbC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvY29tbWFuZC1ydW4vdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL3Byb2R1Y3QvdjAuMSIKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJmdW5jdGlvbmFyaWVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJyb290IiwKICAgICAgICAgICAgImNlcnRDb25zdHJhaW50IjogewogICAgICAgICAgICAgICJjb21tb25uYW1lIjogIioiLAogICAgICAgICAgICAgICJkbnNuYW1lcyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImVtYWlscyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm9yZ2FuaXphdGlvbnMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ1cmlzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicm9vdHMiOiBbCiAgICAgICAgICAgICAgICAiZGNmMTY2ZWViZTdjYmQ5NzYwOTQ3YTg4MjEzZDk0ZTY1NjM0OWM2NDdkNDM5NTY5ZGM3NmEyNzVmMDViNzE1OSIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJleHRlbnNpb25zIjogewogICAgICAgICAgICAgICAgImlzc3VlciI6ICJodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwKICAgICAgICAgICAgICAgICJzb3VyY2VfcmVwb3NpdG9yeV91cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvc3dmIiwKICAgICAgICAgICAgICAgICJidWlsZF9zaWduZXJfdXJpIjogImh0dHBzOi8vZ2l0aHViLmNvbS90ZXN0aWZ5c2VjL3dpdG5lc3MtcnVuLWFjdGlvbi8uZ2l0aHViL3dvcmtmbG93cy93aXRuZXNzLnltbEByZWZzL2hlYWRzL3JldXNhYmxlLXdvcmtmbG93IiwKICAgICAgICAgICAgICAgICJidWlsZF9zaWduZXJfZGlnZXN0IjogImQ2NmY4OWVjODUzOTM5OGVkOTkwNGQxYTYyMmJkMDMwM2JmZTM4NGMiLAogICAgICAgICAgICAgICAgImJ1aWxkX2NvbmZpZ191cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvc3dmLy5naXRodWIvd29ya2Zsb3dzL3BpcGVsaW5lLnltbEByZWZzL2hlYWRzLyoiLAogICAgICAgICAgICAgICAgInJ1bm5lcl9lbnZpcm9ubWVudCI6ICJnaXRodWItaG9zdGVkIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZldCI6IHsKICAgICAgICAibmFtZSI6ICJ2ZXQiLAogICAgICAgICJhdHRlc3RhdGlvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2Vudmlyb25tZW50L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9naXQvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL21hdGVyaWFsL3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9jb21tYW5kLXJ1bi92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvcHJvZHVjdC92MC4xIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImZ1bmN0aW9uYXJpZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogInJvb3QiLAogICAgICAgICAgICAiY2VydENvbnN0cmFpbnQiOiB7CiAgICAgICAgICAgICAgImNvbW1vbm5hbWUiOiAiKiIsCiAgICAgICAgICAgICAgImRuc25hbWVzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAiZW1haWxzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAib3JnYW5pemF0aW9ucyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInVyaXMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJyb290cyI6IFsKICAgICAgICAgICAgICAgICJkY2YxNjZlZWJlN2NiZDk3NjA5NDdhODgyMTNkOTRlNjU2MzQ5YzY0N2Q0Mzk1NjlkYzc2YTI3NWYwNWI3MTU5IgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImV4dGVuc2lvbnMiOiB7CiAgICAgICAgICAgICAgICAiaXNzdWVyIjogImh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20iLAogICAgICAgICAgICAgICAgInNvdXJjZV9yZXBvc2l0b3J5X3VyaSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGVzdGlmeXNlYy9zd2YiLAogICAgICAgICAgICAgICAgImJ1aWxkX3NpZ25lcl91cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvd2l0bmVzcy1ydW4tYWN0aW9uLy5naXRodWIvd29ya2Zsb3dzL3dpdG5lc3MueW1sQHJlZnMvaGVhZHMvcmV1c2FibGUtd29ya2Zsb3ciLAogICAgICAgICAgICAgICAgImJ1aWxkX3NpZ25lcl9kaWdlc3QiOiAiZDY2Zjg5ZWM4NTM5Mzk4ZWQ5OTA0ZDFhNjIyYmQwMzAzYmZlMzg0YyIsCiAgICAgICAgICAgICAgICAiYnVpbGRfY29uZmlnX3VyaSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGVzdGlmeXNlYy9zd2YvLmdpdGh1Yi93b3JrZmxvd3MvcGlwZWxpbmUueW1sQHJlZnMvaGVhZHMvKiIsCiAgICAgICAgICAgICAgICAicnVubmVyX2Vudmlyb25tZW50IjogImdpdGh1Yi1ob3N0ZWQiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAibGludCI6IHsKICAgICAgICAibmFtZSI6ICJsaW50IiwKICAgICAgICAiYXR0ZXN0YXRpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9lbnZpcm9ubWVudC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZ2l0L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9tYXRlcmlhbC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvY29tbWFuZC1ydW4vdjAuMSIsCiAgICAgICAgICAgICJyZWdvcG9saWNpZXMiOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiZXhwZWN0ZWQgY29tbWFuZCIsCiAgICAgICAgICAgICAgICAibW9kdWxlIjogImNHRmphMkZuWlNCamIyMXRZVzVrY25WdUxtTnRaQW9LWkdWdWVWdHRjMmRkSUhzS0NXbHVjSFYwTG1OdFpDQWhQU0JiSWk5aWFXNHZjMmdpTENBaUxXTWlMQ0FpYUdGa2IyeHBiblFnTFdZZ2MyRnlhV1lnUkc5amEyVnlabWxzWlNBK0lHaGhaRzlzYVc1MExuTmhjbWxtSWwwS0NXMXpaeUE2UFNBaWRXNWxlSEJsWTNSbFpDQmpiV1FpQ24wSyIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL3Byb2R1Y3QvdjAuMSIKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJmdW5jdGlvbmFyaWVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJyb290IiwKICAgICAgICAgICAgImNlcnRDb25zdHJhaW50IjogewogICAgICAgICAgICAgICJjb21tb25uYW1lIjogIioiLAogICAgICAgICAgICAgICJkbnNuYW1lcyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImVtYWlscyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm9yZ2FuaXphdGlvbnMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ1cmlzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicm9vdHMiOiBbCiAgICAgICAgICAgICAgICAiZGNmMTY2ZWViZTdjYmQ5NzYwOTQ3YTg4MjEzZDk0ZTY1NjM0OWM2NDdkNDM5NTY5ZGM3NmEyNzVmMDViNzE1OSIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJleHRlbnNpb25zIjogewogICAgICAgICAgICAgICAgImlzc3VlciI6ICJodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwKICAgICAgICAgICAgICAgICJzb3VyY2VfcmVwb3NpdG9yeV91cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvc3dmIiwKICAgICAgICAgICAgICAgICJidWlsZF9zaWduZXJfdXJpIjogImh0dHBzOi8vZ2l0aHViLmNvbS90ZXN0aWZ5c2VjL3dpdG5lc3MtcnVuLWFjdGlvbi8uZ2l0aHViL3dvcmtmbG93cy93aXRuZXNzLnltbEByZWZzL2hlYWRzL3JldXNhYmxlLXdvcmtmbG93IiwKICAgICAgICAgICAgICAgICJidWlsZF9zaWduZXJfZGlnZXN0IjogImQ2NmY4OWVjODUzOTM5OGVkOTkwNGQxYTYyMmJkMDMwM2JmZTM4NGMiLAogICAgICAgICAgICAgICAgImJ1aWxkX2NvbmZpZ191cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvc3dmLy5naXRodWIvd29ya2Zsb3dzL3BpcGVsaW5lLnltbEByZWZzL2hlYWRzLyoiLAogICAgICAgICAgICAgICAgInJ1bm5lcl9lbnZpcm9ubWVudCI6ICJnaXRodWItaG9zdGVkIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInVuaXQtdGVzdCI6IHsKICAgICAgICAibmFtZSI6ICJ1bml0LXRlc3QiLAogICAgICAgICJhdHRlc3RhdGlvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL2Vudmlyb25tZW50L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9naXQvdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL21hdGVyaWFsL3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9jb21tYW5kLXJ1bi92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvcHJvZHVjdC92MC4xIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImZ1bmN0aW9uYXJpZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogInJvb3QiLAogICAgICAgICAgICAiY2VydENvbnN0cmFpbnQiOiB7CiAgICAgICAgICAgICAgImNvbW1vbm5hbWUiOiAiKiIsCiAgICAgICAgICAgICAgImRuc25hbWVzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAiZW1haWxzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAib3JnYW5pemF0aW9ucyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInVyaXMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJyb290cyI6IFsKICAgICAgICAgICAgICAgICJkY2YxNjZlZWJlN2NiZDk3NjA5NDdhODgyMTNkOTRlNjU2MzQ5YzY0N2Q0Mzk1NjlkYzc2YTI3NWYwNWI3MTU5IgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImV4dGVuc2lvbnMiOiB7CiAgICAgICAgICAgICAgICAiaXNzdWVyIjogImh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20iLAogICAgICAgICAgICAgICAgInNvdXJjZV9yZXBvc2l0b3J5X3VyaSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGVzdGlmeXNlYy9zd2YiLAogICAgICAgICAgICAgICAgImJ1aWxkX3NpZ25lcl91cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvd2l0bmVzcy1ydW4tYWN0aW9uLy5naXRodWIvd29ya2Zsb3dzL3dpdG5lc3MueW1sQHJlZnMvaGVhZHMvcmV1c2FibGUtd29ya2Zsb3ciLAogICAgICAgICAgICAgICAgImJ1aWxkX3NpZ25lcl9kaWdlc3QiOiAiZDY2Zjg5ZWM4NTM5Mzk4ZWQ5OTA0ZDFhNjIyYmQwMzAzYmZlMzg0YyIsCiAgICAgICAgICAgICAgICAiYnVpbGRfY29uZmlnX3VyaSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGVzdGlmeXNlYy9zd2YvLmdpdGh1Yi93b3JrZmxvd3MvcGlwZWxpbmUueW1sQHJlZnMvaGVhZHMvKiIsCiAgICAgICAgICAgICAgICAicnVubmVyX2Vudmlyb25tZW50IjogImdpdGh1Yi1ob3N0ZWQiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAic2FzdCI6IHsKICAgICAgICAibmFtZSI6ICJzYXN0IiwKICAgICAgICAiYXR0ZXN0YXRpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9lbnZpcm9ubWVudC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZ2l0L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9tYXRlcmlhbC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvY29tbWFuZC1ydW4vdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL3Byb2R1Y3QvdjAuMSIKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJmdW5jdGlvbmFyaWVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJyb290IiwKICAgICAgICAgICAgImNlcnRDb25zdHJhaW50IjogewogICAgICAgICAgICAgICJjb21tb25uYW1lIjogIioiLAogICAgICAgICAgICAgICJkbnNuYW1lcyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImVtYWlscyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm9yZ2FuaXphdGlvbnMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ1cmlzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicm9vdHMiOiBbCiAgICAgICAgICAgICAgICAiZGNmMTY2ZWViZTdjYmQ5NzYwOTQ3YTg4MjEzZDk0ZTY1NjM0OWM2NDdkNDM5NTY5ZGM3NmEyNzVmMDViNzE1OSIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJleHRlbnNpb25zIjogewogICAgICAgICAgICAgICAgImlzc3VlciI6ICJodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwKICAgICAgICAgICAgICAgICJzb3VyY2VfcmVwb3NpdG9yeV91cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvc3dmIiwKICAgICAgICAgICAgICAgICJidWlsZF9zaWduZXJfdXJpIjogImh0dHBzOi8vZ2l0aHViLmNvbS90ZXN0aWZ5c2VjL3dpdG5lc3MtcnVuLWFjdGlvbi8uZ2l0aHViL3dvcmtmbG93cy93aXRuZXNzLnltbEByZWZzL2hlYWRzL3JldXNhYmxlLXdvcmtmbG93IiwKICAgICAgICAgICAgICAgICJidWlsZF9zaWduZXJfZGlnZXN0IjogImQ2NmY4OWVjODUzOTM5OGVkOTkwNGQxYTYyMmJkMDMwM2JmZTM4NGMiLAogICAgICAgICAgICAgICAgImJ1aWxkX2NvbmZpZ191cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvc3dmLy5naXRodWIvd29ya2Zsb3dzL3BpcGVsaW5lLnltbEByZWZzL2hlYWRzLyoiLAogICAgICAgICAgICAgICAgInJ1bm5lcl9lbnZpcm9ubWVudCI6ICJnaXRodWItaG9zdGVkIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgImJ1aWxkLWltYWdlIjogewogICAgICAgICJuYW1lIjogImJ1aWxkLWltYWdlIiwKICAgICAgICAiYXR0ZXN0YXRpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9lbnZpcm9ubWVudC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZ2l0L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9tYXRlcmlhbC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvY29tbWFuZC1ydW4vdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vc2xzYS5kZXYvcHJvdmVuYW5jZS92MS4wIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvcHJvZHVjdC92MC4xIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImZ1bmN0aW9uYXJpZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogInJvb3QiLAogICAgICAgICAgICAiY2VydENvbnN0cmFpbnQiOiB7CiAgICAgICAgICAgICAgImNvbW1vbm5hbWUiOiAiKiIsCiAgICAgICAgICAgICAgImRuc25hbWVzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAiZW1haWxzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAib3JnYW5pemF0aW9ucyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInVyaXMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJyb290cyI6IFsKICAgICAgICAgICAgICAgICJkY2YxNjZlZWJlN2NiZDk3NjA5NDdhODgyMTNkOTRlNjU2MzQ5YzY0N2Q0Mzk1NjlkYzc2YTI3NWYwNWI3MTU5IgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImV4dGVuc2lvbnMiOiB7CiAgICAgICAgICAgICAgICAiaXNzdWVyIjogImh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20iLAogICAgICAgICAgICAgICAgInNvdXJjZV9yZXBvc2l0b3J5X3VyaSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGVzdGlmeXNlYy9zd2YiLAogICAgICAgICAgICAgICAgImJ1aWxkX3NpZ25lcl91cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvd2l0bmVzcy1ydW4tYWN0aW9uLy5naXRodWIvd29ya2Zsb3dzL3dpdG5lc3MueW1sQHJlZnMvaGVhZHMvcmV1c2FibGUtd29ya2Zsb3ciLAogICAgICAgICAgICAgICAgImJ1aWxkX3NpZ25lcl9kaWdlc3QiOiAiZDY2Zjg5ZWM4NTM5Mzk4ZWQ5OTA0ZDFhNjIyYmQwMzAzYmZlMzg0YyIsCiAgICAgICAgICAgICAgICAiYnVpbGRfY29uZmlnX3VyaSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGVzdGlmeXNlYy9zd2YvLmdpdGh1Yi93b3JrZmxvd3MvcGlwZWxpbmUueW1sQHJlZnMvaGVhZHMvKiIsCiAgICAgICAgICAgICAgICAicnVubmVyX2Vudmlyb25tZW50IjogImdpdGh1Yi1ob3N0ZWQiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAic2F2ZS1pbWFnZSI6IHsKICAgICAgICAibmFtZSI6ICJzYXZlLWltYWdlIiwKICAgICAgICAiYXR0ZXN0YXRpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9lbnZpcm9ubWVudC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZ2l0L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9tYXRlcmlhbC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvY29tbWFuZC1ydW4vdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vc2xzYS5kZXYvcHJvdmVuYW5jZS92MS4wIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvcHJvZHVjdC92MC4xIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImZ1bmN0aW9uYXJpZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogInJvb3QiLAogICAgICAgICAgICAiY2VydENvbnN0cmFpbnQiOiB7CiAgICAgICAgICAgICAgImNvbW1vbm5hbWUiOiAiKiIsCiAgICAgICAgICAgICAgImRuc25hbWVzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAiZW1haWxzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAib3JnYW5pemF0aW9ucyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInVyaXMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJyb290cyI6IFsKICAgICAgICAgICAgICAgICJkY2YxNjZlZWJlN2NiZDk3NjA5NDdhODgyMTNkOTRlNjU2MzQ5YzY0N2Q0Mzk1NjlkYzc2YTI3NWYwNWI3MTU5IgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImV4dGVuc2lvbnMiOiB7CiAgICAgICAgICAgICAgICAiaXNzdWVyIjogImh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20iLAogICAgICAgICAgICAgICAgInNvdXJjZV9yZXBvc2l0b3J5X3VyaSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGVzdGlmeXNlYy9zd2YiLAogICAgICAgICAgICAgICAgImJ1aWxkX3NpZ25lcl91cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvd2l0bmVzcy1ydW4tYWN0aW9uLy5naXRodWIvd29ya2Zsb3dzL3dpdG5lc3MueW1sQHJlZnMvaGVhZHMvcmV1c2FibGUtd29ya2Zsb3ciLAogICAgICAgICAgICAgICAgImJ1aWxkX3NpZ25lcl9kaWdlc3QiOiAiZDY2Zjg5ZWM4NTM5Mzk4ZWQ5OTA0ZDFhNjIyYmQwMzAzYmZlMzg0YyIsCiAgICAgICAgICAgICAgICAiYnVpbGRfY29uZmlnX3VyaSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGVzdGlmeXNlYy9zd2YvLmdpdGh1Yi93b3JrZmxvd3MvcGlwZWxpbmUueW1sQHJlZnMvaGVhZHMvKiIsCiAgICAgICAgICAgICAgICAicnVubmVyX2Vudmlyb25tZW50IjogImdpdGh1Yi1ob3N0ZWQiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAiZ2VuZXJhdGUtc2JvbSI6IHsKICAgICAgICAibmFtZSI6ICJnZW5lcmF0ZS1zYm9tIiwKICAgICAgICAiYXR0ZXN0YXRpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9lbnZpcm9ubWVudC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZ2l0L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9tYXRlcmlhbC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvY29tbWFuZC1ydW4vdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL3Byb2R1Y3QvdjAuMSIKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJmdW5jdGlvbmFyaWVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJyb290IiwKICAgICAgICAgICAgImNlcnRDb25zdHJhaW50IjogewogICAgICAgICAgICAgICJjb21tb25uYW1lIjogIioiLAogICAgICAgICAgICAgICJkbnNuYW1lcyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImVtYWlscyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm9yZ2FuaXphdGlvbnMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ1cmlzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicm9vdHMiOiBbCiAgICAgICAgICAgICAgICAiZGNmMTY2ZWViZTdjYmQ5NzYwOTQ3YTg4MjEzZDk0ZTY1NjM0OWM2NDdkNDM5NTY5ZGM3NmEyNzVmMDViNzE1OSIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJleHRlbnNpb25zIjogewogICAgICAgICAgICAgICAgImlzc3VlciI6ICJodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwKICAgICAgICAgICAgICAgICJzb3VyY2VfcmVwb3NpdG9yeV91cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvc3dmIiwKICAgICAgICAgICAgICAgICJidWlsZF9zaWduZXJfdXJpIjogImh0dHBzOi8vZ2l0aHViLmNvbS90ZXN0aWZ5c2VjL3dpdG5lc3MtcnVuLWFjdGlvbi8uZ2l0aHViL3dvcmtmbG93cy93aXRuZXNzLnltbEByZWZzL2hlYWRzL3JldXNhYmxlLXdvcmtmbG93IiwKICAgICAgICAgICAgICAgICJidWlsZF9zaWduZXJfZGlnZXN0IjogImQ2NmY4OWVjODUzOTM5OGVkOTkwNGQxYTYyMmJkMDMwM2JmZTM4NGMiLAogICAgICAgICAgICAgICAgImJ1aWxkX2NvbmZpZ191cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvc3dmLy5naXRodWIvd29ya2Zsb3dzL3BpcGVsaW5lLnltbEByZWZzL2hlYWRzLyoiLAogICAgICAgICAgICAgICAgInJ1bm5lcl9lbnZpcm9ubWVudCI6ICJnaXRodWItaG9zdGVkIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInNlY3JldC1zY2FuIjogewogICAgICAgICJuYW1lIjogInNlY3JldC1zY2FuIiwKICAgICAgICAiYXR0ZXN0YXRpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9lbnZpcm9ubWVudC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvZ2l0L3YwLjEiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJodHRwczovL3dpdG5lc3MuZGV2L2F0dGVzdGF0aW9ucy9tYXRlcmlhbC92MC4xIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAiaHR0cHM6Ly93aXRuZXNzLmRldi9hdHRlc3RhdGlvbnMvY29tbWFuZC1ydW4vdjAuMSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImh0dHBzOi8vd2l0bmVzcy5kZXYvYXR0ZXN0YXRpb25zL3Byb2R1Y3QvdjAuMSIKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJmdW5jdGlvbmFyaWVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJyb290IiwKICAgICAgICAgICAgImNlcnRDb25zdHJhaW50IjogewogICAgICAgICAgICAgICJjb21tb25uYW1lIjogIioiLAogICAgICAgICAgICAgICJkbnNuYW1lcyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImVtYWlscyI6IFsKICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm9yZ2FuaXphdGlvbnMiOiBbCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ1cmlzIjogWwogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicm9vdHMiOiBbCiAgICAgICAgICAgICAgICAiZGNmMTY2ZWViZTdjYmQ5NzYwOTQ3YTg4MjEzZDk0ZTY1NjM0OWM2NDdkNDM5NTY5ZGM3NmEyNzVmMDViNzE1OSIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJleHRlbnNpb25zIjogewogICAgICAgICAgICAgICAgImlzc3VlciI6ICJodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwKICAgICAgICAgICAgICAgICJzb3VyY2VfcmVwb3NpdG9yeV91cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvc3dmIiwKICAgICAgICAgICAgICAgICJidWlsZF9zaWduZXJfdXJpIjogImh0dHBzOi8vZ2l0aHViLmNvbS90ZXN0aWZ5c2VjL3dpdG5lc3MtcnVuLWFjdGlvbi8uZ2l0aHViL3dvcmtmbG93cy93aXRuZXNzLnltbEByZWZzL2hlYWRzL3JldXNhYmxlLXdvcmtmbG93IiwKICAgICAgICAgICAgICAgICJidWlsZF9zaWduZXJfZGlnZXN0IjogImQ2NmY4OWVjODUzOTM5OGVkOTkwNGQxYTYyMmJkMDMwM2JmZTM4NGMiLAogICAgICAgICAgICAgICAgImJ1aWxkX2NvbmZpZ191cmkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpZnlzZWMvc3dmLy5naXRodWIvd29ya2Zsb3dzL3BpcGVsaW5lLnltbEByZWZzL2hlYWRzLyoiLAogICAgICAgICAgICAgICAgInJ1bm5lcl9lbnZpcm9ubWVudCI6ICJnaXRodWItaG9zdGVkIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgfSwKICAgICJyb290cyI6IHsKICAgICAgImRjZjE2NmVlYmU3Y2JkOTc2MDk0N2E4ODIxM2Q5NGU2NTYzNDljNjQ3ZDQzOTU2OWRjNzZhMjc1ZjA1YjcxNTkiOiB7CiAgICAgICAgImNlcnRpZmljYXRlIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVU5IYWtORFFXRkhaMEYzU1VKQlowbFZRVXh1Vm1sV1ptNVZNR0p5U21GemJWSnJTSEp1TDFWdVptRlJkME5uV1VsTGIxcEplbW93UlVGM1RYY0tTMnBGVmsxQ1RVZEJNVlZGUTJoTlRXTXliRzVqTTFKMlkyMVZkVnBIVmpKTlVrVjNSSGRaUkZaUlVVUkZkMmg2WVZka2VtUkhPWGxhVkVGbFJuY3dlUXBOYWtFd1RWUk5lVTFFUVRKTlZGWmhSbmN3ZWsxVVJYZE5SRlY0VFhwVk1rNVVhR0ZOUkdONFJsUkJWRUpuVGxaQ1FXOVVSRWhPY0ZvelRqQmlNMHBzQ2t4dFVteGtha1ZsVFVKM1IwRXhWVVZCZUUxV1l6SnNibU16VW5aamJWVjBZVmMxTUZwWVNuUmFWMUp3V1ZoU2JFMUlXWGRGUVZsSVMyOWFTWHBxTUVNS1FWRlpSa3MwUlVWQlEwbEVXV2RCUlRoU1ZsTXZlWE5JSzA1UGRuVkVXbmxRU1ZwMGFXeG5WVVk1VG14aGNsbHdRV1E1U0ZBeGRrSkNTREZWTlVOV053bzNURk5UTjNNd1dtbElORzVGTjBoMk4zQjBVelpNZG5aU0wxTlVhemM1T0V4V1owMTZUR3hLTkVobFNXWkdNM1JJVTJGbGVFeGpXWEJUUVZOeU1XdFRDakJPTDFKblFrcDZMemxxVjBOcFdHNXZNM04zWlZSQlQwSm5UbFpJVVRoQ1FXWTRSVUpCVFVOQlVWbDNSWGRaUkZaU01HeENRWGQzUTJkWlNVdDNXVUlLUWxGVlNFRjNUWGRGWjFsRVZsSXdWRUZSU0M5Q1FXZDNRbWRGUWk5M1NVSkJSRUZrUW1kT1ZraFJORVZHWjFGVk16bFFjSG94V1d0RldtSTFjVTVxY0FwTFJsZHBlR2swV1ZwRU9IZElkMWxFVmxJd2FrSkNaM2RHYjBGVlYwMUJaVmcxUmtad1YyRndaWE41VVc5YVRXa3dRM0pHZUdadmQwTm5XVWxMYjFwSkNucHFNRVZCZDAxRVduZEJkMXBCU1hkUVEzTlJTelJFV1dsYVdVUlFTV0ZFYVRWSVJrdHVabmhZZURaQlUxTldiVVZTWm5ONWJsbENhVmd5V0RaVFNsSUtibHBWT0RRdk9VUmFaRzVHZG5aNGJVRnFRazkwTmxGd1FteGpORW92TUVSNGRtdFVRM0Z3WTJ4MmVtbE1Oa0pEUTFCdWFtUnNTVUl6VUhVelFuaHpVQXB0ZVdkVldUZEphVEo2WW1SRFpHeHBhVzkzUFFvdExTMHRMVVZPUkNCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2dvPSIsCiAgICAgICAgImludGVybWVkaWF0ZXMiOiBbCiAgICAgICAgICAiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVSTVla05EUVZoNVowRjNTVUpCWjBsVlFVeGFUa0ZRUm1SNFNGQjNhbVZFYkc5RWQzbFpRMmhCVHk4MGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1MycEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWtWM1JIZFpSRlpSVVVSRmQyaDZZVmRrZW1SSE9YbGFWRUZsUm5jd2VRcE5WRVYzVFVSamVFMTZWVEpPVkd4aFJuY3dlazFVUlhkTlJGVjRUWHBWTWs1VWFHRk5RMjk0UmxSQlZFSm5UbFpDUVc5VVJFaE9jRm96VGpCaU0wcHNDa3h0VW14a2FrVlNUVUU0UjBFeFZVVkJlRTFKWXpKc2JtTXpVblpqYlZWM1pHcEJVVUpuWTNGb2EycFBVRkZKUWtKblZYSm5VVkZCU1dkT2FVRkJWRGNLV0dWR1ZEUnlZak5RVVVkM1V6UkpZV3AwVEdzekwwOXNibkJuWVc1bllVSmpiRmx3YzFsQ2NqVnBLelI1YmtJd04yTmxZak5NVURCUFNVOWFaSGhsZUFwWU5qbGpOV2xXZFhsS1VsRXJTSG93TlhscEsxVkdNM1ZDVjBGc1NIQnBVelZ6YURBclNESkhTRVUzVTFoeWF6RkZRelZ0TVZSeU1UbE1PV2RuT1RKcUNsbDZRbWhOUVRSSFFURlZaRVIzUlVJdmQxRkZRWGRKUWtKcVFWQkNaMDVXU0ZKTlFrRm1PRVZDVkVGRVFWRklMMDFDTUVkQk1WVmtSR2RSVjBKQ1Vsa0tkMEkxWm10VlYyeGFjV3cyZWtwRGFHdDVURkZMYzFoR0sycEJaa0puVGxaSVUwMUZSMFJCVjJkQ1VsbDNRalZtYTFWWGJGcHhiRFo2U2tOb2EzbE1VUXBMYzFoR0sycEJTMEpuWjNGb2EycFBVRkZSUkVGM1RuQkJSRUp0UVdwRlFXb3hia2hsV0Zwd0t6RXpUbGRDVG1FclJVUnpSRkE0UnpGWFYyY3hkRU5OQ2xkUUwxZElVSEZ3WVZadk1HcG9jM2RsVGtaYVoxTnpNR1ZGTjNkWlNUUnhRV3BGUVRKWFFqbHZkRGs0YzBscmIwWXpkbHBaWkdRekwxWjBWMEkxWWprS1ZFNU5aV0UzU1hndmMzUktOVlJtWTB4TVpVRkNURVUwUWs1S1QzTlJOSFp1UWtoS0NpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyIKICAgICAgICBdCiAgICAgIH0KICAgIH0sCiAgICAidGltZXN0YW1wYXV0aG9yaXRpZXMiOiB7CiAgICAgICJmcmVldHNhIjogewogICAgICAgICJjZXJ0aWZpY2F0ZSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VndmVrTkRRbVZsWjBGM1NVSkJaMGxLUVUxSWNHaG9XVTV4VDIxQlRVRXdSME5UY1VkVFNXSXpSRkZGUWtSUlZVRk5TVWRXVFZKRmQwUjNXVVFLVmxGUlMwVjNhRWRqYlZac1NVWlNWRkZVUlZGTlFUUkhRVEZWUlVONFRVaFZiVGwyWkVOQ1JGRlVSVmxOUWxsSFFURlZSVUY0VFZCa00yUXpURzFhZVFwYVYxWXdZekpGZFdJelNtNU5VMGwzU1VGWlNrdHZXa2xvZG1OT1FWRnJRa1pvVG1sa1dFNXdZa2RXTmxsWVRrRmFNakZvWVZkM2RWa3lPWFJOVWtsM0NrVkJXVVJXVVZGSVJYZHNXR1JYVm5sbGJVb3hZMjFqZUVSNlFVNUNaMDVXUWtGblZFSnJTbWhsVjFaNVltcEZURTFCYTBkQk1WVkZRbWhOUTFKRlZYY0tTR2hqVGsxVVdYZE5la1Y2VFVSRk1VMXFSWHBYYUdOT1RrUkZkMDE2UVROTlJFVXhUV3BGZWxkcVEwSnNWRVZTVFVFNFIwRXhWVVZEYUUxSlVtNUtiQXBhVTBKVlZUQkZlRVZFUVU5Q1owNVdRa0Z6VkVJeFNuWmlNMUZuVVRCRmVFZEVRVmRDWjA1V1FrRk5WRVF6WkROa2VUVnRZMjFXYkdSSVRtaE1iVGw1Q2xwNlJXbE5RMEZIUTFOeFIxTkpZak5FVVVWS1FWSlpWRmx1Vm5waFYzaHNaVzFHZWxGSFpIUlpWMnh6VEcxT2RtSlVSVk5OUWtGSFFURlZSVUo0VFVvS1ZqTldiR051Y0dsa1dFcHVUVkU0ZDBSUldVUldVVkZKUlhkYVExbFliR3hqYlRSNFEzcEJTa0puVGxaQ1FWbFVRV3RTUmsxSlNVTkpha0ZPUW1kcmNRcG9hMmxIT1hjd1FrRlJSVVpCUVU5RFFXYzRRVTFKU1VORFowdERRV2RGUVhSblMwOUVha0Y1T0ZKRlVUSlhWRTV4VlhWa1FXNXFhR3hEY25CRk5uRnNDbTFSWms1d2NHVlViVloyV25KSU5IcDFkRzRyVG5kVVlVaEJSM0JxVTBkMk5DOVhVbkJhTVhkYU0wSlNXalZ0VUZWQ1dubE1aM0V3V1hKSlpsRTFSbmdLTUhNdlRWSmFVSHBqTVhJemJFdFhjazFTT1hOQlVYZzBiVTQwZWpFeGVFWkZUelV5T1V3d1pFWkthbEJHT1UxRU9FZHdaREptWlZkNlIzbHdkR3hsYkFwaUsxQnhWQ3NySzJaUFlUSnZXVEFyVG1GTlRUZHNMM2hqVGtoUVQyRk5lakF2TW05c2F6QnBNakpvWWt0bFZtaDJiMnRRUTNGb1JtaDZjM1ZvUzNOdENuRTBUMll2Ynl0ME5tUkpOM040Tldnd2JsQk5iVFJuUjFOU2FHWnhLM28yUWxSU1owTnljVkZITWtaUFRHOVdSbWQwTm1sSmJTOUNiazVtWmxWeU4xWUtSRmxrTTNwYWJVbDNSazlxTDBnelJFdEliMGRwYXk5NFN6TkZPREpaUVRKYWRXeFdUMFpTVnk5NmFqUkJjR3BRWVRWUFJtSndTV3RrTUhCdGVuaDZaQXBGWTB3ME56bG9VMEU1WkVacGVWWnRVM2hRZEZrMWVtVXhVQ3RDUlRsaVRWVXhVRk5qY0ZKNmR6aE5TRVpZZUhsTGNWY3hNMUYyTjB4WGR6UnpZbXN6Q2xOamFVSTNSMEZEWWxGcFZrZDZaMnQyV0VjMmVUZzFTRTkxZGxkT2RrTTFSMHhUYVhsUU9VZHNVRUl3VmpZNGRHSjRlalJLVmxSU1pIY3ZXRzR2V0ZRS1JrNTZVa0pOTTJOeE9HeENUMEZXZEM5UVFWZzFLM1ZHWTNZeFV6bDNSa1U0V1dwaFFtWlhRMUF4YW1SQ2FXd3JZelJsS3pCMFpIbDNWREp2U20xWlFncENSaTlyUlhReGQyMUhkMDF0U0hWdVRrVjFVVTU2YURGR2RFcFpOVFJvWWxWbWFWZHBNemh0UVZORk4zaE5kRTFvWm1vdlF6UlRkbUZ3YVVST09ETTNDbWRaWVZCbWN6aDRNMHRhZUdKWU4wTXpXVUZ6Um01S2FXNXNkMEZWYzNNeFptUkxZWEk0VVM5WlZuTTNTQzl1VlRSak5FbDRlSGg2TkdZMk4yWmpWbkVLVFRKSlZFdGxiblJpUTAxRFFYZEZRVUZoVDBOQmF6UjNaMmRLUzAxQmQwZEJNVlZrUlhkUlJrMUJUVUpCWmpoM1JHZFpSRlpTTUZCQlVVZ3ZRa0ZSUkFwQlowaEhUVUl3UjBFeFZXUkVaMUZYUWtKVU5sWlJNazFPUjFwU1VUQjZNelUzVDI1aVNsZDJaWFZoYTJ4NlEwSjVaMWxFVmxJd2FrSkpTRU5OU1VjdkNtZENWRFpXVVRKTlRrZGFVbEV3ZWpNMU4wOXVZa3BYZG1WMVlXdHNOa2RDYlRaVFFtMUVRMEpzVkVWU1RVRTRSMEV4VlVWRGFFMUpVbTVLYkZwVFFsVUtWVEJGZUVWRVFVOUNaMDVXUWtGelZFSXhTblppTTFGblVUQkZlRWRFUVZkQ1owNVdRa0ZOVkVRelpETmtlVFZ0WTIxV2JHUklUbWhNYlRsNVducEZhUXBOUTBGSFExTnhSMU5KWWpORVVVVktRVkpaVkZsdVZucGhWM2hzWlcxR2VsRkhaSFJaVjJ4elRHMU9kbUpVUlZOTlFrRkhRVEZWUlVKNFRVcFdNMVpzQ21OdWNHbGtXRXB1VFZFNGQwUlJXVVJXVVZGSlJYZGFRMWxZYkd4amJUUjRRM3BCU2tKblRsWkNRVmxVUVd0U1JtZG5hMEYzWlcxSFJtY3lielpaUVhjS1RYZFpSRlpTTUdaQ1EzZDNTMnBCYjI5RFlXZEtTVmxwWVVoU01HTkViM1pNTTJRelpIazFiV050Vm14a1NFNW9URzA1ZVZwNU9YbGlNamt3V0RKT2FBcE1iVTU1WWtSRFFucDNXVVJXVWpCblFrbElTRTFKU0VWTlNVaENRbWR2Y2tKblJVVkJXVWg1U2tGRlFrMUpSM2xOUkUxSFEwTnpSMEZSVlVaQ2QwbENDa1pwWkc5a1NGSjNUMms0ZG1RelpETk1iVnA1V2xkV01HTXlSWFZpTTBwdVRESmFlVnBYVmpCak1rWm1XVE5DZWt4dGFEQmlWM2QzVFdkWlNVdDNXVUlLUWxGVlNFRm5SVmRLYldnd1pFaEJOa3g1T1ROa00yTjFXbTVLYkZwWVVucFpVelYyWTIxamRscHVTbXhhV0ZKNldWWTVhbU5JVFhWalIxSnRUVVZqUndwRFEzTkhRVkZWUmtKM1NVTk5SSE5oVDFWYWVWcFhWbFZWTUVWblpFaEtNV016VW14YVEwSXdZVmN4YkdNelVtaGlXRUp3WW0xaloxVXlPVzFrU0dSb0NtTnRWV2RaV0UxbldWTkNWRnBZU2pKaFYwNXNTVU5vVkZsWFJsUkxWRUV6UW1kbmNrSm5SVVpDVVdOQ1FWRlJjazFEYTNkS2QxbEpTM2RaUWtKUlZVZ0tUVUZIUjBjeWFEQmtTRUUyVEhrNU0yUXpZM1ZhYmtwc1dsaFNlbGxUTlhaamJXTTJUV3BWTWsxRVFVNUNaMnR4YUd0cFJ6bDNNRUpCVVRCR1FVRlBRd3BCWjBWQllVczVLM1kxVDBaWmRUbE5ObnAwV1VNclREWTVjM2N4YjIxa2VXeHBPRGxzV2tGbWNGZE5UV2c1UTFKdFNtaE5Oa3RDY1UwdmFYQjNiMHgwQ201NGVYaEhjMkpEVUdoalVXcDFWSFo2YlN0NWJFNDJWbmRVVFcxSmJGWjVWbE5NUzFsYVkyUlRhblF2WlVOVlRpczBNVXMzYzBRM1IxWnRlRnBDUVVZS1NVeHVRa1J0VkVkS2JVeHJjbFV3UzNWMVNYQnFPR3hKTDBVMldqWk9ibTExVURJclVrRlJVMGh6WmtKUmFUWnpjM051V0Uxdk5FaFBWelZuZEZCUE53cG5SSEpWY0ZaWVNVUXJLekZRTkZodVpHdHZTMjQzVTNaM05XNHdlbE01Wm5ZeGFIaENZMWxKU0ZCUVVWVjZaVEoxTXpCaVFWRjBNRzR3YVVsNVVreDZDbUZYZFdoMGNFRjBaRGRtWm5kRllrRlRaM3BDTjBVclRrZEdOSFJ3VmpNM1pUaExhVUV5ZUdsSFUxSnhWRFZ1WkhVeU9HWm5jRTlaT0RkblJETkJjbG9LUkdOMFduWjJWRU5tU0dSQlV6VnJSVTh6WjI1SFIyVmFSVlpNUkcxbVJYTjJPRlJIU21FelFXeHFWbUUxUlRRd1NWRkVjMVZZY0ZGTWFUaEhLMVZETkFveFJGZGFkVGhGVmxRMGNtNVpZVU4zTVZaWU4xTm9UMUl4VUU1RFEzWnFZamhUT0hSbVpIVmtaRGw2YUZVelowVkNNSEo0WkdWVWVURjBWbUpPVEZoWENqazVlVGt3ZUdOM2NqRmFTVVJWZDAwdmVGRXZibTlQT0VaU2FHMHdURzlRUXpjelJXWXJTalJhUW1SeWRsZDNZWFZHTTNwS1pUTXpaRFJwWW5oRlkySUtPQzl3ZWpWWGVrWnJaV2w0V1UweWJuTklhSEZJYzBKTGR6ZEtVRzkxUzA1WVVtNXNOVWxCUlRGbFJtMXhSSGxETjBjdlZsUTNUMFkyTmpsNFRUWm9ZZ3BWZERWSE1qRktSVFJqVGtzMlRrNTFZMU1yWm5wbk1VcFFXREFyTTFab2MxbGFhbW8zUkRWMWJHcFNkbEZZY2tvNGFVaG5jaTlOTm1veWIweElkbFJCQ2treVRVeGtjVEp4YWxwR1JFOURXSE40UW5oS2NHSnRURWRDZURsdmR6WmFaWEpzVlhoNmQzTXlRVmQyTW5CclBRb3RMUzB0TFVWT1JDQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENnPT0iCiAgICAgIH0KICAgIH0KICB9Cg==","payloadType":"https://witness.testifysec.com/policy/v0.1","signatures":[{"keyid":"6516d0812cb5a0d01f7f014f88e04c5d4c2d89a64e788a12950ba950fb43ef45","sig":"P8Glo25onljPDfifSr7ohGkRy9ATE0Y9ILTCCIUGmbHM0HT17Kvf0koEGpA3czHHXyjGS5ISdsPk76lQesoMIa8Lq0HhYUwqzalYxASWVLIwVwNqephAkhH59z6DBavF/aEZTJgeu8E8/pyLolRSu5XSgX7VZMNTxVnwklHTZuENHQt9zFPXl1roXf7ejvy5tG7UnyH1iUxi2Eb9fbNy8R3dm5bAgqEVB14MUdUn618HttzBYeu1asSyIrIzq7Oo3vV7+U6C4XFPphmSiyYut6Y0Lv1H3Zxq4pUkSUz2ZFsmSxeAUjG4OTBfIYldToXiF5+rKzY2pRb85Wty+Ln64w=="}]} diff --git a/policy.json b/policy.json index 3bf9439..f633496 100644 --- a/policy.json +++ b/policy.json @@ -39,7 +39,15 @@ ], "roots": [ "dcf166eebe7cbd9760947a88213d94e656349c647d439569dc76a275f05b7159" - ] + ], + "extensions": { + "issuer": "https://token.actions.githubusercontent.com", + "source_repository_uri": "https://github.com/testifysec/swf", + "build_signer_uri": "https://github.com/testifysec/witness-run-action/.github/workflows/witness.yml@refs/heads/reusable-workflow", + "build_signer_digest": "d66f89ec8539398ed9904d1a622bd0303bfe384c", + "build_config_uri": "https://github.com/testifysec/swf/.github/workflows/pipeline.yml@refs/heads/*", + "runner_environment": "github-hosted" + } } } ] @@ -82,7 +90,15 @@ ], "roots": [ "dcf166eebe7cbd9760947a88213d94e656349c647d439569dc76a275f05b7159" - ] + ], + "extensions": { + "issuer": "https://token.actions.githubusercontent.com", + "source_repository_uri": "https://github.com/testifysec/swf", + "build_signer_uri": "https://github.com/testifysec/witness-run-action/.github/workflows/witness.yml@refs/heads/reusable-workflow", + "build_signer_digest": "d66f89ec8539398ed9904d1a622bd0303bfe384c", + "build_config_uri": "https://github.com/testifysec/swf/.github/workflows/pipeline.yml@refs/heads/*", + "runner_environment": "github-hosted" + } } } ] @@ -131,7 +147,15 @@ ], "roots": [ "dcf166eebe7cbd9760947a88213d94e656349c647d439569dc76a275f05b7159" - ] + ], + "extensions": { + "issuer": "https://token.actions.githubusercontent.com", + "source_repository_uri": "https://github.com/testifysec/swf", + "build_signer_uri": "https://github.com/testifysec/witness-run-action/.github/workflows/witness.yml@refs/heads/reusable-workflow", + "build_signer_digest": "d66f89ec8539398ed9904d1a622bd0303bfe384c", + "build_config_uri": "https://github.com/testifysec/swf/.github/workflows/pipeline.yml@refs/heads/*", + "runner_environment": "github-hosted" + } } } ] @@ -174,7 +198,15 @@ ], "roots": [ "dcf166eebe7cbd9760947a88213d94e656349c647d439569dc76a275f05b7159" - ] + ], + "extensions": { + "issuer": "https://token.actions.githubusercontent.com", + "source_repository_uri": "https://github.com/testifysec/swf", + "build_signer_uri": "https://github.com/testifysec/witness-run-action/.github/workflows/witness.yml@refs/heads/reusable-workflow", + "build_signer_digest": "d66f89ec8539398ed9904d1a622bd0303bfe384c", + "build_config_uri": "https://github.com/testifysec/swf/.github/workflows/pipeline.yml@refs/heads/*", + "runner_environment": "github-hosted" + } } } ] @@ -217,7 +249,15 @@ ], "roots": [ "dcf166eebe7cbd9760947a88213d94e656349c647d439569dc76a275f05b7159" - ] + ], + "extensions": { + "issuer": "https://token.actions.githubusercontent.com", + "source_repository_uri": "https://github.com/testifysec/swf", + "build_signer_uri": "https://github.com/testifysec/witness-run-action/.github/workflows/witness.yml@refs/heads/reusable-workflow", + "build_signer_digest": "d66f89ec8539398ed9904d1a622bd0303bfe384c", + "build_config_uri": "https://github.com/testifysec/swf/.github/workflows/pipeline.yml@refs/heads/*", + "runner_environment": "github-hosted" + } } } ] @@ -237,6 +277,9 @@ { "type": "https://witness.dev/attestations/command-run/v0.1" }, + { + "type": "https://slsa.dev/provenance/v1.0" + }, { "type": "https://witness.dev/attestations/product/v0.1" } @@ -260,7 +303,15 @@ ], "roots": [ "dcf166eebe7cbd9760947a88213d94e656349c647d439569dc76a275f05b7159" - ] + ], + "extensions": { + "issuer": "https://token.actions.githubusercontent.com", + "source_repository_uri": "https://github.com/testifysec/swf", + "build_signer_uri": "https://github.com/testifysec/witness-run-action/.github/workflows/witness.yml@refs/heads/reusable-workflow", + "build_signer_digest": "d66f89ec8539398ed9904d1a622bd0303bfe384c", + "build_config_uri": "https://github.com/testifysec/swf/.github/workflows/pipeline.yml@refs/heads/*", + "runner_environment": "github-hosted" + } } } ] @@ -280,6 +331,9 @@ { "type": "https://witness.dev/attestations/command-run/v0.1" }, + { + "type": "https://slsa.dev/provenance/v1.0" + }, { "type": "https://witness.dev/attestations/product/v0.1" } @@ -303,7 +357,15 @@ ], "roots": [ "dcf166eebe7cbd9760947a88213d94e656349c647d439569dc76a275f05b7159" - ] + ], + "extensions": { + "issuer": "https://token.actions.githubusercontent.com", + "source_repository_uri": "https://github.com/testifysec/swf", + "build_signer_uri": "https://github.com/testifysec/witness-run-action/.github/workflows/witness.yml@refs/heads/reusable-workflow", + "build_signer_digest": "d66f89ec8539398ed9904d1a622bd0303bfe384c", + "build_config_uri": "https://github.com/testifysec/swf/.github/workflows/pipeline.yml@refs/heads/*", + "runner_environment": "github-hosted" + } } } ] @@ -346,50 +408,15 @@ ], "roots": [ "dcf166eebe7cbd9760947a88213d94e656349c647d439569dc76a275f05b7159" - ] - } - } - ] - }, - "cve-scan": { - "name": "cve-scan", - "attestations": [ - { - "type": "https://witness.dev/attestations/environment/v0.1" - }, - { - "type": "https://witness.dev/attestations/git/v0.1" - }, - { - "type": "https://witness.dev/attestations/material/v0.1" - }, - { - "type": "https://witness.dev/attestations/command-run/v0.1" - }, - { - "type": "https://witness.dev/attestations/product/v0.1" - } - ], - "functionaries": [ - { - "type": "root", - "certConstraint": { - "commonname": "*", - "dnsnames": [ - "*" - ], - "emails": [ - "*" ], - "organizations": [ - "*" - ], - "uris": [ - "*" - ], - "roots": [ - "dcf166eebe7cbd9760947a88213d94e656349c647d439569dc76a275f05b7159" - ] + "extensions": { + "issuer": "https://token.actions.githubusercontent.com", + "source_repository_uri": "https://github.com/testifysec/swf", + "build_signer_uri": "https://github.com/testifysec/witness-run-action/.github/workflows/witness.yml@refs/heads/reusable-workflow", + "build_signer_digest": "d66f89ec8539398ed9904d1a622bd0303bfe384c", + "build_config_uri": "https://github.com/testifysec/swf/.github/workflows/pipeline.yml@refs/heads/*", + "runner_environment": "github-hosted" + } } } ] @@ -432,7 +459,15 @@ ], "roots": [ "dcf166eebe7cbd9760947a88213d94e656349c647d439569dc76a275f05b7159" - ] + ], + "extensions": { + "issuer": "https://token.actions.githubusercontent.com", + "source_repository_uri": "https://github.com/testifysec/swf", + "build_signer_uri": "https://github.com/testifysec/witness-run-action/.github/workflows/witness.yml@refs/heads/reusable-workflow", + "build_signer_digest": "d66f89ec8539398ed9904d1a622bd0303bfe384c", + "build_config_uri": "https://github.com/testifysec/swf/.github/workflows/pipeline.yml@refs/heads/*", + "runner_environment": "github-hosted" + } } } ] @@ -440,7 +475,7 @@ }, "roots": { "dcf166eebe7cbd9760947a88213d94e656349c647d439569dc76a275f05b7159": { - "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXcKS2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweQpNVEV3TURjeE16VTJOVGxhRncwek1URXdNRFV4TXpVMk5UaGFNQ294RlRBVEJnTlZCQW9UREhOcFozTjBiM0psCkxtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDcKWGVGVDRyYjNQUUd3UzRJYWp0TGszL09sbnBnYW5nYUJjbFlwc1lCcjVpKzR5bkIwN2NlYjNMUDBPSU9aZHhleApYNjljNWlWdXlKUlErSHowNXlpK1VGM3VCV0FsSHBpUzVzaDArSDJHSEU3U1hyazFFQzVtMVRyMTlMOWdnOTJqCll6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUlkKd0I1ZmtVV2xacWw2ekpDaGt5TFFLc1hGK2pBZkJnTlZIU01FR0RBV2dCUll3QjVma1VXbFpxbDZ6SkNoa3lMUQpLc1hGK2pBS0JnZ3Foa2pPUFFRREF3TnBBREJtQWpFQWoxbkhlWFpwKzEzTldCTmErRURzRFA4RzFXV2cxdENNCldQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjkKVE5NZWE3SXgvc3RKNVRmY0xMZUFCTEU0Qk5KT3NRNHZuQkhKCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNHakNDQWFHZ0F3SUJBZ0lVQUxuVmlWZm5VMGJySmFzbVJrSHJuL1VuZmFRd0NnWUlLb1pJemowRUF3TXcKS2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweQpNakEwTVRNeU1EQTJNVFZhRncwek1URXdNRFV4TXpVMk5UaGFNRGN4RlRBVEJnTlZCQW9UREhOcFozTjBiM0psCkxtUmxkakVlTUJ3R0ExVUVBeE1WYzJsbmMzUnZjbVV0YVc1MFpYSnRaV1JwWVhSbE1IWXdFQVlIS29aSXpqMEMKQVFZRks0RUVBQ0lEWWdBRThSVlMveXNIK05PdnVEWnlQSVp0aWxnVUY5TmxhcllwQWQ5SFAxdkJCSDFVNUNWNwo3TFNTN3MwWmlING5FN0h2N3B0UzZMdnZSL1NUazc5OExWZ016TGxKNEhlSWZGM3RIU2FleExjWXBTQVNyMWtTCjBOL1JnQkp6LzlqV0NpWG5vM3N3ZVRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RXdZRFZSMGxCQXd3Q2dZSUt3WUIKQlFVSEF3TXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMzlQcHoxWWtFWmI1cU5qcApLRldpeGk0WVpEOHdId1lEVlIwakJCZ3dGb0FVV01BZVg1RkZwV2FwZXN5UW9aTWkwQ3JGeGZvd0NnWUlLb1pJCnpqMEVBd01EWndBd1pBSXdQQ3NRSzREWWlaWURQSWFEaTVIRktuZnhYeDZBU1NWbUVSZnN5bllCaVgyWDZTSlIKblpVODQvOURaZG5GdnZ4bUFqQk90NlFwQmxjNEovMER4dmtUQ3FwY2x2emlMNkJDQ1BuamRsSUIzUHUzQnhzUApteWdVWTdJaTJ6YmRDZGxpaW93PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgo=", "intermediates": [ "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXcKS2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweQpNVEV3TURjeE16VTJOVGxhRncwek1URXdNRFV4TXpVMk5UaGFNQ294RlRBVEJnTlZCQW9UREhOcFozTjBiM0psCkxtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDcKWGVGVDRyYjNQUUd3UzRJYWp0TGszL09sbnBnYW5nYUJjbFlwc1lCcjVpKzR5bkIwN2NlYjNMUDBPSU9aZHhleApYNjljNWlWdXlKUlErSHowNXlpK1VGM3VCV0FsSHBpUzVzaDArSDJHSEU3U1hyazFFQzVtMVRyMTlMOWdnOTJqCll6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUlkKd0I1ZmtVV2xacWw2ekpDaGt5TFFLc1hGK2pBZkJnTlZIU01FR0RBV2dCUll3QjVma1VXbFpxbDZ6SkNoa3lMUQpLc1hGK2pBS0JnZ3Foa2pPUFFRREF3TnBBREJtQWpFQWoxbkhlWFpwKzEzTldCTmErRURzRFA4RzFXV2cxdENNCldQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjkKVE5NZWE3SXgvc3RKNVRmY0xMZUFCTEU0Qk5KT3NRNHZuQkhKCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" ] @@ -451,4 +486,4 @@ "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvekNDQmVlZ0F3SUJBZ0lKQU1IcGhoWU5xT21BTUEwR0NTcUdTSWIzRFFFQkRRVUFNSUdWTVJFd0R3WUQKVlFRS0V3aEdjbVZsSUZSVFFURVFNQTRHQTFVRUN4TUhVbTl2ZENCRFFURVlNQllHQTFVRUF4TVBkM2QzTG1aeQpaV1YwYzJFdWIzSm5NU0l3SUFZSktvWklodmNOQVFrQkZoTmlkWE5wYkdWNllYTkFaMjFoYVd3dVkyOXRNUkl3CkVBWURWUVFIRXdsWGRXVnllbUoxY21jeER6QU5CZ05WQkFnVEJrSmhlV1Z5YmpFTE1Ba0dBMVVFQmhNQ1JFVXcKSGhjTk1UWXdNekV6TURFMU1qRXpXaGNOTkRFd016QTNNREUxTWpFeldqQ0JsVEVSTUE4R0ExVUVDaE1JUm5KbApaU0JVVTBFeEVEQU9CZ05WQkFzVEIxSnZiM1FnUTBFeEdEQVdCZ05WQkFNVEQzZDNkeTVtY21WbGRITmhMbTl5Clp6RWlNQ0FHQ1NxR1NJYjNEUUVKQVJZVFluVnphV3hsZW1GelFHZHRZV2xzTG1OdmJURVNNQkFHQTFVRUJ4TUoKVjNWbGNucGlkWEpuTVE4d0RRWURWUVFJRXdaQ1lYbGxjbTR4Q3pBSkJnTlZCQVlUQWtSRk1JSUNJakFOQmdrcQpoa2lHOXcwQkFRRUZBQU9DQWc4QU1JSUNDZ0tDQWdFQXRnS09EakF5OFJFUTJXVE5xVXVkQW5qaGxDcnBFNnFsCm1RZk5wcGVUbVZ2WnJINHp1dG4rTndUYUhBR3BqU0d2NC9XUnBaMXdaM0JSWjVtUFVCWnlMZ3EwWXJJZlE1RngKMHMvTVJaUHpjMXIzbEtXck1SOXNBUXg0bU40ejExeEZFTzUyOUwwZEZKalBGOU1EOEdwZDJmZVd6R3lwdGxlbApiK1BxVCsrK2ZPYTJvWTArTmFNTTdsL3hjTkhQT2FNejAvMm9sazBpMjJoYktlVmh2b2tQQ3FoRmh6c3VoS3NtCnE0T2Yvbyt0NmRJN3N4NWgwblBNbTRnR1NSaGZxK3o2QlRSZ0NycVFHMkZPTG9WRmd0NmlJbS9Cbk5mZlVyN1YKRFlkM3pabUl3Rk9qL0gzREtIb0dpay94SzNFODJZQTJadWxWT0ZSVy96ajRBcGpQYTVPRmJwSWtkMHBtenh6ZApFY0w0NzloU0E5ZEZpeVZtU3hQdFk1emUxUCtCRTliTVUxUFNjcFJ6dzhNSEZYeHlLcVcxM1F2N0xXdzRzYmszClNjaUI3R0FDYlFpVkd6Z2t2WEc2eTg1SE91dldOdkM1R0xTaXlQOUdsUEIwVjY4dGJ4ejRKVlRSZHcvWG4vWFQKRk56UkJNM2NxOGxCT0FWdC9QQVg1K3VGY3YxUzl3RkU4WWphQmZXQ1AxamRCaWwrYzRlKzB0ZHl3VDJvSm1ZQgpCRi9rRXQxd21Hd01tSHVuTkV1UU56aDFGdEpZNTRoYlVmaVdpMzhtQVNFN3hNdE1oZmovQzRTdmFwaUROODM3CmdZYVBmczh4M0taeGJYN0MzWUFzRm5KaW5sd0FVc3MxZmRLYXI4US9ZVnM3SC9uVTRjNEl4eHh6NGY2N2ZjVnEKTTJJVEtlbnRiQ01DQXdFQUFhT0NBazR3Z2dKS01Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRRApBZ0hHTUIwR0ExVWREZ1FXQkJUNlZRMk1OR1pSUTB6MzU3T25iSld2ZXVha2x6Q0J5Z1lEVlIwakJJSENNSUcvCmdCVDZWUTJNTkdaUlEwejM1N09uYkpXdmV1YWtsNkdCbTZTQm1EQ0JsVEVSTUE4R0ExVUVDaE1JUm5KbFpTQlUKVTBFeEVEQU9CZ05WQkFzVEIxSnZiM1FnUTBFeEdEQVdCZ05WQkFNVEQzZDNkeTVtY21WbGRITmhMbTl5WnpFaQpNQ0FHQ1NxR1NJYjNEUUVKQVJZVFluVnphV3hsZW1GelFHZHRZV2xzTG1OdmJURVNNQkFHQTFVRUJ4TUpWM1ZsCmNucGlkWEpuTVE4d0RRWURWUVFJRXdaQ1lYbGxjbTR4Q3pBSkJnTlZCQVlUQWtSRmdna0F3ZW1HRmcybzZZQXcKTXdZRFZSMGZCQ3d3S2pBb29DYWdKSVlpYUhSMGNEb3ZMM2QzZHk1bWNtVmxkSE5oTG05eVp5OXliMjkwWDJOaApMbU55YkRDQnp3WURWUjBnQklISE1JSEVNSUhCQmdvckJnRUVBWUh5SkFFQk1JR3lNRE1HQ0NzR0FRVUZCd0lCCkZpZG9kSFJ3T2k4dmQzZDNMbVp5WldWMGMyRXViM0puTDJaeVpXVjBjMkZmWTNCekxtaDBiV3d3TWdZSUt3WUIKQlFVSEFnRVdKbWgwZEhBNkx5OTNkM2N1Wm5KbFpYUnpZUzV2Y21jdlpuSmxaWFJ6WVY5amNITXVjR1JtTUVjRwpDQ3NHQVFVRkJ3SUNNRHNhT1VaeVpXVlVVMEVnZEhKMWMzUmxaQ0IwYVcxbGMzUmhiWEJwYm1jZ1UyOW1kSGRoCmNtVWdZWE1nWVNCVFpYSjJhV05sSUNoVFlXRlRLVEEzQmdnckJnRUZCUWNCQVFRck1Da3dKd1lJS3dZQkJRVUgKTUFHR0cyaDBkSEE2THk5M2QzY3VabkpsWlhSellTNXZjbWM2TWpVMk1EQU5CZ2txaGtpRzl3MEJBUTBGQUFPQwpBZ0VBYUs5K3Y1T0ZZdTlNNnp0WUMrTDY5c3cxb21keWxpODlsWkFmcFdNTWg5Q1JtSmhNNktCcU0vaXB3b0x0Cm54eXhHc2JDUGhjUWp1VHZ6bSt5bE42VndUTW1JbFZ5VlNMS1laY2RTanQvZUNVTis0MUs3c0Q3R1ZteFpCQUYKSUxuQkRtVEdKbUxrclUwS3V1SXBqOGxJL0U2WjZObm11UDIrUkFRU0hzZkJRaTZzc3NuWE1vNEhPVzVndFBPNwpnRHJVcFZYSUQrKzFQNFhuZGtvS243U3Z3NW4welM5ZnYxaHhCY1lJSFBQUVV6ZTJ1MzBiQVF0MG4waUl5Ukx6CmFXdWh0cEF0ZDdmZndFYkFTZ3pCN0UrTkdGNHRwVjM3ZThLaUEyeGlHU1JxVDVuZHUyOGZncE9ZODdnRDNBcloKRGN0WnZ2VENmSGRBUzVrRU8zZ25HR2VaRVZMRG1mRXN2OFRHSmEzQWxqVmE1RTQwSVFEc1VYcFFMaThHK1VDNAoxRFdadThFVlQ0cm5ZYUN3MVZYN1NoT1IxUE5DQ3ZqYjhTOHRmZHVkZDl6aFUzZ0VCMHJ4ZGVUeTF0VmJOTFhXCjk5eTkweGN3cjFaSURVd00veFEvbm9POEZSaG0wTG9QQzczRWYrSjRaQmRydld3YXVGM3pKZTMzZDRpYnhFY2IKOC9wejVXekZrZWl4WU0ybnNIaHFIc0JLdzdKUG91S05YUm5sNUlBRTFlRm1xRHlDN0cvVlQ3T0Y2Njl4TTZoYgpVdDVHMjFKRTRjTks2Tk51Y1MrZnpnMUpQWDArM1Zoc1laamo3RDV1bGpSdlFYcko4aUhnci9NNmoyb0xIdlRBCkkyTUxkcTJxalpGRE9DWHN4QnhKcGJtTEdCeDlvdzZaZXJsVXh6d3MyQVd2MnBrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" } } - } \ No newline at end of file + } diff --git a/policy.rego b/policy.rego new file mode 100644 index 0000000..5d7a201 --- /dev/null +++ b/policy.rego @@ -0,0 +1,29 @@ +policy rego + +// lint commandrun cmd validation +package commandrun.cmd + +deny[msg] { + input.cmd != ["/bin/sh", "-c", "hadolint -f sarif Dockerfile > hadolint.sarif"] + msg := "unexpected cmd" +} + +// all github jwt validation +package github.attributes + +import rego.v1 + +deny[msg] if { + input.jwt.claims.iss != "https://token.actions.githubusercontent.com" + msg := "unexpected issuer" +} + +deny[msg] if { + input.projecturl != "https://github.com/testifysec/swf" + msg := "unexpected projecturl" +} + +deny[msg] if { + not startswith(input.jwt.claims.workflow_ref, "testifysec/swf/.github/workflows/pipeline.yml") + msg := "unexpected workflow_ref" +} \ No newline at end of file