diff --git a/.github/workflows/certs/cocert.pub b/.github/workflows/certs/cocert.pub new file mode 100644 index 0000000..7bd09fd --- /dev/null +++ b/.github/workflows/certs/cocert.pub @@ -0,0 +1,6 @@ +-----BEGIN PUBLIC KEY----- +MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQAnGt2ksIcVCDCxaF1TpJMTjhvwgSk +39O1COufymnb99jJ7YT0SIbeNuzn9OtUceShJHPq911DzAfEcjsWQB8QzK4BdYbS +GGDD1A+07V8jCes9iXSPU8LT3iN11er2X9wqkg0WawVfAvI1oo4bP0KEwiTuuMxA +nde7+i9mzNuAy/De0HM= +-----END PUBLIC KEY----- diff --git a/.github/workflows/certs/cocert0.key b/.github/workflows/certs/cocert0.key new file mode 100644 index 0000000..b999def --- /dev/null +++ b/.github/workflows/certs/cocert0.key @@ -0,0 +1,23 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +eyJrZGYiOnsibmFtZSI6InNjcnlwdCIsInBhcmFtcyI6eyJOIjozMjc2OCwiciI6 +OCwicCI6MX0sInNhbHQiOiI5ZEN5QUl4YjFxaEpnRTRNUDdUTjhuNmsvMHRFbmRo +Mjd6eXdNNGx4TDdVPSJ9LCJjaXBoZXIiOnsibmFtZSI6Im5hY2wvc2VjcmV0Ym94 +Iiwibm9uY2UiOiI5VVA5ZVhSRlk3aUZUYVBBTVM1SEZzMnVsVmE5bnByUSJ9LCJj +aXBoZXJ0ZXh0IjoibUhZUE1rR3J4bTM5SmdZNDJKRWlTdGFTOXJ6YjZHVjVwcXBo +R1BuRytXQTkwUHN0cHE2Q2V4d0NXTlN2NVRrMHQ2OEtlQjcyUzA0ODFuc29JUUQw +ZDN4K0dxMEhWZjJrVzIxc1U5V043RmgzeVNOeVo0bGlxUmE1RHFBT2E1L3JpWDZi +SXZDRmdEUHU5TTAveEJxRGs4Ym9IU2d1WlFQSEZaNjkrTWdPZmxFYkZkOC8zNzhP +Sy95aVJ2S2Vwb2lsZmRLOXpZblZLcmZMWE4yY29SeDdVYUVkUG5GVjAzR0w0b05m +SDJCdHVyVGFhTjU0SFlHVFhHYzVNVWMxMlpJbkJycldHZXRReTZNQTNDN3FnTThh +ZVB6RmVQZ2lNTmQwS1dLS0ZkMDVDaWZ1RVV1WUExYmQyQkV5MjJCN0t6TG5teElQ +bHRvSGpTV3FkY1ZEMGZJdTFncUdUUSt0UWJxSDc0YnNUZDNPYkFJdWJudnNMOGZF +R1l6VnpsSm96cFN3bXhUMFhOMS8xb29oMlp3SEJpcnRnUkZ1azBEYW5nZlVBZjA5 +R29CWVZQbjJ5Q0tuME50ekJSKzV5UTR3QVJCd25KRW96R3VpWk5DWjh4Vi9CaC95 +Q2k1N1pHSjlhQ2xnUEFXaDFSNy9FWGtDM1RIQU14NzFsYnlSZ1hPN2oyV2xBZEpP +cGVVQ3RuZFZZQWYrWGtRcnRqNzlQVE5VZ0k1NDVOL0VFaU9hV1k3UHJybXVHWS9a +cWVraFc2d2YzeVFEY0xQRFRLejYrRDJWeUFNVUlIbG12L21teEo4VTNiZFpmZTBp +aFpoR25xZ2JCTGRvU3g3ZlJ5RWFCK2FUV0xsUEluRzNwajFRdWh4ajY1NFJ5UjFB +OCtCYnJwRU52cHQzTUVGWDVWYmxVdlhRN3FtVVgyUGVzWnB5M0JxMTJ6bHN6elZZ +M1pSOHkvdjF0OElTc05MV1IxdVN4UGNUR3pBRm5ORW9mOUxtWXlaUXlDRlg4MUQ5 +In0= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/.github/workflows/certs/cocert1.key b/.github/workflows/certs/cocert1.key new file mode 100644 index 0000000..4a721de --- /dev/null +++ b/.github/workflows/certs/cocert1.key @@ -0,0 +1,23 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +eyJrZGYiOnsibmFtZSI6InNjcnlwdCIsInBhcmFtcyI6eyJOIjozMjc2OCwiciI6 +OCwicCI6MX0sInNhbHQiOiJRemZ1NVB2SU8xTmV3NW9Nb2J1VUFxSitBRXV0aVNQ +TVhGRGRDaFhWNUVrPSJ9LCJjaXBoZXIiOnsibmFtZSI6Im5hY2wvc2VjcmV0Ym94 +Iiwibm9uY2UiOiJwNjR1VDcyVHY4MjkzOFB3V3hqWkRwY0pCTjROZVRWNCJ9LCJj +aXBoZXJ0ZXh0IjoicHZaaGNBRVMvdmJ6RzR4RFBHZDZoYm5GVktKbkQyN0tpeVlN +ekZRWDUrTkpyY2tDMHhuR1RraWMyRGh2Z0RzUFZndE1CNWtpYUtwYlhzTkZmYXN2 +YWdMMzdnY1c0azhOdlA5VElUWHJBV0wyN052Q3dWUm5HTExyeGFHOTJYT01PV1ZU +aXVKRkVJQmE5RjZOUWN0R0c2RzA5NENxdE9jYW1Yd3ZuYUFNUHVJWmZ3V2xoNmV0 +N29vZnF4K0cwMkdPbDlvalo1dm1BNTBZaEpPRVkvTFRKNHJWanZCVDZRREU2TzJ5 +QXBKb0E0WGJKMW42RzdheGNxdENOeEtrbXN6c3lVVW5tV2RkVG5pRERyV1Nqb2Ju +YXZ5eFVhd2wvaVgrUUZUdnJQMHJyQ2R6QjMwVEVQOSt3bHdZTjdQQ1dBcFZVVGtV +S2dHZk9DaEdVN1ZDSFp0VlVyWklNUEhtb2ZmeEx2WnA4ZlEvRTlSbjBjUy83UnJF +TVZWR1psdmRtWG5YN1pMS0JYQUo3azVjaTVnQlA0b2FodS9abFFCYTVWTFVmZVJP +MTBvdWpUSWxsU0FZSXQ0K3E1Y2gzMjlzUmsvZThoODhPbDFzL2Fsbm9Pd01CL0ZT +QUV2TTNsQmVqMTBNck9hblZzc3dtTzU0NzFFUUVGbjI2NHh4RG9ZNHdBanBEN21I +dHM2VUtna1N1eG9WakM1dHdpVzJsOTBnN3A2VitIK2Z2cUxlOGY3WDlXNlVDNWtS +aU1JekF5OWxocUJuL2ttTXVib1lETWZvZFlUSm11SGF3NlpIQnNoNGFQWVFVT0Uy +MkZvZExhS1l4VVdQcXQ5RENBNitPUlhIenc1d3V2VEhMZFZYVWgxb0h4WU5pb3g3 +Ty9oMGdyMWNpRW5wZHZEVXVMZDVPZ0hRbjg2RG4wd1NaRWNQMFc5a3pVNVNNbnpM +VDU2UjF5UTFUSHhWa3k2SDRBMExxQ0dYa3RkUG5UTjVKWW1nQnNnR3ZjUVJZVjdW +In0= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..48b2d6f --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,70 @@ +# Copyright (c) 2021 Furkan Türkal +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +name: Publish + +on: + push: + tags: + - "v[0-9]+.[0-9]+.[0-9]+*" + workflow_run: + workflows: [ "Release" ] + branches: [ main ] + types: + - completed + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Get TAG + id: get_tag + run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/} + - uses: sigstore/cosign-installer@main + with: + cosign-release: 'v0.4.0' + - uses: actions/setup-go@v2 + with: + go-version: '1.16.3' + - name: Install ko + run: | + curl -L https://github.com/google/ko/releases/download/v0.8.2/ko_0.8.2_Linux_x86_64.tar.gz | tar xzf - ko && \ + chmod +x ./ko && sudo mv ko /usr/local/bin/ + - name: Login to Docker Registry + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + registry: ghcr.io + - name: Sign & Publish + run: | + set -x + + curl https://gist.githubusercontent.com/Dentrax/ea76daab84bcd90953397b31f12a28f3/raw/4d307796d7b9c94b6e99f26afdbddce879a7fe0b/cocert2.key -o cocert2.key + + echo -n "${{secrets.PASSWORD_COCERT_KEY0}}" | go run . decrypt -f .github/workflows/certs/cocert0.key -o cocert0.key.decrypted + echo -n "${{secrets.PASSWORD_COCERT_KEY2}}" | go run . decrypt -f cocert2.key -o cocert2.key.decrypted + echo -n "${{secrets.PASSWORD_COCERT_MASTER}}" | go run . combine -F cocert0.key.decrypted -F cocert2.key.decrypted -o private.key -t "ENCRYPTED COSIGN PRIVATE KEY" + + GIT_HASH=$(git rev-parse HEAD) + export KO_DOCKER_REPO=ghcr.io/dentrax/cocert + + ko publish --bare ./ + echo -n "${{secrets.PASSWORD_COCERT_MASTER}}" | cosign sign -key private.key -a GIT_HASH=$GIT_HASH $KO_DOCKER_REPO \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..677a0d5 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,42 @@ +# Copyright (c) 2021 Furkan Türkal +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +name: Release + +on: + push: + tags: + - "v[0-9]+.[0-9]+.[0-9]+*" + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Setup Go + uses: actions/setup-go@v2 + with: + go-version: 1.16 + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..1b832f8 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,79 @@ +# Copyright (c) 2021 Furkan Türkal +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +name: Test + +on: + push: + paths-ignore: + - '**.md' + pull_request: + paths-ignore: + - '**.md' + +jobs: + Build: + strategy: + fail-fast: false + matrix: + go-version: [1.16.x] + platform: [ubuntu-latest] + runs-on: ${{ matrix.platform }} + steps: + - name: Setup Go ${{ matrix.go }} + uses: actions/setup-go@v1 + with: + go-version: ${{ matrix.go-version }} + - name: Fetch Repository + uses: actions/checkout@v2 + - name: Tidy + run: go mod tidy + - name: Build + run: go build -v . + - name: Test + run: go test ./... -v -race + - name: Setup Prerequisites + run: | + sudo npm install -g bats --force + sudo apt-get install expect + - name: E2E Test + run: pushd ./test; bats ./e2e.bats; popd + + golangci: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: golangci-lint + uses: golangci/golangci-lint-action@v2 + with: + version: v1.39 + + analyze: + name: Analyze + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: go + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fcf4aee --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +### IDE +.idea + +### Go +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +.DS_Store + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +vendor/ + +*.cert + +cocert \ No newline at end of file diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..2c20546 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,29 @@ +run: + concurrency: 4 + timeout: 5m + +linters: + enable: + - asciicheck + - structcheck + - varcheck + - staticcheck + - stylecheck + - prealloc + - gofmt + - goimports + - golint + - gosec + - ineffassign + - vet + - unused + - unparam + - unconvert + - misspell + - revive + +issues: + exclude-rules: + - path: test + linters: + - gosec \ No newline at end of file diff --git a/.ko.yaml b/.ko.yaml new file mode 100644 index 0000000..6a065d2 --- /dev/null +++ b/.ko.yaml @@ -0,0 +1,20 @@ +# Copyright (c) 2021 Furkan Türkal +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +defaultBaseImage: gcr.io/distroless/static:nonroot \ No newline at end of file diff --git a/.res/arch.excalidraw b/.res/arch.excalidraw new file mode 100644 index 0000000..bef3b68 --- /dev/null +++ b/.res/arch.excalidraw @@ -0,0 +1,6945 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 229, + "versionNonce": 1415891001, + "isDeleted": false, + "id": "Zxy419vMRHWwi5Bn5J7r1", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1870.1111111111106, + "y": 395.9444444444441, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 166.6666666666667, + "height": 158.8888888888888, + "seed": 1430938204, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "K3IJTpLq7XLeu3wpzMsJG", + "X9EJL4uuCupA5nCwzF5ai", + "tv1RFLeJ1tlot4zVh3mBJ", + "GUC8vPRN7JRgmkQ8ndm0g", + "vyW96ppGamktLN2qevtG5", + "_bIjsRoAOpxf4ZvIyS4lc", + "cV9IKlc9_hel42eDkpcgK", + "0gQFcJjI5L0XmO7kYHNao" + ] + }, + { + "type": "line", + "version": 497, + "versionNonce": 957791801, + "isDeleted": false, + "id": "SEDoSi7pnWTF3qS0Hnw3y", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1979.8807626058165, + "y": 461.49257565663027, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 23.59993204453979, + "height": 27.139921851220766, + "seed": 2006024759, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.59993204453979, + -27.139921851220766 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 476, + "versionNonce": 392568279, + "isDeleted": false, + "id": "97mzjkNGOeZtdXUExXb6M", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1931.730308262138, + "y": 431.002706759239, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 11.799966022269896, + "height": 34.80989976569622, + "seed": 635969721, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 11.799966022269896, + 34.80989976569622 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 576, + "versionNonce": 267685657, + "isDeleted": false, + "id": "P8v3FP2whPlcsxKXIYuoI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 1.8061937385605678, + "x": 1955.7701893323479, + "y": 444.90332750215464, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 11.799966022269896, + "height": 34.80989976569622, + "seed": 615654231, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 11.799966022269896, + 34.80989976569622 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 481, + "versionNonce": 45239031, + "isDeleted": false, + "id": "Qo2UoQTfYWt-SWFeGUcWz", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1931.2238573251684, + "y": 428.42124678621747, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 23.59993204453979, + "height": 27.139921851220766, + "seed": 1366663577, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.59993204453979, + -27.139921851220766 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 488, + "versionNonce": 1889879033, + "isDeleted": false, + "id": "VbqRNAx8PHo-O5F7-CRKe", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2004.5232128913826, + "y": 434.650776477151, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 11.209967721156401, + "height": 37.16989297015019, + "seed": 1667342455, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -11.209967721156401, + -37.16989297015019 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 466, + "versionNonce": 1245434903, + "isDeleted": false, + "id": "C8tCejJ0Sfxj52id_37SP", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1954.5282567226045, + "y": 401.78834264968725, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 32.449906561242216, + "height": 2.949991505567474, + "seed": 895485561, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 32.449906561242216, + 2.949991505567474 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 495, + "versionNonce": 1730960601, + "isDeleted": false, + "id": "XPv3jVqQPDit0WGfXZxgv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1951.2033633020415, + "y": 447.5855793180325, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 25.95992524899378, + "height": 28.319918453447762, + "seed": 1432648087, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 25.95992524899378, + -28.319918453447762 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 466, + "versionNonce": 905394487, + "isDeleted": false, + "id": "YxLjBGZsQ4KI4ySLlvlpq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1969.0890624745894, + "y": 446.2849389490283, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 10.029971118929415, + "height": 10.029971118929415, + "seed": 2087374681, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 10.029971118929415, + -10.029971118929415 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 490, + "versionNonce": 857561529, + "isDeleted": false, + "id": "prxhZY7eGx5ik7X7twbgf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1949.0580284998, + "y": 429.26807641400876, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 10.029971118929415, + "height": 10.029971118929415, + "seed": 1877946039, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 10.029971118929415, + -10.029971118929415 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 547, + "versionNonce": 457767511, + "isDeleted": false, + "id": "8uCxca4mBVLuHrCHzMwRY", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1939.5455027110834, + "y": 452.93856255897833, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 60.17982671357652, + "height": 62.53981991803045, + "seed": 753499193, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -60.17982671357652, + 62.53981991803045 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 598, + "versionNonce": 1436269209, + "isDeleted": false, + "id": "xYDiF8xocJZFJWEyodNa2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1952.584982551773, + "y": 463.67771269468346, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 51.20268873996468, + "height": 51.32985219687406, + "seed": 228999127, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -51.20268873996468, + 51.32985219687406 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 489, + "versionNonce": 788895607, + "isDeleted": false, + "id": "PsyeSqpiek1nXqj8E8JuQ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1879.6959583968305, + "y": 515.7413387152213, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 23.00993374342631, + "height": 0.5899983011134952, + "seed": 918523161, + "groupIds": [ + "lUiYR5biWPipn00lebHrP" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.00993374342631, + -0.5899983011134952 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "rectangle", + "version": 233, + "versionNonce": 894755353, + "isDeleted": false, + "id": "lWb7fsILLWtavc-4LXlpP", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 813, + "y": 205, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 168, + "height": 135, + "seed": 1820306616, + "groupIds": [ + "CFUHYjpSKDKfDdkHjsxfM" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 218, + "versionNonce": 544516087, + "isDeleted": false, + "id": "UBEuljNMIiuu_dqBPbEYQ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 826, + "y": 231, + "strokeColor": "#1864ab", + "backgroundColor": "#228be6", + "width": 141, + "height": 91, + "seed": 2008844984, + "groupIds": [ + "CFUHYjpSKDKfDdkHjsxfM" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": "PUBLIC\nKEY", + "baseline": 78, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "rectangle", + "version": 300, + "versionNonce": 1283667705, + "isDeleted": false, + "id": "zpUqadYOKxgkeEn0As6yg", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 1010, + "y": 204.5, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 168, + "height": 135, + "seed": 1673671096, + "groupIds": [ + "31qO4PCZk4MNnN_Qr7-zu" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "EYiGdbJ4_IdnKTU9joW5D", + "woWhR26hKMb95n77fON4v", + "l1zYZFyG0pI24nVYrMHOU", + "cPVROw30Hdk1QC98wQvHw", + "B_3anBG6fdpw0iNcUQvOG" + ] + }, + { + "type": "text", + "version": 278, + "versionNonce": 430608663, + "isDeleted": false, + "id": "ITTSuRHkt_QHVU8s-dnwl", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 1014, + "y": 230.5, + "strokeColor": "#c92a2a", + "backgroundColor": "#228be6", + "width": 161, + "height": 91, + "seed": 1442637256, + "groupIds": [ + "31qO4PCZk4MNnN_Qr7-zu" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HwTtgVLDI3cjsMUSWarqA", + "h9bISLh0fuXKLmRSjgO7i" + ], + "fontSize": 36, + "fontFamily": 1, + "text": "PRIVATE\nKEY", + "baseline": 78, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 173, + "versionNonce": 416542681, + "isDeleted": false, + "id": "VpGsxx5g5a7qcvWTfWHgk", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 931.5, + "y": 91, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 133, + "height": 46, + "seed": 357353160, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "BqVR2jRy-NyJfZaGBVuLD", + "woWhR26hKMb95n77fON4v", + "l1zYZFyG0pI24nVYrMHOU", + "cPVROw30Hdk1QC98wQvHw", + "dlRjgsoZfUuXiJRWoaT0v", + "C3GxonKhH26cP51iRvxeZ", + "srZBamVhHJsf__NEHiIlv" + ], + "fontSize": 36, + "fontFamily": 1, + "text": "ECDSA", + "baseline": 32, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 134, + "versionNonce": 42358327, + "isDeleted": false, + "id": "C3GxonKhH26cP51iRvxeZ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 996.5322391559203, + "y": 142, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 103.46776084407975, + "height": 65, + "seed": 1921265864, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "VpGsxx5g5a7qcvWTfWHgk", + "focus": 0.03007518796992481, + "gap": 5 + }, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 0.4677608440797485, + 24 + ], + [ + 94.46776084407975, + 22 + ], + [ + 103.46776084407975, + 65 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 131, + "versionNonce": 274369721, + "isDeleted": false, + "id": "srZBamVhHJsf__NEHiIlv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 995.5290646208323, + "y": 142, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 97, + "height": 65, + "seed": 1340047048, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "VpGsxx5g5a7qcvWTfWHgk", + "focus": 0.045112781954887216, + "gap": 5 + }, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 0.4709353791677131, + 24 + ], + [ + -91.52906462083229, + 24 + ], + [ + -96.52906462083229, + 65 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "version": 207, + "versionNonce": 569145175, + "isDeleted": false, + "id": "nLD_EEqwOFOTaWXQ-QJgy", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1328, + "y": 211, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 391.9999999999999, + "height": 123.99999999999997, + "seed": 1365640136, + "groupIds": [ + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "eMjuCz9ToNLSQ0UUWI6aU", + "nd2uCnuCi358dhOC2u1CH", + "Zkn5-U_iAWM3NRD3jnoJK", + "GnLV6ATK98h07_rDVQpdz", + "vyW96ppGamktLN2qevtG5", + "_bIjsRoAOpxf4ZvIyS4lc" + ] + }, + { + "type": "rectangle", + "version": 253, + "versionNonce": 448433561, + "isDeleted": false, + "id": "NUdGnzr2NH7D5s6R0_pn4", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1336, + "y": 223, + "strokeColor": "#000000", + "backgroundColor": "#868e96", + "width": 104.00000000000003, + "height": 104.00000000000003, + "seed": 1769094072, + "groupIds": [ + "5c5OMDbNb-OPxN7cNx-4G", + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "alKUMA7yUO-3sl5NPAYur", + "QNNwYAIE9KgEqorI2rnvT", + "Ed9B_i-o4h4FhWV9wiWaF", + "h9bISLh0fuXKLmRSjgO7i", + "5faaYOkMBFzDSzkP_pxcN", + "CsecS12OJo-8vJAiUVsYR", + "GKMh--EpXPIICvnXMYcVf", + "K3IJTpLq7XLeu3wpzMsJG", + "Q1xv-Bt9Zf-HPJxTx9dt7", + "X9EJL4uuCupA5nCwzF5ai", + "0YrvLNVy8GRimSVely4Iu" + ] + }, + { + "type": "text", + "version": 393, + "versionNonce": 1848734839, + "isDeleted": false, + "id": "yAlVET_BRz8ypCLRyp7oB", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1341.5, + "y": 221.55384615384617, + "strokeColor": "#000000", + "backgroundColor": "#868e96", + "width": 67.30434782608697, + "height": 47.630769230769204, + "seed": 1970302152, + "groupIds": [ + "5c5OMDbNb-OPxN7cNx-4G", + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 37.276254180601995, + "fontFamily": 1, + "text": "> _", + "baseline": 33.630769230769204, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 456, + "versionNonce": 1596420729, + "isDeleted": false, + "id": "EavGzya2Q8rEIpd9g3_m8", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1585.3152173913045, + "y": 252, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 82, + "height": 41, + "seed": 164175032, + "groupIds": [ + "jKLMqRcVu7tw9IM2GWs52", + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "round", + "boundElementIds": [ + "alKUMA7yUO-3sl5NPAYur", + "QNNwYAIE9KgEqorI2rnvT", + "Ed9B_i-o4h4FhWV9wiWaF" + ], + "fontSize": 32.08695652173914, + "fontFamily": 1, + "text": "* * *", + "baseline": 29, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "line", + "version": 374, + "versionNonce": 521784727, + "isDeleted": false, + "id": "yJcgOEISrnRX_xMIZkfeX", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1678, + "y": 236.00000000000003, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 0, + "height": 70, + "seed": 636443320, + "groupIds": [ + "jKLMqRcVu7tw9IM2GWs52", + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 70 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 360, + "versionNonce": 1382333273, + "isDeleted": false, + "id": "FKlNYoJA-2tSsHNDLksNF", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1665, + "y": 306, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 26, + "height": 0, + "seed": 686136504, + "groupIds": [ + "jKLMqRcVu7tw9IM2GWs52", + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 26, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 386, + "versionNonce": 2144993975, + "isDeleted": false, + "id": "1RM79bxFTCXYJNok1buUe", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1667, + "y": 237.00000000000003, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 26, + "height": 0, + "seed": 671283144, + "groupIds": [ + "jKLMqRcVu7tw9IM2GWs52", + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 26, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 421, + "versionNonce": 80078905, + "isDeleted": false, + "id": "kl3SMXl59_5LLHHlesab3", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1663, + "y": 247, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 87, + "height": 48, + "seed": 1513144264, + "groupIds": [ + "jKLMqRcVu7tw9IM2GWs52", + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -79, + 0 + ], + [ + -87, + 48 + ], + [ + 0, + 48 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 408, + "versionNonce": 18256855, + "isDeleted": false, + "id": "bHkyDJUWAOXR5-mpNVAwo", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1690, + "y": 245.00000000000003, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 23, + "height": 52, + "seed": 1297625528, + "groupIds": [ + "jKLMqRcVu7tw9IM2GWs52", + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 22, + 0 + ], + [ + 19, + 52 + ], + [ + -1, + 52 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 153, + "versionNonce": 808352025, + "isDeleted": false, + "id": "UU97y4dx-4B4e1rjr6iiY", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1475, + "y": 226, + "strokeColor": "#000000", + "backgroundColor": "#868e96", + "width": 73, + "height": 41, + "seed": 423655624, + "groupIds": [ + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "alKUMA7yUO-3sl5NPAYur" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "ask\npassword", + "baseline": 35, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 218, + "versionNonce": 182714615, + "isDeleted": false, + "id": "QNNwYAIE9KgEqorI2rnvT", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1572.0000000000002, + "y": 289.9175046631991, + "strokeColor": "#000000", + "backgroundColor": "#868e96", + "width": 129.00000000000023, + "height": 1.118879571443017, + "seed": 1562880952, + "groupIds": [ + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "startBinding": { + "elementId": "EavGzya2Q8rEIpd9g3_m8", + "focus": -0.8125583519866495, + "gap": 13.315217391304259 + }, + "endBinding": { + "elementId": "NUdGnzr2NH7D5s6R0_pn4", + "focus": 0.31483516483516544, + "gap": 3 + }, + "points": [ + [ + 0, + 0 + ], + [ + -129.00000000000023, + 1.118879571443017 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 85, + "versionNonce": 101838329, + "isDeleted": false, + "id": "D2fIKwxu-vZun7vSOCoiR", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1479.5, + "y": 269.5, + "strokeColor": "#000000", + "backgroundColor": "#868e96", + "width": 73, + "height": 41, + "seed": 19458232, + "groupIds": [ + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "confirm\npassword", + "baseline": 35, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 202, + "versionNonce": 247908887, + "isDeleted": false, + "id": "Ed9B_i-o4h4FhWV9wiWaF", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1442, + "y": 247, + "strokeColor": "#000000", + "backgroundColor": "#868e96", + "width": 133.3152173913045, + "height": 0, + "seed": 336859576, + "groupIds": [ + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "startBinding": { + "elementId": "NUdGnzr2NH7D5s6R0_pn4", + "focus": -0.5384615384615383, + "gap": 2 + }, + "endBinding": { + "elementId": "EavGzya2Q8rEIpd9g3_m8", + "focus": 1.2439024390243905, + "gap": 10 + }, + "points": [ + [ + 0, + 0 + ], + [ + 133.3152173913045, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 114, + "versionNonce": 1030997721, + "isDeleted": false, + "id": "lU7f_xJRUYqNtIJqZMGIU", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1570.5, + "y": 310.5, + "strokeColor": "#364fc7", + "backgroundColor": "#ced4da", + "width": 143, + "height": 21, + "seed": 1817157576, + "groupIds": [ + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "ZjfNUz4L_4dHKhKA9QIkC", + "6oX2EJgvdqto8PBFnLymu", + "tv1RFLeJ1tlot4zVh3mBJ", + "GUC8vPRN7JRgmkQ8ndm0g" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "secure/non-echoed", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 146, + "versionNonce": 1504931639, + "isDeleted": false, + "id": "h9bISLh0fuXKLmRSjgO7i", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1179, + "y": 274.01966118687574, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 145, + "height": 1.0335219096471633, + "seed": 768523484, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "startBinding": { + "elementId": "ITTSuRHkt_QHVU8s-dnwl", + "focus": -0.029909526096302173, + "gap": 4 + }, + "endBinding": { + "elementId": "NUdGnzr2NH7D5s6R0_pn4", + "focus": 0.047164514317798265, + "gap": 12 + }, + "points": [ + [ + 0, + 0 + ], + [ + 145, + -1.0335219096471633 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 226, + "versionNonce": 1625785273, + "isDeleted": false, + "id": "5faaYOkMBFzDSzkP_pxcN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1381.4650744740195, + "y": 338, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 0.9738195923782769, + "height": 66.55555555555554, + "seed": 1207328476, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "startBinding": { + "elementId": "NUdGnzr2NH7D5s6R0_pn4", + "gap": 11, + "focus": 0.14132379248658314 + }, + "endBinding": { + "elementId": "wfOrAZJ1MRatgqVgVFdgk", + "gap": 4.737592835088407, + "focus": -0.11283208077786737 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0.9738195923782769, + 66.55555555555554 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "version": 4679, + "versionNonce": 638480471, + "isDeleted": false, + "id": "wfOrAZJ1MRatgqVgVFdgk", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1352.0783373825584, + "y": 409.2931483906439, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 70.67858069123133, + "height": 113.25081879410924, + "seed": 1378657508, + "groupIds": [ + "7E5fMhximiYVSTAMfHcI2" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve", + "5faaYOkMBFzDSzkP_pxcN", + "_xRklcQTzlPde27u5D7vX", + "7-haBZ4HUlXqS6USBdW1Z" + ] + }, + { + "type": "draw", + "version": 3761, + "versionNonce": 1552983193, + "isDeleted": false, + "id": "ip29R79ywJ45akmM0uhdI", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1364.0647639694694, + "y": 457.43891565514684, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 46.57983585730082, + "height": 3.249953844290203, + "seed": 805800796, + "groupIds": [ + "7E5fMhximiYVSTAMfHcI2" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0.6014697828497827 + ], + [ + 40.42449133807562, + 0.7588628355182573 + ], + [ + 46.57983585730082, + -2.491091008771946 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3787, + "versionNonce": 1840008567, + "isDeleted": false, + "id": "-gweeR9j5ngw5Uwz2uOrj", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1365.9200162074837, + "y": 426.575098139158, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 45.567415680676426, + "height": 2.8032978840147194, + "seed": 1586391140, + "groupIds": [ + "7E5fMhximiYVSTAMfHcI2" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 16.832548902953302, + -2.8032978840147194 + ], + [ + 45.567415680676426, + -0.3275477042019195 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3812, + "versionNonce": 1277340025, + "isDeleted": false, + "id": "kYfcFicL99JdFBVIfQroG", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1365.8434166911143, + "y": 493.9694724095152, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 48.33668263438425, + "height": 4.280657518731036, + "seed": 1714798556, + "groupIds": [ + "7E5fMhximiYVSTAMfHcI2" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 26.41225578429045, + -0.2552319773002338 + ], + [ + 37.62000339651456, + 2.3153712935189787 + ], + [ + 48.33668263438425, + -1.9652862252120569 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3849, + "versionNonce": 2077329047, + "isDeleted": false, + "id": "SKTz1S7TbfSdvik_SlcHP", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1362.659369509584, + "y": 505.21262081779423, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 54.40694982784246, + "height": 2.9096445412231735, + "seed": 283884516, + "groupIds": [ + "7E5fMhximiYVSTAMfHcI2" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 10.166093050596771, + -1.166642430373031 + ], + [ + 16.130660965377448, + -0.8422655250909383 + ], + [ + 46.26079588567538, + 0.6125567455206506 + ], + [ + 54.40694982784246, + -2.297087795702523 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3814, + "versionNonce": 148968025, + "isDeleted": false, + "id": "F5GC24YCD3soE_PEDAI-c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1362.9442124051498, + "y": 441.6356996924193, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 46.92865289294453, + "height": 2.4757501798128, + "seed": 296313948, + "groupIds": [ + "7E5fMhximiYVSTAMfHcI2" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 18.193786115221407, + -0.5912874140789839 + ], + [ + 46.92865289294453, + 1.884462765733816 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3829, + "versionNonce": 1060281271, + "isDeleted": false, + "id": "SaFqd3KnN6YzEusx2zLph", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1363.0517006013001, + "y": 476.11902872825874, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 46.92865289294453, + "height": 2.4757501798128, + "seed": 1129488228, + "groupIds": [ + "7E5fMhximiYVSTAMfHcI2" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 8.093938105125233, + 1.4279702913643746 + ], + [ + 18.193786115221407, + -0.5912874140789839 + ], + [ + 46.92865289294453, + 1.884462765733816 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 230, + "versionNonce": 2006933305, + "isDeleted": false, + "id": "QRf-Fwi3DrBhK-wHcjN5u", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1367.888888888889, + "y": 502.0555555555559, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 40, + "height": 26, + "seed": 372918244, + "groupIds": [ + "7E5fMhximiYVSTAMfHcI2" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 1, + "text": "PEM", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "rectangle", + "version": 310, + "versionNonce": 1542720727, + "isDeleted": false, + "id": "MsnFRliC0bMhlyiG7NQaD", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 582.1111111111113, + "y": 596.6666666666667, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 870, + "height": 415.5555555555555, + "seed": 1781509212, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "7-haBZ4HUlXqS6USBdW1Z", + "OHjuMUxA9o5IOx4mV1md9", + "eMjuCz9ToNLSQ0UUWI6aU", + "nd2uCnuCi358dhOC2u1CH", + "ZjfNUz4L_4dHKhKA9QIkC", + "v9cAQOzegEY7S9A7mBQ-p", + "6oX2EJgvdqto8PBFnLymu", + "Zkn5-U_iAWM3NRD3jnoJK" + ] + }, + { + "type": "line", + "version": 1161, + "versionNonce": 381751321, + "isDeleted": false, + "id": "kEI-PoZnDR_kxYoyilaXR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.165054667603804, + "x": 659.056471648842, + "y": 933.0741290964435, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 2.9815063404869284, + "height": 15.176311518430161, + "seed": 1974244828, + "groupIds": [ + "mbkNEzdHTjPL_DBuHjepp", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -6.388378222482618 + ], + [ + 2.9815063404869284, + -13.189965645195956 + ], + [ + 0.41452450601982893, + -21.56468974091278 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 1155, + "versionNonce": 2108316151, + "isDeleted": false, + "id": "AH7kkoP2sznPP9Px_5U2F", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.165054667603804, + "x": 653.2197617509073, + "y": 906.3048037583516, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 6.487499375322928, + "height": 7.485576202295816, + "seed": 2037728740, + "groupIds": [ + "mbkNEzdHTjPL_DBuHjepp", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1527, + "versionNonce": 1278846201, + "isDeleted": false, + "id": "MlQ_G1h-tyhXjw5T06bp3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 643.62140229069, + "y": 927.1273753891209, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 29.857488842181624, + "height": 35.192164933321614, + "seed": 2010479196, + "groupIds": [ + "mbkNEzdHTjPL_DBuHjepp", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 1432, + "versionNonce": 1767506711, + "isDeleted": false, + "id": "iYhlkJEXWC1o25nxcrAO3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.173279198979622, + "x": 668.3213516856879, + "y": 964.8038259931839, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 28.722385110446353, + "height": 39.02798265917913, + "seed": 907733348, + "groupIds": [ + "mbkNEzdHTjPL_DBuHjepp", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -6.249490448802028, + 0 + ], + [ + 7.626526682258174, + 7.323131404040242 + ], + [ + 0.2518602349814286, + 36.09873009756305 + ], + [ + -10.616069266268536, + 39.02798265917913 + ], + [ + -21.09585842818818, + 8.873912171954599 + ], + [ + -6.249490448802028, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 1668, + "versionNonce": 1938595289, + "isDeleted": false, + "id": "-WxdzaIusZnOGLkWdPQQs", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 668.2816675523529, + "y": 954.2235517551107, + "strokeColor": "#000000", + "backgroundColor": "#ffffff", + "width": 17.894049747582113, + "height": 7.411013992280796, + "seed": 2087571164, + "groupIds": [ + "mbkNEzdHTjPL_DBuHjepp", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -6.006317155120035, + -0.8610286159787126 + ], + [ + -12.722787096631132, + -0.4145360119124755 + ], + [ + -20.27499960472758, + -0.8762933203913714 + ], + [ + -10.09344176157349, + 4.504514985023713 + ], + [ + -2.3809498571454673, + -2.9064990072570818 + ], + [ + -6.006317155120035, + -0.8610286159787126 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 1083, + "versionNonce": 1333233719, + "isDeleted": false, + "id": "nwZM-IGtn8L16ukqw4Qbi", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 659.2835732995982, + "y": 938.1233759985752, + "strokeColor": "#000000", + "backgroundColor": "#ffffff", + "width": 5.7357126830059615, + "height": 6.369197916125976, + "seed": 624958692, + "groupIds": [ + "mbkNEzdHTjPL_DBuHjepp", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1133, + "versionNonce": 734886585, + "isDeleted": false, + "id": "BW-tNz576vC4x5or23nyI", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 659.761199479464, + "y": 940.8976794153525, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 1.7516248313372418, + "height": 2.3354997751163684, + "seed": 1678218076, + "groupIds": [ + "mbkNEzdHTjPL_DBuHjepp", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1071, + "versionNonce": 1575446871, + "isDeleted": false, + "id": "V7JUkucxbLOofyLGwroIv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 648.3623625136308, + "y": 938.6679358709944, + "strokeColor": "#000000", + "backgroundColor": "#ffffff", + "width": 6.3806464444354285, + "height": 6.6363302433452755, + "seed": 1886576740, + "groupIds": [ + "mbkNEzdHTjPL_DBuHjepp", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1154, + "versionNonce": 1704967065, + "isDeleted": false, + "id": "s6APgvNYWs75BRSfIO36g", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 649.3009554678824, + "y": 941.4747967863634, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 1.4921248563242617, + "height": 2.335499775116294, + "seed": 754239452, + "groupIds": [ + "mbkNEzdHTjPL_DBuHjepp", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 1152, + "versionNonce": 301868663, + "isDeleted": false, + "id": "jvPdpF2--iYvv02Tq2I9v", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.577355931884643, + "x": 1163.7668834533827, + "y": 931.007963821035, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 2.2703641989054706, + "height": 11.40891561786003, + "seed": 1903306204, + "groupIds": [ + "ZZ9b--BAQ49kFFxg2YvZL", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -2.2703641989054706, + -11.40891561786003 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 1185, + "versionNonce": 825679993, + "isDeleted": false, + "id": "PbpSR-CjhX5cHUoAXbI9A", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.577355931884643, + "x": 1161.5648891467854, + "y": 913.4854024864958, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 4.915181049088317, + "height": 5.671362748948152, + "seed": 848344548, + "groupIds": [ + "ZZ9b--BAQ49kFFxg2YvZL", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 1621, + "versionNonce": 1249918871, + "isDeleted": false, + "id": "l74fsfSz16XABAfcek-dj", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.2138034488305856, + "x": 1179.282760588674, + "y": 955.7457973143669, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 22.36574834924019, + "height": 46.76531754521886, + "seed": 73992796, + "groupIds": [ + "ZZ9b--BAQ49kFFxg2YvZL", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -11.323903145779449, + 0 + ], + [ + -0.5188287743560027, + 8.700852929750539 + ], + [ + -6.261385782944679, + 42.890086794887964 + ], + [ + -18.28682721311491, + 46.76531754521886 + ], + [ + -22.884577123596195, + 10.543386491344727 + ], + [ + -11.323903145779449, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 1268, + "versionNonce": 1280731481, + "isDeleted": false, + "id": "QmW1O9ACMlKMwy6Ee1B8J", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.12535992280317831, + "x": 1179.3955778010259, + "y": 980.5632027627252, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 18.353771949332653, + "height": 41.86954225941504, + "seed": 440949092, + "groupIds": [ + "ZZ9b--BAQ49kFFxg2YvZL", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -14.284303894431034 + ], + [ + 18.353771949332653, + -33.785186590597 + ], + [ + 5.448776047458006, + -56.153846153846075 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 1385, + "versionNonce": 430060727, + "isDeleted": false, + "id": "xUHAA1MB-d-uEF-w5nKkU", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.084301356735907, + "x": 1157.9974932217472, + "y": 981.392387732005, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 19.25085419200996, + "height": 39.5753207657485, + "seed": 1343184604, + "groupIds": [ + "ZZ9b--BAQ49kFFxg2YvZL", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -6.56766319063872, + -13.501602311174597 + ], + [ + -25.81851738264868, + -24.11237671938248 + ], + [ + -18.136304349630688, + -53.076923076923094 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "rectangle", + "version": 1176, + "versionNonce": 1884411449, + "isDeleted": false, + "id": "ZH0GfpHp3vr2xOABMu3m9", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.110994492656649, + "x": 1147.0186062457883, + "y": 931.448260644541, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 32.10901838293412, + "height": 21.105226262999302, + "seed": 37719268, + "groupIds": [ + "ZZ9b--BAQ49kFFxg2YvZL", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [] + }, + { + "type": "line", + "version": 1802, + "versionNonce": 1460176343, + "isDeleted": false, + "id": "9hrYqSVuyN-cKdlLb4zeX", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1174.55300034749, + "y": 946.3923450073272, + "strokeColor": "#000000", + "backgroundColor": "#ffffff", + "width": 20.56600876315204, + "height": 8.517634680751001, + "seed": 1828135772, + "groupIds": [ + "ZZ9b--BAQ49kFFxg2YvZL", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -5.594819979021882, + -0.8020389164899157 + ], + [ + -13.314200534182651, + -0.28887555003903304 + ], + [ + -21.994117647058943, + -0.819582963206343 + ], + [ + -10.292238487304177, + 5.364693504280325 + ], + [ + -1.4281088839068996, + -3.1529411764706765 + ], + [ + -5.594819979021882, + -0.8020389164899157 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 1225, + "versionNonce": 1611441945, + "isDeleted": false, + "id": "lrhWytYnS21Yj5_GW_hnv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1153.1342123498684, + "y": 934.6208219993557, + "strokeColor": "#000000", + "backgroundColor": "#ffffff", + "width": 6.592175553639667, + "height": 7.320253492365304, + "seed": 1543786596, + "groupIds": [ + "bEyr5A2eGBxFx2fIhAw0T", + "ZZ9b--BAQ49kFFxg2YvZL", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1219, + "versionNonce": 1908912887, + "isDeleted": false, + "id": "EnrsmDqtfrcRuyDli8m5O", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1154.748162947827, + "y": 936.378966968762, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 2.0131793606924586, + "height": 2.6842391475899965, + "seed": 292706268, + "groupIds": [ + "bEyr5A2eGBxFx2fIhAw0T", + "ZZ9b--BAQ49kFFxg2YvZL", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1226, + "versionNonce": 905599993, + "isDeleted": false, + "id": "vBmfcCBATLNhUpM5xIuxm", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1164.907191067366, + "y": 933.8359567515222, + "strokeColor": "#000000", + "backgroundColor": "#ffffff", + "width": 6.592175553639667, + "height": 7.320253492365304, + "seed": 929342436, + "groupIds": [ + "-WvgPdHuz_WJLRzhdxDtT", + "ZZ9b--BAQ49kFFxg2YvZL", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1220, + "versionNonce": 40123415, + "isDeleted": false, + "id": "P7Adznh7XKZdNKnbsikFg", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1166.5211416653278, + "y": 935.5941017209292, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 2.0131793606924586, + "height": 2.6842391475899965, + "seed": 1502805084, + "groupIds": [ + "-WvgPdHuz_WJLRzhdxDtT", + "ZZ9b--BAQ49kFFxg2YvZL", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 1098, + "versionNonce": 1914598617, + "isDeleted": false, + "id": "0q8xkbDCOusUFOVnoMscb", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.014568579661670356, + "x": 887.1665252220582, + "y": 965.9671058768397, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 25.217495179272, + "height": 37.59449766922297, + "seed": 1624394076, + "groupIds": [ + "B0J0JW9Pdzs4IkfqhWtTX", + "n0MoFUDZmrxPdINHcLU8V", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 1504, + "versionNonce": 483565879, + "isDeleted": false, + "id": "Ler8rVglZTZCmu8qEHqOR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.0668427887355465, + "x": 887.6702937020632, + "y": 928.4865362090575, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 23.94736964267002, + "height": 29.096918347908634, + "seed": 56003172, + "groupIds": [ + "B0J0JW9Pdzs4IkfqhWtTX", + "n0MoFUDZmrxPdINHcLU8V", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 968, + "versionNonce": 1208775097, + "isDeleted": false, + "id": "-ZeugMyuFvMy_Qk69OEa0", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.165054667603804, + "x": 902.7059525140412, + "y": 937.0011125567465, + "strokeColor": "#000000", + "backgroundColor": "#ffffff", + "width": 6.780112268029179, + "height": 4.14770905909726, + "seed": 1794686428, + "groupIds": [ + "B0J0JW9Pdzs4IkfqhWtTX", + "n0MoFUDZmrxPdINHcLU8V", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1015, + "versionNonce": 1651991127, + "isDeleted": false, + "id": "r3NDgiq5nSqxOPLh-xLg3", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.165054667603804, + "x": 890.688235802711, + "y": 937.1160062303277, + "strokeColor": "#000000", + "backgroundColor": "#ffffff", + "width": 6.780112268029179, + "height": 4.077769644038528, + "seed": 1818205668, + "groupIds": [ + "B0J0JW9Pdzs4IkfqhWtTX", + "n0MoFUDZmrxPdINHcLU8V", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1040, + "versionNonce": 753390233, + "isDeleted": false, + "id": "mxR2TvMr779_OiNJHu4o8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.277260558372609, + "x": 896.8681127157486, + "y": 906.2566903033409, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 6.295818534598412, + "height": 7.264406001459829, + "seed": 1096589916, + "groupIds": [ + "B0J0JW9Pdzs4IkfqhWtTX", + "n0MoFUDZmrxPdINHcLU8V", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 842, + "versionNonce": 1411841911, + "isDeleted": false, + "id": "JdTCvO-6-Y1YEEo_FvT4H", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.10819877806948064, + "x": 917.698022714364, + "y": 996.3109861537512, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 13.095557053692547, + "height": 35.508539608929496, + "seed": 167395684, + "groupIds": [ + "B0J0JW9Pdzs4IkfqhWtTX", + "n0MoFUDZmrxPdINHcLU8V", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -1.3676734472524097, + -28.491460391070504 + ], + [ + 10.295557053692479, + -46.46765856809111 + ], + [ + -2.800000000000068, + -64 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 927, + "versionNonce": 627316601, + "isDeleted": false, + "id": "WibCtIusvKzm7fsuEnWp_", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 6.166243390806045, + "x": 882.9580395291625, + "y": 1000.0929458345271, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 5.408932685722494, + "height": 31.98275815576031, + "seed": 1523578588, + "groupIds": [ + "B0J0JW9Pdzs4IkfqhWtTX", + "n0MoFUDZmrxPdINHcLU8V", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 2.017330673221511, + -32.01724184423969 + ], + [ + -2.800000000000068, + -48.20851316059338 + ], + [ + 2.608932685722425, + -64 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 791, + "versionNonce": 1680210071, + "isDeleted": false, + "id": "NdxxtofTaTSn7trMOYPWh", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 891.4021705889265, + "y": 948.6262009630368, + "strokeColor": "#000000", + "backgroundColor": "#ffffff", + "width": 14.795173556306587, + "height": 5.414403939754707, + "seed": 1937011940, + "groupIds": [ + "B0J0JW9Pdzs4IkfqhWtTX", + "n0MoFUDZmrxPdINHcLU8V", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -0.22225088792414138 + ], + [ + 14.795173556306587, + -0.6000000000001364 + ], + [ + 14.354466258884658, + 4.814403939754571 + ], + [ + 0, + -0.22225088792414138 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 714, + "versionNonce": 1405403225, + "isDeleted": false, + "id": "lq9mEikLBe9ljIPYOX_dk", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 899.376763320794, + "y": 937.2550061344846, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 4.910738456986861, + "height": 15.172922668382366, + "seed": 65321820, + "groupIds": [ + "B0J0JW9Pdzs4IkfqhWtTX", + "n0MoFUDZmrxPdINHcLU8V", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -1.4075889568526008, + -8.927077331617657 + ], + [ + -3.800000000000068, + -18.370805133515386 + ], + [ + 1.1107384569867929, + -15.852477719676003 + ], + [ + -0.022508879240977473, + -24.100000000000023 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 1146, + "versionNonce": 1210633655, + "isDeleted": false, + "id": "5Rmb1UDcNh7Dlc5Xq_NDB", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 905.3363339482848, + "y": 937.8347939398719, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 0.949540225297333, + "height": 1.6133235275225666, + "seed": 643577956, + "groupIds": [ + "L3bQ3MQo8LJAHFI8Tqkjx", + "TU8lWiChkzVzG4PnCuPuF", + "n0MoFUDZmrxPdINHcLU8V", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1176, + "versionNonce": 1172131129, + "isDeleted": false, + "id": "O5rixKBFx-_xqTOSLIHiD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 893.8764274531247, + "y": 937.2560107835501, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 0.949540225297333, + "height": 1.6133235275225666, + "seed": 653062108, + "groupIds": [ + "k1mhNFGyMT0bre89s2Ev2", + "rg6vwZSrDV7ldcPpui_x_", + "n0MoFUDZmrxPdINHcLU8V", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 335, + "versionNonce": 190054103, + "isDeleted": false, + "id": "PdAkvJfHfw8pxf7e9pUaq", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 695.1029761190537, + "y": 827.3535601491506, + "strokeColor": "#c92a2a", + "backgroundColor": "#ced4da", + "width": 27.897062770098792, + "height": 0, + "seed": 38655452, + "groupIds": [ + "b1lhyGVHXggcxpcC2hJZq", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 27.897062770098792, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 374, + "versionNonce": 51461657, + "isDeleted": false, + "id": "DIgxwzi1Q0WKSd7NtVyfo", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 1.5813115503367454, + "x": 682.8715449643344, + "y": 840.1814677057755, + "strokeColor": "#c92a2a", + "backgroundColor": "#ced4da", + "width": 27.897062770098792, + "height": 0, + "seed": 1733033060, + "groupIds": [ + "b1lhyGVHXggcxpcC2hJZq", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 27.897062770098792, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 352, + "versionNonce": 1614547959, + "isDeleted": false, + "id": "aygXB8smMvueafvAvhXkS", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 637.1328318204899, + "y": 803.2137788902703, + "strokeColor": "#c92a2a", + "backgroundColor": "#ced4da", + "width": 35.4368094647201, + "height": 59.563998887508205, + "seed": 951208932, + "groupIds": [ + "b1lhyGVHXggcxpcC2hJZq", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -11.071139874204153, + 0 + ], + [ + -30.674481280219535, + 0 + ], + [ + -44.24602533053787, + 17.341417397628963 + ], + [ + -45, + 39.20668281203071 + ], + [ + -37.460253305378714, + 56.54810020965966 + ], + [ + -28.41255727183314, + 59.563998887508205 + ], + [ + -17.85691189936332, + 59.563998887508205 + ], + [ + -9.563190535279896, + 58.05604954858392 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 302, + "versionNonce": 1515459321, + "isDeleted": false, + "id": "Gj6Ive6G3TjM40RNg0i8P", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 863.215630582755, + "y": 824.2359933046528, + "strokeColor": "#c92a2a", + "backgroundColor": "#ced4da", + "width": 117.28873691644034, + "height": 0.7871727309828218, + "seed": 1171593060, + "groupIds": [ + "XI9eTDy9X25twBuwYVsrI", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 117.28873691644034, + 0.7871727309828218 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 394, + "versionNonce": 853898519, + "isDeleted": false, + "id": "0pDWcEA-GFrdyJnQc4Wu7", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 834.8888888888887, + "y": 792.727356235835, + "strokeColor": "#c92a2a", + "backgroundColor": "#ced4da", + "width": 29.125391046364395, + "height": 65.3353366715742, + "seed": 775939548, + "groupIds": [ + "kkTxIKKcbdPfFM0rEbA9c", + "XI9eTDy9X25twBuwYVsrI", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 16.530627350639246, + 0.7871727309828221 + ], + [ + 26.763872853415933, + 17.31780008162208 + ], + [ + 29.125391046364395, + 36.2099456252098 + ], + [ + 27.551045584398747, + 59.03795482371162 + ], + [ + 14.169109157690789, + 64.5481639405914 + ], + [ + 2.3615181929484645, + 65.3353366715742 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 300, + "versionNonce": 1881754585, + "isDeleted": false, + "id": "KOl8QrP3yosacqcW-H-dN", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 958.5017089620117, + "y": 825.876881865671, + "strokeColor": "#c92a2a", + "backgroundColor": "#ced4da", + "width": 0, + "height": 24.40235466046747, + "seed": 886751708, + "groupIds": [ + "kkTxIKKcbdPfFM0rEbA9c", + "XI9eTDy9X25twBuwYVsrI", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 24.40235466046747 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 601, + "versionNonce": 2059713079, + "isDeleted": false, + "id": "W3CJ-Mn2nw1EFrkAyD3v-", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1133.5754945095182, + "y": 787.8162637374672, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 67.37883860614542, + "height": 68.52542544929302, + "seed": 1008681572, + "groupIds": [ + "khZb9Q7UErzhpAV8G7pq4", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -22.74937446065891, + 0 + ], + [ + -42.71347478840571, + 5.395702791282929 + ], + [ + -53.63977294075362, + 12.67990155951487 + ], + [ + -57.888888888888914, + 31.497415044114042 + ], + [ + -56.06783919683093, + 47.8868622726359 + ], + [ + -46.962590736541, + 61.24122668106112 + ], + [ + -31.78717663605781, + 67.31139232125436 + ], + [ + -16.611762535574606, + 68.52542544929302 + ], + [ + -5.078447819207375, + 64.27630950115775 + ], + [ + 4.026800641082547, + 55.17106104086783 + ], + [ + 9.489949717256502, + 40.60266350440396 + ], + [ + 8.275916589217848, + 24.820232839901426 + ], + [ + 4.026800641082547, + 12.67990155951487 + ], + [ + -6.29248094724603, + 5.395702791282929 + ], + [ + -22.74937446065891, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 269, + "versionNonce": 212101305, + "isDeleted": false, + "id": "g-cpXsJgDYyeFMCjEOT3i", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1145.5731879780135, + "y": 822.8986283488157, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 46.53793657481517, + "height": 1.348925697820767, + "seed": 1354621660, + "groupIds": [ + "khZb9Q7UErzhpAV8G7pq4", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 46.53793657481517, + -1.348925697820767 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 245, + "versionNonce": 1287543639, + "isDeleted": false, + "id": "_exZY7fOHTOje91GLhtuE", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 794.3333333333333, + "y": 609.1295296647435, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 72.36248023705151, + "height": 70.87047033525664, + "seed": 556434268, + "groupIds": [ + "ZcpfBNyNk2X2tz38l1lEC", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 228, + "versionNonce": 694741401, + "isDeleted": false, + "id": "mS9Xx21Nz3eW9T9Gxki7h", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 868.7343121723911, + "y": 646.9718390009474, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 111.15473768371821, + "height": 0, + "seed": 782643804, + "groupIds": [ + "ZcpfBNyNk2X2tz38l1lEC", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 111.15473768371821, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 232, + "versionNonce": 757520503, + "isDeleted": false, + "id": "pUwV_mRGP-rfXqW4xNpr5", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 979.1790757234276, + "y": 646.8282576359996, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 0, + "height": 26.85617823230777, + "seed": 2009009508, + "groupIds": [ + "ZcpfBNyNk2X2tz38l1lEC", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 26.85617823230777 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 230, + "versionNonce": 1068125817, + "isDeleted": false, + "id": "e3iIbM3DWrRZEaz1c9H7C", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 954.5065592991878, + "y": 647.1314593029148, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 0, + "height": 25.36416833051292, + "seed": 1457959908, + "groupIds": [ + "ZcpfBNyNk2X2tz38l1lEC", + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 25.36416833051292 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "arrow", + "version": 206, + "versionNonce": 566407575, + "isDeleted": false, + "id": "l2K0lbxOfvVAj4RPIGjyF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 894.3333333333333, + "y": 654.4444444444445, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 242.22222222222217, + "height": 152.22222222222217, + "seed": 1628749156, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 1.1111111111110858, + 74.44444444444434 + ], + [ + -216.66666666666674, + 74.44444444444434 + ], + [ + -241.1111111111111, + 152.22222222222217 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 219, + "versionNonce": 1445730137, + "isDeleted": false, + "id": "Vb3d3N_f00gWeqewjr50d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 894.3333333333333, + "y": 656.6666666666666, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 3.273275565686845, + "height": 147.76995801639873, + "seed": 622120028, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 3.273275565686845, + 147.76995801639873 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 224, + "versionNonce": 63334071, + "isDeleted": false, + "id": "SfAwFoBwELlwJniUuTkW8", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 895.4444444444443, + "y": 660, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 266.66666666666674, + "height": 144.44444444444446, + "seed": 938506724, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 71.11111111111109 + ], + [ + 234.44444444444457, + 71.11111111111109 + ], + [ + 266.66666666666674, + 144.44444444444446 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 168, + "versionNonce": 1329710137, + "isDeleted": false, + "id": "WhWthbH5SqB3K8v-MrjbE", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 662.9999999999998, + "y": 743.2222222222221, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 28, + "height": 46, + "seed": 1972673244, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": "S1", + "baseline": 32, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 200, + "versionNonce": 299268055, + "isDeleted": false, + "id": "W2ENMIV3NEU54aWb-aARk", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 900.9444444444443, + "y": 741.4444444444445, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 49, + "height": 46, + "seed": 1305008220, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": "S2", + "baseline": 32, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 254, + "versionNonce": 1993266457, + "isDeleted": false, + "id": "hU7LmO2NuTxMQf9fJRhta", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1094.7777777777776, + "y": 740.3333333333333, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 48, + "height": 46, + "seed": 695709156, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": "S3", + "baseline": 32, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 242, + "versionNonce": 1107780855, + "isDeleted": false, + "id": "DGfuE9SP9V0QaCP735Mn8", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 639.3333333333333, + "y": 870.3333333333333, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 30, + "height": 46, + "seed": 644371804, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": "P1", + "baseline": 32, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 260, + "versionNonce": 1346816505, + "isDeleted": false, + "id": "PGC0NLoSsQaw5fSDzm9Aj", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 877.1111111111111, + "y": 861.4444444444445, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 50, + "height": 46, + "seed": 1530156892, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": "P2", + "baseline": 32, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 286, + "versionNonce": 1407036951, + "isDeleted": false, + "id": "2g5Ja--q0ztdYpwvqg3mg", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1143.1666666666665, + "y": 858.1111111111111, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 49, + "height": 46, + "seed": 67303908, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": "P3", + "baseline": 32, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 180, + "versionNonce": 615326425, + "isDeleted": false, + "id": "QeGaoWXIOqS5zo438iRjG", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1236.0555555555554, + "y": 729.5555555555555, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 121, + "height": 46, + "seed": 124644956, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": ". . . . .", + "baseline": 32, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 269, + "versionNonce": 575525687, + "isDeleted": false, + "id": "dwSNVrWhbbz0w2HdUKxuJ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1386.7777777777776, + "y": 733.6666666666665, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 44, + "height": 46, + "seed": 326182244, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": "SN", + "baseline": 32, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 305, + "versionNonce": 1351966649, + "isDeleted": false, + "id": "x6wG9dSz5BjnbCFCel6Be", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1389.611111111111, + "y": 848.1111111111112, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 45, + "height": 46, + "seed": 930131932, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": "PN", + "baseline": 32, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 202, + "versionNonce": 901534807, + "isDeleted": false, + "id": "KgkPUg4IHrDQzqtykm3vb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1241.6111111111109, + "y": 844.7777777777777, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 121, + "height": 46, + "seed": 160202460, + "groupIds": [ + "kgMHjWfybG3gnsI4o6r8p" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": ". . . . .", + "baseline": 32, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 246, + "versionNonce": 1378025625, + "isDeleted": false, + "id": "7-haBZ4HUlXqS6USBdW1Z", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1387.947386984948, + "y": 527.6666666666665, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 0.40065993794064525, + "height": 92.50073678458227, + "seed": 25359716, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "wfOrAZJ1MRatgqVgVFdgk", + "focus": -0.007371230822715876, + "gap": 5.122699481913372 + }, + "endBinding": { + "elementId": "RIE-ff_BXBEuChUFm9jN9", + "focus": 0.39925814202293447, + "gap": 6.388152104306641 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0.40065993794064525, + 92.50073678458227 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 179, + "versionNonce": 368947575, + "isDeleted": false, + "id": "nd2uCnuCi358dhOC2u1CH", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1457.6666666666665, + "y": 777.7777777777777, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 78.88888888888914, + "height": 434.4444444444445, + "seed": 748544100, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "MsnFRliC0bMhlyiG7NQaD", + "focus": 0.5756381972896298, + "gap": 5.555555555555202 + }, + "endBinding": { + "elementId": "nLD_EEqwOFOTaWXQ-QJgy", + "focus": -0.06998340144691692, + "gap": 8.3333333333332 + }, + "points": [ + [ + 0, + 0 + ], + [ + 72.2222222222224, + -55.55555555555554 + ], + [ + 78.88888888888914, + -434.4444444444445 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 127, + "versionNonce": 386499961, + "isDeleted": false, + "id": "ZjfNUz4L_4dHKhKA9QIkC", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1454.3333333333333, + "y": 807.7777777777777, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 113.34081450405961, + "height": 461.37669267189153, + "seed": 1786032356, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "dpS2VsTttS1vdb2yZT9Te", + "focus": -1.4720281807869147, + "gap": 15.1111111111112 + }, + "endBinding": { + "elementId": "lU7f_xJRUYqNtIJqZMGIU", + "focus": 1.0252738270394006, + "gap": 15.166666666666572 + }, + "points": [ + [ + 0, + 0 + ], + [ + 102.22222222222217, + -66.66666666666663 + ], + [ + 113.34081450405961, + -461.37669267189153 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 58, + "versionNonce": 1549167255, + "isDeleted": false, + "id": "dpS2VsTttS1vdb2yZT9Te", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1460.4444444444443, + "y": 822.8888888888889, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 6, + "height": 77, + "seed": 1876071908, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "ZjfNUz4L_4dHKhKA9QIkC" + ], + "fontSize": 20, + "fontFamily": 1, + "text": ".\n.\n.", + "baseline": 69, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 238, + "versionNonce": 176975449, + "isDeleted": false, + "id": "6oX2EJgvdqto8PBFnLymu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1455.4444444444443, + "y": 927.7777777777777, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 252.1580167088032, + "height": 582.2222222222223, + "seed": 1250515036, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "MsnFRliC0bMhlyiG7NQaD", + "focus": 0.5976702847849924, + "gap": 3.33333333333303 + }, + "endBinding": { + "elementId": "lU7f_xJRUYqNtIJqZMGIU", + "focus": -0.9251619809733327, + "gap": 14.05555555555543 + }, + "points": [ + [ + 0, + 0 + ], + [ + 233.33333333333326, + -71.11111111111109 + ], + [ + 252.1580167088032, + -582.2222222222223 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 71, + "versionNonce": 91946935, + "isDeleted": false, + "id": "_9pHbFh5L3wu4z1fRULFL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1607.4444444444443, + "y": 345.44444444444434, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 56, + "height": 26, + "seed": 533954908, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 1, + "text": ". . .", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 182, + "versionNonce": 1669282617, + "isDeleted": false, + "id": "Zkn5-U_iAWM3NRD3jnoJK", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1453.2222222222222, + "y": 743.3333333333333, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 49.99999999999977, + "height": 400.00000000000006, + "seed": 746008292, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "MsnFRliC0bMhlyiG7NQaD", + "focus": 0.5767031530795618, + "gap": 1.1111111111108585 + }, + "endBinding": { + "elementId": "nLD_EEqwOFOTaWXQ-QJgy", + "focus": 0.10354619014069508, + "gap": 8.3333333333332 + }, + "points": [ + [ + 0, + 0 + ], + [ + 47.77777777777783, + -46.66666666666674 + ], + [ + 49.99999999999977, + -400.00000000000006 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 90, + "versionNonce": 59764951, + "isDeleted": false, + "id": "ByWyrzJrbKdB7frMilNTe", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1214.388888888889, + "y": 978.7777777777777, + "strokeColor": "#1864ab", + "backgroundColor": "#ced4da", + "width": 231, + "height": 26, + "seed": 1789638628, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 1, + "text": "Shamir's Secret Sharing", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 108, + "versionNonce": 843410457, + "isDeleted": false, + "id": "RIE-ff_BXBEuChUFm9jN9", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1280.6666666666667, + "y": 626.5555555555554, + "strokeColor": "#1864ab", + "backgroundColor": "#ced4da", + "width": 154, + "height": 26, + "seed": 1284117988, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "7-haBZ4HUlXqS6USBdW1Z", + "yV-Z1MsoWiwJJl2T7V0RG" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "parts/threshold", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 75, + "versionNonce": 271171063, + "isDeleted": false, + "id": "yV-Z1MsoWiwJJl2T7V0RG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 90, + "angle": 0, + "x": 1274.3333333333333, + "y": 638.8888888888888, + "strokeColor": "#1864ab", + "backgroundColor": "#ced4da", + "width": 287.7777777777778, + "height": 1.1111111111110858, + "seed": 87745372, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "RIE-ff_BXBEuChUFm9jN9", + "focus": 0.07433217189314419, + "gap": 6.333333333333485 + }, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -287.7777777777778, + 1.1111111111110858 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "version": 230, + "versionNonce": 785547513, + "isDeleted": false, + "id": "1P9lm9_LpnOweyJ-5HOqC", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 2119.1111111111113, + "y": 394.6666666666665, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 166.6666666666667, + "height": 158.8888888888888, + "seed": 663380708, + "groupIds": [ + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "K3IJTpLq7XLeu3wpzMsJG", + "X9EJL4uuCupA5nCwzF5ai", + "0YrvLNVy8GRimSVely4Iu" + ] + }, + { + "type": "text", + "version": 173, + "versionNonce": 1045227287, + "isDeleted": false, + "id": "LsWbt-WmaU3SrV-KhC3we", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 2140.4444444444443, + "y": 528.9999999999999, + "strokeColor": "#c92a2a", + "backgroundColor": "#ced4da", + "width": 130, + "height": 26, + "seed": 1348265692, + "groupIds": [ + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "JM6_xk5W672OIcry_x58m" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "MASTER KEY", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "line", + "version": 400, + "versionNonce": 1185544665, + "isDeleted": false, + "id": "bPI96ez0EsHTqRNSwZUaE", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2238.62619771942, + "y": 470.1410613293504, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 23.59993204453979, + "height": 27.139921851220766, + "seed": 1300355528, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.59993204453979, + -27.139921851220766 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 379, + "versionNonce": 1282272311, + "isDeleted": false, + "id": "ZrGC_Zre-CU-LEhy9MEA0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2190.4757433757413, + "y": 439.6511924319591, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 11.799966022269896, + "height": 34.80989976569622, + "seed": 975476936, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 11.799966022269896, + 34.80989976569622 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 479, + "versionNonce": 1793021625, + "isDeleted": false, + "id": "77z9l2aMqXAmLdD96w5hW", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 1.8061937385605678, + "x": 2214.5156244459504, + "y": 453.55181317487484, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 11.799966022269896, + "height": 34.80989976569622, + "seed": 117397432, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 11.799966022269896, + 34.80989976569622 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 384, + "versionNonce": 913395031, + "isDeleted": false, + "id": "-xslwQgE_R1MpgDDhRiJB", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2189.969292438771, + "y": 437.0697324589375, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 23.59993204453979, + "height": 27.139921851220766, + "seed": 662975672, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.59993204453979, + -27.139921851220766 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 391, + "versionNonce": 504764313, + "isDeleted": false, + "id": "TtvDMk__aZ59EfUGrgTc2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2263.268648004985, + "y": 443.299262149871, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 11.209967721156401, + "height": 37.16989297015019, + "seed": 472914120, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -11.209967721156401, + -37.16989297015019 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 369, + "versionNonce": 128682615, + "isDeleted": false, + "id": "RazLde0VVdv7OIAKYU-c5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2213.273691836207, + "y": 410.43682832240734, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 32.449906561242216, + "height": 2.949991505567474, + "seed": 233592008, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 32.449906561242216, + 2.949991505567474 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 398, + "versionNonce": 1115798649, + "isDeleted": false, + "id": "vluFF-6V8GkGMUMy03lmK", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2209.948798415645, + "y": 456.2340649907527, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 25.95992524899378, + "height": 28.319918453447762, + "seed": 1747708616, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 25.95992524899378, + -28.319918453447762 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 369, + "versionNonce": 1826694039, + "isDeleted": false, + "id": "C8DPEjgTkLjFExZdf650y", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2227.834497588192, + "y": 454.93342462174843, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 10.029971118929415, + "height": 10.029971118929415, + "seed": 238505912, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 10.029971118929415, + -10.029971118929415 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 393, + "versionNonce": 669369689, + "isDeleted": false, + "id": "4H9fVirAn_b8B3FHhgJmC", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2207.8034636134025, + "y": 437.9165620867289, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 10.029971118929415, + "height": 10.029971118929415, + "seed": 1870937032, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 10.029971118929415, + -10.029971118929415 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 450, + "versionNonce": 105289911, + "isDeleted": false, + "id": "LKNBSAzDPD6Qri_0wg2qh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2198.290937824687, + "y": 461.5870482316984, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 60.17982671357652, + "height": 62.53981991803045, + "seed": 353504184, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -60.17982671357652, + 62.53981991803045 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 501, + "versionNonce": 1502982713, + "isDeleted": false, + "id": "0On6gWUDg5rC4d6O9I_n7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2211.3304176653755, + "y": 472.32619836740366, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 51.20268873996468, + "height": 51.32985219687406, + "seed": 1716756168, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -51.20268873996468, + 51.32985219687406 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 392, + "versionNonce": 2038458839, + "isDeleted": false, + "id": "ULGmg7KneMhf_bJHEYr_2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2138.441393510434, + "y": 524.3898243879415, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 23.00993374342631, + "height": 0.5899983011134952, + "seed": 349457848, + "groupIds": [ + "s26OeTDNd-D6uQlgmRvc2", + "UAl0_h2YNQ9qftR7eCnKx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.00993374342631, + -0.5899983011134952 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 252, + "versionNonce": 745866009, + "isDeleted": false, + "id": "vjOcknpk4ghypZs6nkb2Z", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 981.0000000000001, + "y": 168.55555555555537, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 33.333333333333286, + "height": 33.33333333333337, + "seed": 1659557724, + "groupIds": [ + "Zd1XPASa1Nibg71Sh-4V8" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 232, + "versionNonce": 1134761719, + "isDeleted": false, + "id": "Rnw1kUtIApoJ9xKT_sQKG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 995.6038647342993, + "y": 170.55555555555532, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 4, + "height": 31, + "seed": 364956764, + "groupIds": [ + "Zd1XPASa1Nibg71Sh-4V8" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 23.826086956521756, + "fontFamily": 1, + "text": "1", + "baseline": 22, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "ellipse", + "version": 214, + "versionNonce": 217528313, + "isDeleted": false, + "id": "3sXe3iseLBaleAwW8AWSS", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1230.7777777777774, + "y": 235.44444444444417, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 33.333333333333286, + "height": 33.33333333333337, + "seed": 1541320028, + "groupIds": [ + "iYDfa7y0eTagWTQ3Dunwx" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 195, + "versionNonce": 1261641751, + "isDeleted": false, + "id": "VKXknFKZbK0EebQ6s3vlp", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1238.381642512077, + "y": 237.44444444444406, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 18, + "height": 31, + "seed": 1488086628, + "groupIds": [ + "iYDfa7y0eTagWTQ3Dunwx" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 23.826086956521756, + "fontFamily": 1, + "text": "2", + "baseline": 22, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "ellipse", + "version": 241, + "versionNonce": 220188889, + "isDeleted": false, + "id": "0UHDAFEWXF3-j5zPVPWIq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1338.7777777777774, + "y": 341.4444444444442, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 33.333333333333286, + "height": 33.33333333333337, + "seed": 2105294564, + "groupIds": [ + "ua4gzuXyxqctRnbDQn2Ku" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "X9EJL4uuCupA5nCwzF5ai" + ] + }, + { + "type": "text", + "version": 220, + "versionNonce": 841286967, + "isDeleted": false, + "id": "6P3BosLduUi72LVRYhrRb", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1346.8816425120767, + "y": 343.44444444444406, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 17, + "height": 31, + "seed": 1452708188, + "groupIds": [ + "ua4gzuXyxqctRnbDQn2Ku" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 23.826086956521756, + "fontFamily": 1, + "text": "3", + "baseline": 22, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "ellipse", + "version": 257, + "versionNonce": 847400377, + "isDeleted": false, + "id": "ddYBXf8vWpGzObP7JxoME", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1346.7777777777776, + "y": 540.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 33.333333333333286, + "height": 33.33333333333337, + "seed": 1126484828, + "groupIds": [ + "noBz-wuSZzvF27lDi-Yiz" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 238, + "versionNonce": 1742554711, + "isDeleted": false, + "id": "wD1zsYacd65W9NQosw91n", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1356.381642512077, + "y": 542.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 14, + "height": 31, + "seed": 115681380, + "groupIds": [ + "noBz-wuSZzvF27lDi-Yiz" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 23.826086956521756, + "fontFamily": 1, + "text": "4", + "baseline": 22, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "ellipse", + "version": 268, + "versionNonce": 71446169, + "isDeleted": false, + "id": "y2zDONJO7e0onNrHxIEqT", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1120.7777777777774, + "y": 601.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 33.333333333333286, + "height": 33.33333333333337, + "seed": 598409180, + "groupIds": [ + "xFwQSo0z5z98HyTspsmy0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 249, + "versionNonce": 2066768759, + "isDeleted": false, + "id": "9Irpb9zJWQmU4Ds9arPOt", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1128.8816425120765, + "y": 603.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 17, + "height": 31, + "seed": 6978532, + "groupIds": [ + "xFwQSo0z5z98HyTspsmy0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 23.826086956521756, + "fontFamily": 1, + "text": "5", + "baseline": 22, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "ellipse", + "version": 216, + "versionNonce": 1494414201, + "isDeleted": false, + "id": "lgP2jRUQiFFyn-WMsjv31", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 877.7777777777773, + "y": 687.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 33.333333333333286, + "height": 33.33333333333337, + "seed": 55379420, + "groupIds": [ + "g8UsB3iY-1V-kJsBW7fqR" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 198, + "versionNonce": 744676503, + "isDeleted": false, + "id": "Br5lXnUv8BqsHWK47rKdw", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 888.3816425120766, + "y": 689.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 12, + "height": 31, + "seed": 1750324708, + "groupIds": [ + "g8UsB3iY-1V-kJsBW7fqR" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 23.826086956521756, + "fontFamily": 1, + "text": "6", + "baseline": 22, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "ellipse", + "version": 283, + "versionNonce": 1698176089, + "isDeleted": false, + "id": "9i95_tIsDE09SfmiQVvRF", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1414.7777777777774, + "y": 800.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 33.333333333333286, + "height": 33.33333333333337, + "seed": 1474816604, + "groupIds": [ + "zCWXTcdaSDizAfq_L6s9H" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 267, + "versionNonce": 1059664311, + "isDeleted": false, + "id": "1faJzR0K36gCqyc2-ATUe", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1426.8816425120767, + "y": 802.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 9, + "height": 31, + "seed": 1789360484, + "groupIds": [ + "zCWXTcdaSDizAfq_L6s9H" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 23.826086956521756, + "fontFamily": 1, + "text": "7", + "baseline": 22, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "ellipse", + "version": 345, + "versionNonce": 142944569, + "isDeleted": false, + "id": "COTGXSxAqLNOR_kkaUSLu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1776.7777777777771, + "y": 451.4444444444442, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 33.333333333333286, + "height": 33.33333333333337, + "seed": 280116956, + "groupIds": [ + "sEKiDkPbqewMaLGgpQw28" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 327, + "versionNonce": 212329175, + "isDeleted": false, + "id": "yZRr0dJf2Lpj6s02jGN7F", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1785.8816425120765, + "y": 453.4444444444442, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 15, + "height": 31, + "seed": 968535268, + "groupIds": [ + "sEKiDkPbqewMaLGgpQw28" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 23.826086956521756, + "fontFamily": 1, + "text": "8", + "baseline": 22, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 126, + "versionNonce": 1549638169, + "isDeleted": false, + "id": "woMpF5yBIt_o4zbNLa-MI", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1680.9444444444443, + "y": 211.61111111111074, + "strokeColor": "#364fc7", + "backgroundColor": "#ced4da", + "width": 33, + "height": 21, + "seed": 1898922332, + "groupIds": [ + "jCsv8wyiU2aG4zcEyi-y0" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "ZjfNUz4L_4dHKhKA9QIkC", + "6oX2EJgvdqto8PBFnLymu" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "TUF", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 504, + "versionNonce": 1433628663, + "isDeleted": false, + "id": "tv1RFLeJ1tlot4zVh3mBJ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1709.563064878305, + "y": 344.11111111111074, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 159.5480462328053, + "height": 56.01096378799059, + "seed": 652554212, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "lU7f_xJRUYqNtIJqZMGIU", + "focus": -0.8186617954391536, + "gap": 12.611111111110745 + }, + "endBinding": { + "elementId": "Zxy419vMRHWwi5Bn5J7r1", + "focus": 0.9168268596583756, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 15.328548859242161, + 53.83064167235261 + ], + [ + 159.5480462328053, + 56.01096378799059 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 369, + "versionNonce": 28634873, + "isDeleted": false, + "id": "GUC8vPRN7JRgmkQ8ndm0g", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1567.2558138994882, + "y": 342.11111111111074, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 299.19859439069023, + "height": 153.52023636606316, + "seed": 1922909668, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "lU7f_xJRUYqNtIJqZMGIU", + "focus": 1.07437298156877, + "gap": 10.611111111110745 + }, + "endBinding": { + "elementId": "Zxy419vMRHWwi5Bn5J7r1", + "focus": -0.3049978821627143, + "gap": 3.6567028209320824 + }, + "points": [ + [ + 0, + 0 + ], + [ + 30.686467431148685, + 137 + ], + [ + 299.19859439069023, + 153.52023636606316 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 342, + "versionNonce": 1401968919, + "isDeleted": false, + "id": "vyW96ppGamktLN2qevtG5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1536.257214360395, + "y": 339.11111111111074, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 329.1799995234139, + "height": 186.57250274129854, + "seed": 1104400228, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "nLD_EEqwOFOTaWXQ-QJgy", + "focus": 0.004930343325734991, + "gap": 4.111111111110745 + }, + "endBinding": { + "elementId": "Zxy419vMRHWwi5Bn5J7r1", + "focus": -0.6681393106307741, + "gap": 4.673897227301609 + }, + "points": [ + [ + 0, + 0 + ], + [ + 36.352853429800234, + 162 + ], + [ + 329.1799995234139, + 186.57250274129854 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 347, + "versionNonce": 789489625, + "isDeleted": false, + "id": "_bIjsRoAOpxf4ZvIyS4lc", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1503.4444278024396, + "y": 337.11111111111074, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 364.00398569291843, + "height": 214.364075725485, + "seed": 1547027164, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "nLD_EEqwOFOTaWXQ-QJgy", + "focus": 0.16543278893170374, + "gap": 2.111111111110745 + }, + "endBinding": { + "elementId": "Zxy419vMRHWwi5Bn5J7r1", + "focus": -0.9623572615372724, + "gap": 2.6626976157525633 + }, + "points": [ + [ + 0, + 0 + ], + [ + 42.756776937470775, + 194 + ], + [ + 364.00398569291843, + 214.364075725485 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 139, + "versionNonce": 208870967, + "isDeleted": false, + "id": "vURBXJPrY-XcOMqJ3Lgm5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1831.4444444444443, + "y": 411.61111111111063, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 6, + "height": 77, + "seed": 1371395044, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "ZjfNUz4L_4dHKhKA9QIkC", + "GUC8vPRN7JRgmkQ8ndm0g" + ], + "fontSize": 20, + "fontFamily": 1, + "text": ".\n.\n.", + "baseline": 69, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "rectangle", + "version": 470, + "versionNonce": 2122204345, + "isDeleted": false, + "id": "FzPQapzhedrR6PO8_62Tr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 1868.4444444444443, + "y": 708.6111111111107, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 168, + "height": 135, + "seed": 517812700, + "groupIds": [ + "AkrCby0WokamvdnlLMnFx" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "EYiGdbJ4_IdnKTU9joW5D", + "woWhR26hKMb95n77fON4v", + "l1zYZFyG0pI24nVYrMHOU", + "cPVROw30Hdk1QC98wQvHw", + "B_3anBG6fdpw0iNcUQvOG", + "tToVFa1uEV8dpE6pqZr9a", + "JM6_xk5W672OIcry_x58m", + "V01-eV-y37AUxjbs9Ea04", + "m1liYhIzT7WyNAsNIVnj9", + "0gQFcJjI5L0XmO7kYHNao" + ] + }, + { + "type": "text", + "version": 429, + "versionNonce": 1660960599, + "isDeleted": false, + "id": "CgB6Z9feLCsh84h5mc8xh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 1872.4444444444443, + "y": 734.6111111111107, + "strokeColor": "#c92a2a", + "backgroundColor": "#228be6", + "width": 161, + "height": 91, + "seed": 774662628, + "groupIds": [ + "AkrCby0WokamvdnlLMnFx" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HwTtgVLDI3cjsMUSWarqA", + "h9bISLh0fuXKLmRSjgO7i" + ], + "fontSize": 36, + "fontFamily": 1, + "text": "PRIVATE\nKEY", + "baseline": 78, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 194, + "versionNonce": 451222873, + "isDeleted": false, + "id": "P-IxdT3cx1-qzroziHNaG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1881.4444444444441, + "y": 534.2777777777774, + "strokeColor": "#862e9c", + "backgroundColor": "#ced4da", + "width": 146, + "height": 26, + "seed": 1153991012, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "9WLSQDuXsVoYWJRfuMZP3", + "tToVFa1uEV8dpE6pqZr9a", + "V01-eV-y37AUxjbs9Ea04" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "MERGED KEYS", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "line", + "version": 403, + "versionNonce": 1388792887, + "isDeleted": false, + "id": "1w6N0PiObsfg_RUKwf1Qp", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1996.6261977194188, + "y": 471.41883910712795, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 23.59993204453979, + "height": 27.139921851220766, + "seed": 721794780, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.59993204453979, + -27.139921851220766 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 382, + "versionNonce": 424408761, + "isDeleted": false, + "id": "Lg9A2sgTc0A0R5XmfW2By", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1948.4757433757402, + "y": 440.9289702097367, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 11.799966022269896, + "height": 34.80989976569622, + "seed": 981120228, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 11.799966022269896, + 34.80989976569622 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 482, + "versionNonce": 1788783959, + "isDeleted": false, + "id": "jUWXGXeh0ibWyM7thlAy3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 1.8061937385605678, + "x": 1972.5156244459502, + "y": 454.8295909526523, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 11.799966022269896, + "height": 34.80989976569622, + "seed": 1197636444, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 11.799966022269896, + 34.80989976569622 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 387, + "versionNonce": 367966105, + "isDeleted": false, + "id": "jdv5BlVPPpSyC9PyGGFZ_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1947.9692924387707, + "y": 438.34751023671504, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 23.59993204453979, + "height": 27.139921851220766, + "seed": 848984164, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.59993204453979, + -27.139921851220766 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 394, + "versionNonce": 254601847, + "isDeleted": false, + "id": "kT21naqy2qMcrPkJJxm5_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2021.2686480049852, + "y": 444.57703992764857, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 11.209967721156401, + "height": 37.16989297015019, + "seed": 884125660, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -11.209967721156401, + -37.16989297015019 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 372, + "versionNonce": 1984322681, + "isDeleted": false, + "id": "iHHmKQmt64k06pjxTsIsM", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1971.2736918362068, + "y": 411.71460610018494, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 32.449906561242216, + "height": 2.949991505567474, + "seed": 687197156, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 32.449906561242216, + 2.949991505567474 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 401, + "versionNonce": 1026982807, + "isDeleted": false, + "id": "PDhzsfXKdSjPzDyq5h2kD", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1967.9487984156438, + "y": 457.5118427685302, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 25.95992524899378, + "height": 28.319918453447762, + "seed": 1661490268, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 25.95992524899378, + -28.319918453447762 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 372, + "versionNonce": 974546265, + "isDeleted": false, + "id": "zNZgncA0dEDmWQuYHf6eq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1985.8344975881917, + "y": 456.211202399526, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 10.029971118929415, + "height": 10.029971118929415, + "seed": 1872408420, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 10.029971118929415, + -10.029971118929415 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 396, + "versionNonce": 1693448375, + "isDeleted": false, + "id": "z0jdZ3BHJU8Rb4HmaCLSf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1965.8034636134023, + "y": 439.19433986450645, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 10.029971118929415, + "height": 10.029971118929415, + "seed": 1882548444, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 10.029971118929415, + -10.029971118929415 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 453, + "versionNonce": 481448505, + "isDeleted": false, + "id": "EeLF-8FA0j8AZFaQvmYVR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1956.2909378246857, + "y": 462.864826009476, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 60.17982671357652, + "height": 62.53981991803045, + "seed": 1725375204, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -60.17982671357652, + 62.53981991803045 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 504, + "versionNonce": 2080229847, + "isDeleted": false, + "id": "wmoQ4fnnRBhxisvV-KyJh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1969.3304176653753, + "y": 473.60397614518115, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 51.20268873996468, + "height": 51.32985219687406, + "seed": 1875635548, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -51.20268873996468, + 51.32985219687406 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 395, + "versionNonce": 587047705, + "isDeleted": false, + "id": "eaFg9V-T71A-bT7fxLUNH", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1896.4413935104328, + "y": 525.667602165719, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 23.00993374342631, + "height": 0.5899983011134952, + "seed": 892937828, + "groupIds": [ + "OQQ9YbdCdovuHN7ga6Tgx" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.00993374342631, + -0.5899983011134952 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "arrow", + "version": 271, + "versionNonce": 341325623, + "isDeleted": false, + "id": "0YrvLNVy8GRimSVely4Iu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1383.5596781346164, + "y": 334.11111111111074, + "strokeColor": "#495057", + "backgroundColor": "#ced4da", + "width": 823.006825437855, + "height": 59, + "seed": 501213660, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "NUdGnzr2NH7D5s6R0_pn4", + "focus": 0.8365914086225252, + "gap": 7.111111111110745 + }, + "endBinding": { + "elementId": "1P9lm9_LpnOweyJ-5HOqC", + "focus": 0.7210917471259072, + "gap": 1.5555555555557703 + }, + "points": [ + [ + 0, + 0 + ], + [ + 72.57717436187899, + 29 + ], + [ + 735.0383082996711, + 20 + ], + [ + 823.006825437855, + 59 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "ellipse", + "version": 308, + "versionNonce": 634600377, + "isDeleted": false, + "id": "wostdrJGt7Pc97vZquBYE", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 2064.7777777777774, + "y": 428.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 33.333333333333286, + "height": 33.33333333333337, + "seed": 1981394660, + "groupIds": [ + "oHDmCapD4ZndOA0aY0AmG" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 290, + "versionNonce": 1088043095, + "isDeleted": false, + "id": "GJNmRiUM7BgHgst0QUrKd", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 2074.8816425120767, + "y": 430.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 13, + "height": 31, + "seed": 1422401884, + "groupIds": [ + "oHDmCapD4ZndOA0aY0AmG" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 23.826086956521756, + "fontFamily": 1, + "text": "9", + "baseline": 22, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 51, + "versionNonce": 2068143257, + "isDeleted": false, + "id": "0Zim5VZXsUCKT3cvZJQqT", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 2040.4444444444443, + "y": 484.11111111111074, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 72, + "height": 26, + "seed": 1335030884, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "cV9IKlc9_hel42eDkpcgK", + "0XgHCl6453WJOlg5hOTjR" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "decrypt", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 16, + "versionNonce": 1270814071, + "isDeleted": false, + "id": "0XgHCl6453WJOlg5hOTjR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 2119.4444444444443, + "y": 470.11111111111074, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 79.00000000000023, + "height": 3, + "seed": 1751801572, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "0Zim5VZXsUCKT3cvZJQqT", + "focus": 1.7656387665198243, + "gap": 14 + }, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -79.00000000000023, + 3 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 48, + "versionNonce": 595616121, + "isDeleted": false, + "id": "0gQFcJjI5L0XmO7kYHNao", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1950.4444444444441, + "y": 556.1111111111107, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 0, + "height": 149, + "seed": 978249700, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "Zxy419vMRHWwi5Bn5J7r1", + "focus": 0.03599999999999726, + "gap": 1.2777777777778283 + }, + "endBinding": { + "elementId": "FzPQapzhedrR6PO8_62Tr", + "focus": -0.023809523809526518, + "gap": 3.5 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 149 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "ellipse", + "version": 340, + "versionNonce": 474697367, + "isDeleted": false, + "id": "gsMSxwPrlvt-P8W5BWWuF", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1955.777777777777, + "y": 611.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 33.333333333333286, + "height": 33.33333333333337, + "seed": 1849760988, + "groupIds": [ + "62F6BJ9n6qrqQwKSMPZS5" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 324, + "versionNonce": 466078297, + "isDeleted": false, + "id": "YhojFIM5W4_yFrQS-E8ol", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 90, + "angle": 0, + "x": 1960.8816425120763, + "y": 613.4444444444441, + "strokeColor": "#000000", + "backgroundColor": "#fd7e14", + "width": 23, + "height": 31, + "seed": 1737535204, + "groupIds": [ + "62F6BJ9n6qrqQwKSMPZS5" + ], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 23.826086956521756, + "fontFamily": 1, + "text": "10", + "baseline": 22, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "line", + "version": 426, + "versionNonce": 985716247, + "isDeleted": false, + "id": "mdPk-IvD1DSIxLY3-Mx0O", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2011.8807626058165, + "y": 483.49257565663027, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 23.59993204453979, + "height": 27.139921851220766, + "seed": 2110829143, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.59993204453979, + -27.139921851220766 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 405, + "versionNonce": 1861253849, + "isDeleted": false, + "id": "QfFb4NemFW3kE4dp70YJx", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1963.730308262138, + "y": 453.002706759239, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 11.799966022269896, + "height": 34.80989976569622, + "seed": 176915097, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 11.799966022269896, + 34.80989976569622 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 505, + "versionNonce": 311163703, + "isDeleted": false, + "id": "pwGlKw65H8WCe2Pa1c6cV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 1.8061937385605678, + "x": 1987.7701893323479, + "y": 466.90332750215464, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 11.799966022269896, + "height": 34.80989976569622, + "seed": 1473662839, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 11.799966022269896, + 34.80989976569622 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 410, + "versionNonce": 682473401, + "isDeleted": false, + "id": "mLUQobIaPPggIaAuS6h-g", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1963.2238573251684, + "y": 450.42124678621747, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 23.59993204453979, + "height": 27.139921851220766, + "seed": 1930545017, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.59993204453979, + -27.139921851220766 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 417, + "versionNonce": 1274379351, + "isDeleted": false, + "id": "3YNtmhXj_bK3ESe2Fp8Ka", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2036.5232128913826, + "y": 456.650776477151, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 11.209967721156401, + "height": 37.16989297015019, + "seed": 1433094295, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -11.209967721156401, + -37.16989297015019 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 395, + "versionNonce": 896555161, + "isDeleted": false, + "id": "mv1vFk4WsRSP1HPPCzhvR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1986.5282567226045, + "y": 423.78834264968725, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 32.449906561242216, + "height": 2.949991505567474, + "seed": 3960921, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 32.449906561242216, + 2.949991505567474 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 424, + "versionNonce": 1523702135, + "isDeleted": false, + "id": "rW5pXNkAGj5e5801PvpzN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1983.2033633020415, + "y": 469.5855793180325, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 25.95992524899378, + "height": 28.319918453447762, + "seed": 71572919, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 25.95992524899378, + -28.319918453447762 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 395, + "versionNonce": 1458298233, + "isDeleted": false, + "id": "mrtAqrA7E0ZxEVvfTX395", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2001.0890624745894, + "y": 468.2849389490283, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 10.029971118929415, + "height": 10.029971118929415, + "seed": 1742667065, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 10.029971118929415, + -10.029971118929415 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 419, + "versionNonce": 1147507351, + "isDeleted": false, + "id": "N8vz96jD1SBnoRUuNRxHn", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1981.0580284998, + "y": 451.26807641400876, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 10.029971118929415, + "height": 10.029971118929415, + "seed": 1199918807, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 10.029971118929415, + -10.029971118929415 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 476, + "versionNonce": 1281607257, + "isDeleted": false, + "id": "l2VznuFJVjaNa_vVQUXJ8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1971.5455027110834, + "y": 474.93856255897833, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 60.17982671357652, + "height": 62.53981991803045, + "seed": 1499262489, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -60.17982671357652, + 62.53981991803045 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 527, + "versionNonce": 1902454711, + "isDeleted": false, + "id": "EYt00qBFhDwqd5TYEr59M", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1984.584982551773, + "y": 485.67771269468346, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 51.20268873996468, + "height": 51.32985219687406, + "seed": 700668919, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -51.20268873996468, + 51.32985219687406 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 418, + "versionNonce": 548115257, + "isDeleted": false, + "id": "kFGD2pwpLhrAlLvkC__qN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1911.6959583968305, + "y": 537.7413387152213, + "strokeColor": "#862e9c", + "backgroundColor": "transparent", + "width": 23.00993374342631, + "height": 0.5899983011134952, + "seed": 1269416697, + "groupIds": [ + "-y4UviM95FUarI348iI3y" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 23.00993374342631, + -0.5899983011134952 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + } +} \ No newline at end of file diff --git a/.res/arch.png b/.res/arch.png new file mode 100644 index 0000000..5388188 Binary files /dev/null and b/.res/arch.png differ diff --git a/.res/logo.png b/.res/logo.png new file mode 100644 index 0000000..4dec018 Binary files /dev/null and b/.res/logo.png differ diff --git a/.res/usage.gif b/.res/usage.gif new file mode 100644 index 0000000..939a78d Binary files /dev/null and b/.res/usage.gif differ diff --git a/.res/use-case.excalidraw b/.res/use-case.excalidraw new file mode 100644 index 0000000..e440291 --- /dev/null +++ b/.res/use-case.excalidraw @@ -0,0 +1,6055 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 295, + "versionNonce": 836509790, + "isDeleted": false, + "id": "pAphPBtlvplK4Z0EPTYm0", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 452.55555555555554, + "y": 677.6666666666667, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 529, + "height": 236.99999999999997, + "seed": 455581882, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 95, + "versionNonce": 610801154, + "isDeleted": false, + "id": "1cXFUlKce689zOJH-zy5Y", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 639, + "y": 129, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 162, + "height": 46, + "seed": 1765414694, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": "SIGNING", + "baseline": 32, + "textAlign": "left", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 115, + "versionNonce": 1179501342, + "isDeleted": false, + "id": "ME_4uGQeQ7YXVk2RgHEkp", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1249, + "y": 128, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 281, + "height": 46, + "seed": 353802234, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 36, + "fontFamily": 1, + "text": "VERIFICATION", + "baseline": 32, + "textAlign": "left", + "verticalAlign": "top" + }, + { + "type": "line", + "version": 372, + "versionNonce": 1622803906, + "isDeleted": false, + "id": "mAI8m565wwmnpjXTHJxhI", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1018, + "y": 130, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "width": 8, + "height": 757, + "seed": 686505914, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 8, + 757 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "rectangle", + "version": 4409, + "versionNonce": 606318430, + "isDeleted": false, + "id": "1ba-a3cUOo31kbhHAPzwS", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 684.1319708150991, + "y": 195.01158837080237, + "strokeColor": "#c92a2a", + "backgroundColor": "#fff", + "width": 70.67858069123133, + "height": 107.25081879410921, + "seed": 716216250, + "groupIds": [ + "k4uWKmfFdUOhkIDpxBOXB" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve" + ] + }, + { + "type": "rectangle", + "version": 4458, + "versionNonce": 1689779586, + "isDeleted": false, + "id": "jjHw23cY3zlYvqc_V0hNQ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 676.5845377793848, + "y": 187.99149908508815, + "strokeColor": "#c92a2a", + "backgroundColor": "#fff", + "width": 70.67858069123133, + "height": 107.25081879410921, + "seed": 135354598, + "groupIds": [ + "4oQWc_M1dDcys_jfy0Caz", + "k4uWKmfFdUOhkIDpxBOXB" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve" + ] + }, + { + "type": "rectangle", + "version": 4556, + "versionNonce": 1626477470, + "isDeleted": false, + "id": "Sr2nlFu_Hd1HTjEkB9_5j", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 667.1894484936695, + "y": 179.73759283508838, + "strokeColor": "#c92a2a", + "backgroundColor": "#fff", + "width": 70.67858069123133, + "height": 107.25081879410921, + "seed": 1056542842, + "groupIds": [ + "k4uWKmfFdUOhkIDpxBOXB" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve" + ] + }, + { + "type": "draw", + "version": 3679, + "versionNonce": 1839267138, + "isDeleted": false, + "id": "Ul1P_XrGQJmP3CgNKTPlx", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 679.1758750805805, + "y": 227.8833600995913, + "strokeColor": "#c92a2a", + "backgroundColor": "#fff", + "width": 46.57983585730082, + "height": 3.249953844290203, + "seed": 1937853478, + "groupIds": [ + "k4uWKmfFdUOhkIDpxBOXB" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0.6014697828497827 + ], + [ + 40.42449133807562, + 0.7588628355182573 + ], + [ + 46.57983585730082, + -2.491091008771946 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3705, + "versionNonce": 1995042782, + "isDeleted": false, + "id": "-R1dKpB1LyB-rXCiBXXm9", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 681.0311273185948, + "y": 197.01954258360246, + "strokeColor": "#c92a2a", + "backgroundColor": "#fff", + "width": 45.567415680676426, + "height": 2.8032978840147194, + "seed": 2032496954, + "groupIds": [ + "k4uWKmfFdUOhkIDpxBOXB" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 16.832548902953302, + -2.8032978840147194 + ], + [ + 45.567415680676426, + -0.3275477042019195 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3730, + "versionNonce": 953419010, + "isDeleted": false, + "id": "PjaGDV44LV-X0Y5N7hJgL", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 680.9545278022254, + "y": 264.41391685395956, + "strokeColor": "#c92a2a", + "backgroundColor": "#fff", + "width": 48.33668263438425, + "height": 4.280657518731036, + "seed": 722524006, + "groupIds": [ + "k4uWKmfFdUOhkIDpxBOXB" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 26.41225578429045, + -0.2552319773002338 + ], + [ + 37.62000339651456, + 2.3153712935189787 + ], + [ + 48.33668263438425, + -1.9652862252120569 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3767, + "versionNonce": 1914455070, + "isDeleted": false, + "id": "-yvZXkrl32D9w2_mxUiRf", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 677.770480620695, + "y": 275.65706526223835, + "strokeColor": "#c92a2a", + "backgroundColor": "#fff", + "width": 54.40694982784246, + "height": 2.9096445412231735, + "seed": 1821850106, + "groupIds": [ + "k4uWKmfFdUOhkIDpxBOXB" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 10.166093050596771, + -1.166642430373031 + ], + [ + 16.130660965377448, + -0.8422655250909383 + ], + [ + 46.26079588567538, + 0.6125567455206506 + ], + [ + 54.40694982784246, + -2.297087795702523 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3732, + "versionNonce": 2144343234, + "isDeleted": false, + "id": "ye5TpxyCdCaRA6qtabe02", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 678.0553235162608, + "y": 212.08014413686368, + "strokeColor": "#c92a2a", + "backgroundColor": "#fff", + "width": 46.92865289294453, + "height": 2.4757501798128, + "seed": 923597478, + "groupIds": [ + "k4uWKmfFdUOhkIDpxBOXB" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 18.193786115221407, + -0.5912874140789839 + ], + [ + 46.92865289294453, + 1.884462765733816 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3747, + "versionNonce": 880414814, + "isDeleted": false, + "id": "UDJV3QZ_cW_VIaZFnkI0f", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 678.1628117124112, + "y": 246.5634731727032, + "strokeColor": "#c92a2a", + "backgroundColor": "#fff", + "width": 46.92865289294453, + "height": 2.4757501798128, + "seed": 1213328058, + "groupIds": [ + "k4uWKmfFdUOhkIDpxBOXB" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 8.093938105125233, + 1.4279702913643746 + ], + [ + 18.193786115221407, + -0.5912874140789839 + ], + [ + 46.92865289294453, + 1.884462765733816 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 121, + "versionNonce": 1949576322, + "isDeleted": false, + "id": "OXiaY3a2QlIT6untQN96C", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 678, + "y": 332, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 65, + "height": 41, + "seed": 1604769658, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HRJXrCrFxLKtRQKxFzRvd", + "Yxcjn6W3x688uBCCpeZG3" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "SOURCE\nCODE", + "baseline": 35, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "rectangle", + "version": 4413, + "versionNonce": 970216606, + "isDeleted": false, + "id": "nXZsdcf3gYAqM6hI7qOOX", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1360.7986374817658, + "y": 191.01158837080237, + "strokeColor": "#1864ab", + "backgroundColor": "#fff", + "width": 70.67858069123133, + "height": 107.25081879410921, + "seed": 2099068922, + "groupIds": [ + "y3iZ03L9YxrVqybjptjqu" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve" + ] + }, + { + "type": "rectangle", + "version": 4462, + "versionNonce": 1002392642, + "isDeleted": false, + "id": "m1QSSIrUCNXYX9nvD3rD_", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1353.2512044460516, + "y": 183.99149908508815, + "strokeColor": "#1864ab", + "backgroundColor": "#fff", + "width": 70.67858069123133, + "height": 107.25081879410921, + "seed": 1582453926, + "groupIds": [ + "YkfhP6xKQFkHvTjj4Dhrr", + "y3iZ03L9YxrVqybjptjqu" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve" + ] + }, + { + "type": "rectangle", + "version": 4560, + "versionNonce": 1541148894, + "isDeleted": false, + "id": "WKbVEOTL3aaIA6OxzBcXl", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1343.8561151603362, + "y": 175.73759283508838, + "strokeColor": "#1864ab", + "backgroundColor": "#fff", + "width": 70.67858069123133, + "height": 107.25081879410921, + "seed": 640102586, + "groupIds": [ + "y3iZ03L9YxrVqybjptjqu" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve" + ] + }, + { + "type": "draw", + "version": 3682, + "versionNonce": 1817211906, + "isDeleted": false, + "id": "4s6YD7DDCFaOlMXllpJsC", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1355.8425417472472, + "y": 223.88336009959136, + "strokeColor": "#1864ab", + "backgroundColor": "#fff", + "width": 46.57983585730082, + "height": 3.249953844290203, + "seed": 397201382, + "groupIds": [ + "y3iZ03L9YxrVqybjptjqu" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0.6014697828497827 + ], + [ + 40.42449133807562, + 0.7588628355182573 + ], + [ + 46.57983585730082, + -2.491091008771946 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3708, + "versionNonce": 371344670, + "isDeleted": false, + "id": "pm3p56DgIxdVTbo4gZnJE", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1357.6977939852616, + "y": 193.01954258360246, + "strokeColor": "#1864ab", + "backgroundColor": "#fff", + "width": 45.567415680676426, + "height": 2.8032978840147194, + "seed": 573901178, + "groupIds": [ + "y3iZ03L9YxrVqybjptjqu" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 16.832548902953302, + -2.8032978840147194 + ], + [ + 45.567415680676426, + -0.3275477042019195 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3733, + "versionNonce": 132555714, + "isDeleted": false, + "id": "9C2nWE-EHePSZiDVbvzJN", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1357.621194468892, + "y": 260.4139168539596, + "strokeColor": "#1864ab", + "backgroundColor": "#fff", + "width": 48.33668263438425, + "height": 4.280657518731036, + "seed": 244704038, + "groupIds": [ + "y3iZ03L9YxrVqybjptjqu" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 26.41225578429045, + -0.2552319773002338 + ], + [ + 37.62000339651456, + 2.3153712935189787 + ], + [ + 48.33668263438425, + -1.9652862252120569 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3770, + "versionNonce": 1243083102, + "isDeleted": false, + "id": "baHKleafpz4fmIjOMnDM2", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1354.4371472873618, + "y": 271.6570652622384, + "strokeColor": "#1864ab", + "backgroundColor": "#fff", + "width": 54.40694982784246, + "height": 2.9096445412231735, + "seed": 948554298, + "groupIds": [ + "y3iZ03L9YxrVqybjptjqu" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 10.166093050596771, + -1.166642430373031 + ], + [ + 16.130660965377448, + -0.8422655250909383 + ], + [ + 46.26079588567538, + 0.6125567455206506 + ], + [ + 54.40694982784246, + -2.297087795702523 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3735, + "versionNonce": 2023807874, + "isDeleted": false, + "id": "wnX-8bS_Sd7XgEeAZSyyF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1354.7219901829276, + "y": 208.08014413686368, + "strokeColor": "#1864ab", + "backgroundColor": "#fff", + "width": 46.92865289294453, + "height": 2.4757501798128, + "seed": 1165659750, + "groupIds": [ + "y3iZ03L9YxrVqybjptjqu" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 18.193786115221407, + -0.5912874140789839 + ], + [ + 46.92865289294453, + 1.884462765733816 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3750, + "versionNonce": 51254686, + "isDeleted": false, + "id": "m1g1g1TiYQyc1yGsNDB5h", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1354.829478379078, + "y": 242.56347317270325, + "strokeColor": "#1864ab", + "backgroundColor": "#fff", + "width": 46.92865289294453, + "height": 2.4757501798128, + "seed": 1342731002, + "groupIds": [ + "y3iZ03L9YxrVqybjptjqu" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 8.093938105125233, + 1.4279702913643746 + ], + [ + 18.193786115221407, + -0.5912874140789839 + ], + [ + 46.92865289294453, + 1.884462765733816 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 137, + "versionNonce": 213785410, + "isDeleted": false, + "id": "taDrVqOtQ6FWjRSN29KjN", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1353.2777777777778, + "y": 329.6111111111111, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 65, + "height": 41, + "seed": 946566714, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "Oh1CMP1ng0cxW0zJfPaJF" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "SOURCE\nCODE", + "baseline": 35, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 103, + "versionNonce": 976597470, + "isDeleted": false, + "id": "-jB-cryArI_QTb0QZBevZ", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1308.7777777777778, + "y": 305.6111111111111, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "width": 170, + "height": 21, + "seed": 426496102, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "DIGITALLY SIGNED", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 142, + "versionNonce": 1922917122, + "isDeleted": false, + "id": "30BGJbl15z2gQimpa45wK", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 671, + "y": 310.5, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 86, + "height": 21, + "seed": 474481978, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "S7trmWabtSl2fu-xoa_wJ" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "UNSIGNED", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 378, + "versionNonce": 446678558, + "isDeleted": false, + "id": "Yxcjn6W3x688uBCCpeZG3", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 710.8038507861543, + "y": 376, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 0.3953300682552481, + "height": 52.55555555555566, + "seed": 759919398, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "OXiaY3a2QlIT6untQN96C", + "focus": -0.014666621980380302, + "gap": 3 + }, + "endBinding": { + "elementId": "3Y_nE4ctd6HY7H4GDL2_B", + "focus": 0.010922015436014778, + "gap": 12.802957720574824 + }, + "points": [ + [ + 0, + 0 + ], + [ + -0.3953300682552481, + 52.55555555555566 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 260, + "versionNonce": 884847298, + "isDeleted": false, + "id": "BR2VKQcXy91ABp9G6aAIx", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 649.0000000000001, + "y": 384.50000000000006, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 132, + "height": 21, + "seed": 259386810, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HRJXrCrFxLKtRQKxFzRvd" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "HASH FUNCTION", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "rectangle", + "version": 4497, + "versionNonce": 1161646686, + "isDeleted": false, + "id": "wFIcNkwRgYLpkUEKYe9-I", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1204.9097485928771, + "y": 459.12269948191346, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 70.67858069123133, + "height": 107.25081879410921, + "seed": 1173760506, + "groupIds": [ + "TLTc046ao4rC0tbBmA4jJ" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve" + ] + }, + { + "type": "rectangle", + "version": 4546, + "versionNonce": 901646978, + "isDeleted": false, + "id": "KccoWE1PlmyR2XoB9MNDa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1197.362315557163, + "y": 452.10261019619924, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 70.67858069123133, + "height": 107.25081879410921, + "seed": 1532299942, + "groupIds": [ + "eTCfG9kMhJvJ62lfsjAxG", + "TLTc046ao4rC0tbBmA4jJ" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve" + ] + }, + { + "type": "rectangle", + "version": 4652, + "versionNonce": 350181022, + "isDeleted": false, + "id": "CIJ9nLfd_DW0q0zkxEK0T", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1187.9672262714478, + "y": 443.84870394619946, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 70.67858069123133, + "height": 107.25081879410921, + "seed": 2018695866, + "groupIds": [ + "TLTc046ao4rC0tbBmA4jJ" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve", + "CQxVNgR4UEdQHCnakgbEs", + "Oh1CMP1ng0cxW0zJfPaJF" + ] + }, + { + "type": "draw", + "version": 3765, + "versionNonce": 744319554, + "isDeleted": false, + "id": "sopPCxw1dvjAO2eOlT4sK", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1199.9536528583587, + "y": 491.99447121070244, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 46.57983585730082, + "height": 3.249953844290203, + "seed": 250136038, + "groupIds": [ + "TLTc046ao4rC0tbBmA4jJ" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0.6014697828497827 + ], + [ + 40.42449133807562, + 0.7588628355182573 + ], + [ + 46.57983585730082, + -2.491091008771946 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3791, + "versionNonce": 1647760094, + "isDeleted": false, + "id": "pN66j8vhBb2aWx8y40Z9B", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1201.8089050963729, + "y": 461.13065369471354, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 45.567415680676426, + "height": 2.8032978840147194, + "seed": 1163621242, + "groupIds": [ + "TLTc046ao4rC0tbBmA4jJ" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 16.832548902953302, + -2.8032978840147194 + ], + [ + 45.567415680676426, + -0.3275477042019195 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3816, + "versionNonce": 528142850, + "isDeleted": false, + "id": "fqvwg_mh2I6Sdl2_ZTW-K", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1201.7323055800036, + "y": 528.5250279650706, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 48.33668263438425, + "height": 4.280657518731036, + "seed": 1726159142, + "groupIds": [ + "TLTc046ao4rC0tbBmA4jJ" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 26.41225578429045, + -0.2552319773002338 + ], + [ + 37.62000339651456, + 2.3153712935189787 + ], + [ + 48.33668263438425, + -1.9652862252120569 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3853, + "versionNonce": 1205126942, + "isDeleted": false, + "id": "-EOhCSN6kO3myIvPLtfXC", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1198.5482583984733, + "y": 539.7681763733494, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 54.40694982784246, + "height": 2.9096445412231735, + "seed": 1062401082, + "groupIds": [ + "TLTc046ao4rC0tbBmA4jJ" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 10.166093050596771, + -1.166642430373031 + ], + [ + 16.130660965377448, + -0.8422655250909383 + ], + [ + 46.26079588567538, + 0.6125567455206506 + ], + [ + 54.40694982784246, + -2.297087795702523 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3818, + "versionNonce": 1645560258, + "isDeleted": false, + "id": "JQ7z7oxHLfW2eyZ9WfSR9", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1198.8331012940391, + "y": 476.19125524797477, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 46.92865289294453, + "height": 2.4757501798128, + "seed": 1253114982, + "groupIds": [ + "TLTc046ao4rC0tbBmA4jJ" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 18.193786115221407, + -0.5912874140789839 + ], + [ + 46.92865289294453, + 1.884462765733816 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 3833, + "versionNonce": 1714041694, + "isDeleted": false, + "id": "1zFVGQUVEM4Taq-TltHb-", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1198.9405894901895, + "y": 510.67458428381434, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 46.92865289294453, + "height": 2.4757501798128, + "seed": 941382906, + "groupIds": [ + "TLTc046ao4rC0tbBmA4jJ" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "points": [ + [ + 0, + 0 + ], + [ + 8.093938105125233, + 1.4279702913643746 + ], + [ + 18.193786115221407, + -0.5912874140789839 + ], + [ + 46.92865289294453, + 1.884462765733816 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 211, + "versionNonce": 256620930, + "isDeleted": false, + "id": "VZFd6qHVT4056JrJ3XmtY", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1202.2777777777778, + "y": 573.6111111111111, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 65, + "height": 41, + "seed": 1041997798, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "_rutr_h4VMHXOcKbryiiV" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "SOURCE\nCODE", + "baseline": 35, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "rectangle", + "version": 318, + "versionNonce": 663230366, + "isDeleted": false, + "id": "RpLidv4xw45BzK2EAhDJS", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1474.7777777777778, + "y": 442.9140688316861, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 230, + "height": 44, + "seed": 1245184378, + "groupIds": [ + "qCseVIOpB-nCXakZ4JW12" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 2379, + "versionNonce": 106772802, + "isDeleted": false, + "id": "YVlSZQeJdkD1x5FQZOvk0", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1483.6176025100522, + "y": 670.5736553516733, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 29.105916074710315, + "height": 22.178159912932212, + "seed": 375286566, + "groupIds": [ + "XtS2ilvDrUbMDYYNA_YPv", + "qCseVIOpB-nCXakZ4JW12" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -200.40826329265352 + ], + [ + 0.2500255549621401, + -209.3631265431339 + ], + [ + 2.450250438628975, + -216.1425145406729 + ], + [ + 7.000715538939932, + -220.54405749429887 + ], + [ + 12.022619199035114, + -222.25960140412388 + ], + [ + 17.38332754162977, + -222.38405341461427 + ], + [ + 23.281791382651058, + -220.2494308868553 + ], + [ + 27.102770157895993, + -215.21101829693725 + ], + [ + 28.8735393824514, + -208.44651043108743 + ], + [ + 29.105916074710315, + -201.6492662755216 + ], + [ + 26.735085518245807, + -200.83978711163644 + ], + [ + 24.902545274229176, + -200.94097200712207 + ], + [ + 24.50838734052414, + -203.30393691934594 + ], + [ + 23.825964649333354, + -211.31242379440164 + ], + [ + 20.746238107623245, + -216.6573670971147 + ], + [ + 14.48704220922878, + -218.17081176381714 + ], + [ + 8.25084331375063, + -216.34488433164432 + ], + [ + 4.541640668959357, + -210.21427007574854 + ], + [ + 4.35044465634124, + -202.0272216204239 + ], + [ + 3.850393546416957, + -200.45885574039633 + ], + [ + 1.8001839957274095, + -200.20589350168206 + ], + [ + 0, + -200.40826329265352 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 433, + "versionNonce": 69170142, + "isDeleted": false, + "id": "g5k2O3IGIon4hiemv2s5D", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1475.4141414141413, + "y": 442.5396074082777, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 44.73809778704429, + "height": 44.73809778704429, + "seed": 1433256506, + "groupIds": [ + "XtS2ilvDrUbMDYYNA_YPv", + "qCseVIOpB-nCXakZ4JW12" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 1018, + "versionNonce": 1722335490, + "isDeleted": false, + "id": "xOtxYgH-kBIpUYzAqBvOW", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1480.3467038121257, + "y": 541.4923653292094, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 38.03742356143924, + "height": 17.366720072970526, + "seed": 1391597158, + "groupIds": [ + "XtS2ilvDrUbMDYYNA_YPv", + "qCseVIOpB-nCXakZ4JW12" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -64.02451996412519 + ], + [ + 0.02642221697793623, + -68.27485275426127 + ], + [ + 2.663359471376133, + -70.63376058595503 + ], + [ + 9.03639820645473, + -70.96153593386684 + ], + [ + 28.794932062556594, + -71.1764705882353 + ], + [ + 33.93669548646329, + -71.1764705882353 + ], + [ + 36.56306385407032, + -69.90835612746145 + ], + [ + 38.03742356143924, + -67.59243522664146 + ], + [ + 37.87889025957164, + -64.48125610465817 + ], + [ + 35.32650409950284, + -60.827366980394544 + ], + [ + 30.026207373728504, + -56.58240755661774 + ], + [ + 24.392990714032184, + -54.384700715700305 + ], + [ + 17.380534328087474, + -53.80975051526478 + ], + [ + 8.825020470631218, + -56.12567141608476 + ], + [ + 3.5141548580657216, + -60.236296680881296 + ], + [ + 0, + -64.02451996412519 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 904, + "versionNonce": 1174489118, + "isDeleted": false, + "id": "O7dj5Zyrs_NKEdwE2HH-A", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1486.6550602284574, + "y": 561.4860559849137, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 19.31913238775878, + "height": 10.178366424241204, + "seed": 497904378, + "groupIds": [ + "XtS2ilvDrUbMDYYNA_YPv", + "qCseVIOpB-nCXakZ4JW12" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -3.1541331797587935, + -80.20510085672359 + ], + [ + -3.5, + -86.77657044130652 + ], + [ + -2.3635804477788955, + -88.55531408826134 + ], + [ + 0.35394456840200866, + -88.90118090850252 + ], + [ + 15.819132387758781, + -89 + ], + [ + 15.769722842010038, + -87.9623995392764 + ], + [ + 13.546293283316574, + -87.7153518105327 + ], + [ + 1.4903641206231142, + -87.46830408178894 + ], + [ + -1.7212563530452265, + -86.92479907855274 + ], + [ + -2.0671231732864324, + -83.61435951338693 + ], + [ + -1.7706658987939703, + -78.8216335757588 + ], + [ + -3.1541331797587935, + -80.20510085672359 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 327, + "versionNonce": 195907778, + "isDeleted": false, + "id": "rUC5LGOSz-uhAJmuRnXoR", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1518.7777777777778, + "y": 454.4140688316861, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 182, + "height": 21, + "seed": 1852725670, + "groupIds": [ + "qCseVIOpB-nCXakZ4JW12" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HRJXrCrFxLKtRQKxFzRvd", + "Yxcjn6W3x688uBCCpeZG3", + "z5bTfCETuQIBYvydqiAoI", + "qaPDvkJEqbEXNSwkd8K9V" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "DIGITAL SIGNATURE", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "rectangle", + "version": 354, + "versionNonce": 1293849694, + "isDeleted": false, + "id": "3Y_nE4ctd6HY7H4GDL2_B", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 593.8888888888889, + "y": 441.35851327613045, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 230, + "height": 44, + "seed": 386545574, + "groupIds": [ + "Osfafhh5GhSRJEcdLb8An" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "Yxcjn6W3x688uBCCpeZG3", + "rgpt-AAh-kCoLyPG1E00z", + "vytpSbQ56CP21MDQ-U89s", + "dgGydSV58rEFC8LX9PDjx" + ] + }, + { + "type": "line", + "version": 2402, + "versionNonce": 151644290, + "isDeleted": false, + "id": "eXMBQj-421yvId1DaqeT8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 602.7287136211633, + "y": 669.0180997961178, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 29.105916074710315, + "height": 22.178159912932212, + "seed": 1603468730, + "groupIds": [ + "Q0z9If-4u_nx94qzj7evP", + "Osfafhh5GhSRJEcdLb8An" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -200.40826329265352 + ], + [ + 0.2500255549621401, + -209.3631265431339 + ], + [ + 2.450250438628975, + -216.1425145406729 + ], + [ + 7.000715538939932, + -220.54405749429887 + ], + [ + 12.022619199035114, + -222.25960140412388 + ], + [ + 17.38332754162977, + -222.38405341461427 + ], + [ + 23.281791382651058, + -220.2494308868553 + ], + [ + 27.102770157895993, + -215.21101829693725 + ], + [ + 28.8735393824514, + -208.44651043108743 + ], + [ + 29.105916074710315, + -201.6492662755216 + ], + [ + 26.735085518245807, + -200.83978711163644 + ], + [ + 24.902545274229176, + -200.94097200712207 + ], + [ + 24.50838734052414, + -203.30393691934594 + ], + [ + 23.825964649333354, + -211.31242379440164 + ], + [ + 20.746238107623245, + -216.6573670971147 + ], + [ + 14.48704220922878, + -218.17081176381714 + ], + [ + 8.25084331375063, + -216.34488433164432 + ], + [ + 4.541640668959357, + -210.21427007574854 + ], + [ + 4.35044465634124, + -202.0272216204239 + ], + [ + 3.850393546416957, + -200.45885574039633 + ], + [ + 1.8001839957274095, + -200.20589350168206 + ], + [ + 0, + -200.40826329265352 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 464, + "versionNonce": 1397250206, + "isDeleted": false, + "id": "kvwmw1-uQF1DsIK8Dzv0S", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 594.5252525252524, + "y": 440.98405185272213, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 44.73809778704429, + "height": 44.73809778704429, + "seed": 1433424614, + "groupIds": [ + "Q0z9If-4u_nx94qzj7evP", + "Osfafhh5GhSRJEcdLb8An" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 1041, + "versionNonce": 645761090, + "isDeleted": false, + "id": "xAzi7j-4bAMk2r0vIctbG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 599.4578149232368, + "y": 539.9368097736539, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 38.03742356143924, + "height": 17.366720072970526, + "seed": 916403834, + "groupIds": [ + "Q0z9If-4u_nx94qzj7evP", + "Osfafhh5GhSRJEcdLb8An" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -64.02451996412519 + ], + [ + 0.02642221697793623, + -68.27485275426127 + ], + [ + 2.663359471376133, + -70.63376058595503 + ], + [ + 9.03639820645473, + -70.96153593386684 + ], + [ + 28.794932062556594, + -71.1764705882353 + ], + [ + 33.93669548646329, + -71.1764705882353 + ], + [ + 36.56306385407032, + -69.90835612746145 + ], + [ + 38.03742356143924, + -67.59243522664146 + ], + [ + 37.87889025957164, + -64.48125610465817 + ], + [ + 35.32650409950284, + -60.827366980394544 + ], + [ + 30.026207373728504, + -56.58240755661774 + ], + [ + 24.392990714032184, + -54.384700715700305 + ], + [ + 17.380534328087474, + -53.80975051526478 + ], + [ + 8.825020470631218, + -56.12567141608476 + ], + [ + 3.5141548580657216, + -60.236296680881296 + ], + [ + 0, + -64.02451996412519 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 927, + "versionNonce": 808424670, + "isDeleted": false, + "id": "Qh0GGaAxOQ-akE5E7Wl0M", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 605.7661713395685, + "y": 559.9305004293582, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 19.31913238775878, + "height": 10.178366424241204, + "seed": 1861289510, + "groupIds": [ + "Q0z9If-4u_nx94qzj7evP", + "Osfafhh5GhSRJEcdLb8An" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -3.1541331797587935, + -80.20510085672359 + ], + [ + -3.5, + -86.77657044130652 + ], + [ + -2.3635804477788955, + -88.55531408826134 + ], + [ + 0.35394456840200866, + -88.90118090850252 + ], + [ + 15.819132387758781, + -89 + ], + [ + 15.769722842010038, + -87.9623995392764 + ], + [ + 13.546293283316574, + -87.7153518105327 + ], + [ + 1.4903641206231142, + -87.46830408178894 + ], + [ + -1.7212563530452265, + -86.92479907855274 + ], + [ + -2.0671231732864324, + -83.61435951338693 + ], + [ + -1.7706658987939703, + -78.8216335757588 + ], + [ + -3.1541331797587935, + -80.20510085672359 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 363, + "versionNonce": 1541877762, + "isDeleted": false, + "id": "NO_Xr1DVOrL4towWmZ_vM", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 669.8888888888889, + "y": 452.8585132761304, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 118, + "height": 21, + "seed": 2032555834, + "groupIds": [ + "Osfafhh5GhSRJEcdLb8An" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HRJXrCrFxLKtRQKxFzRvd", + "Yxcjn6W3x688uBCCpeZG3", + "_gqZFtkQHYIiWtbMdHbwZ" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "HASH DIGEST", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 408, + "versionNonce": 493177118, + "isDeleted": false, + "id": "_rutr_h4VMHXOcKbryiiV", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1232.7972401550498, + "y": 620.8253592596943, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 0.17442053284298709, + "height": 97, + "seed": 1674185638, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "VZFd6qHVT4056JrJ3XmtY", + "focus": 0.062346941719864726, + "gap": 6.214248148583238 + }, + "endBinding": { + "elementId": "ZI9iY_G9Qtw3A7if3ipqu", + "focus": 0.010922015436014782, + "gap": 12.802957720575023 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0.17442053284298709, + 97 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 281, + "versionNonce": 1296424898, + "isDeleted": false, + "id": "qq2ACbDuvIXPp3r92FL-v", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1193.7777777777778, + "y": 639.3253592596943, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 86, + "height": 41, + "seed": 510290362, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HRJXrCrFxLKtRQKxFzRvd" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "HASH\nFUNCTION", + "baseline": 35, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "rectangle", + "version": 355, + "versionNonce": 2052748638, + "isDeleted": false, + "id": "ZI9iY_G9Qtw3A7if3ipqu", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1116.7777777777778, + "y": 730.6283169802693, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 230, + "height": 44, + "seed": 588621542, + "groupIds": [ + "-w7LF2VUBcVYgj9Z9ipdo" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "_rutr_h4VMHXOcKbryiiV" + ] + }, + { + "type": "line", + "version": 2414, + "versionNonce": 1186502530, + "isDeleted": false, + "id": "ga3Or5yqdRYFSXzFTfYeX", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1125.6176025100522, + "y": 958.2879035002563, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 29.105916074710315, + "height": 22.178159912932212, + "seed": 2141790842, + "groupIds": [ + "abP1SWZja25KTbwDiXqaK", + "-w7LF2VUBcVYgj9Z9ipdo" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -200.40826329265352 + ], + [ + 0.2500255549621401, + -209.3631265431339 + ], + [ + 2.450250438628975, + -216.1425145406729 + ], + [ + 7.000715538939932, + -220.54405749429887 + ], + [ + 12.022619199035114, + -222.25960140412388 + ], + [ + 17.38332754162977, + -222.38405341461427 + ], + [ + 23.281791382651058, + -220.2494308868553 + ], + [ + 27.102770157895993, + -215.21101829693725 + ], + [ + 28.8735393824514, + -208.44651043108743 + ], + [ + 29.105916074710315, + -201.6492662755216 + ], + [ + 26.735085518245807, + -200.83978711163644 + ], + [ + 24.902545274229176, + -200.94097200712207 + ], + [ + 24.50838734052414, + -203.30393691934594 + ], + [ + 23.825964649333354, + -211.31242379440164 + ], + [ + 20.746238107623245, + -216.6573670971147 + ], + [ + 14.48704220922878, + -218.17081176381714 + ], + [ + 8.25084331375063, + -216.34488433164432 + ], + [ + 4.541640668959357, + -210.21427007574854 + ], + [ + 4.35044465634124, + -202.0272216204239 + ], + [ + 3.850393546416957, + -200.45885574039633 + ], + [ + 1.8001839957274095, + -200.20589350168206 + ], + [ + 0, + -200.40826329265352 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 468, + "versionNonce": 274733470, + "isDeleted": false, + "id": "-jpet-juSO6SIdvR8L3_s", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1117.4141414141413, + "y": 730.253855556861, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 44.73809778704429, + "height": 44.73809778704429, + "seed": 80468518, + "groupIds": [ + "abP1SWZja25KTbwDiXqaK", + "-w7LF2VUBcVYgj9Z9ipdo" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 1053, + "versionNonce": 947803970, + "isDeleted": false, + "id": "zIBO9BurNzfSZWyNh0aWX", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1122.3467038121257, + "y": 829.2066134777926, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 38.03742356143924, + "height": 17.366720072970526, + "seed": 1645396794, + "groupIds": [ + "abP1SWZja25KTbwDiXqaK", + "-w7LF2VUBcVYgj9Z9ipdo" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -64.02451996412519 + ], + [ + 0.02642221697793623, + -68.27485275426127 + ], + [ + 2.663359471376133, + -70.63376058595503 + ], + [ + 9.03639820645473, + -70.96153593386684 + ], + [ + 28.794932062556594, + -71.1764705882353 + ], + [ + 33.93669548646329, + -71.1764705882353 + ], + [ + 36.56306385407032, + -69.90835612746145 + ], + [ + 38.03742356143924, + -67.59243522664146 + ], + [ + 37.87889025957164, + -64.48125610465817 + ], + [ + 35.32650409950284, + -60.827366980394544 + ], + [ + 30.026207373728504, + -56.58240755661774 + ], + [ + 24.392990714032184, + -54.384700715700305 + ], + [ + 17.380534328087474, + -53.80975051526478 + ], + [ + 8.825020470631218, + -56.12567141608476 + ], + [ + 3.5141548580657216, + -60.236296680881296 + ], + [ + 0, + -64.02451996412519 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 939, + "versionNonce": 1453798878, + "isDeleted": false, + "id": "OX0h_fuR2sjHAPQ84LM9V", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1128.6550602284574, + "y": 849.2003041334967, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 19.31913238775878, + "height": 10.178366424241204, + "seed": 265921894, + "groupIds": [ + "abP1SWZja25KTbwDiXqaK", + "-w7LF2VUBcVYgj9Z9ipdo" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -3.1541331797587935, + -80.20510085672359 + ], + [ + -3.5, + -86.77657044130652 + ], + [ + -2.3635804477788955, + -88.55531408826134 + ], + [ + 0.35394456840200866, + -88.90118090850252 + ], + [ + 15.819132387758781, + -89 + ], + [ + 15.769722842010038, + -87.9623995392764 + ], + [ + 13.546293283316574, + -87.7153518105327 + ], + [ + 1.4903641206231142, + -87.46830408178894 + ], + [ + -1.7212563530452265, + -86.92479907855274 + ], + [ + -2.0671231732864324, + -83.61435951338693 + ], + [ + -1.7706658987939703, + -78.8216335757588 + ], + [ + -3.1541331797587935, + -80.20510085672359 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 367, + "versionNonce": 854990594, + "isDeleted": false, + "id": "mIv9epmiuDx01xemjaOcI", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1192.7777777777778, + "y": 742.1283169802691, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 118, + "height": 21, + "seed": 805981178, + "groupIds": [ + "-w7LF2VUBcVYgj9Z9ipdo" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HRJXrCrFxLKtRQKxFzRvd", + "_rutr_h4VMHXOcKbryiiV" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "HASH DIGEST", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "rectangle", + "version": 394, + "versionNonce": 910215710, + "isDeleted": false, + "id": "4BlYr_66GYVbDhnQn-7hy", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1479.7777777777778, + "y": 725.9140688316859, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 230, + "height": 44, + "seed": 167021626, + "groupIds": [ + "a-UDRGLhr0b4_6F0Ym3Pb" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "_rutr_h4VMHXOcKbryiiV", + "z5bTfCETuQIBYvydqiAoI" + ] + }, + { + "type": "line", + "version": 2450, + "versionNonce": 1654582978, + "isDeleted": false, + "id": "St_OVTv7-zd3b4EKk_UDx", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1488.6176025100522, + "y": 953.5736553516729, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 29.105916074710315, + "height": 22.178159912932212, + "seed": 647294054, + "groupIds": [ + "Ea5dXTMRVEriFvufkblj1", + "a-UDRGLhr0b4_6F0Ym3Pb" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -200.40826329265352 + ], + [ + 0.2500255549621401, + -209.3631265431339 + ], + [ + 2.450250438628975, + -216.1425145406729 + ], + [ + 7.000715538939932, + -220.54405749429887 + ], + [ + 12.022619199035114, + -222.25960140412388 + ], + [ + 17.38332754162977, + -222.38405341461427 + ], + [ + 23.281791382651058, + -220.2494308868553 + ], + [ + 27.102770157895993, + -215.21101829693725 + ], + [ + 28.8735393824514, + -208.44651043108743 + ], + [ + 29.105916074710315, + -201.6492662755216 + ], + [ + 26.735085518245807, + -200.83978711163644 + ], + [ + 24.902545274229176, + -200.94097200712207 + ], + [ + 24.50838734052414, + -203.30393691934594 + ], + [ + 23.825964649333354, + -211.31242379440164 + ], + [ + 20.746238107623245, + -216.6573670971147 + ], + [ + 14.48704220922878, + -218.17081176381714 + ], + [ + 8.25084331375063, + -216.34488433164432 + ], + [ + 4.541640668959357, + -210.21427007574854 + ], + [ + 4.35044465634124, + -202.0272216204239 + ], + [ + 3.850393546416957, + -200.45885574039633 + ], + [ + 1.8001839957274095, + -200.20589350168206 + ], + [ + 0, + -200.40826329265352 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 504, + "versionNonce": 1310578270, + "isDeleted": false, + "id": "PXqJZn2lhW2iZSS0baRr1", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1480.4141414141413, + "y": 725.5396074082776, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 44.73809778704429, + "height": 44.73809778704429, + "seed": 1791685882, + "groupIds": [ + "Ea5dXTMRVEriFvufkblj1", + "a-UDRGLhr0b4_6F0Ym3Pb" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 1089, + "versionNonce": 202884738, + "isDeleted": false, + "id": "k5q17tsYydg0XOiuQ5zLT", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1485.3467038121257, + "y": 824.4923653292092, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 38.03742356143924, + "height": 17.366720072970526, + "seed": 860254118, + "groupIds": [ + "Ea5dXTMRVEriFvufkblj1", + "a-UDRGLhr0b4_6F0Ym3Pb" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -64.02451996412519 + ], + [ + 0.02642221697793623, + -68.27485275426127 + ], + [ + 2.663359471376133, + -70.63376058595503 + ], + [ + 9.03639820645473, + -70.96153593386684 + ], + [ + 28.794932062556594, + -71.1764705882353 + ], + [ + 33.93669548646329, + -71.1764705882353 + ], + [ + 36.56306385407032, + -69.90835612746145 + ], + [ + 38.03742356143924, + -67.59243522664146 + ], + [ + 37.87889025957164, + -64.48125610465817 + ], + [ + 35.32650409950284, + -60.827366980394544 + ], + [ + 30.026207373728504, + -56.58240755661774 + ], + [ + 24.392990714032184, + -54.384700715700305 + ], + [ + 17.380534328087474, + -53.80975051526478 + ], + [ + 8.825020470631218, + -56.12567141608476 + ], + [ + 3.5141548580657216, + -60.236296680881296 + ], + [ + 0, + -64.02451996412519 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 975, + "versionNonce": 923753118, + "isDeleted": false, + "id": "uBcGOCivX23qbIDqvKZo3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1491.6550602284574, + "y": 844.4860559849133, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 19.31913238775878, + "height": 10.178366424241204, + "seed": 1582712250, + "groupIds": [ + "Ea5dXTMRVEriFvufkblj1", + "a-UDRGLhr0b4_6F0Ym3Pb" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -3.1541331797587935, + -80.20510085672359 + ], + [ + -3.5, + -86.77657044130652 + ], + [ + -2.3635804477788955, + -88.55531408826134 + ], + [ + 0.35394456840200866, + -88.90118090850252 + ], + [ + 15.819132387758781, + -89 + ], + [ + 15.769722842010038, + -87.9623995392764 + ], + [ + 13.546293283316574, + -87.7153518105327 + ], + [ + 1.4903641206231142, + -87.46830408178894 + ], + [ + -1.7212563530452265, + -86.92479907855274 + ], + [ + -2.0671231732864324, + -83.61435951338693 + ], + [ + -1.7706658987939703, + -78.8216335757588 + ], + [ + -3.1541331797587935, + -80.20510085672359 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 404, + "versionNonce": 136291906, + "isDeleted": false, + "id": "OoYmTRkocuk3Vx8UYrecA", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1555.7777777777778, + "y": 737.4140688316859, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 118, + "height": 21, + "seed": 224758502, + "groupIds": [ + "a-UDRGLhr0b4_6F0Ym3Pb" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HRJXrCrFxLKtRQKxFzRvd", + "_rutr_h4VMHXOcKbryiiV" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "HASH DIGEST", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 336, + "versionNonce": 1204180702, + "isDeleted": false, + "id": "z5bTfCETuQIBYvydqiAoI", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1593.0366606427433, + "y": 491.11111111111114, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 2.3927605398180276, + "height": 223.99999999999994, + "seed": 700250682, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "rUC5LGOSz-uhAJmuRnXoR", + "focus": 0.18681318659004068, + "gap": 15.697042279425034 + }, + "endBinding": { + "elementId": "4BlYr_66GYVbDhnQn-7hy", + "focus": 0.008695652173914608, + "gap": 10.802957720574796 + }, + "points": [ + [ + 0, + 0 + ], + [ + 2.3927605398180276, + 223.99999999999994 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 386, + "versionNonce": 1066765826, + "isDeleted": false, + "id": "N3p6YkRMXyep6RAZEXL31", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1527.7777777777778, + "y": 563.6111111111111, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 134, + "height": 62, + "seed": 1338615590, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HRJXrCrFxLKtRQKxFzRvd" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "DECRYPT\nUSING SIGNER'S\nPUBLIC KEY", + "baseline": 56, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "line", + "version": 82, + "versionNonce": 1490275102, + "isDeleted": false, + "id": "5txEDJO4J9sWlf0OX2QBZ", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1370.7777777777778, + "y": 736.1111111111111, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 80, + "height": 0, + "seed": 302082426, + "groupIds": [ + "FYPVS8Uj16urZZQkYp0lu" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 80, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 83, + "versionNonce": 662207938, + "isDeleted": false, + "id": "kAH2-RAq3ocbJvOqWmypl", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1372.7777777777778, + "y": 762.1111111111111, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 80, + "height": 0, + "seed": 1504759866, + "groupIds": [ + "FYPVS8Uj16urZZQkYp0lu" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 80, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 102, + "versionNonce": 145274718, + "isDeleted": false, + "id": "tajJ7P6jT_wY2WpPSu83G", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1366.7777777777778, + "y": 708.6111111111111, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 86, + "height": 21, + "seed": 2130759674, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "IS EQUALS", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 101, + "versionNonce": 1021801858, + "isDeleted": false, + "id": "Yme_FA3WSI7a4vZyquNPJ", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1406.2777777777778, + "y": 737.6111111111111, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 7, + "height": 21, + "seed": 589609274, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "V-W0V-1RFaq20UmmkwpFF" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "?", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 195, + "versionNonce": 2140543902, + "isDeleted": false, + "id": "BKKgKMGOshuiO1TOyUHUp", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1300.7777777777778, + "y": 806.6111111111111, + "strokeColor": "#087f5b", + "backgroundColor": "#ced4da", + "width": 222, + "height": 21, + "seed": 1705809978, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "V-W0V-1RFaq20UmmkwpFF" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "THE SIGNATURE IS VALID", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 262, + "versionNonce": 18969922, + "isDeleted": false, + "id": "V-W0V-1RFaq20UmmkwpFF", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1411.949241777945, + "y": 764.1111111111111, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 1.4699910879519393, + "height": 38, + "seed": 1628012454, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "Yme_FA3WSI7a4vZyquNPJ", + "focus": -0.7143568313443425, + "gap": 5.5 + }, + "endBinding": { + "elementId": "BKKgKMGOshuiO1TOyUHUp", + "focus": -0.01686429512516514, + "gap": 4.5 + }, + "points": [ + [ + 0, + 0 + ], + [ + -1.4699910879519393, + 38 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 287, + "versionNonce": 869070814, + "isDeleted": false, + "id": "Oh1CMP1ng0cxW0zJfPaJF", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1384.7777777777778, + "y": 371.1111111111111, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 161, + "height": 68, + "seed": 1201198074, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "taDrVqOtQ6FWjRSN29KjN", + "focus": -0.17294520547945208, + "gap": 1 + }, + "endBinding": { + "elementId": "CIJ9nLfd_DW0q0zkxEK0T", + "focus": -0.475162469700146, + "gap": 4.737592835088407 + }, + "points": [ + [ + 0, + 0 + ], + [ + -11, + 29 + ], + [ + -140, + 28 + ], + [ + -161, + 68 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 194, + "versionNonce": 1971682562, + "isDeleted": false, + "id": "qaPDvkJEqbEXNSwkd8K9V", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1384.7777777777778, + "y": 369.1111111111111, + "strokeColor": "#000000", + "backgroundColor": "#ced4da", + "width": 208, + "height": 73, + "seed": 313456998, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": { + "elementId": "rUC5LGOSz-uhAJmuRnXoR", + "focus": -0.04092513861222372, + "gap": 12.302957720575023 + }, + "points": [ + [ + 0, + 0 + ], + [ + 21, + 31 + ], + [ + 184, + 31 + ], + [ + 208, + 73 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 710, + "versionNonce": 761154590, + "isDeleted": false, + "id": "Z7yOp-DaNODmk_TBs5FKG", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 651.2222222222225, + "y": 499, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 134, + "height": 62, + "seed": 1928991674, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HRJXrCrFxLKtRQKxFzRvd" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "ENCRYPT\nUSING SIGNER'S\nPRIVATE KEY", + "baseline": 56, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 171, + "versionNonce": 395480258, + "isDeleted": false, + "id": "3gxc2zpS0lEFywLFXl4ua", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 668.4298245614036, + "y": 1115.7339181286548, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "width": 67, + "height": 21, + "seed": 636687718, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "SIGNED", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "rectangle", + "version": 379, + "versionNonce": 1245386846, + "isDeleted": false, + "id": "XfhW2P7Tcq23OIRS5J8QE", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 588.0409356725146, + "y": 1066.259098071452, + "strokeColor": "#1864ab", + "backgroundColor": "#ced4da", + "width": 230, + "height": 44, + "seed": 325582566, + "groupIds": [ + "MGC_LHoKJptU8-9zyuyVG" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "_yXe0M4iShT6zy7SjcvBo" + ] + }, + { + "type": "line", + "version": 2436, + "versionNonce": 1558684802, + "isDeleted": false, + "id": "BILEXhH5qT2gPt853Ierm", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 596.8807604047894, + "y": 1293.9186845914392, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "width": 29.105916074710315, + "height": 22.178159912932212, + "seed": 910707322, + "groupIds": [ + "DLA7EeGkWAQAJKB-F-IrM", + "MGC_LHoKJptU8-9zyuyVG" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -200.40826329265352 + ], + [ + 0.2500255549621401, + -209.3631265431339 + ], + [ + 2.450250438628975, + -216.1425145406729 + ], + [ + 7.000715538939932, + -220.54405749429887 + ], + [ + 12.022619199035114, + -222.25960140412388 + ], + [ + 17.38332754162977, + -222.38405341461427 + ], + [ + 23.281791382651058, + -220.2494308868553 + ], + [ + 27.102770157895993, + -215.21101829693725 + ], + [ + 28.8735393824514, + -208.44651043108743 + ], + [ + 29.105916074710315, + -201.6492662755216 + ], + [ + 26.735085518245807, + -200.83978711163644 + ], + [ + 24.902545274229176, + -200.94097200712207 + ], + [ + 24.50838734052414, + -203.30393691934594 + ], + [ + 23.825964649333354, + -211.31242379440164 + ], + [ + 20.746238107623245, + -216.6573670971147 + ], + [ + 14.48704220922878, + -218.17081176381714 + ], + [ + 8.25084331375063, + -216.34488433164432 + ], + [ + 4.541640668959357, + -210.21427007574854 + ], + [ + 4.35044465634124, + -202.0272216204239 + ], + [ + 3.850393546416957, + -200.45885574039633 + ], + [ + 1.8001839957274095, + -200.20589350168206 + ], + [ + 0, + -200.40826329265352 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 490, + "versionNonce": 36986014, + "isDeleted": false, + "id": "7qCBshaBxrwKkx4MLklMq", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 588.6772993088786, + "y": 1065.8846366480436, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "width": 44.73809778704429, + "height": 44.73809778704429, + "seed": 1762865702, + "groupIds": [ + "DLA7EeGkWAQAJKB-F-IrM", + "MGC_LHoKJptU8-9zyuyVG" + ], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 1075, + "versionNonce": 792970306, + "isDeleted": false, + "id": "mgJlveZtx4I0LR6WwDCkH", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 593.6098617068625, + "y": 1164.8373945689752, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "width": 38.03742356143924, + "height": 17.366720072970526, + "seed": 1250749242, + "groupIds": [ + "DLA7EeGkWAQAJKB-F-IrM", + "MGC_LHoKJptU8-9zyuyVG" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -64.02451996412519 + ], + [ + 0.02642221697793623, + -68.27485275426127 + ], + [ + 2.663359471376133, + -70.63376058595503 + ], + [ + 9.03639820645473, + -70.96153593386684 + ], + [ + 28.794932062556594, + -71.1764705882353 + ], + [ + 33.93669548646329, + -71.1764705882353 + ], + [ + 36.56306385407032, + -69.90835612746145 + ], + [ + 38.03742356143924, + -67.59243522664146 + ], + [ + 37.87889025957164, + -64.48125610465817 + ], + [ + 35.32650409950284, + -60.827366980394544 + ], + [ + 30.026207373728504, + -56.58240755661774 + ], + [ + 24.392990714032184, + -54.384700715700305 + ], + [ + 17.380534328087474, + -53.80975051526478 + ], + [ + 8.825020470631218, + -56.12567141608476 + ], + [ + 3.5141548580657216, + -60.236296680881296 + ], + [ + 0, + -64.02451996412519 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 961, + "versionNonce": 721098974, + "isDeleted": false, + "id": "gogbQDH-tQxurp5S0Jjnu", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 599.9182181231942, + "y": 1184.8310852246796, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "width": 19.31913238775878, + "height": 10.178366424241204, + "seed": 561380710, + "groupIds": [ + "DLA7EeGkWAQAJKB-F-IrM", + "MGC_LHoKJptU8-9zyuyVG" + ], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -3.1541331797587935, + -80.20510085672359 + ], + [ + -3.5, + -86.77657044130652 + ], + [ + -2.3635804477788955, + -88.55531408826134 + ], + [ + 0.35394456840200866, + -88.90118090850252 + ], + [ + 15.819132387758781, + -89 + ], + [ + 15.769722842010038, + -87.9623995392764 + ], + [ + 13.546293283316574, + -87.7153518105327 + ], + [ + 1.4903641206231142, + -87.46830408178894 + ], + [ + -1.7212563530452265, + -86.92479907855274 + ], + [ + -2.0671231732864324, + -83.61435951338693 + ], + [ + -1.7706658987939703, + -78.8216335757588 + ], + [ + -3.1541331797587935, + -80.20510085672359 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 395, + "versionNonce": 1753607170, + "isDeleted": false, + "id": "rRylxPK4XWF4WWs0b4CXd", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 632.0409356725146, + "y": 1077.759098071452, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "width": 182, + "height": 21, + "seed": 1459581946, + "groupIds": [ + "MGC_LHoKJptU8-9zyuyVG" + ], + "strokeSharpness": "sharp", + "boundElementIds": [ + "HRJXrCrFxLKtRQKxFzRvd", + "Yxcjn6W3x688uBCCpeZG3", + "z5bTfCETuQIBYvydqiAoI", + "qaPDvkJEqbEXNSwkd8K9V", + "dvd7j0DA1psjgr0380qSF" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "DIGITAL SIGNATURE", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 498, + "versionNonce": 1319967682, + "isDeleted": false, + "id": "rgpt-AAh-kCoLyPG1E00z", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 712.5743657979758, + "y": 580.6783625730992, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 180.42955499920083, + "height": 96.66666666666646, + "seed": 2126503718, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "5rs2rpr9Ff1svVgC7Uk8X", + "focus": 0.20468605736281903, + "gap": 1.111111111111029 + }, + "endBinding": { + "elementId": "bce2KL57BhgHaIKDUIMkv", + "focus": -0.16053814427256427, + "gap": 9.821637426901134 + }, + "points": [ + [ + 0, + 0 + ], + [ + -16.20009679212751, + 55.555555555555486 + ], + [ + -169.533430125461, + 57.77777777777766 + ], + [ + -180.42955499920083, + 96.66666666666646 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 416, + "versionNonce": 320141662, + "isDeleted": false, + "id": "vytpSbQ56CP21MDQ-U89s", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 714.2831094029411, + "y": 578.4561403508769, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 1.6667211103738282, + "height": 99.99999999999983, + "seed": 39045798, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "5rs2rpr9Ff1svVgC7Uk8X", + "focus": 0.02651682923964613, + "gap": 3.3333333333333144 + }, + "endBinding": { + "elementId": "uVTOcyCmZ7mvPgcMo4gJe", + "focus": -0.04988045540245653, + "gap": 6.710526315790048 + }, + "points": [ + [ + 0, + 0 + ], + [ + -1.6667211103738282, + 99.99999999999983 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 456, + "versionNonce": 265835394, + "isDeleted": false, + "id": "dgGydSV58rEFC8LX9PDjx", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 706.8207498585444, + "y": 584.0116959064325, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 183.74459599830107, + "height": 94.44444444444434, + "seed": 819970470, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "n2h3129kIa-_05lzHAyc0", + "focus": -0.10674084434903611, + "gap": 2.111111111110972 + }, + "endBinding": { + "elementId": "aUj8uuAzb6lwxDy4D2Jq-", + "focus": -0.03435684467241522, + "gap": 7.710526315789934 + }, + "points": [ + [ + 0, + 0 + ], + [ + 25.109074702859402, + 52.222222222222285 + ], + [ + 173.99796359174832, + 56.66666666666663 + ], + [ + 183.74459599830107, + 94.44444444444434 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 128, + "versionNonce": 925506974, + "isDeleted": false, + "id": "n2h3129kIa-_05lzHAyc0", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 640.3742690058483, + "y": 586.1228070175434, + "strokeColor": "#e67700", + "backgroundColor": "#228be6", + "width": 132, + "height": 26, + "seed": 1200457062, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "rgpt-AAh-kCoLyPG1E00z", + "dgGydSV58rEFC8LX9PDjx" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "cocert: split()", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 80, + "versionNonce": 1044812610, + "isDeleted": false, + "id": "BJ0uzhoX59PFXIjpnH1Lm", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 443.9298245614038, + "y": 586.1228070175438, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 129, + "height": 25, + "seed": 1189242982, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "PRIVATE KEY", + "baseline": 20, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "rectangle", + "version": 188, + "versionNonce": 496024030, + "isDeleted": false, + "id": "5rs2rpr9Ff1svVgC7Uk8X", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 438.5964912280705, + "y": 581.7894736842103, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 558.888888888889, + "height": 443.3333333333334, + "seed": 1449273914, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "rgpt-AAh-kCoLyPG1E00z", + "vytpSbQ56CP21MDQ-U89s", + "xCO9dqT4OWCLpnE5RZZ5B", + "_gqZFtkQHYIiWtbMdHbwZ", + "dvd7j0DA1psjgr0380qSF" + ] + }, + { + "type": "text", + "version": 253, + "versionNonce": 1834602014, + "isDeleted": false, + "id": "bce2KL57BhgHaIKDUIMkv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 476.55555555555554, + "y": 687.1666666666667, + "strokeColor": "#a61e4d", + "backgroundColor": "transparent", + "width": 120, + "height": 21, + "seed": 1419778874, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "rgpt-AAh-kCoLyPG1E00z" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "PRIVATE KEY 1", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 325, + "versionNonce": 143141570, + "isDeleted": false, + "id": "7qyGWMXavpTXjvZbeErov", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 492.3174603174603, + "y": 829.1666666666667, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 75, + "height": 77, + "seed": 799996774, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "8gfiV_287xVvbifZSYsoQ" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "GitHub\nSecret\nVariable", + "baseline": 69, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 329, + "versionNonce": 1131829854, + "isDeleted": false, + "id": "PFqN3F0K9VnwrQcPD-j3j", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 670.6666666666666, + "y": 831.1666666666667, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 74, + "height": 77, + "seed": 561755642, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "5LH7FQECCb0Li5yoEgZVr" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Remote\nCI/CD\nSolution", + "baseline": 69, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 457, + "versionNonce": 2143423618, + "isDeleted": false, + "id": "wVOzPHICh2fiS4AEjCLOV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 808.9444444444445, + "y": 831.9444444444446, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 173, + "height": 77, + "seed": 579305722, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "5ZgnT2_i3iP2Qd8FMIqXt" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Secure\nSealed\nVault, gcpkms, etc", + "baseline": 69, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "ellipse", + "version": 506, + "versionNonce": 1991728798, + "isDeleted": false, + "id": "41fM-P7D-OqnhP8zvgA_O", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 476.80555555555554, + "y": 711.9166666666667, + "strokeColor": "#000000", + "backgroundColor": "#868e96", + "width": 102.5, + "height": 102.5, + "seed": 1557395450, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "line", + "version": 4033, + "versionNonce": 2045370946, + "isDeleted": false, + "id": "0y6R5emlD4NcHMXEsbzHO", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 543.1033274008896, + "y": 735.168341286329, + "strokeColor": "#000000", + "backgroundColor": "#fff", + "width": 55.52008102871236, + "height": 64.12363622658292, + "seed": 75701414, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + -34.74599260172625, + -3.3398658791389564 + ], + [ + -29.762726792319878, + -1.5861700242558212 + ], + [ + -26.40443896424168, + 2.015819002087318 + ], + [ + -21.827892789927983, + 0.5115798129469876 + ], + [ + -9.057561443683166, + 0.6853352540135729 + ], + [ + -5.074464830386681, + 1.0784163445284063 + ], + [ + -1.9936586225118973, + -1.375817503803488 + ], + [ + 2.28545006165226, + -4.346013157269368 + ], + [ + 3.4590452703893284, + -0.26009069863246115 + ], + [ + 3.3507134049673977, + 3.706286465581387 + ], + [ + 7.268715871058677, + 7.4618205683294025 + ], + [ + 9.020081028712358, + 18.21287524858515 + ], + [ + 7.64787740003526, + 29.47263318725431 + ], + [ + 3.6576536903294294, + 33.84736403870313 + ], + [ + -1.7769948916681053, + 36.190782762373125 + ], + [ + -7.644970935353187, + 37.48549316280863 + ], + [ + -6.0922141976395485, + 38.94445021855179 + ], + [ + -4.340849039985873, + 42.179208539113546 + ], + [ + -3.9797428219129936, + 52.32559169950887 + ], + [ + -4.051964065527553, + 58.46871080786622 + ], + [ + -5.965827021314022, + 59.531910800550705 + ], + [ + -20.441672538312467, + 59.77762306931355 + ], + [ + -22.25171745640303, + 58.00568999236425 + ], + [ + -22.75726616170509, + 50.77821300402374 + ], + [ + -26.097498678879678, + 51.70664022131479 + ], + [ + -31.62242381539545, + 52.060326780282814 + ], + [ + -36.78624273383831, + 49.098201848925605 + ], + [ + -40.00008807468731, + 43.925535924018135 + ], + [ + -43.12365686101813, + 40.74235689330597 + ], + [ + -46.5, + 38.50234201984174 + ], + [ + -41.91395103047382, + 38.94445021855179 + ], + [ + -38.66399506781751, + 41.44973001124198 + ], + [ + -34.98071164347367, + 44.94238478105126 + ], + [ + -30.50299453936938, + 47.12345189468737 + ], + [ + -25.537784040866647, + 46.504500416493414 + ], + [ + -23.082261757970734, + 44.57396128212625 + ], + [ + -22.847542716223362, + 41.538151650983956 + ], + [ + -21.52950502025716, + 38.9002393986808 + ], + [ + -19.814250484410778, + 37.70654726216363 + ], + [ + -26.296107098819803, + 36.041273047022585 + ], + [ + -32.48907873877047, + 33.9990140698342 + ], + [ + -35.64875814690858, + 29.398948487469305 + ], + [ + -38.01400387528625, + 18.31890995558495 + ], + [ + -36.13625154130703, + 7.893717729150247 + ], + [ + -33.42795490576006, + 5.036891693272573 + ], + [ + -34.98071164347367, + 1.1591814393074649 + ], + [ + -34.74599260172625, + -3.3398658791389564 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 1081, + "versionNonce": 1540217566, + "isDeleted": false, + "id": "payVlPWFaat3xseBeFEJS", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 706.3960927620737, + "y": 820.7954229716954, + "strokeColor": "#000000", + "backgroundColor": "#fab005", + "width": 0.2235211159132477, + "height": 0.9283259963035296, + "seed": 724626106, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -0.2235211159132477, + 0.9283259963035296 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 1107, + "versionNonce": 1958234626, + "isDeleted": false, + "id": "eltr6T7OhFlVM7qzZENJD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 669.5688640162574, + "y": 708.0082943723215, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 72.00606609605383, + "height": 70.15624960354248, + "seed": 213104102, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1365, + "versionNonce": 155897630, + "isDeleted": false, + "id": "niuibMHoi2wqrLd8Azjcq", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 678.284198539356, + "y": 717.5319601784595, + "strokeColor": "#000000", + "backgroundColor": "#ffffff", + "width": 54.761264886372665, + "height": 54.16249542367651, + "seed": 301433722, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1656, + "versionNonce": 551795138, + "isDeleted": false, + "id": "Yiy-pd-2ik6ZPES5yBHiv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 673.6479312537355, + "y": 791.1653881156928, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 63.1172827068127, + "height": 33.53486166627458, + "seed": 1305479462, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1821, + "versionNonce": 463420254, + "isDeleted": false, + "id": "ajBz8xG9qBIcFNFmQan3f", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 682.2044070953415, + "y": 792.9888993185314, + "strokeColor": "#000000", + "backgroundColor": "#ffffff", + "width": 44.81401161335517, + "height": 22.495001773135307, + "seed": 1038943290, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 1138, + "versionNonce": 1569403266, + "isDeleted": false, + "id": "xvnFhPiaguKrF_h64WvY6", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 694.7876034019265, + "y": 763.7997454521195, + "strokeColor": "#ffffff", + "backgroundColor": "#ffffff", + "width": 21.602602487751813, + "height": 18.835696418851246, + "seed": 645919846, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 1428, + "versionNonce": 2031886238, + "isDeleted": false, + "id": "9LCaBno6nEwNqSaMLMcJk", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 699.9281134910892, + "y": 783.7411580294771, + "strokeColor": "#ffffff", + "backgroundColor": "#ffffff", + "width": 12.271784840479654, + "height": 18.835696418851246, + "seed": 2029284602, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [] + }, + { + "type": "line", + "version": 1729, + "versionNonce": 1307423042, + "isDeleted": false, + "id": "uJJgiRvjU9qeyeZgdjuKA", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 700.1535017029313, + "y": 822.2348133716877, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 13.2147629097834, + "height": 6.504116251761904, + "seed": 277903270, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 13.2147629097834, + 0.08477827837514017 + ], + [ + 12.160389598502368, + 5.86173763012312 + ], + [ + 2.135715526459541, + 6.504116251761904 + ], + [ + 0, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 1930, + "versionNonce": 368212958, + "isDeleted": false, + "id": "ZxeFeGI7JG1_FbcMWUOi0", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.4881022482118462, + "x": 678.7940792443388, + "y": 819.1589076399348, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 11.124966335933404, + "height": 5.332049827301669, + "seed": 1485880762, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 11.124966335933404, + 0.06950091097259295 + ], + [ + 10.2373327345145, + 4.805430270395141 + ], + [ + 1.7979712157682692, + 5.332049827301669 + ], + [ + 0, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 2209, + "versionNonce": 1433024770, + "isDeleted": false, + "id": "4EeAJ38OjwtcGRbVlrmlD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 5.822045561292934, + "x": 722.832698599036, + "y": 819.0195457306867, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 10.454912735590737, + "height": 4.475488020839655, + "seed": 1143902950, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 10.454912735590737, + 0.05833600670845436 + ], + [ + 9.620741056882968, + 4.0334667354407285 + ], + [ + 1.6896799140187293, + 4.475488020839655 + ], + [ + 0, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 1928, + "versionNonce": 942886942, + "isDeleted": false, + "id": "Iwm_QTk2Gj69UNjwoJcEo", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 1.5818701738842122, + "x": 669.504100696441, + "y": 804.5379926682883, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 7.25080182958918, + "height": 5.2684756260832435, + "seed": 1239742074, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 7.25080182958918, + 0.0686722493804953 + ], + [ + 6.672278250566318, + 4.748134971055109 + ], + [ + 1.171844712799973, + 5.2684756260832435 + ], + [ + 0, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 2163, + "versionNonce": 327141570, + "isDeleted": false, + "id": "DgJaPCCD-xw2AdHKu1OL1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 4.71572404225276, + "x": 734.9018300055765, + "y": 805.7995926050901, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 8.0177318302504, + "height": 5.276617796044033, + "seed": 1810318886, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 8.0177318302504, + 0.06877837896440718 + ], + [ + 7.378016799679116, + 4.755472980125459 + ], + [ + 1.295792779163476, + 5.276617796044033 + ], + [ + 0, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 2100, + "versionNonce": 1003461726, + "isDeleted": false, + "id": "Bqa3gp8zk9ynk72UUR6t_", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 2.5636970446409872, + "x": 678.0570151154069, + "y": 793.2259578405454, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 7.159702653673372, + "height": 3.965413066017726, + "seed": 498341690, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 7.159702653673372, + 0.051687405293870704 + ], + [ + 6.588447653014056, + 3.5737693005965796 + ], + [ + 1.1571216393873567, + 3.965413066017726 + ], + [ + 0, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 2408, + "versionNonce": 1607295106, + "isDeleted": false, + "id": "Ml4CBI3dKfZosr1_Ftchv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 3.7156814121907207, + "x": 724.4254841450319, + "y": 793.2889831261517, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 8.628729267781894, + "height": 4.195359630056333, + "seed": 1487376742, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 8.628729267781894, + 0.054684657043818904 + ], + [ + 7.940264259947135, + 3.7810052070854043 + ], + [ + 1.3945396672364334, + 4.195359630056333 + ], + [ + 0, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 2624, + "versionNonce": 1452826782, + "isDeleted": false, + "id": "LASHOWyIZe3BBeS9DCPHC", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 3.204904778719108, + "x": 696.6337536474547, + "y": 788.0132302709517, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 4.052661302480961, + "height": 3.5786310971162725, + "seed": 341909498, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 4.052661302480961, + 0.04664587341455671 + ], + [ + 3.7293094613492594, + 3.2251878278794233 + ], + [ + 0.6549744196153882, + 3.5786310971162725 + ], + [ + 0, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 2859, + "versionNonce": 1175584834, + "isDeleted": false, + "id": "TXIx4CfdzVasVULmiCBOL", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 3.204904778719108, + "x": 711.9999221246514, + "y": 787.7668351386461, + "strokeColor": "#000000", + "backgroundColor": "#000000", + "width": 3.9883698216230767, + "height": 4.553615430600514, + "seed": 901543078, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 3.9883698216230767, + 0 + ], + [ + 0, + 0.05935436293657796 + ], + [ + 0.31822218258072016, + 4.10387789662118 + ], + [ + 3.343785926213431, + 4.553615430600514 + ], + [ + 3.9883698216230767, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 1155, + "versionNonce": 1547607262, + "isDeleted": false, + "id": "EcEQUI6twUCFU6Os-6lbJ", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 687.4370877262774, + "y": 726.5173744714743, + "strokeColor": "#3e96be", + "backgroundColor": "#3e96be", + "width": 38.1336535284848, + "height": 36.45914746650489, + "seed": 1777275066, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 1533, + "versionNonce": 36481026, + "isDeleted": false, + "id": "vzoSdWflqeK5D1MZqXL9K", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 689.6397330146609, + "y": 799.3701300140186, + "strokeColor": "#3e96be", + "backgroundColor": "#3e96be", + "width": 31.184524707794626, + "height": 10.405621311025211, + "seed": 1020456934, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [] + }, + { + "type": "draw", + "version": 4061, + "versionNonce": 39014686, + "isDeleted": false, + "id": "McHX0IKY-k_3iqZt9Yzrw", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 699.0869783599611, + "y": 758.8128910714518, + "strokeColor": "#3e96be", + "backgroundColor": "#3e96be", + "width": 20.264885460500345, + "height": 39.00970819709917, + "seed": 1644226938, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 7.65049928137632, + 3.0219261977999348 + ], + [ + 14.849871804137953, + 2.558187349198884 + ], + [ + 20.264885460500345, + 0.3362516596176101 + ], + [ + 14.54897493763568, + 11.015109477000827 + ], + [ + 11.998793804768248, + 24.04388233106473 + ], + [ + 12.63889340606657, + 35.38052281599686 + ], + [ + 14.968565779836567, + 38.94644197154794 + ], + [ + 12.416826166089079, + 38.803072464803755 + ], + [ + 7.777709355433941, + 38.69606114672704 + ], + [ + 3.1547353923164336, + 39.00970819709917 + ], + [ + 5.972287137481497, + 35.15924017875749 + ], + [ + 7.0990270312744075, + 29.27436918939375 + ], + [ + 7.263556746167783, + 23.3593929409629 + ], + [ + 6.411210361741109, + 17.666907209530958 + ], + [ + 5.0779428654746805, + 11.396080067591187 + ], + [ + 0, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "draw", + "version": 810, + "versionNonce": 2082232258, + "isDeleted": false, + "id": "aeZv2VOQdh2ClT2CsVmgi", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 677.0588155868782, + "y": 766.6663431826389, + "strokeColor": "#3e96be", + "backgroundColor": "#3e96be", + "width": 0.24825111171641523, + "height": 0, + "seed": 1777861414, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 0.24825111171641523, + 0 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 248, + "versionNonce": 608664926, + "isDeleted": false, + "id": "uVTOcyCmZ7mvPgcMo4gJe", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 651.0555555555555, + "y": 685.1666666666667, + "strokeColor": "#a61e4d", + "backgroundColor": "transparent", + "width": 129, + "height": 21, + "seed": 13128742, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "vytpSbQ56CP21MDQ-U89s" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "PRIVATE KEY 2", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 270, + "versionNonce": 1140854658, + "isDeleted": false, + "id": "aUj8uuAzb6lwxDy4D2Jq-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 833.5555555555555, + "y": 686.1666666666667, + "strokeColor": "#a61e4d", + "backgroundColor": "transparent", + "width": 128, + "height": 21, + "seed": 198726502, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "dgGydSV58rEFC8LX9PDjx" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "PRIVATE KEY 3", + "baseline": 15, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "line", + "version": 297, + "versionNonce": 124527006, + "isDeleted": false, + "id": "b9aNjltcZWqL1WM8-oC4U", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 830.3977919929697, + "y": 718.7900854565745, + "strokeColor": "#495057", + "backgroundColor": "#868e96", + "width": 132.29387341182996, + "height": 109.81923854649963, + "seed": 237752102, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + -0.48921284396976245 + ], + [ + 132.29387341182996, + -0.9999999999999858 + ], + [ + 66.40233028393, + 108.81923854649965 + ], + [ + 0, + -0.48921284396976245 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 276, + "versionNonce": 236375874, + "isDeleted": false, + "id": "Zy5bRIo5ziRUxuusM1FBc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 876.8371328246828, + "y": 734.415467830773, + "strokeColor": "#1864ab", + "backgroundColor": "#228be6", + "width": 8.683381652513928, + "height": 8.683381652513928, + "seed": 1153151546, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 284, + "versionNonce": 519192030, + "isDeleted": false, + "id": "0N1OIKQxMK79E4X0eey-0", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 889.351418147424, + "y": 733.6492870967271, + "strokeColor": "#364fc7", + "backgroundColor": "#4c6ef5", + "width": 8.683381652513928, + "height": 8.683381652513928, + "seed": 667264058, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 286, + "versionNonce": 784307970, + "isDeleted": false, + "id": "PUuNEb4Pl9bQQr9NoHUD5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 901.0995227361191, + "y": 734.1600742527578, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "width": 8.683381652513928, + "height": 8.683381652513928, + "seed": 1851905190, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 294, + "versionNonce": 1340789278, + "isDeleted": false, + "id": "KL3u-sFpADmFHyB5BU5W8", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 877.0925264026966, + "y": 746.6609178082338, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "width": 8.683381652513928, + "height": 8.683381652513928, + "seed": 1527143738, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 285, + "versionNonce": 377054914, + "isDeleted": false, + "id": "MNhvGo2XYpeUc27Y9oZTe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 888.8406309913935, + "y": 746.4189659974833, + "strokeColor": "#1864ab", + "backgroundColor": "#228be6", + "width": 8.683381652513928, + "height": 8.683381652513928, + "seed": 1152804198, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 283, + "versionNonce": 893836894, + "isDeleted": false, + "id": "aIrXtMgC-MVWeA-0hQ7aB", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 901.0995227361191, + "y": 746.4189659974833, + "strokeColor": "#364fc7", + "backgroundColor": "#4c6ef5", + "width": 8.683381652513928, + "height": 8.683381652513928, + "seed": 1891548922, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 288, + "versionNonce": 1306738306, + "isDeleted": false, + "id": "xvxOsy-I1s_UK95FGCtF1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 878.1141007147578, + "y": 759.1886448982387, + "strokeColor": "#1864ab", + "backgroundColor": "#228be6", + "width": 8.683381652513928, + "height": 8.683381652513928, + "seed": 1267605350, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 281, + "versionNonce": 1675059870, + "isDeleted": false, + "id": "DBCLP-Djo0zzoHhJCV9hf", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 889.8622053034535, + "y": 759.6994320542692, + "strokeColor": "#364fc7", + "backgroundColor": "#4c6ef5", + "width": 8.683381652513928, + "height": 8.683381652513928, + "seed": 1510267622, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 281, + "versionNonce": 1908153922, + "isDeleted": false, + "id": "4VqiXEqNg4xIgxA_Wvn5_", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 901.0995227361191, + "y": 759.4574802435187, + "strokeColor": "#1864ab", + "backgroundColor": "#228be6", + "width": 8.683381652513928, + "height": 8.683381652513928, + "seed": 1521951098, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "ellipse", + "version": 292, + "versionNonce": 776822494, + "isDeleted": false, + "id": "9bufxYch3lKWjJTW4JLTy", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 889.8622053034535, + "y": 771.4475366429645, + "strokeColor": "#1864ab", + "backgroundColor": "#228be6", + "width": 8.683381652513928, + "height": 8.683381652513928, + "seed": 2062488806, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "arrow", + "version": 644, + "versionNonce": 865611998, + "isDeleted": false, + "id": "5ZgnT2_i3iP2Qd8FMIqXt", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 903.0958182697258, + "y": 915.7894736842104, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 106.72154926387736, + "height": 63.39825253814857, + "seed": 958653946, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": { + "elementId": "C5rAQ9ab682z5CgR6sHXe", + "focus": 0.21587735756168525, + "gap": 6.6666666666667425 + }, + "points": [ + [ + 0, + 0 + ], + [ + -12.27710481943302, + 57.55023610145052 + ], + [ + -106.72154926387736, + 63.39825253814857 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 350, + "versionNonce": 1765397278, + "isDeleted": false, + "id": "5LH7FQECCb0Li5yoEgZVr", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 707.4277475803583, + "y": 915.6246101228676, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 0.2926593661536572, + "height": 56.92015171969956, + "seed": 848125818, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "CLSJhne5Nfu_VGRnmaSMx", + "focus": 0.0037439533990872324, + "gap": 2.0537524502314 + }, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -0.2926593661536572, + 56.92015171969956 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 415, + "versionNonce": 1045886402, + "isDeleted": false, + "id": "8gfiV_287xVvbifZSYsoQ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 527.4589369177945, + "y": 912.9005847953212, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 102.6173667898514, + "height": 66.19451630111776, + "seed": 24406374, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "LY3a78B8FND4mW0dUfgvF", + "focus": -0.015793166058437273, + "gap": 4.777777777777828 + }, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + 9.686986602995868, + 60.42278735933076 + ], + [ + 102.6173667898514, + 66.19451630111776 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 197, + "versionNonce": 789430110, + "isDeleted": false, + "id": "LY3a78B8FND4mW0dUfgvF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 493.7076023391817, + "y": 917.678362573099, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 72, + "height": 26, + "seed": 1901394854, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "5ZgnT2_i3iP2Qd8FMIqXt", + "8gfiV_287xVvbifZSYsoQ" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "decrypt", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 232, + "versionNonce": 1630989698, + "isDeleted": false, + "id": "C5rAQ9ab682z5CgR6sHXe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 629.7076023391817, + "y": 967.678362573099, + "strokeColor": "#e67700", + "backgroundColor": "#228be6", + "width": 160, + "height": 26, + "seed": 1913461114, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "5LH7FQECCb0Li5yoEgZVr", + "5ZgnT2_i3iP2Qd8FMIqXt" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "cocert: combine()", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "text", + "version": 202, + "versionNonce": 605692830, + "isDeleted": false, + "id": "CLSJhne5Nfu_VGRnmaSMx", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 671.4853801169594, + "y": 917.678362573099, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 72, + "height": 26, + "seed": 1406711654, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "5ZgnT2_i3iP2Qd8FMIqXt", + "5LH7FQECCb0Li5yoEgZVr" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "decrypt", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + }, + { + "type": "arrow", + "version": 91, + "versionNonce": 1556213058, + "isDeleted": false, + "id": "xCO9dqT4OWCLpnE5RZZ5B", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 706.3742690058482, + "y": 989.5672514619882, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 1.0284498929149777, + "height": 36.71744132431024, + "seed": 155340090, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": null, + "endBinding": { + "elementId": "5rs2rpr9Ff1svVgC7Uk8X", + "focus": -0.02259285352706557, + "gap": 1.1618857687547575 + }, + "points": [ + [ + 0, + 0 + ], + [ + -1.0284498929149777, + 36.71744132431024 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 87, + "versionNonce": 982515678, + "isDeleted": false, + "id": "_gqZFtkQHYIiWtbMdHbwZ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 710.9467967209425, + "y": 489.567251461988, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 1.8996243509349142, + "height": 87.77777777777771, + "seed": 118831782, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "NO_Xr1DVOrL4towWmZ_vM", + "focus": 0.3124425998168786, + "gap": 15.70873818585767 + }, + "endBinding": { + "elementId": "5rs2rpr9Ff1svVgC7Uk8X", + "focus": -0.0010595861381205642, + "gap": 4.4444444444444 + }, + "points": [ + [ + 0, + 0 + ], + [ + 1.8996243509349142, + 87.77777777777771 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 99, + "versionNonce": 1985410306, + "isDeleted": false, + "id": "dvd7j0DA1psjgr0380qSF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 704.0582801737252, + "y": 1026.122807017544, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 0.5708019237322333, + "height": 38.823243236624194, + "seed": 134765414, + "groupIds": [], + "strokeSharpness": "round", + "boundElementIds": [], + "startBinding": { + "elementId": "5rs2rpr9Ff1svVgC7Uk8X", + "focus": 0.06104073502667636, + "gap": 1.0000000000002842 + }, + "endBinding": { + "elementId": "rRylxPK4XWF4WWs0b4CXd", + "focus": -0.19822516642917704, + "gap": 12.81304781728386 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0.5708019237322333, + 38.823243236624194 + ] + ], + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 214, + "versionNonce": 33336542, + "isDeleted": false, + "id": "Nph0ybXlj5swHOIHtqHZ1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 868.152046783626, + "y": 918.7894736842104, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 72, + "height": 26, + "seed": 1323346370, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "5ZgnT2_i3iP2Qd8FMIqXt", + "5LH7FQECCb0Li5yoEgZVr" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "decrypt", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "top" + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + } +} \ No newline at end of file diff --git a/.res/use-case.png b/.res/use-case.png new file mode 100644 index 0000000..6da890c Binary files /dev/null and b/.res/use-case.png differ diff --git a/LEARNING.md b/LEARNING.md new file mode 100644 index 0000000..ca26e88 --- /dev/null +++ b/LEARNING.md @@ -0,0 +1,49 @@ +https://github.com/sigstore/cosign + +https://darutk.medium.com/illustrated-x-509-certificate-84aece2c5c2e + +https://github.com/hashicorp/vault/tree/master/sdk/helper/password + +https://en.wikipedia.org/wiki/Polynomial + +https://hackernoon.com/shamir-secret-sharing-vs-multi-sig-124a42bc1662 + +https://en.bitcoin.it/w/index.php?title=Multi-signature&ref=hackernoon.com + +https://blog.keys.casa/shamirs-secret-sharing-security-shortcomings/ + +https://btcarmory.com/fragmented-backup-vuln/ + +https://twitter.com/coinbase/status/738837596709740544 + +https://news.ycombinator.com/item?id=21600899 + +https://github.com/ace0/q + +https://eprint.iacr.org/2012/377.pdf + +https://eprint.iacr.org/2021/005.pdf + +https://eprint.iacr.org/2019/114.pdf (Fast Multiparty Threshold ECDSA with Fast Trustless Setup) + +https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.124.4128&rep=rep1&type=pdf (ECDKG:A Distributed Key Generation Protocol Based on Elliptic Curve Discrete Logarithm) + +https://eprint.iacr.org/2016/1067.pdf (Scalable Bias-Resistant Distributed Randomness) + +https://arxiv.org/pdf/1902.10313.pdf + +https://www.researchgate.net/publication/319409122_An_Advanced_Encryption_Standard_Powered_Mutual_Authentication_Protocol_Based_on_Elliptic_Curve_Cryptography_for_RFID_Proven_on_WISP#pf9 + +https://medium.com/loopring-protocol/learning-cryptography-finite-fields-ced3574a53fe + +https://reposhub.com/java/distributed-applications/ZenGo-X-awesome-tss.html + +https://github.com/dedis/kyber/tree/master/share/dkg + +https://github.com/drand/drand + +https://github.com/jchavannes/go-pgp + +https://github.com/ace0/q + +https://medium.com/asecuritysite-when-bob-met-alice/galios-fields-gf-2-n-34d817a2fba9 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..eea88e8 --- /dev/null +++ b/README.md @@ -0,0 +1,225 @@ +

+ +

cocert

+ +
+ + An experimental tool for splitting and distributing your private keys safely* + +
+ +
+ +

+ MIT + GitHub release + Go Report + Build Status +

+ +
+ +*cocert*, generates [ECDSA](https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm) - [P521](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography) key and uses a technique known as [Shamir's Secret Sharing](https://en.wikipedia.org/wiki/Shamir's_Secret_Sharing) algorithm to split the master key into _x_ shares, any _y_ of which are required to reconstruct the master private key. Private keys are stored in [PEM-encoded](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) [PKCS8](https://en.wikipedia.org/wiki/PKCS_8) format, which are [encrypted](https://pkg.go.dev/github.com/theupdateframework/go-tuf/encrypted) by [The Update Framework (TUF)](https://github.com/theupdateframework/go-tuf). Each private key is splitted using [Shamir](https://pkg.go.dev/github.com/hashicorp/vault/shamir) [Split](https://pkg.go.dev/github.com/hashicorp/vault/shamir#Split). To [Combine](https://pkg.go.dev/github.com/hashicorp/vault/shamir#Combine) private key files into single one, it is necessary to enter decrypt password if it has been encrypted by TUF. + +*cocert does not support any [Distributed Key Generation (DGK)](https://en.wikipedia.org/wiki/Distributed_key_generation) algorithm, yet. + +_This repository is [signed](https://github.com/Dentrax/cocert/blob/9d9f18743c9602289dfec3c98d49b68c549d40bf/.github/workflows/publish.yml#L56-L69) via [cosign](https://github.com/sigstore/cosign), by using `cocert` itself_ + +![GIF](.res/usage.gif) + +[Asciinema](https://asciinema.org/a/411543) + +# High Level Architecture + +![Screenshot](.res/arch.png) + +# Use-Case Example + +* What happens if your private key is exposed by either public 3rd-party cloud service provider or internal security breach? + +Your private key would have compromised and supply chain attacks would inevitable. What would happen if we not trust just one key, however, distribute our key to multiple secure environments? We would avoid supply chain attacks, that said, even if one of our private keys is compromised, we still need two more keys to combine and get the final private key. + +![Screenshot](.res/use-case.png) + +# Installation + +* Go +```bash +$ go install github.com/Dentrax/cocert@latest +``` + +* Docker +```bash +$ docker pull ghcr.io/dentrax/cocert +``` + +# Verify + +## Prerequities +1. [cosign](https://github.com/sigstore/cosign) +2. [crane](https://github.com/google/go-containerregistry/tree/main/cmd/crane) + +## Check + +```bash +# 1. Download the public key +$ curl https://raw.githubusercontent.com/Dentrax/cocert/main/.github/workflows/certs/cocert.pub -o cocert.pub + +# 2. Verify +$ cosign verify -key cocert.pub ghcr.io/dentrax/cocert | jq + +# 3. Make sure verified commit matches the digest of the latest image +$ crane digest ghcr.io/dentrax/cocert +``` + +# Usage + +```bash +Usage: + cocert [command] + +Available Commands: + combine Combine the cert integrity on the supplied PEM files + decrypt Decrypt the target private keys using TUF + encrypt Encrypt the target private keys using TUF + generate Generates TUF encrypted keys using ECDSA and splits into PKCS8-PKIX key-pairs + help Help about any command + sign Sign the given payload and create a certificate from Fulcio + split Split your existing private key into parts + verify Verify the given payload on the supplied signature + +Flags: + -h, --help help for cocert +``` + +## Use-Case Demonstration + +1. Generate +```bash +$ cocert generate --parts 3 --threshold 2 + +Generating TUF encrypted Shamir PEMs... +Create new password for private key: (master) +Confirm password: (master) +Extracting PEMs to files... +Do you want to encrypt each key using TUF? (y/n) [n]: y +Create new password for cocert0.key key: (foo) +Create new password for cocert1.key key: (bar) +Create new password for cocert2.key key: (baz) +``` + +2.1. Sign with Private Key +```bash +$ cocert sign -f cocert0.key -f cocert1.key -p "Foo Bar Baz" + +(Press Enter to continue without decrypt...) +Enter your password for cocert0.key: (foo) +Enter your password for cocert1.key: (bar) +Enter your master key: (master) +Signed: MIGIAkIBCisWXRLBRcv/...+3pccRjm+nUNA== +``` + +2.2. Sign with [Fulcio](https://github.com/sigstore/fulcio) (Keyless) +```bash +$ cocert sign -f cocert0.key -f cocert1.key -p "Foo Bar Baz" -o my.cert + +(Press Enter to continue without decrypt...) +Enter your password for cocert0.key: (foo) +Enter your password for cocert1.key: (bar) +Enter your master key: (master) +Your browser will now be opened to: +https://oauth2.sigstore.dev/auth/auth?access_type=online&client_id=sigstore&code_challenge=CODE&code_challenge_method=S256&nonce=NONCE&redirect_uri=http%3A%2F%2Flocalhost%3A5556%2Fauth%2Fcallback&response_type=code&scope=openid+email&state=STATE +Signed: MIGIAkIBCisWXRLBRcv/...+3pccRjm+nUNA== +``` + +3.1. Verify with Public Key +```bash +$ cocert verify -f cocert.pub -p "Foo Bar Baz" -k "MIGIAkIBCisWXRLBRcv/...+3pccRjm+nUNA==" +``` + +3.2. Verify with Certificate +```bash +$ cocert verify -c my.cert -p "Foo Bar Baz" -k "MIGIAkIBCisWXRLBRcv/...+3pccRjm+nUNA==" +``` + +**Bonus:** Splitting +```bash +# 1. Generate the your custom private key +$ cosign generate-key-pair + +Enter password for private key: (qux) +Private key written to cosign.key +Public key written to cosign.pub + +# 2. Split the key +$ cocert split -f private.key --parts 3 --threshold 2 + +Create new password for cocert0.key key: (foo) +Create new password for cocert1.key key: (bar) +Create new password for cocert2.key key: (baz) + +# 3. Test with combine +$ cocert combine -f cocert0.key -f cocert1.key -o cosign.key + +Enter your password for cocert0.key: (foo) +Enter your password for cocert1.key: (bar) +Decrypting TUF encrypted PEMs... +Enter your master key: (qux) +Combined +``` + +## Encrypt & Decrypt Keys + +* Encrypt +```bash +$ cocert encrypt -f cocert0.key -o "cocert0.key.encrypted" + +Enter your password for : (foo2) +Confirm password: (foo2) +``` + +* Decrypt +```bash +$ cocert decrypt -f cocert0.key.encrypted -o "cocert0.key.decrypted" +# [[ $(md5 -q cocert0.key) -eq $(md5 -q cocert0.key.decrypted) ]] + +Enter your password for : (foo2) + +$ cocert decrypt -f cocert0.key.decrypted -o "cocert0.key.unencrypted" +# You can pass empty password for 'cocert0.key.unencrypted' key + +Enter your password for : (foo) +``` + +* Combine + +```bash +$ cocert combine -f cocert0.key.unencrypted -f cocert1.key + +Loading PEMs from files... +(Press Enter to continue without decrypt...) +Enter your password for cocert0.key.unencrypted: (PASS) +Enter your password for cocert1.key: (bar) +Decrypting TUF encrypted PEMs... +Enter your master key: (master) +Combined +``` + +# Special Thanks + +| Package | Author | License | +| :------------------------------------------------------------ | :------------------------------------------------------ | :------------------------------------------------------------------------------------------- | +| [cosign](https://github.com/sigstore/cosign) | [sigstore](https://github.com/sigstore) | [Apache License 2.0](https://github.com/sigstore/cosign/blob/main/LICENSE) | +| [go-tuf](https://github.com/theupdateframework/go-tuf) | [The Update Framework](https://github.com/theupdateframework) | [BSD](https://github.com/theupdateframework/go-tuf/blob/master/LICENSE) | +| [Vault](https://github.com/hashicorp/vault) | [HashiCorp](https://github.com/hashicorp) | [Mozilla Public License 2.0](https://github.com/hashicorp/vault/blob/master/LICENSE) | +| [prompter](https://github.com/Songmu/prompter) | [Songmu](https://github.com/Songmu) | [MIT](https://github.com/Songmu/prompter/blob/main/LICENSE) | + +- Thanks to everyone who contributed these libraries and [others](https://github.com/Dentrax/cocert/blob/main/go.mod) that made this project possible. + +# License + +*cocert* was created by [Furkan 'Dentrax' Türkal](https://twitter.com/furkanturkaI) + +The base project code is licensed under [MIT](https://opensource.org/licenses/MIT) unless otherwise specified. Please see the **[LICENSE](https://github.com/Dentrax/cocert/blob/main/LICENSE)** file for more information. + +Best Regards \ No newline at end of file diff --git a/cmd/combine.go b/cmd/combine.go new file mode 100644 index 0000000..532191b --- /dev/null +++ b/cmd/combine.go @@ -0,0 +1,73 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package cmd + +import ( + "fmt" + "os" + + "github.com/Dentrax/cocert/pkg/password" + "github.com/Dentrax/cocert/pkg/signed" + + "github.com/spf13/cobra" +) + +var ( + combineEncryptedFiles []string + combineUnEncryptedFiles []string + combineOutput string + combinePEMType string +) + +var cmdCombine = &cobra.Command{ + Use: "combine {-f file}...", + Short: "Combine the cert integrity on the supplied PEM files", + Long: ` 1. Scan every given certs from path +2. Read every file and decode PEM +3. Use Shamir to Combine all private keys +4. Use TUF to decrypt private key +`, + Run: func(cmd *cobra.Command, args []string) { + fmt.Fprintln(os.Stdout, "Loading PEMs from files...") + s, err := signed.LoadAndCombinePrivateKeysFromPaths(password.GetPass, combineEncryptedFiles, combineUnEncryptedFiles) + not(err) + + fmt.Fprintln(os.Stdout, "Decrypting TUF encrypted PEMs...") + _, err = signed.DecryptTUFEncryptedPrivateKey(s, password.GetPass) + not(err) + + if combineOutput != "" { + err = signed.EncodePEMToFileOrOutputWithType(combineOutput, s, combinePEMType) + not(err) + } + + fmt.Fprintln(os.Stdout, "Combined") + }, +} + +func init() { + cmdCombine.PersistentFlags().StringSliceVarP(&combineEncryptedFiles, "encrypted-file", "f", []string{}, "splitted encrypted file to combine (ask prompt password)") + cmdCombine.PersistentFlags().StringSliceVarP(&combineUnEncryptedFiles, "unencrypted-file", "F", []string{}, "unecrypted file to combine") + cmdCombine.PersistentFlags().StringVarP(&combineOutput, "output", "o", "", "print PEM content to output file") + cmdCombine.PersistentFlags().StringVarP(&combinePEMType, "type", "t", "", "overwrite PEM type header") + _ = cmdCombine.MarkPersistentFlagRequired("file") + + rootCmd.AddCommand(cmdCombine) +} diff --git a/cmd/decrypt.go b/cmd/decrypt.go new file mode 100644 index 0000000..927d60e --- /dev/null +++ b/cmd/decrypt.go @@ -0,0 +1,64 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package cmd + +import ( + "fmt" + + "github.com/Dentrax/cocert/pkg/signed" + + "github.com/spf13/cobra" + "github.com/theupdateframework/go-tuf/encrypted" +) + +var ( + decryptFile, decryptInput, decryptOutput, decryptKey string +) + +var cmdDecrypt = &cobra.Command{ + Use: "decrypt {-f file | -i STDIN} [-k key] [-o output]", + Short: "Decrypt the target private keys using TUF", + Long: ``, + PreRunE: func(cmd *cobra.Command, args []string) error { + if decryptFile != "" && decryptInput != "" { + return fmt.Errorf("--file and --input are mutually exclusive, can not be set at same time") + } + if decryptFile == "" && decryptInput == "" { + return fmt.Errorf("one of the --file or --input are required") + } + return nil + }, + Run: func(cmd *cobra.Command, args []string) { + b, err := signed.DecodePEMFromFile("", readFileOrInput(decryptFile, decryptInput), decidePassFunc(decryptKey), encrypted.Decrypt, false, false) + not(err) + + err = signed.EncodePEMToFileOrOutput(decryptOutput, b) + not(err) + }, +} + +func init() { + cmdDecrypt.Flags().StringVarP(&decryptFile, "file", "f", "", "file path to decrypt") + cmdDecrypt.Flags().StringVarP(&decryptInput, "input", "i", "", "file content to decrypt") + cmdDecrypt.Flags().StringVarP(&decryptOutput, "output", "o", "", "print PEM content to output file") + cmdDecrypt.Flags().StringVarP(&decryptKey, "key", "k", "", "decryption key (DO NOT RECOMMENDED - use non-echoed instead)") + + rootCmd.AddCommand(cmdDecrypt) +} diff --git a/cmd/encrypt.go b/cmd/encrypt.go new file mode 100644 index 0000000..09b6ddd --- /dev/null +++ b/cmd/encrypt.go @@ -0,0 +1,64 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package cmd + +import ( + "fmt" + + "github.com/Dentrax/cocert/pkg/signed" + + "github.com/spf13/cobra" + "github.com/theupdateframework/go-tuf/encrypted" +) + +var ( + encryptFile, encryptInput, encryptOutput, encryptKey string +) + +var cmdEncrypt = &cobra.Command{ + Use: "encrypt {-f file | -i STDIN} [-k key] [-o output]", + Short: "Encrypt the target private keys using TUF", + Long: ``, + PreRunE: func(cmd *cobra.Command, args []string) error { + if encryptFile != "" && encryptInput != "" { + return fmt.Errorf("--file and --input are mutually exclusive, can not be set at same time") + } + if encryptFile == "" && encryptInput == "" { + return fmt.Errorf("one of the --file or --input are required") + } + return nil + }, + Run: func(cmd *cobra.Command, args []string) { + b, err := signed.DecodePEMFromFile("", readFileOrInput(encryptFile, encryptInput), decidePassFunc(encryptKey), encrypted.Encrypt, true, true) + not(err) + + err = signed.EncodePEMToFileOrOutput(encryptOutput, b) + not(err) + }, +} + +func init() { + cmdEncrypt.Flags().StringVarP(&encryptFile, "file", "f", "", "file path to decrypt") + cmdEncrypt.Flags().StringVarP(&encryptInput, "input", "i", "", "file content to decrypt") + cmdEncrypt.Flags().StringVarP(&encryptOutput, "output", "o", "", "print PEM content to output file") + cmdEncrypt.Flags().StringVarP(&encryptKey, "key", "k", "", "decryption key (DO NOT RECOMMENDED - use non-echoed instead)") + + rootCmd.AddCommand(cmdEncrypt) +} diff --git a/cmd/generate.go b/cmd/generate.go new file mode 100644 index 0000000..d11fda2 --- /dev/null +++ b/cmd/generate.go @@ -0,0 +1,76 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package cmd + +import ( + "fmt" + "os" + + "github.com/Dentrax/cocert/pkg/password" + "github.com/Dentrax/cocert/pkg/signed" + + "github.com/spf13/cobra" +) + +var ( + parts, threshold uint8 +) + +var cmdGenerate = &cobra.Command{ + Use: "generate [-p parts] [-t threshold]", + Short: "Generates TUF encrypted keys using ECDSA and splits into PKCS8-PKIX key-pairs", + Long: `1. Generate ellipticP521 using ECDSA - elliptic.P521. +2. Generate a private key using x509.PKCS8 +3. Generate a public key using x509.PKIX +4. Ask for password using 'vault/sdk/helper/password' and encrypt the private key by 'go-tuf/encrypted' algorithm +5. Generate PEM file from public key +6. Split the encrypted private key value using Shamir's Secret Sharing algorithm (vault/shamir) +7. Encode the all returned shares to PEM +8. Extract those to files + +* The parts and threshold must be at least 2, and less than 256. +`, + PreRun: func(cmd *cobra.Command, args []string) { + if parts < 2 || parts > 255 { + not(fmt.Errorf("the parts must be at least 2, and less than 256")) + } + if threshold < 2 || threshold > 255 { + not(fmt.Errorf("the threshold must be at least 2, and less than 256")) + } + }, + Run: func(cmd *cobra.Command, args []string) { + fmt.Fprintln(os.Stdout, "Generating TUF encrypted Shamir PEMs...") + keys, err := signed.GenerateShamirPEMsToMemAsArray(password.GetPass, int(parts), int(threshold)) + not(err) + + fmt.Fprintln(os.Stdout, "Extracting PEMs to files...") + err = signed.ExtractPEMsToCurrentDir(password.GetPass, password.GetPrompterYN, keys) + not(err) + }, +} + +func init() { + cmdGenerate.PersistentFlags().Uint8VarP(&parts, "parts", "p", 3, "generates a `parts` number of shares") + cmdGenerate.PersistentFlags().Uint8VarP(&threshold, "threshold", "t", 2, "`threshold` count of which are required to reconstruct the secret") + _ = cmdGenerate.MarkPersistentFlagRequired("parts") + _ = cmdGenerate.MarkPersistentFlagRequired("threshold") + + rootCmd.AddCommand(cmdGenerate) +} diff --git a/cmd/root.go b/cmd/root.go new file mode 100644 index 0000000..abdf31c --- /dev/null +++ b/cmd/root.go @@ -0,0 +1,69 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package cmd + +import ( + "fmt" + "io/ioutil" + "os" + + "github.com/Dentrax/cocert/pkg/password" + "github.com/Dentrax/cocert/pkg/signed" + + "github.com/spf13/cobra" +) + +var ( + rootCmd = &cobra.Command{ + Use: "cocert", + Short: "cocert is a sigstore powered certificate generator built-on top of Shamir's Secret Sharing", + } +) + +var ( + readFileOrInput = func(file, input string) []byte { + if file != "" { + ff, err := ioutil.ReadFile(file) + not(err) + return ff + } + return []byte(input) + } + + decidePassFunc = func(key string) signed.PassFunc { + if len(key) > 0 { + return func(confirm bool, message string, enforceTerminal bool) ([]byte, error) { + return []byte(key), nil + } + } + return password.GetPass + } +) + +func Execute() error { + return rootCmd.Execute() +} + +func not(err error) { + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} diff --git a/cmd/sign.go b/cmd/sign.go new file mode 100644 index 0000000..6e201d9 --- /dev/null +++ b/cmd/sign.go @@ -0,0 +1,106 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package cmd + +import ( + "context" + "fmt" + "io/ioutil" + "os" + + "github.com/Dentrax/cocert/pkg/signed" + + "github.com/spf13/cobra" +) + +var ( + signPrivateKeyFiles []string + signPrivateKeyFile string + signPayload string + certOutput string + signOutput string + signKeyless bool +) + +var cmdSign = &cobra.Command{ + Use: "sign {-f file}... {-p payload} [-o output]", + Short: "Sign the given payload and create a certificate from Fulcio", + Long: `Sign the given payload and create a certificate from Fulcio + +EXAMPLES + # sign a payload using 3 private keys + cocert sign -f cocert0.key -f cocert1.key -f cocert2.key -p "foo" + + # sign a payload using 2 private keys and create a cert file + cocert sign -f cocert0.key -f cocert1.key -p "foo" -o my.cert +`, + PreRunE: func(cmd *cobra.Command, args []string) error { + if len(signPrivateKeyFiles) > 0 && signPrivateKeyFile != "" { + return fmt.Errorf("--file and --private-key are mutually exclusive, can not be set at same time") + } + if len(signPrivateKeyFiles) == 0 && signPrivateKeyFile == "" { + return fmt.Errorf("one of the --file or --private-key are required") + } + if signPrivateKeyFile == "" && len(signPrivateKeyFiles) < 2 { + return fmt.Errorf("least two --file required to combine splitted Shamir keys") + } + return nil + }, + Run: func(cmd *cobra.Command, args []string) { + + signer := func() signed.Signer { + if signKeyless { + s, err := signed.NewKeylessSigner(context.TODO(), signPrivateKeyFiles, signPrivateKeyFile) + not(err) + return s + } + s, err := signed.NewKeySigner(context.TODO(), signPrivateKeyFiles, signPrivateKeyFile) + not(err) + return s + } + + encoded, err := signed.CreateSigner(context.TODO(), signer(), []byte(signPayload)) + not(err) + + if certOutput != "" { + err = ioutil.WriteFile(certOutput, []byte(signer().Cert), 0600) + not(err) + } + + if signOutput != "" { + err = ioutil.WriteFile(signOutput, []byte(encoded), 0600) + not(err) + } + + fmt.Fprintln(os.Stdout, "Signed:", encoded) + }, +} + +func init() { + cmdSign.Flags().StringSliceVarP(&signPrivateKeyFiles, "file", "f", []string{}, "splitted private key files (least 2 required)") + cmdSign.Flags().StringVarP(&signPrivateKeyFile, "private-key", "F", "", "private key file") + cmdSign.Flags().StringVarP(&signPayload, "payload", "p", "", "raw payload to sign") + cmdSign.Flags().StringVarP(&certOutput, "output", "o", "", "output file for certificate") + cmdSign.Flags().StringVarP(&signOutput, "sig-output", "O", "", "output file for signature") + cmdSign.Flags().BoolVarP(&signKeyless, "keyless", "s", false, "use Fulcio to sign") + _ = cmdSign.MarkFlagRequired("payload") + + rootCmd.AddCommand(cmdSign) +} diff --git a/cmd/split.go b/cmd/split.go new file mode 100644 index 0000000..71621ad --- /dev/null +++ b/cmd/split.go @@ -0,0 +1,67 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package cmd + +import ( + "fmt" + "os" + + "github.com/Dentrax/cocert/pkg/password" + "github.com/Dentrax/cocert/pkg/signed" + + "github.com/spf13/cobra" +) + +var ( + splitPrivateKeyFile string + splitParts, splitThreshold uint8 +) + +var cmdSplit = &cobra.Command{ + Use: "split [-p parts] [-t threshold]", + Short: "Split your existing private key into parts", + PreRun: func(cmd *cobra.Command, args []string) { + if parts < 2 || parts > 255 { + not(fmt.Errorf("the parts must be at least 2, and less than 256")) + } + if threshold < 2 || threshold > 255 { + not(fmt.Errorf("the threshold must be at least 2, and less than 256")) + } + }, + Run: func(cmd *cobra.Command, args []string) { + fmt.Fprintln(os.Stdout, "Splitting private key to Shamir PEMs...") + keys, err := signed.GenerateShamirPEMsToMemAsArrayFromCustomPrivateKey(splitPrivateKeyFile, int(splitParts), int(splitThreshold)) + not(err) + + fmt.Fprintln(os.Stdout, "Extracting PEMs to files...") + err = signed.ExtractPEMsToCurrentDir(password.GetPass, password.GetPrompterYN, keys) + not(err) + }, +} + +func init() { + cmdSplit.PersistentFlags().StringVarP(&splitPrivateKeyFile, "file", "f", "", "private key to split") + cmdSplit.PersistentFlags().Uint8VarP(&splitParts, "parts", "p", 3, "splits a `parts` number of shares") + cmdSplit.PersistentFlags().Uint8VarP(&splitThreshold, "threshold", "t", 2, "`threshold` count of which are required to reconstruct the secret") + _ = cmdSplit.MarkPersistentFlagRequired("parts") + _ = cmdSplit.MarkPersistentFlagRequired("threshold") + + rootCmd.AddCommand(cmdSplit) +} diff --git a/cmd/verify.go b/cmd/verify.go new file mode 100644 index 0000000..4319f63 --- /dev/null +++ b/cmd/verify.go @@ -0,0 +1,83 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package cmd + +import ( + "context" + "fmt" + "os" + + "github.com/Dentrax/cocert/pkg/signed" + + "github.com/spf13/cobra" +) + +var ( + filePubKey string + filePubCert string + fileVerifyPayload string + fileVerifySignature string + verifyPayload string + verifySignature string +) + +var cmdVerify = &cobra.Command{ + Use: "verify {-c cert | -f file} {-p payload | -t target} {-s signature | -k key}", + Short: "Verify the given payload on the supplied signature", + Long: ``, + PreRunE: func(cmd *cobra.Command, args []string) error { + if fileVerifyPayload != "" && verifyPayload != "" { + return fmt.Errorf("--payload and --target are mutually exclusive, can not be set at same time") + } + if fileVerifyPayload == "" && verifyPayload == "" { + return fmt.Errorf("one of the --payload or --target are required") + } + + if fileVerifySignature != "" && verifySignature != "" { + return fmt.Errorf("--signature and --key are mutually exclusive, can not be set at same time") + } + if fileVerifySignature == "" && verifySignature == "" { + return fmt.Errorf("one of the --signature or --key are required") + } + + return nil + }, + Run: func(cmd *cobra.Command, args []string) { + v, err := signed.NewVerifier(filePubKey, filePubCert) + not(err) + + err = signed.VerifyKey(context.TODO(), v, readFileOrInput(fileVerifyPayload, verifyPayload), readFileOrInput(fileVerifySignature, verifySignature)) + not(err) + + fmt.Fprintln(os.Stdout, "Verified.") + }, +} + +func init() { + cmdVerify.Flags().StringVarP(&filePubKey, "file", "f", "", "path to public key file") + cmdVerify.Flags().StringVarP(&filePubCert, "cert", "c", "", "path to public certificate file") + cmdVerify.Flags().StringVarP(&fileVerifyPayload, "target", "t", "", "read raw payload from file") + cmdVerify.Flags().StringVarP(&fileVerifySignature, "signature", "s", "", "read raw base64 encoded signature from file") + cmdVerify.Flags().StringVarP(&verifyPayload, "payload", "p", "", "raw payload") + cmdVerify.Flags().StringVarP(&verifySignature, "key", "k", "", "raw base64 encoded signature") + _ = cmdVerify.MarkFlagRequired("file") + + rootCmd.AddCommand(cmdVerify) +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..2099409 --- /dev/null +++ b/go.mod @@ -0,0 +1,17 @@ +module github.com/Dentrax/cocert + +go 1.16 + +require ( + github.com/Songmu/prompter v0.5.0 + github.com/hashicorp/vault v1.7.0 + github.com/hashicorp/vault/sdk v0.2.0 + github.com/mattn/go-isatty v0.0.12 + github.com/sigstore/cosign v0.3.1 + github.com/sigstore/sigstore v0.0.0-20210427115853-11e6eaab7cdc + github.com/spf13/cobra v1.1.3 + github.com/stretchr/testify v1.7.0 + github.com/theupdateframework/go-tuf v0.0.0-20201230183259-aee6270feb55 + golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b + golang.org/x/term v0.0.0-20210317153231-de623e64d2a6 +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..9a122c6 --- /dev/null +++ b/go.sum @@ -0,0 +1,2286 @@ +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISts= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.66.0/go.mod h1:dgqGAjKCDxyhGTtC9dAREQGUJpkceNm1yt590Qno0Ko= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.6.0/go.mod h1:hyFDG0qSGdHNz8Q6nDN8rYIkld0q/+5uBZaelxiDLfE= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/firestore v1.4.0/go.mod h1:NjjGEnxCS3CAKYp+vmALu20QzcqasGodQp48WxJGAYc= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.9.0/go.mod h1:G3o6/kJvEMIEAN5urdkaP4be49WQsjNiykBIto9LFtY= +cloud.google.com/go/spanner v1.5.1/go.mod h1:e1+8M6PF3ntV9Xr57X2Gf+UhylXXYF6gI4WRZ1kfu2A= +cloud.google.com/go/spanner v1.7.0/go.mod h1:sd3K2gZ9Fd0vMPLXzeCrF6fq4i63Q7aTLW/lBIfBkIk= +cloud.google.com/go/spanner v1.17.0/go.mod h1:+17t2ixFwRG4lWRwE+5kipDR9Ef07Jkmc8z0IbMDKUs= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.12.0/go.mod h1:fFLk2dp2oAhDz8QFKwqrjdJvxSp/W2g7nillojlL5Ho= +code.cloudfoundry.org/gofileutils v0.0.0-20170111115228-4d0c80011a0f/go.mod h1:sk5LnIjB/nIEU7yP5sDQExVm62wu0pBh3yrElngUisI= +code.gitea.io/sdk/gitea v0.11.3/go.mod h1:z3uwDV/b9Ls47NGukYM9XhnHtqPh/J+t40lsUrR6JDY= +contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= +contrib.go.opencensus.io/exporter/aws v0.0.0-20200617204711-c478e41e60e9/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= +contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= +contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= +contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= +contrib.go.opencensus.io/exporter/stackdriver v0.13.5/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= +contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= +contrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= +contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +git.apache.org/thrift.git v0.12.0/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= +github.com/Azure/azure-amqp-common-go/v3 v3.0.1/go.mod h1:PBIGdzcO1teYoufTKMcGibdKaYZv4avS+O6LNIp8bq0= +github.com/Azure/azure-amqp-common-go/v3 v3.1.0/go.mod h1:PBIGdzcO1teYoufTKMcGibdKaYZv4avS+O6LNIp8bq0= +github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= +github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= +github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v36.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v37.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v44.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v49.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v51.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= +github.com/Azure/azure-service-bus-go v0.10.7/go.mod h1:o5z/3lDG1iT/T/G7vgIwIqVDTx9Qa2wndf5OdzSzpF8= +github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= +github.com/Azure/azure-storage-blob-go v0.11.0/go.mod h1:A0u4VjtpgZJ7Y7um/+ix2DHBuEKFC6sEIlj0xc13a4Q= +github.com/Azure/azure-storage-blob-go v0.13.0/go.mod h1:pA9kNqtjUeQF2zOSu4s//nUdBD+e64lEuc4sVnuOfNs= +github.com/Azure/go-amqp v0.13.0/go.mod h1:qj+o8xPCz9tMSbQ83Vp8boHahuRDl5mkNHyt1xlxUTs= +github.com/Azure/go-amqp v0.13.1/go.mod h1:qj+o8xPCz9tMSbQ83Vp8boHahuRDl5mkNHyt1xlxUTs= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest v12.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.2/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= +github.com/Azure/go-autorest/autorest v0.10.1/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= +github.com/Azure/go-autorest/autorest v0.11.0/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.3/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.7/go.mod h1:V6p3pKZx1KKkJubbxnDWrzNhEIfOy/pTGasLqzHIPHs= +github.com/Azure/go-autorest/autorest v0.11.9/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= +github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= +github.com/Azure/go-autorest/autorest v0.11.17/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.6.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/adal v0.7.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= +github.com/Azure/go-autorest/autorest/adal v0.9.2/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE= +github.com/Azure/go-autorest/autorest/adal v0.9.4/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE= +github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest/adal v0.9.6/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest/adal v0.9.11/go.mod h1:nBKAnTomx8gDtl+3ZCJv2v0KACFHWTB2drffI1B68Pk= +github.com/Azure/go-autorest/autorest/azure/auth v0.4.0/go.mod h1:Oo5cRhLvZteXzI2itUm5ziqsoIxRkzrt3t61FeZaS18= +github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.0/go.mod h1:QRTvSZQpxqm8mSErhnbI+tANIBAKP7B+UIE2z4ypUO0= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.3/go.mod h1:4bJZhUhcq8LB20TruwHbAQsmUs2Xh+QR7utuJpLXX3A= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.7/go.mod h1:AkzUsqkrdmNhfP2i54HqINVQopw0CLDnvHpJ88Zz1eI= +github.com/Azure/go-autorest/autorest/azure/cli v0.3.0/go.mod h1:rNYMNAefZMRowqCV0cVhr/YDW5dD7afFq9nXAXL4ykE= +github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.0/go.mod h1:JljT387FplPzBA31vUcvsetLKF3pec5bdAxjVU4kI2s= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= +github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= +github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= +github.com/Azure/go-autorest/autorest/validation v0.3.0/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= +github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20191009163259-e802c2cb94ae/go.mod h1:mjwGPas4yKduTyubHvD1Atl9r1rUq8DfVy+gkVvZ+oo= +github.com/GoogleCloudPlatform/cloudsql-proxy v1.19.1/go.mod h1:+yYmuKqcBVkgRePGpUhTA9OEg0XsnFE96eZ6nJ2yCQM= +github.com/Jeffail/gabs v1.1.1/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Microsoft/go-winio v0.4.13/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331 h1:3YnB7Hpmh1lPecPE8doMOtYCrMdrpedZOvxfuNES/Vk= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= +github.com/Microsoft/hcsshim v0.8.14 h1:lbPVK25c1cu5xTLITwpUcxoA9vKrKErASPYygvouJns= +github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= +github.com/OpenPeeDeeP/depguard v1.0.0/go.mod h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/SAP/go-hdb v0.14.1/go.mod h1:7fdQLVC2lER3urZLjZCm0AuMQfApof92n3aylBPEkMo= +github.com/Sectorbob/mlab-ns2 v0.0.0-20171030222938-d3aa0c295a8a/go.mod h1:D73UAuEPckrDorYZdtlCu2ySOLuPB5W4rhIkmmc/XbI= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/Songmu/prompter v0.5.0 h1:uf60xlFItY5nW+rlLJ2XIUfaUReo4gUEeftuUeHpio8= +github.com/Songmu/prompter v0.5.0/go.mod h1:S4Eg25l60kPlnfB2ttFVpvBKYw7RKJexzB3gzpAansY= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= +github.com/aerospike/aerospike-client-go v3.1.1+incompatible/go.mod h1:zj8LBEnWBDOVEIJt8LvaRvDG5ARAoa5dBeHaB472NRc= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= +github.com/alecthomas/kingpin v2.2.6+incompatible/go.mod h1:59OFYbFVLKQKq+mqrL6Rw5bR0c3ACQaawgXx0QYndlE= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190412020505-60e2075261b6/go.mod h1:T9M45xf79ahXVelWoOBmH0y4aC1t5kXO5BxwyakgIGA= +github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190620160927-9418d7b0cd0f/go.mod h1:myCDvQSzCW+wB1WAlocEru4wMGJxy+vlxHdhegi1CDQ= +github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= +github.com/apache/arrow/go/arrow v0.0.0-20200601151325-b2287a20f230/go.mod h1:QNYViu/X0HXDHw7m3KXzWSVXIbfUvJqBFe6Gj8/pYA0= +github.com/apache/beam v2.27.0+incompatible/go.mod h1:/8NX3Qi8vGstDLLaeaU7+lzVEu/ACaQhYjeefzQ0y1o= +github.com/apache/beam v2.28.0+incompatible/go.mod h1:/8NX3Qi8vGstDLLaeaU7+lzVEu/ACaQhYjeefzQ0y1o= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apex/log v1.1.4/go.mod h1:AlpoD9aScyQfJDVHmLMEcx4oU6LqzkWp4Mg9GdAcEvQ= +github.com/apex/logs v0.0.4/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= +github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= +github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= +github.com/apple/foundationdb/bindings/go v0.0.0-20190411004307-cd5c9d91fad2/go.mod h1:OMVSB21p9+xQUIqlGizHPZfjK+SHws1ht+ZytVDoz9U= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQhVx52RsWOnlkpikZr01T/yAVN2gn0861vByNg= +github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= +github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.3.4/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-proxyproto v0.0.0-20190211145416-68259f75880e/go.mod h1:QmP9hvJ91BbJmGVGSbutW19IC0Q9phDCLGaomwTJbgU= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= +github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= +github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= +github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.25.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.25.41/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.30.27/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= +github.com/aws/aws-sdk-go v1.36.1/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.37.19/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= +github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= +github.com/bitly/go-hostpool v0.1.0/go.mod h1:4gOCgp6+NZnVqlKyZ/iBZFTAJKembaVENUpMkpg42fw= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/briankassouf/jose v0.9.2-0.20180619214549-d2569464773f/go.mod h1:HQhVmdUf7dBNwIIdBTivnCDxcf6IZY3/zrb+uKSJz6Y= +github.com/bytecodealliance/wasmtime-go v0.24.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= +github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= +github.com/caarlos0/ctrlc v1.0.0/go.mod h1:CdXpj4rmq0q/1Eb44M9zi2nKB0QraNKuRGYGrrHhcQw= +github.com/campoy/unique v0.0.0-20180121183637-88950e537e7e/go.mod h1:9IOqJGCPMSc6E5ydlp5NIonxObaeu/Iub/X03EKPVYo= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cavaliercoder/badio v0.0.0-20160213150051-ce5280129e9e h1:YYUjy5BRwO5zPtfk+aa2gw255FIIoi93zMmuy19o0bc= +github.com/cavaliercoder/badio v0.0.0-20160213150051-ce5280129e9e/go.mod h1:V284PjgVwSk4ETmz84rpu9ehpGg7swlIH8npP9k2bGw= +github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e/go.mod h1:oDpT4efm8tSYHXV5tHSdRvBet/b/QzxZ+XyyPehvm3A= +github.com/cavaliercoder/go-rpm v0.0.0-20200122174316-8cb9fd9c31a8 h1:jP7ki8Tzx9ThnFPLDhBYAhEpI2+jOURnHQNURgsMvnY= +github.com/cavaliercoder/go-rpm v0.0.0-20200122174316-8cb9fd9c31a8/go.mod h1:AZIh1CCnMrcVm6afFf96PBvE2MRpWFco91z8ObJtgDY= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= +github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/centrify/cloud-golang-sdk v0.0.0-20190214225812-119110094d0f/go.mod h1:C0rtzmGXgN78pYR0tGJFhtHgkbAs0lIbHwkB81VxDQE= +github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chrismalek/oktasdk-go v0.0.0-20181212195951-3430665dfaa0/go.mod h1:5d8DqS60xkj9k3aXfL3+mXBH0DPYO0FQjcKosxl+b/Q= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudfoundry-community/go-cfclient v0.0.0-20190201205600-f136f9222381/go.mod h1:e5+USP2j8Le2M0Jo3qKPFnNhuo1wueU4nWHCXBOfQ14= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= +github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.4/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200709052629-daa8e1ccc0bc/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= +github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe h1:PEmIrUvwG9Yyv+0WKZqjXfSFDeZjs/q15g0m08BYS9k= +github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/stargz-snapshotter/estargz v0.4.1 h1:5e7heayhB7CcgdTkqfZqrNaNv15gABwr3Q2jBTbLlt4= +github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-oidc v2.2.1+incompatible h1:mh48q/BqXqgjVHpy2ZY7WnWAbenxRjsz9N1i1YxjHAk= +github.com/coreos/go-oidc v2.2.1+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-oidc/v3 v3.0.0 h1:/mAA0XMgYJw2Uqm7WKGCsKnjitE/+A0FFbOmiRJm7LQ= +github.com/coreos/go-oidc/v3 v3.0.0/go.mod h1:rEJ/idjfUyfkBit1eI1fvyr+64/g9dcKpAm8MJMesvo= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/couchbase/gocb/v2 v2.1.4/go.mod h1:lESKM6wCEajrFVSZUewYuRzNtuNtnRey5wOfcZZsH90= +github.com/couchbase/gocbcore/v9 v9.0.4/go.mod h1:jOSQeBSECyNvD7aS4lfuaw+pD5t6ciTOf8hrDP/4Nus= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/danieljoos/wincred v1.1.0 h1:3RNcEpBg4IhIChZdFRSdlQt1QjCp1sMAPIrOnm7Yf8g= +github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= +github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/denisenkom/go-mssqldb v0.9.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/denverdino/aliyungo v0.0.0-20170926055100-d3308649c661/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= +github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/digitalocean/godo v1.7.5/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU= +github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017 h1:2HQmlpI3yI9deH18Q6xiSOIjXD4sLI55Y/gfpa8/558= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v1.4.2-0.20200319182547-c7ad2b866182/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v17.12.0-ce-rc1.0.20200309214505-aa6a9891b09c+incompatible h1:G2hY8RD7jB9QaSmcb8mYEIg8QbEvVAB7se8+lXHZHfg= +github.com/docker/docker v17.12.0-ce-rc1.0.20200309214505-aa6a9891b09c+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo= +github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= +github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74/go.mod h1:UqXY1lYT/ERa4OEAywUqdok1T4RCRdArkhic1Opuavo= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/elazarl/go-bindata-assetfs v1.0.1-0.20200509193318-234c15e7648f/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= +github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.3.0-java/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/etcd-io/gofail v0.0.0-20190801230047-ad7f989257ca/go.mod h1:49H/RkXP8pKaZy4h0d+NW16rSLhyVBt4o6VLJbmOqDE= +github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/fatih/color v1.6.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/flynn/go-docopt v0.0.0-20140912013429-f6dd2ebbb31e/go.mod h1:HyVoz1Mz5Co8TFO8EupIdlcpwShBmY98dkT2xeHkvEI= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= +github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= +github.com/frankban/quicktest v1.10.0 h1:Gfh+GAJZOAoKZsIZeZbdn2JF10kN1XHNvjsvQK8gVkE= +github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM= +github.com/fullstorydev/grpcurl v1.8.0/go.mod h1:Mn2jWbdMrQGJQ8UD62uNyMumT2acsZUCkZIqFxsQf1o= +github.com/gabriel-vasile/mimetype v1.2.0/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To= +github.com/gammazero/deque v0.0.0-20190130191400-2afb3858e9c7/go.mod h1:GeIq9qoE43YdGnDXURnmKTnGg15pQz4mYkXSTChbneI= +github.com/gammazero/workerpool v0.0.0-20190406235159-88d534f22b56/go.mod h1:w9RqFVO2BM3xwWEcAB8Fwp0OviTBBEiRmSBDfbXnd3w= +github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ERFA1PUxfmGpolnw2v0bKOREu5ew= +github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= +github.com/go-asn1-ber/asn1-ber v1.4.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= +github.com/go-asn1-ber/asn1-ber v1.5.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= +github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= +github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-critic/go-critic v0.3.5-0.20190526074819-1df300866540/go.mod h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= +github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= +github.com/go-ldap/ldap/v3 v3.1.7/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= +github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= +github.com/go-ldap/ldap/v3 v3.2.4/go.mod h1:iYS1MdmrmceOJ1QOTnRXrIs7i3kloqtmGQjRvjKpyMg= +github.com/go-ldap/ldif v0.0.0-20200320164324-fd88d9b715b3/go.mod h1:ZXFhGda43Z2TVbfGZefXyMJzsDHhCh0go3bZUcwTx7o= +github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= +github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/analysis v0.19.4/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= +github.com/go-openapi/analysis v0.19.10/go.mod h1:qmhS3VNFxBlquFJ0RGoDtylO9y4pgTAUNE9AEEMdlJQ= +github.com/go-openapi/analysis v0.19.16/go.mod h1:GLInF007N83Ad3m8a/CbQ5TPzdnGT7workfHwuVjNVk= +github.com/go-openapi/analysis v0.20.0 h1:UN09o0kNhleunxW7LR+KnltD0YrJ8FF03pSqvAN3Vro= +github.com/go-openapi/analysis v0.20.0/go.mod h1:BMchjvaHDykmRMsK40iPtvyOfFdMMxlOmQr9FBZk+Og= +github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-openapi/errors v0.19.3/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.19.7/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.20.0 h1:Sxpo9PjEHDzhs3FbnGNonvDgWcMW2U7wGTcDDSFSceM= +github.com/go-openapi/errors v0.20.0/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= +github.com/go-openapi/loads v0.19.3/go.mod h1:YVfqhUCdahYwR3f3iiwQLhicVRvLlU/WO5WPaZvcvSI= +github.com/go-openapi/loads v0.19.5/go.mod h1:dswLCAdonkRufe/gSUC3gN8nTSaB9uaS2es0x5/IbjY= +github.com/go-openapi/loads v0.19.6/go.mod h1:brCsvE6j8mnbmGBh103PT/QLHfbyDxA4hsKvYBNEGVc= +github.com/go-openapi/loads v0.19.7/go.mod h1:brCsvE6j8mnbmGBh103PT/QLHfbyDxA4hsKvYBNEGVc= +github.com/go-openapi/loads v0.20.0/go.mod h1:2LhKquiE513rN5xC6Aan6lYOSddlL8Mp20AW9kpviM4= +github.com/go-openapi/loads v0.20.2 h1:z5p5Xf5wujMxS1y8aP+vxwW5qYT2zdJBbXKmQUG3lcc= +github.com/go-openapi/loads v0.20.2/go.mod h1:hTVUotJ+UonAMMZsvakEgmWKgtulweO9vYP2bQYKA/o= +github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= +github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= +github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= +github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= +github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiSjahULvYmlv98= +github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= +github.com/go-openapi/runtime v0.19.26/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= +github.com/go-openapi/runtime v0.19.27/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= +github.com/go-openapi/runtime v0.19.28 h1:9lYu6axek8LJrVkMVViVirRcpoaCxXX7+sSvmizGVnA= +github.com/go-openapi/runtime v0.19.28/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.19.6/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/spec v0.19.8/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/spec v0.19.15/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU= +github.com/go-openapi/spec v0.20.0/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU= +github.com/go-openapi/spec v0.20.1/go.mod h1:93x7oh+d+FQsmsieroS4cmR3u0p/ywH649a3qwC9OsQ= +github.com/go-openapi/spec v0.20.3 h1:uH9RQ6vdyPSs2pSy9fL8QPspDF2AMIMPtmK5coSSjtQ= +github.com/go-openapi/spec v0.20.3/go.mod h1:gG4F8wdEDN+YPBMVnzE85Rbhf+Th2DTvA9nFPQ5AYEg= +github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= +github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= +github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= +github.com/go-openapi/strfmt v0.19.11/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= +github.com/go-openapi/strfmt v0.20.0/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= +github.com/go-openapi/strfmt v0.20.1 h1:1VgxvehFne1mbChGeCmZ5pc0LxUf6yaACVSIYAR91Xc= +github.com/go-openapi/strfmt v0.20.1/go.mod h1:43urheQI9dNtE5lTZQfuFJvjYJKPrxicATpEfZwHUNk= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= +github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= +github.com/go-openapi/swag v0.19.12/go.mod h1:eFdyEBkTdoAf/9RXBvj4cr1nH7GD8Kzo5HTt47gr72M= +github.com/go-openapi/swag v0.19.13/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= +github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo= +github.com/go-openapi/validate v0.19.10/go.mod h1:RKEZTUWDkxKQxN2jDT7ZnZi2bhZlbNMAuKvKB+IaGx8= +github.com/go-openapi/validate v0.19.12/go.mod h1:Rzou8hA/CBw8donlS6WNEUQupNvUZ0waH08tGe6kAQ4= +github.com/go-openapi/validate v0.19.15/go.mod h1:tbn/fdOwYHgrhPBzidZfJC2MIVvs9GA7monOmWBbeCI= +github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE9E4k54HpKcJ0= +github.com/go-openapi/validate v0.20.2 h1:AhqDegYV3J3iQkMPJSXkvzymHKMTw0BST3RK3hTT4ts= +github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= +github.com/go-piv/piv-go v1.7.0/go.mod h1:ON2WvQncm7dIkCQ7kYJs+nc3V4jHGfrrJnSF8HKy7Gk= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator v9.31.0+incompatible h1:UA72EPEogEnq76ehGdEDp4Mit+3FDh548oRqwVgNsHA= +github.com/go-playground/validator v9.31.0+incompatible/go.mod h1:yrEkQXlcI+PugkyDjY2bRrL/UBU4f3rvrgkN3V8JEig= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= +github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= +github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= +github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= +github.com/go-toolsmith/astequal v0.0.0-20180903214952-dcb477bfacd6/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= +github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= +github.com/go-toolsmith/astfmt v0.0.0-20180903215011-8f8ee99c3086/go.mod h1:mP93XdblcopXwlyN4X4uodxXQhldPGZbcEJIimQHrkg= +github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= +github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= +github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod h1:SV2ur98SGypH1UjcPpCatrV5hPazG6+IfNHbkDXBRrk= +github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= +github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks= +github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= +github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= +github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= +github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0= +github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= +github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= +github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= +github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= +github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= +github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= +github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= +github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= +github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= +github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= +github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= +github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= +github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= +github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= +github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/gocql/gocql v0.0.0-20200624222514-34081eda590e/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.3 h1:ZqHaoEF7TBzh4jzPmqVhE/5A1z9of6orkAe5uHoAeME= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.0.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= +github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= +github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= +github.com/golangci/go-tools v0.0.0-20190318055746-e32c54105b7c/go.mod h1:unzUULGw35sjyOYjUt0jMTXqHlZPpPc6e+xfO4cd6mM= +github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o= +github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= +github.com/golangci/gofmt v0.0.0-20181222123516-0b8337e80d98/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= +github.com/golangci/golangci-lint v1.17.2-0.20190910081718-bad04bb7378f/go.mod h1:kaqo8l0OZKYPtjNmG4z4HrWLgcYNIJ9B9q3LWri9uLg= +github.com/golangci/gosec v0.0.0-20190211064107-66fb7fc33547/go.mod h1:0qUabqiIQgfmlAmulqxyiGkkyF6/tOGSnY2cnPVwrzU= +github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU= +github.com/golangci/lint-1 v0.0.0-20190420132249-ee948d087217/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= +github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= +github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI= +github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= +github.com/google/certificate-transparency-go v1.1.0 h1:10MlrYzh5wfkToxWI4yJzffsxLfxcEDlOATMx/V9Kzw= +github.com/google/certificate-transparency-go v1.1.0/go.mod h1:i+Q7XY+ArBveOUT36jiHGfuSK1fHICIg6sUkRxPAbCs= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-containerregistry v0.4.1 h1:Lrcj2AOoZ7WKawsoKAh2O0dH0tBqMW2lTEmozmK4Z3k= +github.com/google/go-containerregistry v0.4.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-github/v28 v28.1.1/go.mod h1:bsqJWQX05omyWVmc00nEUql9mhQyv38lDZ8kPZcQVoM= +github.com/google/go-licenses v0.0.0-20210329231322-ce1d9163b77d/go.mod h1:+TYOmkVoJOpwnS0wfdsJCV9CoD5nJYsHoFk/0CrTK4M= +github.com/google/go-metrics-stackdriver v0.2.0/go.mod h1:KLcPyp3dWJAFD+yHisGlJSZktIsTjb50eB72U2YZ9K0= +github.com/google/go-querystring v0.0.0-20170111101155-53e6ce116135/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= +github.com/google/go-replayers/grpcreplay v1.0.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= +github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= +github.com/google/go-replayers/httpreplay v0.1.2/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/licenseclassifier v0.0.0-20210325184830-bb04aff29e72/go.mod h1:qsqn2hxC+vURpyBRygGUuinTO42MFRLcsmQ/P8v94+M= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/monologue v0.0.0-20190606152607-4b11a32b5934/go.mod h1:6NTfaQoUpg5QmPsCUWLR3ig33FHrKXhTtWzF0DVdmuk= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200905233945-acf8798be1f7/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/rpmpack v0.0.0-20191226140753-aa36bfddb3a0/go.mod h1:RaTPr0KUf2K7fnZYLNDrr8rxAamWs3iNywJLtQ2AzBg= +github.com/google/rpmpack v0.0.0-20210107155803-d6befbf05148/go.mod h1:+y9lKiqDhR4zkLl+V9h4q0rdyrYVsWWm6LLCQP33DIk= +github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/trillian v1.2.2-0.20190612132142-05461f4df60a/go.mod h1:YPmUVn5NGwgnDUgqlVyFGMTgaWlnSvH7W5p+NdOG8UA= +github.com/google/trillian v1.3.13/go.mod h1:8y3zC8XuqFxsslWPkP0r3sprERfFf7hCWmicL0yHZNI= +github.com/google/trillian v1.3.14-0.20210413093047-5e12fb368c8f h1:vOTNsHe4akmIsMzOVFrjntNgjt4cmChnRKg10M3m5GQ= +github.com/google/trillian v1.3.14-0.20210413093047-5e12fb368c8f/go.mod h1:6Nxex9IQJdZ9WJz1mqEixp9FVw7h+m/TDuwgSB20nC0= +github.com/google/trillian-examples v0.0.0-20190603134952-4e75ba15216c/go.mod h1:WgL3XZ3pA8/9cm7yxqWrZE6iZkESB2ItGxy5Fo6k2lk= +github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= +github.com/google/wire v0.4.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= +github.com/googleapis/gax-go v2.0.2+incompatible h1:silFMLAnr330+NRuag/VjIGF7TLp/LBrV2CJKFLWEww= +github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gopherjs/gopherjs v0.0.0-20180628210949-0892b62f0d9f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= +github.com/goreleaser/goreleaser v0.134.0/go.mod h1:ZT6Y2rSYa6NxQzIsdfWWNWAlYGXGbreo66NmE+3X3WQ= +github.com/goreleaser/nfpm v1.2.1/go.mod h1:TtWrABZozuLOttX2uDlYyECfQX7x5XYkVxhjYcR6G9w= +github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= +github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.6.2/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= +github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= +github.com/hashicorp/cap v0.0.0-20210204173447-5fcddadbf7c7/go.mod h1:tIk5rB1nihW5+9bZjI7xlc8LGw8FYfiFMKOpHPbWgug= +github.com/hashicorp/consul-template v0.25.2/go.mod h1:5kVbPpbJvxZl3r9aV1Plqur9bszus668jkx6z2umb6o= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/api v1.4.0/go.mod h1:xc8u05kyMa3Wjr9eEAsIAo3dg8+LywT5E/Cl7cNS5nU= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.4.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= +github.com/hashicorp/consul/sdk v0.4.1-0.20200910203702-bb2b5dd871ca/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-bindata v3.0.8-0.20180209072458-bf7910af8997+incompatible/go.mod h1:+IrDq36jUYG0q6TsDY9uO2p77C8f8S5y+RbYHr2UI+U= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-discover v0.0.0-20201029210230-738cb3105cd0/go.mod h1:D4eo8/CN92vm9/9UDG+ldX1/fMFa4kpl8qzyTolus8o= +github.com/hashicorp/go-gatedio v0.5.0/go.mod h1:Lr3t8L6IyxD3DAeaUxGcgl2JnRUpWMCsmBl4Omu/2t4= +github.com/hashicorp/go-gcp-common v0.5.0/go.mod h1:IDGUI2N/OS3PiU4qZcXJeWKPI6O/9Y8hOrbSiMcqyYw= +github.com/hashicorp/go-gcp-common v0.6.0/go.mod h1:RuZi18562/z30wxOzpjeRrGcmk9Ro/rBzixaSZDhIhY= +github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= +github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.9.1/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.15.0 h1:qMuK0wxsoW4D0ddCCYwPSTm4KQv1X1ke3WmPWZ0Mvsk= +github.com/hashicorp/go-hclog v0.15.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-kms-wrapping v0.5.16/go.mod h1:lxD7e9q7ZyCtDEP+tnMevsEvw3M0gmZnneAgv8BaO1Q= +github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= +github.com/hashicorp/go-memdb v1.0.2/go.mod h1:I6dKdmYhZqU0RJSheVEWgTNWdVQH5QvTgIUQ0t/t32M= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-plugin v1.0.0/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-raftchunking v0.6.3-0.20191002164813-7e9e8525653a/go.mod h1:xbXnmKqX9/+RhPkJ4zrEx4738HacP72aaUPlT2RZ4sU= +github.com/hashicorp/go-retryablehttp v0.5.2/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY= +github.com/hashicorp/go-retryablehttp v0.6.4/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.6.7/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.6.8 h1:92lWxgpa+fF3FozM4B3UZtHZMJX8T5XT+TFdCxsPyWs= +github.com/hashicorp/go-retryablehttp v0.6.8/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-slug v0.4.1/go.mod h1:I5tq5Lv0E2xcNXNkmx7BSfzi1PsJ2cNjs3cC3LwyhK8= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-tfe v0.12.0/go.mod h1:oT0AG5u/ROzWiw8JZFLDY6FLh6AZnJIG0Ahhvp10txg= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2-0.20191001231223-f32f5fe8d6a8/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v0.0.0-20180404174102-ef8a98b0bbce/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/hcl v1.0.1-vault h1:UiJeEzCWAYdVaJr8Xo4lBkTozlW1+1yxVUnpbS1xVEk= +github.com/hashicorp/hcl v1.0.1-vault/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/nomad/api v0.0.0-20191220223628-edc62acd919d/go.mod h1:WKCL+tLVhN1D+APwH3JiTRZoxcdwRk86bWu1LVCUPaE= +github.com/hashicorp/raft v1.0.1/go.mod h1:DVSAWItjLjTOkVbSpWQ0j0kUADIvDaCtBxIcbNAQLkI= +github.com/hashicorp/raft v1.1.2-0.20191002163536-9c6bd3e3eb17/go.mod h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8= +github.com/hashicorp/raft v1.2.0/go.mod h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8= +github.com/hashicorp/raft-autopilot v0.1.2/go.mod h1:Af4jZBwaNOI+tXfIqIdbcAnh/UyyqIMj/pOISIfhArw= +github.com/hashicorp/raft-boltdb v0.0.0-20171010151810-6e5ba93211ea/go.mod h1:pNv7Wc3ycL6F5oOWn+tPGo2gWD4a5X+yp/ntwdKLjRk= +github.com/hashicorp/raft-snapshot v1.0.3/go.mod h1:5sL9eUn72lH5DzsFIJ9jaysITbHksSSszImWSOTC8Ic= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/serf v0.9.4/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= +github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= +github.com/hashicorp/vault v1.7.0 h1:7ALa1gIYN9ONhLlVUtTuWFM/vZpUpchbuAmSMoOt61I= +github.com/hashicorp/vault v1.7.0/go.mod h1:l4Z0KEtPXWc0bsEJYy7TUP/M2d4xJoqAjDpJYRncbOs= +github.com/hashicorp/vault-plugin-auth-alicloud v0.8.0/go.mod h1:lyfBMcULXKJfVu8dNo1w9bUikV5oem5HKmJoWwXupnY= +github.com/hashicorp/vault-plugin-auth-azure v0.7.2/go.mod h1:B8T1Xfy4SDWnor9CABIPmGseyBCOsuxJTtloxnDevQM= +github.com/hashicorp/vault-plugin-auth-centrify v0.8.0/go.mod h1:tLY05v1tC+sfeeE6DF8RAC/MGw4gflomYfA28b4VULw= +github.com/hashicorp/vault-plugin-auth-cf v0.8.0/go.mod h1:exPUMj8yNohKM7yRiHa7OfxQmyDI9Pj8+08qB4hGlVw= +github.com/hashicorp/vault-plugin-auth-gcp v0.5.1/go.mod h1:eLj92eX8MPI4vY1jaazVLF2sVbSAJ3LRHLRhF/pUmlI= +github.com/hashicorp/vault-plugin-auth-gcp v0.9.0/go.mod h1:sHDguHmyGScoalGLEjuxvDCrMPVlw2c3f+ieeiHcv6w= +github.com/hashicorp/vault-plugin-auth-jwt v0.9.2/go.mod h1:Gn6ELc1X5nmZ/pxoXf0nA4lG2gwuGnY6SNyW40tR/ws= +github.com/hashicorp/vault-plugin-auth-kerberos v0.3.0/go.mod h1:h+7pLm4Z2EeKHOGPefX0bGzdUQCMBUlvM/BpSMNgTFw= +github.com/hashicorp/vault-plugin-auth-kubernetes v0.9.0/go.mod h1:2c/k3nsoGPKV+zpAWCiajt4e66vncEq8Li/eKLqErAc= +github.com/hashicorp/vault-plugin-auth-oci v0.7.0/go.mod h1:Cn5cjR279Y+snw8LTaiLTko3KGrbigRbsQPOd2D5xDw= +github.com/hashicorp/vault-plugin-database-couchbase v0.3.0/go.mod h1:Seivjno/BOtkqX41d/DDYtTg6zNoxIgNaUVZ3ObZYi4= +github.com/hashicorp/vault-plugin-database-elasticsearch v0.7.0/go.mod h1:813Nvr1IQqAKdlk3yIY97M5WyxMhWOrXtYioPf9PqJg= +github.com/hashicorp/vault-plugin-database-mongodbatlas v0.3.0/go.mod h1:ewrdsH4iFG5TGZu7euYf4BCzLl+hoFkaKaOGuF0UcjI= +github.com/hashicorp/vault-plugin-database-snowflake v0.1.1/go.mod h1:gUfFbYrFFxITKxeLJe2IHPnNkmSG5ldVF1OOxp1WW3c= +github.com/hashicorp/vault-plugin-mock v0.16.1/go.mod h1:83G4JKlOwUtxVourn5euQfze3ZWyXcUiLj2wqrKSDIM= +github.com/hashicorp/vault-plugin-secrets-ad v0.9.0/go.mod h1:L5L6NoJFxRvgxhuA2sWhloc3sbgmE7KxhNcoRxcaH9U= +github.com/hashicorp/vault-plugin-secrets-alicloud v0.8.0/go.mod h1:SSkKpSTOMnX84PfgYiWHgwVg+YMhxHNjo+YCJGNBoZk= +github.com/hashicorp/vault-plugin-secrets-azure v0.9.0/go.mod h1:4jCVjTG809NCQ8mrSnbBtX17gX1Iush+558BVO6MJeo= +github.com/hashicorp/vault-plugin-secrets-gcp v0.9.0/go.mod h1:psRQ/dm5XatoUKLDUeWrpP9icMJNtu/jmscUr37YGK4= +github.com/hashicorp/vault-plugin-secrets-gcpkms v0.8.0/go.mod h1:hhwps56f2ATeC4Smgghrc5JH9dXR31b4ehSf1HblP5Q= +github.com/hashicorp/vault-plugin-secrets-kv v0.8.0/go.mod h1:B/Cybh5aVF7LNAMHwVBxY8t7r2eL0C6HVGgTyP4nKK4= +github.com/hashicorp/vault-plugin-secrets-mongodbatlas v0.3.0/go.mod h1:4mdgPqlkO+vfFX1cFAWcxkeqz6JAtZgKxL/67q/58Oo= +github.com/hashicorp/vault-plugin-secrets-openldap v0.4.0/go.mod h1:GiFI8Bxwx3+fn0A3SyVp9XdYQhm3cOgN8GzwKxyJ9So= +github.com/hashicorp/vault-plugin-secrets-terraform v0.1.0/go.mod h1:7r/0t51X/ZtSRh/TjBk7gCm1CUMk50aqLAx811OsGQ8= +github.com/hashicorp/vault/api v1.0.1/go.mod h1:AV/+M5VPDpB90arloVX0rVDUIHkONiwz5Uza9HRtpUE= +github.com/hashicorp/vault/api v1.0.5-0.20190730042357-746c0b111519/go.mod h1:i9PKqwFko/s/aihU1uuHGh/FaQS+Xcgvd9dvnfAvQb0= +github.com/hashicorp/vault/api v1.0.5-0.20200215224050-f6547fa8e820/go.mod h1:3f12BMfgDGjTsTtIUj+ZKZwSobQpZtYGFIEehOv5z1o= +github.com/hashicorp/vault/api v1.0.5-0.20200519221902-385fac77e20f/go.mod h1:euTFbi2YJgwcju3imEt919lhJKF68nN1cQPq3aA+kBE= +github.com/hashicorp/vault/api v1.0.5-0.20200805123347-1ef507638af6/go.mod h1:R3Umvhlxi2TN7Ex2hzOowyeNb+SfbVWI973N+ctaFMk= +github.com/hashicorp/vault/api v1.0.5-0.20200826195146-c03009a7e370/go.mod h1:R3Umvhlxi2TN7Ex2hzOowyeNb+SfbVWI973N+ctaFMk= +github.com/hashicorp/vault/api v1.0.5-0.20210210214158-405eced08457/go.mod h1:R3Umvhlxi2TN7Ex2hzOowyeNb+SfbVWI973N+ctaFMk= +github.com/hashicorp/vault/api v1.1.0 h1:QcxC7FuqEl0sZaIjcXB/kNEeBa0DH5z57qbWBvZwLC4= +github.com/hashicorp/vault/api v1.1.0/go.mod h1:R3Umvhlxi2TN7Ex2hzOowyeNb+SfbVWI973N+ctaFMk= +github.com/hashicorp/vault/sdk v0.1.8/go.mod h1:tHZfc6St71twLizWNHvnnbiGFo1aq0eD2jGPLtP8kAU= +github.com/hashicorp/vault/sdk v0.1.14-0.20190730042320-0dc007d98cc8/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= +github.com/hashicorp/vault/sdk v0.1.14-0.20200215195600-2ca765f0a500/go.mod h1:WX57W2PwkrOPQ6rVQk+dy5/htHIaB4aBM70EwKThu10= +github.com/hashicorp/vault/sdk v0.1.14-0.20200215224050-f6547fa8e820/go.mod h1:WX57W2PwkrOPQ6rVQk+dy5/htHIaB4aBM70EwKThu10= +github.com/hashicorp/vault/sdk v0.1.14-0.20200305172021-03a3749f220d/go.mod h1:PcekaFGiPJyHnFy+NZhP6ll650zEw51Ag7g/YEa+EOU= +github.com/hashicorp/vault/sdk v0.1.14-0.20200427170607-03332aaf8d18/go.mod h1:WX57W2PwkrOPQ6rVQk+dy5/htHIaB4aBM70EwKThu10= +github.com/hashicorp/vault/sdk v0.1.14-0.20200519221530-14615acda45f/go.mod h1:WX57W2PwkrOPQ6rVQk+dy5/htHIaB4aBM70EwKThu10= +github.com/hashicorp/vault/sdk v0.1.14-0.20200519221838-e0cfd64bc267/go.mod h1:WX57W2PwkrOPQ6rVQk+dy5/htHIaB4aBM70EwKThu10= +github.com/hashicorp/vault/sdk v0.1.14-0.20200527182800-ad90e0b39d2f/go.mod h1:B2Cbv/tzj8btUA5FF4SvYclTujJhlWU6siK4vo8tgXM= +github.com/hashicorp/vault/sdk v0.1.14-0.20200916184745-5576096032f8/go.mod h1:7GBJyKruotYxJlye8yHyGICV7kN7dQCNsCMTrb+v5J0= +github.com/hashicorp/vault/sdk v0.1.14-0.20201022214319-d87657199d4b/go.mod h1:cAGI4nVnEfAyMeqt9oB+Mase8DNn3qA/LDNHURiwssY= +github.com/hashicorp/vault/sdk v0.1.14-0.20210106220500-0ddc32f2ab8a/go.mod h1:cAGI4nVnEfAyMeqt9oB+Mase8DNn3qA/LDNHURiwssY= +github.com/hashicorp/vault/sdk v0.1.14-0.20210127185906-6b455835fa8c/go.mod h1:cAGI4nVnEfAyMeqt9oB+Mase8DNn3qA/LDNHURiwssY= +github.com/hashicorp/vault/sdk v0.1.14-0.20210204230556-cf85a862b7c6/go.mod h1:cAGI4nVnEfAyMeqt9oB+Mase8DNn3qA/LDNHURiwssY= +github.com/hashicorp/vault/sdk v0.1.14-0.20210322210658-b52b8b8c1264/go.mod h1:cAGI4nVnEfAyMeqt9oB+Mase8DNn3qA/LDNHURiwssY= +github.com/hashicorp/vault/sdk v0.2.0 h1:hvVswvMA9LvXwLBFDJLIoDBXi8hj90Q+gSS7vRYmLvQ= +github.com/hashicorp/vault/sdk v0.2.0/go.mod h1:cAGI4nVnEfAyMeqt9oB+Mase8DNn3qA/LDNHURiwssY= +github.com/hashicorp/vic v1.5.1-0.20190403131502-bbfe86ec9443/go.mod h1:bEpDU35nTu0ey1EXjwNwPjI9xErAsoOCmcMb9GKvyxo= +github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c h1:aY2hhxLhjEAbfXOx2nRJxCXezC6CO2V/yN+OCr1srtk= +github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= +github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= +github.com/huaweicloud/golangsdk v0.0.0-20200304081349-45ec0797f2a4/go.mod h1:WQBcHRNX9shz3928lWEvstQJtAtYI7ks6XlgtRT9Tcw= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb v0.0.0-20190411212539-d24b7ba8c4c4/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= +github.com/jackc/pgx v3.3.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= +github.com/jarcoal/httpmock v0.0.0-20180424175123-9c70cfe4a1da/go.mod h1:ks+b9deReOc7jgqp+e7LuFiCBH6Rm5hL32cLcEAArb4= +github.com/jarcoal/httpmock v1.0.4/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jarcoal/httpmock v1.0.5/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jcmturner/aescts v1.0.1/go.mod h1:k9gJoDUf1GH5r2IBtBjwjDCoLELYxOcEhitdP8RL7qQ= +github.com/jcmturner/dnsutils v1.0.1/go.mod h1:tqMo38L01jO8AKxT0S9OQVlGZu3dkEt+z5CA+LOhwB0= +github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.0.0/go.mod h1:4/sqKY8Yzo/TIQ8MoCyk/EPcjb+czI9czxHcdXuZbFA= +github.com/jcmturner/rpc/v2 v2.0.2/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= +github.com/jedisct1/go-minisign v0.0.0-20210106175330-e54e81d562c7 h1:qrPDNqqT76vs8oWL6Z1/D6hKvbXULvlD7FdNVTIUI8A= +github.com/jedisct1/go-minisign v0.0.0-20210106175330-e54e81d562c7/go.mod h1:oPTyITpvr7hPx/9w76gWrgbZwbb+7gZ9/On8hFc+LNE= +github.com/jeffchao/backoff v0.0.0-20140404060208-9d7fd7aa17f2/go.mod h1:xkfESuHriIekR+4RoV+fu91j/CfnYM29Zi2tMFw5iD4= +github.com/jefferai/isbadcipher v0.0.0-20190226160619-51d2077c035f/go.mod h1:3J2qVK16Lq8V+wfiL2lPeDZ7UWMxk5LemerHa1p6N00= +github.com/jefferai/jsonx v1.0.0/go.mod h1:OGmqmi2tTeI/PS+qQfBDToLHHJIy/RMp24fPo8vFvoQ= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/joyent/triton-go v0.0.0-20180628001255-830d2b111e62/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA= +github.com/joyent/triton-go v1.7.1-0.20200416154420-6801d15b779f/go.mod h1:KDSfL7qe5ZfQqvlDMkVjCztbmcpp/c8M77vhQP8ZPvk= +github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= +github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= +github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +github.com/kelseyhightower/envconfig v1.3.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= +github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/keybase/go-crypto v0.0.0-20190403132359-d65b6b94177f/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v0.0.0-20161130080628-0de1eaf82fa3/go.mod h1:jxZFDH7ILpTPQTk+E2s+z4CUas9lVNjIuKR4c5/zKgM= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/lestrrat-go/jwx v0.9.0/go.mod h1:iEoxlYfZjvoGpuWwxUz+eR5e6KTJGsaRcy/YNA/UnBk= +github.com/letsencrypt/pkcs11key v2.0.1-0.20170608213348-396559074696+incompatible/go.mod h1:iGYXKqDXt0cpBthCHdr9ZdsQwyGlYFh/+8xa4WzIQ34= +github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= +github.com/lib/pq v0.0.0-20180327071824-d34b9ff171c2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linode/linodego v0.7.1/go.mod h1:ga11n3ivecUrPCHN0rANxKmfWBJVkOXfLMZinAbj2sY= +github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.7.6/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.4 h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY= +github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/manifoldco/promptui v0.8.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11/go.mod h1:Ah2dBMoxZEqk118as2T4u4fjfXarE0pPnMJaArZQZsI= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.7 h1:bQGKb3vps/j0E9GfJQ03JyhRuxsvdAanXlT9BTw3mdw= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= +github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/mediocregopher/radix/v4 v4.0.0-beta.1/go.mod h1:Z74pilm773ghbGV4EEoPvi6XWgkAfr0VCNkfa8gI1PU= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= +github.com/mholt/archiver v3.1.1+incompatible/go.mod h1:Dh2dOXnSdiLxRiPoVfIr/fI1TwETms9B8CTWfeh7ROU= +github.com/michaelklishin/rabbit-hole v0.0.0-20191008194146-93d9988f0cd5/go.mod h1:+pmbihVqjC3GPdfWv1V2TnRSuVvwrWLKfEP/MZVB/Wc= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.40/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= +github.com/mitchellh/cli v1.1.1/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-ps v0.0.0-20170309133038-4fdf99ab2936/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= +github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.0/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/gox v1.0.1/go.mod h1:ED6BioOGXMswlXa2zxfh/xdd5QhwYliBFn9V18Ap4z4= +github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.2.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/pointerstructure v1.0.0/go.mod h1:k4XwG94++jLVsSiTxo7qdIfXA9pj9EAeo0QsNNJOLZ8= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/term v0.0.0-20200915141129-7f0af18e79f2/go.mod h1:TjQg8pa4iejrUrjiz0MCtMV38jdMNW4doKSiBrEvCQQ= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/mongodb/go-client-mongodb-atlas v0.1.2/go.mod h1:LS8O0YLkA+sbtOb3fZLF10yY3tJM+1xATXMJ3oU35LU= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mozilla/tls-observatory v0.0.0-20180409132520-8791a200eb40/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwielbut/pointy v1.1.0/go.mod h1:MvvO+uMFj9T5DMda33HlvogsFBX7pWWKAkFIn4teYwY= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= +github.com/mwitkow/go-proto-validators v0.2.0/go.mod h1:ZfA1hW+UH/2ZHOWvQ3HnQaU0DtnpXu850MZiy+YUgcc= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/natefinch/atomic v0.0.0-20150920032501-a62ce929ffcc/go.mod h1:1rLVY/DWf3U6vSZgH16S7pymfrhK2lcUlXjgGglw/lY= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/nbutton23/zxcvbn-go v0.0.0-20160627004424-a22cb81b2ecd/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= +github.com/nbutton23/zxcvbn-go v0.0.0-20171102151520-eafdab6b0663/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= +github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= +github.com/nicolai86/scaleway-sdk v1.10.2-0.20180628010248-798f60e20bb2/go.mod h1:TLb2Sg7HQcgGdloNxkrmtgDNR9uVYF3lfdFIN4Ro6Sk= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nishanths/predeclared v0.0.0-20190419143655-18a43bb90ffc/go.mod h1:62PewwiQTlm/7Rj+cxVYqZvDIUc+JjZq6GHAC1fsObQ= +github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3/go.mod h1:nt3d53pc1VYcphSCIaYAJtnPYnr3Zyn8fMq2wvPGPso= +github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/okta/okta-sdk-golang v1.1.0/go.mod h1:KEjmr3Zo+wP3gVa3XhwIvENBfh7L/iRUeIl6ruQYOK0= +github.com/okta/okta-sdk-golang/v2 v2.0.0/go.mod h1:fQubbeV8gksr8e1pmRVSE8kIj1TFqlgYqi8WsvSKmQk= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.0-20180130162743-b8a9be070da4/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ= +github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/open-policy-agent/opa v0.27.1/go.mod h1:KHUrOM4lDRHSK0C0Z2Kc09tBucKEvbb4JqD4dz1FmNw= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc9 h1:/k06BMULKF5hidyoZymkoDCzdJzltZpz/UU4LguQVtc= +github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/openlyinc/pointy v1.1.2/go.mod h1:w2Sytx+0FVuMKn37xpXIAyBNhFNBIJGR/v2m7ik1WtM= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.3/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/oracle/oci-go-sdk v12.5.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/ory/dockertest v3.3.4+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= +github.com/ory/dockertest/v3 v3.6.2/go.mod h1:EFLcVUOl8qCwp9NyDAcCDtq/QviLtYswW/VbWzUnTNE= +github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2/go.mod h1:L3UMQOThbttwfYRNFOWLLVXMhk5Lkio4GGOtw5UrxS0= +github.com/packethost/packngo v0.1.1-0.20180711074735-b9cb5096f54c/go.mod h1:otzZQXgoO96RTzDB/Hycg0qZcXZsWJGJRSXbmEIJ+4M= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/patrickmn/go-cache v0.0.0-20180815053127-5633e0862627/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= +github.com/pelletier/go-toml v1.1.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= +github.com/pelletier/go-toml v1.6.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/peterbourgon/ff/v3 v3.0.0/go.mod h1:UILIFjRH5a/ar8TjXYLTkIvSvekZqPm5Eb/qbGk6CT0= +github.com/peterh/liner v0.0.0-20170211195444-bf27d3ba8e1d/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4 v2.6.0+incompatible h1:Ix9yFKn1nSPBLFl/yZknTp8TU5G4Ps0JDmguYK6iH1A= +github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/pquerna/cachecontrol v0.0.0-20201205024021-ac21108117ac/go.mod h1:hoLfEwdY11HjRfKFH6KqnPsfxlo3BP6bJehpDv8t6sQ= +github.com/pquerna/otp v1.2.1-0.20191009055518-468c2dd2b58d/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v0.9.4/go.mod h1:oCXIBxdI62A4cR6aTRJCgetEjecSIYzOEaeAn4iYEpM= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= +github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.11.1/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA= +github.com/pseudomuto/protoc-gen-doc v1.4.1/go.mod h1:exDTOVwqpp30eV/EDPFLZy3Pwr2sn6hBC1WIYH/UbIg= +github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= +github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= +github.com/rboyer/safeio v0.2.1/go.mod h1:Cq/cEPK+YXFn622lsQ0K4KsPZSPtaptHHEldsy7Fmig= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/renier/xmlrpc v0.0.0-20170708154548-ce4a1a486c03/go.mod h1:gRAiPF5C5Nd0eyyRdqIu9qTiFSoZzpTq727b5B8fkkU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/zerolog v1.4.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= +github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= +github.com/sassoftware/go-rpmutils v0.0.0-20190420191620-a8f1baeba37b/go.mod h1:am+Fp8Bt506lA3Rk3QCmSqmYmLMnPDhdDUcosQCAx+I= +github.com/sassoftware/relic v7.2.1+incompatible h1:Pwyh1F3I0r4clFJXkSI8bOyJINGqpgjJU3DYAZeI05A= +github.com/sassoftware/relic v7.2.1+incompatible/go.mod h1:CWfAxv73/iLZ17rbyhIEq3K9hs5w6FpNMdUT//qR+zk= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= +github.com/sean-/conswriter v0.0.0-20180208195008-f5ae3917a627/go.mod h1:7zjs06qF79/FKAJpBvFx3P8Ww4UTIMAe+lpNXDHziac= +github.com/sean-/pager v0.0.0-20180208200047-666be9bf53b5/go.mod h1:BeybITEsBEg6qbIiqJ6/Bqeq25bCLbL7YFmpaFfJDuM= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/segmentio/ksuid v1.0.3 h1:FoResxvleQwYiPAVKe1tMUlEirodZqlqglIuFsdDntY= +github.com/segmentio/ksuid v1.0.3/go.mod h1:/XUiZBD3kVx5SmUOl55voK5yeAbBNNIed+2O73XgrPE= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sethvargo/go-limiter v0.3.0/go.mod h1:C0kbSFbiriE5k2FFOe18M1YZbAR2Fiwf72uGu0CXCcU= +github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v3.21.1+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sigstore/cosign v0.3.1 h1:iXFHaG9i4lxuHryoliiJEpqA81Ru1V5EPVPUNQLlDd8= +github.com/sigstore/cosign v0.3.1/go.mod h1:SqU8hk1j12Bs1p+B+EuquV1iKxLwLjlWu9P8oiyNDqk= +github.com/sigstore/fulcio v0.0.0-20210405115948-e7630f533fca h1:CB8JH2VzlMHqgtMhCQpiMQ0zER0tYDeM6xbv++VHcjQ= +github.com/sigstore/fulcio v0.0.0-20210405115948-e7630f533fca/go.mod h1:l16xJtuil/zC7RaacVfLf8EwmkFEMWI0hYxKkkahL2I= +github.com/sigstore/rekor v0.1.1/go.mod h1:b+T8TvGKWgaFbtPRQgF/gXjbj/R9HdJ5lA93cnGT3Sc= +github.com/sigstore/rekor v0.1.2-0.20210410002954-cce6cabf1a88/go.mod h1:4vPst+j1qes+LBMabwDPw7I/Wjmg/tSJv0Neq+0KBBo= +github.com/sigstore/rekor v0.1.2-0.20210422173947-d52685fc3178 h1:f4STaOSAXUSpXURUivpKnyPGOVn5Xrmd5CYg34mcFMk= +github.com/sigstore/rekor v0.1.2-0.20210422173947-d52685fc3178/go.mod h1:Df5vQUsc43fRHrpyeU6hA1cl11JCMHtb9r7pKPZJs7I= +github.com/sigstore/sigstore v0.0.0-20210414175954-786234debb5a/go.mod h1:EoLIp5JbrCE2VZqdCCIemNEdNYiOcdwF0igIvorqo1o= +github.com/sigstore/sigstore v0.0.0-20210415112811-cb2061113e4a/go.mod h1:EoLIp5JbrCE2VZqdCCIemNEdNYiOcdwF0igIvorqo1o= +github.com/sigstore/sigstore v0.0.0-20210427115853-11e6eaab7cdc h1:DoOvWMIzbN59q3T1+pGMpz5nNYDiDYlCCzmYGLv2E5o= +github.com/sigstore/sigstore v0.0.0-20210427115853-11e6eaab7cdc/go.mod h1:gjB7+oR8dUATOHeESM8GTLov7kPUmMGPhRCW5pwGSFc= +github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= +github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= +github.com/smartystreets/assertions v0.0.0-20180725160413-e900ae048470/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v1.0.0 h1:UVQPSSmc3qtTi+zPPkCXvZX9VvW/xT/NsRvKfwY81a8= +github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= +github.com/snowflakedb/glog v0.0.0-20180824191149-f5055e6f21ce/go.mod h1:EB/w24pR5VKI60ecFnKqXzxX3dOorz1rnVicQTQrGM0= +github.com/snowflakedb/gosnowflake v1.3.11/go.mod h1:+BMe9ivHWpzcXbM1qSIxWZ8qpWGBBaA46o9Z1qSfrNg= +github.com/softlayer/softlayer-go v0.0.0-20180806151055-260589d94c7d/go.mod h1:Cw4GTlQccdRGSEf6KiMju767x0NEHE0YIVPJSaXjlsw= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.0/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.5.1 h1:VHu76Lk0LSP1x254maIu2bplkWpfBWI+B+6fdoZprcg= +github.com/spf13/afero v1.5.1/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.2/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= +github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.0.2/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= +github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/square/go-jose v2.4.1+incompatible/go.mod h1:7MxpAF/1WTVUu8Am+T5kNy+t0902CaLWM4Z745MkOa8= +github.com/square/go-jose/v3 v3.0.0-20200225220504-708a9fe87ddc/go.mod h1:JbpHhNyeVc538vtj/ECJ3gPYm1VEitNjsLhm4eJQQbg= +github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d/go.mod h1:BSTlc8jOjh0niykqEGVXOLXdi9o0r0kR8tCYiMvjFgw= +github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= +github.com/tencentcloud/tencentcloud-sdk-go v3.0.83+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4= +github.com/tencentcloud/tencentcloud-sdk-go v3.0.171+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4= +github.com/tent/canonical-json-go v0.0.0-20130607151641-96e4ba3a7613/go.mod h1:g6AnIpDSYMcphz193otpSIzN+11Rs+AAIIC6rm1enug= +github.com/theupdateframework/go-tuf v0.0.0-20201230183259-aee6270feb55 h1:Zn+mA4qTRyao2Petd+YovKaFOUuxDj158kqCIqvwTow= +github.com/theupdateframework/go-tuf v0.0.0-20201230183259-aee6270feb55/go.mod h1:L+uU/NRFK/7h0NYAnsmvsX9EghDB5QVCcHCIrK2h5nw= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/pretty v1.0.1/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/pretty v1.0.2 h1:Z7S3cePv9Jwm1KwS0513MRaoUe3S01WPbLNV40pwWZU= +github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tilinna/clock v1.0.2/go.mod h1:ZsP7BcY7sEEz7ktc0IVy8Us6boDrK8VradlKRUGfOao= +github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= +github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= +github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= +github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= +github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ultraware/funlen v0.0.1/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= +github.com/valyala/quicktemplate v1.1.1/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= +github.com/vmware/govmomi v0.18.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= +github.com/xanzy/go-gitlab v0.31.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= +github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= +github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yandex-cloud/go-genproto v0.0.0-20200722140432-762fe965ce77/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE= +github.com/yandex-cloud/go-sdk v0.0.0-20200722140627-2194e5077f13/go.mod h1:LEdAMqa1v/7KYe4b13ALLkonuDxLph57ibUb50ctvJk= +github.com/yashtewari/glob-intersection v0.0.0-20180916065949-5c77d914dd0b/go.mod h1:HptNXiXVDcJjXe9SqMd0v2FsL9f8dz4GnXgltU6q/co= +github.com/yhat/scrape v0.0.0-20161128144610-24b7890b0945/go.mod h1:4vRFPPNYllgCacoj+0FoKOjTW68rUhEfqPLiEJaK2w8= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= +github.com/zalando/go-keyring v0.1.1 h1:w2V9lcx/Uj4l+dzAf1m9s+DJ1O8ROkEHnynonHjTcYE= +github.com/zalando/go-keyring v0.1.1/go.mod h1:OIC+OZ28XbmwFxU/Rp9V7eKzZjamBJwRzC8UFJH9+L8= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200425165423-262c93980547/go.mod h1:YoUyTScD3Vcv2RBm3eGVOq7i1ULiz3OuXoQFWOirmAM= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8= +go.etcd.io/etcd v3.3.13+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI= +go.etcd.io/etcd/api/v3 v3.5.0-alpha.0/go.mod h1:mPcW6aZJukV6Aa81LSKpBjQXTWlXB5r74ymPoSWa3Sw= +go.etcd.io/etcd/client/v2 v2.305.0-alpha.0/go.mod h1:kdV+xzCJ3luEBSIeQyB/OEKkWKd8Zkux4sbDeANrosU= +go.etcd.io/etcd/client/v3 v3.5.0-alpha.0/go.mod h1:wKt7jgDgf/OfKiYmCq5WFGxOFAkVMLxiiXgLDFhECr8= +go.etcd.io/etcd/etcdctl/v3 v3.5.0-alpha.0/go.mod h1:YPwSaBciV5G6Gpt435AasAG3ROetZsKNUzibRa/++oo= +go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY= +go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0/go.mod h1:FAwse6Zlm5v4tEWZaTjmNhe17Int4Oxbu7+2r0DiD3w= +go.etcd.io/etcd/server/v3 v3.5.0-alpha.0/go.mod h1:tsKetYpt980ZTpzl/gb+UOJj9RkIyCb1u4wjzMg90BQ= +go.etcd.io/etcd/tests/v3 v3.5.0-alpha.0/go.mod h1:HnrHxjyCuZ8YDt8PYVyQQ5d1ZQfzJVEtQWllr5Vp/30= +go.etcd.io/etcd/v3 v3.5.0-alpha.0/go.mod h1:JZ79d3LV6NUfPjUxXrpiFAYcjhT+06qqw+i28snx8To= +go.mongodb.org/atlas v0.7.1/go.mod h1:CIaBeO8GLHhtYLw7xSSXsw7N90Z4MFY87Oy9qcPyuEs= +go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= +go.mongodb.org/mongo-driver v1.3.4/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= +go.mongodb.org/mongo-driver v1.4.2/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +go.mongodb.org/mongo-driver v1.4.4/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +go.mongodb.org/mongo-driver v1.4.6/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +go.mongodb.org/mongo-driver v1.5.1 h1:9nOVLGDfOaZ9R0tBumx/BcuqkbFpyTCU2r/Po7A2azI= +go.mongodb.org/mongo-driver v1.5.1/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw= +go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= +go.opencensus.io v0.19.1/go.mod h1:gug0GbSHa8Pafr0d2urOSgoXHZ6x/RUlaiT0d9pqb4A= +go.opencensus.io v0.19.2/go.mod h1:NO/8qkisMZLZ1FCsKNqtJPwc8/TaclWyY0B6wcYNg9M= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= +go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +gocloud.dev v0.19.0/go.mod h1:SmKwiR8YwIMMJvQBKLsC3fHNyMwXLw3PMDO+VVteJMI= +gocloud.dev v0.22.0/go.mod h1:z3jKIQ0Es9LALVZFQ3wOvwqAsSLq1R5c/2RdmghDucw= +golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190424203555-c05e17bb3b2d/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191117063200-497ca9f6d64f/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181217174547-8f45f776aaf1/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20170915142106-8351a756f30f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181108082009-03003ca0c849/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191003171128-d98b1b443823/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191119073136-fc4aabc6c914/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200320220750-118fecf932d8/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201002202402-0a1ea396d57c/go.mod h1:iQL9McJNjoIa5mjH6nYTCTZXUN6RP+XW3eib7Ya3XcI= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210324051636-2c4c8ecb7826/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758 h1:aEpZnXcAmXkd6AvLb2OPt+EN1Zu/8Ne3pCqPjja5PXY= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190319182350-c85d3e98c914/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201203001011-0b49973bad19/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 h1:0Ja1LBD+yisY6RWM/BH7TJVXWsSjs2VwBSmvSX4HdBc= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20171026204733-164713f0dfce/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181218192612-074acd46bca6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190523142557-0e01d883c5c5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191119060738-e882bf8e40c2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200409092240-59c9f1ba88fa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200413165638-669c56c373c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210301091718-77cc2087c03b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe h1:WdX7u8s3yOigWAhHEaDl8r9G+4XwFQEQFtBMYyN+kXQ= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210317153231-de623e64d2a6 h1:EC6+IGYTjPpRfv9a2b/6Puw0W+hLtAhkV1tPsXhutqs= +golang.org/x/term v0.0.0-20210317153231-de623e64d2a6/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.0.0-20170915090833-1cbadb444a80/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20170915040203-e531a2a1c15f/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181117154741-2ddaf7f79a09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181219222714-6e267b5cc78e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190121143147-24cd39ecf745/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190521203540-521d6ed310dd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190718200317-82a3ea8a504c/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190909030654-5b82db07426d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191118222007-07fc4c7f2b98/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200409170454-77362c5149f0/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200410194907-79a7a3126eef/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200416214402-fc959738d646/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200521155704-91d71f6c2f04/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200630154851-b2d8b0336632/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200706234117-b22de6825cf7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200828161849-5deb26317202/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200915173823-2db8f0ff891c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20200918232735-d647fc253266/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201014170642-d1624618ad65/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201202200335-bef1c476418a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201203202102-a1a1cbeaa516/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.2.0/go.mod h1:IfRCZScioGtypHNTlz3gFk67J8uePVW7uDTBzXuIkhU= +google.golang.org/api v0.3.0/go.mod h1:IuvZyQh8jgscv8qWfQ4ABd8m7hEudgBFM/EdhA3BnXw= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.3.2/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.6.0/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.21.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.31.0/go.mod h1:CL+9IBCa2WWU6gRuBWaKqGWLFFwbEUXkfeMkHLQWYWo= +google.golang.org/api v0.32.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0 h1:URs6qR1lAxDsqWITsQXI4ZkGiYJ5dHtRNiCpfs2OeKA= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181219182458-5a97ab628bfb/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190513181449-d00d292a067c/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190605220351-eb0b1bdb6ae6/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200323114720-3f67cca34472/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200409111301-baae70f3302d/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200416231807-8751e049a2a0/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200707001353-8e8330bf89df/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200831141814-d751682dd103/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200914193844-75d14daec038/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200921151605-7abf4a1a14d5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201203001206-6486ece9c497/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210331142528-b7513248f0ba/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1 h1:E7wSQBXkH3T3diucK+9Z1kjn4+/9tNG7lZLr75oOhh8= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.28.1/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= +gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= +gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= +gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/ory-am/dockertest.v3 v3.3.4/go.mod h1:s9mmoLkaGeAh97qygnNj4xWkiN7e1SKekYC6CovU+ek= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.3.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.4.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= +gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= +gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.6 h1:W18jzjh8mfPez+AwGLxmOImucz/IFjpNlrKVnaj2YVc= +honnef.co/go/tools v0.0.1-2020.1.6/go.mod h1:pyyisuGw24ruLjrr1ddx39WE0y9OooInRzEYLhQB2YY= +k8s.io/api v0.0.0-20190409092523-d687e77c8ae9/go.mod h1:FQEUn50aaytlU65qqBn/w+5ugllHwrBzKm7DzbnXdzE= +k8s.io/api v0.18.2/go.mod h1:SJCWI7OLzhZSvbY7U8zwNl9UA4o1fizoug34OV/2r78= +k8s.io/apimachinery v0.0.0-20190409092423-760d1845f48b/go.mod h1:FW86P8YXVLsbuplGMZeb20J3jYHscrDqw4jELaFJvRU= +k8s.io/apimachinery v0.18.2/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA= +k8s.io/client-go v0.18.2/go.mod h1:Xcm5wVGXX9HAA2JJ2sSBUn3tCJ+4SVlCbl2MNNv+CIU= +k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.0.0-20190306015804-8e90cee79f82/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= +k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +layeh.com/radius v0.0.0-20190322222518-890bc1058917/go.mod h1:fywZKyu//X7iRzaxLgPWsvc0L26IUpVvE/aeIL2JtIQ= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= +mvdan.cc/unparam v0.0.0-20190209190245-fbb59629db34/go.mod h1:H6SUd1XjIs+qQCyskXg5OFSrilMRUkD8ePJpHKDPaeY= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/main.go b/main.go new file mode 100644 index 0000000..7244e0f --- /dev/null +++ b/main.go @@ -0,0 +1,34 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package main + +import ( + "fmt" + "os" + + "github.com/Dentrax/cocert/cmd" +) + +func main() { + if err := cmd.Execute(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} diff --git a/pkg/password/password.go b/pkg/password/password.go new file mode 100644 index 0000000..7017923 --- /dev/null +++ b/pkg/password/password.go @@ -0,0 +1,87 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package password + +import ( + "fmt" + "io/ioutil" + "os" + + "github.com/hashicorp/vault/sdk/helper/password" + "github.com/mattn/go-isatty" + "golang.org/x/term" + + "github.com/Songmu/prompter" +) + +const CreateNewPasswordMsg string = "Create new password for private key: " +const MasterPasswordMsg string = "Enter your master key: " + +func GetPrompterYN(message string, defaultToYes bool) bool { + return prompter.YN(message, defaultToYes) +} + +func GetPass(confirm bool, message string, enforceTerminal bool) ([]byte, error) { + read := readPasswordFn(enforceTerminal) + fmt.Fprint(os.Stderr, message) + pw1, err := read() + fmt.Fprintln(os.Stderr) + if err != nil { + return nil, err + } + if !confirm { + return pw1, nil + } + fmt.Fprint(os.Stderr, "Confirm password: ") + pw2, err := read() + fmt.Fprintln(os.Stderr) + if err != nil { + return nil, err + } + + if string(pw1) != string(pw2) { + return nil, fmt.Errorf("passwords do not match") + } + return pw1, nil +} + +func readPasswordFn(enforceTerminal bool) func() ([]byte, error) { + switch { + case term.IsTerminal(0) || enforceTerminal: + isTerminal := isatty.IsTerminal(os.Stdout.Fd()) || isatty.IsCygwinTerminal(os.Stdout.Fd()) + if !isTerminal { + return func() ([]byte, error) { + return nil, fmt.Errorf("tty is not a terminal") + } + } + + return func() ([]byte, error) { + value, err := password.Read(os.Stdin) + if err != nil { + return nil, err + } + return []byte(value), err + } + default: + return func() ([]byte, error) { + return ioutil.ReadAll(os.Stdin) + } + } +} diff --git a/pkg/signed/extractors.go b/pkg/signed/extractors.go new file mode 100644 index 0000000..fa645ef --- /dev/null +++ b/pkg/signed/extractors.go @@ -0,0 +1,282 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package signed + +import ( + "crypto" + "crypto/ecdsa" + "crypto/x509" + "encoding/pem" + "fmt" + "io/ioutil" + "os" + "path/filepath" + "strings" + + "github.com/Dentrax/cocert/pkg/password" + + "github.com/sigstore/sigstore/pkg/signature" + "github.com/theupdateframework/go-tuf/encrypted" +) + +type EncryptPEMFile struct { + Name string + Data []byte +} + +type TUFFunc func(text, pass []byte) ([]byte, error) + +func EncryptPEMsByTUF(pf PassFunc, prF PrompterFunc, keys *Keys) ([]EncryptPEMFile, error) { + result := make([]EncryptPEMFile, len(keys.PrivatePEMBytes)) + + shouldDoEncrypt := prF("Do you want to encrypt each key using TUF?", false) + + for i, b := range keys.PrivatePEMBytes { + name := fmt.Sprintf("cocert%d.key", i) + + if shouldDoEncrypt { + p, err := pf(true, fmt.Sprintf("Create new password for %s key:", name), true) + if err != nil { + return nil, err + } + encBytes, err := encrypted.Encrypt(b, p) + if err != nil { + return nil, fmt.Errorf("failed to encrypt content for %s: %v", name, err) + } + b = encBytes + } + + encoded := pem.EncodeToMemory(&pem.Block{ + Bytes: b, + Type: string(PemTypePrivate), + }) + + result[i] = EncryptPEMFile{ + Name: name, + Data: encoded, + } + } + + return result, nil +} + +func ExtractPEMsToCurrentDir(pf PassFunc, prF PrompterFunc, keys *Keys) error { + files, err := EncryptPEMsByTUF(pf, prF, keys) + if err != nil { + return fmt.Errorf("failed to encrypt PEMs: %v", err) + } + + for i, file := range files { + if err := WriteFile(file.Name, file.Data); err != nil { + return fmt.Errorf("unable to write private key %d: %v", i, err) + } + } + + if keys.PublicBytes != nil { + if err := ioutil.WriteFile("cocert.pub", keys.PublicBytes, 0600); err != nil { + return fmt.Errorf("unable to write public key: %v", err) + } + } + + return nil +} + +func WriteFile(filename string, data []byte) error { + if err := ioutil.WriteFile(filename, data, 0600); err != nil { + return fmt.Errorf("unable to write private key %s: %v", filename, err) + } + return nil +} + +func EncodePEMToFileOrOutput(filename string, data []byte) error { + return EncodePEMToFileOrOutputWithType(filename, data, string(PemTypePrivate)) +} + +// EncodePEMToFileOrOutputWithType encodes the given data to PEM and +// writes to file. +func EncodePEMToFileOrOutputWithType(filename string, data []byte, pemType string) error { + encoded := pem.EncodeToMemory(&pem.Block{ + Bytes: data, + Type: pemType, + }) + + if filename != "" { + err := WriteFile(filename, encoded) + if err != nil { + return fmt.Errorf("unable to encode to PEM: %v", err) + } + return nil + } + + fmt.Fprintln(os.Stdout, string(encoded)) + + return nil +} + +// DecodePEMBytes decodes given PEM bytes and checks equality the PemType +func DecodePEMBytes(bytes []byte, pemType PemType) ([]byte, error) { + p, _ := pem.Decode(bytes) + if p == nil { + return nil, fmt.Errorf("failed to decode PEM-encoded x509 certificate") + } + return p.Bytes, nil +} + +func ReadFileAndDecodePEMFromPath(path string) ([]byte, error) { + kb, err := ioutil.ReadFile(filepath.Clean(path)) + if err != nil { + return nil, fmt.Errorf("read file: %v", err) + } + + p, err := DecodePEMBytes(kb, PemTypePrivate) + if err != nil { + return nil, fmt.Errorf("decode pem bytes: %v", err) + } + + return p, nil +} + +func ReadCustomPrivateKeyFileAndDecodePEMFromPath(path string) ([]byte, error) { + bytes, err := ioutil.ReadFile(filepath.Clean(path)) + if err != nil { + return nil, fmt.Errorf("read file: %v", err) + } + p, _ := pem.Decode(bytes) + if p == nil { + return nil, fmt.Errorf("failed to decode PEM-encoded x509 certificate") + } + return p.Bytes, nil +} + +func DecodePEMFromFile(name string, file []byte, pf PassFunc, tufFunc TUFFunc, passConfirm, enforceTerminal bool) ([]byte, error) { + p, err := DecodePEMBytes(file, PemTypePrivate) + if err != nil { + return nil, fmt.Errorf("decode pem bytes: %v", err) + } + + pass, err := pf(passConfirm, fmt.Sprintf("Enter your password for %s: ", name), enforceTerminal) + if err != nil { + return nil, err + } + + decodedBytes, err := tufFunc(p, pass) + if err != nil { + e := err.Error() + // which means PEM has not been encrypted, it is OK to continue + if !strings.Contains(e, "invalid character") { + return nil, fmt.Errorf("unable to decrypt PEM file: %v", err) + } + return p, nil + } + + return decodedBytes, nil +} + +func DecryptTUFEncryptedPrivateKey(ciphertext []byte, pf PassFunc) (*ecdsa.PrivateKey, error) { + passphrase, err := pf(false, password.MasterPasswordMsg, false) + if err != nil { + return nil, fmt.Errorf("failed to get password: %v", err) + } + + x509Encoded, err := encrypted.Decrypt(ciphertext, passphrase) + if err != nil { + return nil, fmt.Errorf("unable to decrypt X509 encoded TUF: %v", err) + } + + pk, err := ParseECDSAPrivateKeyFromANS1(x509Encoded) + if err != nil { + return nil, fmt.Errorf("unable to extract ECDSA: %v", err) + } + + return pk, nil +} + +func DecryptTUFEncryptedKeys(ciphertext []byte, pf PassFunc) ([]byte, error) { + pk, err := DecryptTUFEncryptedPrivateKey(ciphertext, pf) + if err != nil { + return nil, fmt.Errorf("decrypt ECDSA private key: %v", err) + } + + return pk.D.Bytes(), nil +} + +// ParseECDSAPrivateKeyFromANS1 parses given bytes to x509 PKCS8 and +// returns *ecdsa.PrivateKey. +func ParseECDSAPrivateKeyFromANS1(bytes []byte) (*ecdsa.PrivateKey, error) { + pk, err := x509.ParsePKCS8PrivateKey(bytes) + if err != nil { + return nil, fmt.Errorf("failed to parse x509 certificate: %v", err) + } + + epk, ok := pk.(*ecdsa.PrivateKey) + if !ok { + return nil, fmt.Errorf("invalid private key") + } + + return epk, nil +} + +// ParseECDSAPublicKeyFromPEM parses given PEM bytes to x509 Certificate, +// casts to *ecdsa.PublicKey and returns ECDSAVerifier. +func ParseECDSAPublicKeyFromPEM(bytes []byte) (PublicKey, error) { + b, err := DecodePEMBytes(bytes, PemTypeCertificate) + if err != nil { + return nil, fmt.Errorf("decode pem bytes: %v", err) + } + + cert, err := x509.ParseCertificate(b) + if err != nil { + return nil, fmt.Errorf("parse cert: %v", err) + } + + pk, ok := cert.PublicKey.(*ecdsa.PublicKey) + if !ok { + return nil, fmt.Errorf("invalid public key format") + } + + return signature.ECDSAVerifier{ + Key: pk, + HashAlg: crypto.SHA3_512, + }, nil +} + +// ParsePKIXPublicKeyFromPEM parses given PEM bytes to x509 PKIX, +// casts to *ecdsa.PublicKey and returns ECDSAVerifier. +func ParsePKIXPublicKeyFromPEM(bytes []byte) (PublicKey, error) { + p, err := DecodePEMBytes(bytes, PemTypePublic) + if err != nil { + return nil, fmt.Errorf("decode pem: %v", err) + } + + pkix, err := x509.ParsePKIXPublicKey(p) + if err != nil { + return nil, fmt.Errorf("parse pkix: %v", err) + } + + pk, ok := pkix.(*ecdsa.PublicKey) + if !ok { + return nil, fmt.Errorf("invalid public key format") + } + + return signature.ECDSAVerifier{ + Key: pk, + HashAlg: crypto.SHA3_512, + }, nil +} diff --git a/pkg/signed/extractors_test.go b/pkg/signed/extractors_test.go new file mode 100644 index 0000000..b7b606c --- /dev/null +++ b/pkg/signed/extractors_test.go @@ -0,0 +1,68 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package signed + +import ( + "encoding/pem" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/theupdateframework/go-tuf/encrypted" +) + +var ( + prf = func(string, bool) bool { + return true + } +) + +func TestEncryptPEMsByTUF(t *testing.T) { + assert := assert.New(t) + + got, err := GenerateShamirPEMsToMemAsArray(pf, 5, 3) + assert.NoError(err) + assert.NotNil(got) + + files, err := EncryptPEMsByTUF(pf, prf, got) + assert.NoError(err) + assert.NotNil(files) + assert.Len(files, 5) + + for _, file := range files { + p, _ := pem.Decode(file.Data) + assert.NotNil(p) + + decodedBytes, err := encrypted.Decrypt(p.Bytes, []byte("test")) + assert.NoError(err) + assert.NotNil(decodedBytes) + } +} + +func TestParseECDSAPublicKeyFromPEM(t *testing.T) { + assert := assert.New(t) + + got, err := GenerateTUFEncryptedKeys(pf) + assert.NoError(err) + assert.NotNil(got) + + pkix, err := ParsePKIXPublicKeyFromPEM(got.PublicBytes) + assert.NoError(err) + assert.NotNil(pkix) +} diff --git a/pkg/signed/generators.go b/pkg/signed/generators.go new file mode 100644 index 0000000..2b7247f --- /dev/null +++ b/pkg/signed/generators.go @@ -0,0 +1,111 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package signed + +import ( + "crypto/ecdsa" + "crypto/elliptic" + "crypto/rand" + "crypto/x509" + "encoding/pem" + "fmt" + + "github.com/Dentrax/cocert/pkg/password" + + "github.com/hashicorp/vault/shamir" + "github.com/theupdateframework/go-tuf/encrypted" +) + +func GenerateECDSAEllipticP521() (*ecdsa.PrivateKey, error) { + return ecdsa.GenerateKey(elliptic.P521(), rand.Reader) +} + +func GenerateTUFEncryptedKeys(pf PassFunc) (*Keys, error) { + ellipticP521, err := GenerateECDSAEllipticP521() + if err != nil { + return nil, fmt.Errorf("failed to generate ECDSA from elliptic.P521(): %v", err) + } + + pkcs8, err := x509.MarshalPKCS8PrivateKey(ellipticP521) + if err != nil { + return nil, fmt.Errorf("failed to marshal PKCS8 key: %v", err) + } + + pkix, err := x509.MarshalPKIXPublicKey(&ellipticP521.PublicKey) + if err != nil { + return nil, fmt.Errorf("failed to marshal PKIX key: %v", err) + } + + password, err := pf(true, password.CreateNewPasswordMsg, true) + if err != nil { + return nil, err + } + + encBytes, err := encrypted.Encrypt(pkcs8, password) + if err != nil { + return nil, fmt.Errorf("failed to encrypt PKCS8: %v", err) + } + + pkixPEMBytes := pem.EncodeToMemory(&pem.Block{ + Type: string(PemTypePublic), + Bytes: pkix, + }) + + return &Keys{ + PrivateBytesPlain: ellipticP521.D.Bytes(), + PrivateBytes: encBytes, + PublicBytes: pkixPEMBytes, + }, nil +} + +func GenerateShamirPEMsToMemAsArray(pf PassFunc, parts, threshold int) (*Keys, error) { + keys, err := GenerateTUFEncryptedKeys(pf) + if err != nil { + return nil, fmt.Errorf("failed to generate TUF: %v", err) + } + + bytes, err := shamir.Split(keys.PrivateBytes, parts, threshold) + if err != nil { + return nil, fmt.Errorf("shamir splitting error: %v", err) + } + + keys.PrivatePEMBytes = bytes + + return keys, nil +} + +func GenerateShamirPEMsToMemAsArrayFromCustomPrivateKey(path string, parts, threshold int) (*Keys, error) { + bytes, err := ReadCustomPrivateKeyFileAndDecodePEMFromPath(path) + if err != nil { + return nil, fmt.Errorf("failed to decode pem: %v", err) + } + + splitted, err := shamir.Split(bytes, parts, threshold) + if err != nil { + return nil, fmt.Errorf("shamir splitting error: %v", err) + } + + return &Keys{ + PrivateBytesPlain: nil, + PrivatePEMBytes: splitted, + PrivateBytes: nil, + PublicBytes: nil, + }, nil +} diff --git a/pkg/signed/generators_test.go b/pkg/signed/generators_test.go new file mode 100644 index 0000000..6601c75 --- /dev/null +++ b/pkg/signed/generators_test.go @@ -0,0 +1,99 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package signed + +import ( + "crypto/ecdsa" + "crypto/x509" + "encoding/pem" + "testing" + + "github.com/hashicorp/vault/shamir" + "github.com/stretchr/testify/assert" + "github.com/theupdateframework/go-tuf/encrypted" +) + +var ( + pf = func(bool, string, bool) ([]byte, error) { + return []byte("test"), nil + } +) + +func TestGenerateECDSAEllipticP521(t *testing.T) { + assert := assert.New(t) + + got, err := GenerateECDSAEllipticP521() + assert.NoError(err) + assert.NotNil(got) + assert.NotEmpty(got.D.Bytes()) + assert.NotEmpty(got.X.Bytes()) + assert.NotEmpty(got.Y.Bytes()) +} + +func TestGenerateTUFEncryptedKeys(t *testing.T) { + assert := assert.New(t) + + got, err := GenerateTUFEncryptedKeys(pf) + assert.NoError(err) + assert.NotNil(got) + + p, pr := pem.Decode(got.PublicBytes) + assert.NotNil(p) + assert.Empty(pr) + + d, err := encrypted.Decrypt(got.PrivateBytes, []byte("test")) + assert.NoError(err) + assert.NotEmpty(d) + + pkix, err := x509.ParsePKIXPublicKey(p.Bytes) + assert.NoError(err) + assert.NotNil(pkix) + + pkcs8, err := x509.ParsePKCS8PrivateKey(d) + assert.NoError(err) + assert.NotNil(pkcs8) + + if pk, ok := pkcs8.(*ecdsa.PrivateKey); ok { + assert.True(ok) + assert.NotNil(pk) + assert.Equal(got.PrivateBytesPlain, pk.D.Bytes()) + } else { + assert.Fail("could not parse PKIX to ecdsa.PrivateKey") + } +} + +func TestGenerateShamirPEMsToMemAsArray(t *testing.T) { + assert := assert.New(t) + + got, err := GenerateShamirPEMsToMemAsArray(pf, 5, 2) + assert.NoError(err) + assert.NotNil(got) + + e1 := got.PrivatePEMBytes[2] + e2 := got.PrivatePEMBytes[4] + + var s [][]byte + s = append(s, e1) + s = append(s, e2) + + c, err := shamir.Combine(s) + assert.NoError(err) + assert.NotNil(c) +} diff --git a/pkg/signed/loaders.go b/pkg/signed/loaders.go new file mode 100644 index 0000000..01bfe49 --- /dev/null +++ b/pkg/signed/loaders.go @@ -0,0 +1,111 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package signed + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + + "github.com/hashicorp/vault/shamir" + "github.com/sigstore/sigstore/pkg/signature" + "github.com/theupdateframework/go-tuf/encrypted" +) + +type PublicKey interface { + signature.Verifier + signature.PublicKeyProvider +} + +func LoadPublicKey(path string) (PublicKey, error) { + bytes, err := ioutil.ReadFile(filepath.Clean(path)) + if err != nil { + return nil, fmt.Errorf("read public key: %v", err) + } + + pk, err := ParsePKIXPublicKeyFromPEM(bytes) + if err != nil { + return nil, fmt.Errorf("parse pkix: %v", err) + } + + return pk, nil +} + +func LoadAndCombinePrivateKeysFromPaths(pf PassFunc, combineEncryptedFiles, combineUnEncryptedFiles []string) ([]byte, error) { + fmt.Fprint(os.Stdout, "(Press Enter to continue without decrypt...)", "\n") + + parts, err := loadPrivateKeysFromPaths(pf, combineEncryptedFiles, combineUnEncryptedFiles) + if err != nil { + return nil, fmt.Errorf("load private keys error: %v", err) + } + + c, err := shamir.Combine(parts) + if err != nil { + return nil, fmt.Errorf("shamir combining error: %v", err) + } + + return c, nil +} + +// loadPrivateKeysFromPaths load private keys from given paths +// combineEncryptedFiles represents -f, which is we will show password prompt +// combineUnEncryptedFiles represents -F, which is we will NOT show password prompt +func loadPrivateKeysFromPaths(pf PassFunc, combineEncryptedFiles, combineUnEncryptedFiles []string) ([][]byte, error) { + privateParts := make([][]byte, len(combineEncryptedFiles)+len(combineUnEncryptedFiles)) + + c := 0 + + for i := 0; i < len(combineEncryptedFiles); i++ { + k, err := readAndDecodePEMKeyFromPath(combineEncryptedFiles[i], pf) + if err != nil { + return nil, fmt.Errorf("read and decrypt pem file error: %v", err) + } + + privateParts[c] = k + c++ + } + + for i := 0; i < len(combineUnEncryptedFiles); i++ { + k, err := ReadFileAndDecodePEMFromPath(combineUnEncryptedFiles[i]) + if err != nil { + return nil, fmt.Errorf("read and decode pem file error: %v", err) + } + + privateParts[c] = k + c++ + } + + return privateParts, nil +} + +func readAndDecodePEMKeyFromPath(path string, pf PassFunc) ([]byte, error) { + kb, err := ioutil.ReadFile(filepath.Clean(path)) + if err != nil { + return nil, fmt.Errorf("read file: %v", err) + } + + p, err := DecodePEMFromFile(path, kb, pf, encrypted.Decrypt, false, true) + if err != nil { + return nil, fmt.Errorf("failed to decode PEM from file: %v", err) + } + + return p, nil +} diff --git a/pkg/signed/signer.go b/pkg/signed/signer.go new file mode 100644 index 0000000..e76c8b4 --- /dev/null +++ b/pkg/signed/signer.go @@ -0,0 +1,110 @@ +package signed + +import ( + "context" + "crypto" + "crypto/ecdsa" + "encoding/base64" + "fmt" + "os" + + "github.com/Dentrax/cocert/pkg/password" + + "github.com/sigstore/cosign/pkg/cosign/fulcio" + "github.com/sigstore/sigstore/pkg/signature" + _ "golang.org/x/crypto/sha3" //nolint:golint + "golang.org/x/term" +) + +type Signer struct { + signature.Signer + + PK *ecdsa.PrivateKey + Cert string +} + +func NewKeySigner(ctx context.Context, shamirFiles []string, privateKey string) (Signer, error) { + s, err := DecideSignerType(ctx, shamirFiles, privateKey) + if err != nil { + return Signer{}, fmt.Errorf("create signer: %v", err) + } + return s, nil +} + +func NewKeylessSigner(ctx context.Context, shamirFiles []string, privateKey string) (Signer, error) { + s, err := DecideSignerType(ctx, shamirFiles, privateKey) + if err != nil { + return Signer{}, fmt.Errorf("create signer: %v", err) + } + + flow := fulcio.FlowNormal + if !term.IsTerminal(0) { + fmt.Fprintln(os.Stderr, "Non-interactive mode detected, using device flow.") + flow = fulcio.FlowDevice + } + + cert, _, err := fulcio.GetCert(ctx, s.PK, flow) + if err != nil { + return Signer{}, fmt.Errorf("retrieving cert: %v", err) + } + + return Signer{ + Signer: s, + Cert: cert, + }, nil +} + +func NewSignerFromShamir(ctx context.Context, files []string) (Signer, error) { + s, err := LoadAndCombinePrivateKeysFromPaths(password.GetPass, files, nil) + if err != nil { + return Signer{}, fmt.Errorf("loading keys: %v", err) + } + + return NewSignerFromBytes(s) +} + +func NewSignerFromBytes(bytes []byte) (Signer, error) { + pk, err := DecryptTUFEncryptedPrivateKey(bytes, password.GetPass) + if err != nil { + return Signer{}, fmt.Errorf("decrypt with master key: %v", err) + } + + verifier := signature.NewECDSASignerVerifier(pk, crypto.SHA3_512) + + return Signer{ + Signer: verifier, + PK: pk, + }, nil +} + +func DecideSignerType(ctx context.Context, shamirFiles []string, privateKey string) (Signer, error) { + switch { + case privateKey != "": + bytes, err := ReadFileAndDecodePEMFromPath(privateKey) + if err != nil { + return Signer{}, fmt.Errorf("read private key: %v", err) + } + s, err := NewSignerFromBytes(bytes) + if err != nil { + return Signer{}, fmt.Errorf("create signer from bytes: %v", err) + } + return s, nil + case len(shamirFiles) >= 2: + s, err := NewSignerFromShamir(ctx, shamirFiles) + if err != nil { + return Signer{}, fmt.Errorf("create signer: %v", err) + } + return s, nil + default: + return Signer{}, fmt.Errorf("does not provided any private key(s)") + } +} + +func CreateSigner(ctx context.Context, signer signature.Signer, payload []byte) (string, error) { + sig, _, err := signer.Sign(ctx, payload) + if err != nil { + return "", fmt.Errorf("signing: %v", err) + } + + return base64.StdEncoding.EncodeToString(sig), nil +} diff --git a/pkg/signed/types.go b/pkg/signed/types.go new file mode 100644 index 0000000..bf906b6 --- /dev/null +++ b/pkg/signed/types.go @@ -0,0 +1,38 @@ +// Copyright (c) 2021 Furkan Türkal +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +package signed + +const ( + PemTypePrivate PemType = "ENCRYPTED PRIVATE KEY" + PemTypePublic PemType = "PUBLIC KEY" + PemTypeCertificate PemType = "CERTIFICATE" +) + +type PemType string + +type PassFunc func(bool, string, bool) ([]byte, error) +type PrompterFunc func(string, bool) bool + +type Keys struct { + PrivateBytesPlain []byte + PrivatePEMBytes [][]byte + PrivateBytes []byte + PublicBytes []byte +} diff --git a/pkg/signed/verifier.go b/pkg/signed/verifier.go new file mode 100644 index 0000000..76ad827 --- /dev/null +++ b/pkg/signed/verifier.go @@ -0,0 +1,56 @@ +package signed + +import ( + "context" + "encoding/base64" + "fmt" + "io/ioutil" + + "github.com/sigstore/sigstore/pkg/signature" +) + +func NewVerifier(publicKeyFile, publicCertFile string) (PublicKey, error) { + + getVerifier := func(pub, cert string) (PublicKey, error) { + switch { + case cert != "": + bytes, err := ioutil.ReadFile(cert) + if err != nil { + return nil, fmt.Errorf("read cert file: %v", err) + } + + pk, err := ParseECDSAPublicKeyFromPEM(bytes) + if err != nil { + return nil, fmt.Errorf("extract public key from ECDSA PEM: %v", err) + } + + return pk, nil + + case pub != "": + pk, err := LoadPublicKey(pub) + if err != nil { + return nil, fmt.Errorf("load public key: %v", err) + } + + return pk, nil + } + + return nil, fmt.Errorf("no pub or cert provided") + } + + pk, err := getVerifier(publicKeyFile, publicCertFile) + if err != nil { + return signature.ECDSAVerifier{}, fmt.Errorf("could not get verifier: %v", err) + } + + return pk, nil +} + +func VerifyKey(ctx context.Context, verifier PublicKey, rawPayload []byte, base64Signature []byte) error { + sig, err := base64.StdEncoding.DecodeString(string(base64Signature)) + if err != nil { + return fmt.Errorf("decode base64: %v", err) + } + + return verifier.Verify(ctx, rawPayload, sig) +} diff --git a/test/combine.exp b/test/combine.exp new file mode 100755 index 0000000..083dfff --- /dev/null +++ b/test/combine.exp @@ -0,0 +1,15 @@ +#!/usr/bin/expect -f + +set timeout -1 +spawn ./cocert combine -f cocert0.key -f cocert1.key -o combined.key + +expect "Enter your password for cocert0.key:" +send -- "0\n" + +expect "Enter your password for cocert1.key:" +send -- "1\n" + +expect "Enter your master key:" +send -- "123\n" + +expect eof \ No newline at end of file diff --git a/test/combine_splitted.exp b/test/combine_splitted.exp new file mode 100755 index 0000000..13fe89a --- /dev/null +++ b/test/combine_splitted.exp @@ -0,0 +1,15 @@ +#!/usr/bin/expect -f + +set timeout -1 +spawn ./cocert combine -f cocert0.key -f cocert1.key -o combined_splitted.key + +expect "Enter your password for cocert0.key:" +send -- "0\n" + +expect "Enter your password for cocert1.key:" +send -- "1\n" + +expect "Enter your master key:" +send -- "cosign\n" + +expect eof \ No newline at end of file diff --git a/test/cosign.key b/test/cosign.key new file mode 100644 index 0000000..20a1fd7 --- /dev/null +++ b/test/cosign.key @@ -0,0 +1,11 @@ +-----BEGIN ENCRYPTED COSIGN PRIVATE KEY----- +eyJrZGYiOnsibmFtZSI6InNjcnlwdCIsInBhcmFtcyI6eyJOIjozMjc2OCwiciI6 +OCwicCI6MX0sInNhbHQiOiJsVTREOWtkWHAvbjQ3WTRDWGVwNWxTQTAwNC9aTW5m +bGJWY0V3YTZMZkxnPSJ9LCJjaXBoZXIiOnsibmFtZSI6Im5hY2wvc2VjcmV0Ym94 +Iiwibm9uY2UiOiJrWFJwTkhrRnRmNzhPNUJzbmg0NUdDZWZUVFhjWmNNNyJ9LCJj +aXBoZXJ0ZXh0IjoiSWlnQ0pJeVlZQjJHNy9rSWc3cHVncWJoQUFlb1dtSlYxM081 +bTFhNDVqcFQwVGNmbitMb2hBOXhRWnYwTWMxTjRUOUZvSythQ2hjNmtNUEJ2RHdh +YVhaNWdHTXJ1NURRN1JwMGlMOWcvMDJhNlphR0xXV0h3QWxOdmwrUlpUNXI0V3I3 +T1FGTFIwdnhESzZnclVEcnVIWVFBL1lnTEFwdUJaaERWRjJtajE4QTUrOFJ3UXo4 +V2tRZDZ0d1J0bnNxZE1NRE5SMmMrYjN5RFE9PSJ9 +-----END ENCRYPTED COSIGN PRIVATE KEY----- diff --git a/test/e2e.bats b/test/e2e.bats new file mode 100644 index 0000000..696ce57 --- /dev/null +++ b/test/e2e.bats @@ -0,0 +1,106 @@ +#!/usr/bin/env bats + +set -o errexit; set -o nounset; set -o pipefail; + +setup_file() { + export XDG_CACHE_HOME="$(mktemp -d)" + export CMD="$XDG_CACHE_HOME/cocert" + cp *.exp $XDG_CACHE_HOME + cp *.key $XDG_CACHE_HOME + run go build -o "$CMD" ../. +} + +teardown_file() { + rm -rf "$XDG_CACHE_HOME" +} + +setup() { + pushd $XDG_CACHE_HOME +} + +teardown() { + popd +} + +@test "main: should run" { + run ${CMD} + echo "$output" + [ "$status" -eq 0 ] +} + +@test "generate: should success" { + run ./generate.exp + stat cocert.pub + echo "$output" + [ "$status" -eq 0 ] +} + +@test "decrypt: should success" { + run ${CMD} decrypt -f cocert0.key -k 0 -o cocert0.key.decrypted + echo -n "1" | ${CMD} decrypt -f cocert1.key -o cocert1.key.decrypted + echo -n "2" | ${CMD} decrypt -f cocert2.key -o cocert2.key.decrypted + stat cocert0.key.decrypted + stat cocert1.key.decrypted + stat cocert2.key.decrypted + echo "$output" + [ "$status" -eq 0 ] +} + +@test "encrypt: should success" { + run ${CMD} encrypt -f cocert0.key.decrypted -k 0 -o cocert0.key.encrypted + stat cocert0.key.encrypted + [ "$status" -eq 0 ] +} + +@test "combine: should success" { + run ./combine.exp + stat combined.key + echo "$output" + [ "$status" -eq 0 ] + [[ $output = *"Combined"* ]] +} + +@test "combine: should success for unencrypted" { + run bash -c "echo -n "123" | ${CMD} combine -F cocert1.key.decrypted -F cocert2.key.decrypted -o private.key" + echo "$output" + stat private.key + [ "$status" -eq 0 ] + [[ $output = *"Combined"* ]] +} + +@test "sign: should success combine" { + run ./sign.exp + stat combine.signature + echo "$output" + [ "$status" -eq 0 ] + [[ "$output" = *"Signed:"* ]] +} + +@test "sign: should success pk" { + run ./sign_pk.exp + stat combined.signature + echo "$output" + [ "$status" -eq 0 ] + [[ "$output" = *"Signed:"* ]] +} + +@test "verify: should success" { + run ${CMD} verify -f cocert.pub -p "Foo Bar Baz" -s combine.signature + echo "$output" + [ "$status" -eq 0 ] + [[ "$output" = *"Verified."* ]] +} + +@test "split: should success for cosign key" { + run ./split.exp + echo "$output" + [ "$status" -eq 0 ] +} + +@test "combine: should success for splitted cosign key" { + run ./combine_splitted.exp + stat combined_splitted.key + echo "$output" + [ "$status" -eq 0 ] + [[ $output = *"Combined"* ]] +} \ No newline at end of file diff --git a/test/generate.exp b/test/generate.exp new file mode 100755 index 0000000..a1983f9 --- /dev/null +++ b/test/generate.exp @@ -0,0 +1,30 @@ +#!/usr/bin/expect -f + +set timeout -1 +spawn ./cocert generate -p 3 -t 2 + +expect "Create new password for private key: " +send -- "123\n" + +expect "Confirm password:" +send -- "123\n" + +expect "Do you want to encrypt each key using TUF?" +send -- "y\r" + +expect "Create new password for cocert0.key key:" +send -- "0\n" +expect "Confirm password:" +send -- "0\n" + +expect "Create new password for cocert1.key key:" +send -- "1\n" +expect "Confirm password:" +send -- "1\n" + +expect "Create new password for cocert2.key key:" +send -- "2\n" +expect "Confirm password:" +send -- "2\n" + +expect eof \ No newline at end of file diff --git a/test/sign.exp b/test/sign.exp new file mode 100755 index 0000000..6d39f37 --- /dev/null +++ b/test/sign.exp @@ -0,0 +1,15 @@ +#!/usr/bin/expect -f + +set timeout -1 +spawn ./cocert sign -f cocert0.key -f cocert1.key -p "Foo Bar Baz" -O combine.signature + +expect "Enter your password for cocert0.key:" +send -- "0\n" + +expect "Enter your password for cocert1.key:" +send -- "1\n" + +expect "Enter your master key:" +send -- "123\n" + +expect eof \ No newline at end of file diff --git a/test/sign_pk.exp b/test/sign_pk.exp new file mode 100755 index 0000000..2e9e8b5 --- /dev/null +++ b/test/sign_pk.exp @@ -0,0 +1,9 @@ +#!/usr/bin/expect -f + +set timeout -1 +spawn ./cocert sign -F combined.key -p "Foo Bar Baz" -O combined.signature + +expect "Enter your master key:" +send -- "123\n" + +expect eof \ No newline at end of file diff --git a/test/split.exp b/test/split.exp new file mode 100755 index 0000000..3266fd4 --- /dev/null +++ b/test/split.exp @@ -0,0 +1,24 @@ +#!/usr/bin/expect -f + +set timeout -1 +spawn ./cocert split -f cosign.key -p 3 -t 2 + +expect "Do you want to encrypt each key using TUF?" +send -- "y\r" + +expect "Create new password for cocert0.key key:" +send -- "0\n" +expect "Confirm password:" +send -- "0\n" + +expect "Create new password for cocert1.key key:" +send -- "1\n" +expect "Confirm password:" +send -- "1\n" + +expect "Create new password for cocert2.key key:" +send -- "2\n" +expect "Confirm password:" +send -- "2\n" + +expect eof \ No newline at end of file