@gitpod/gitpod-protocol 0.1.5-wth-test.41 → 0.1.5-wv-add-image-builds-to-dashboard.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/gitpod-schema.json +150 -8
- package/lib/accounting-protocol.d.ts +19 -11
- package/lib/accounting-protocol.d.ts.map +1 -1
- package/lib/accounting-protocol.js +35 -33
- package/lib/accounting-protocol.js.map +1 -1
- package/lib/admin-protocol.d.ts +29 -1
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js +1 -1
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +5 -6
- package/lib/analytics.d.ts.map +1 -1
- package/lib/analytics.js +1 -1
- package/lib/analytics.js.map +1 -1
- package/lib/attribution.d.ts +24 -0
- package/lib/attribution.d.ts.map +1 -0
- package/lib/attribution.js +54 -0
- package/lib/attribution.js.map +1 -0
- package/lib/auth.d.ts +1 -1
- package/lib/auth.d.ts.map +1 -1
- package/lib/auth.js +1 -1
- package/lib/billing-mode.d.ts +45 -0
- package/lib/billing-mode.d.ts.map +1 -0
- package/lib/billing-mode.js +44 -0
- package/lib/billing-mode.js.map +1 -0
- package/lib/blocked-repositories-protocol.d.ts +13 -0
- package/lib/blocked-repositories-protocol.d.ts.map +1 -0
- package/lib/blocked-repositories-protocol.js +8 -0
- package/lib/blocked-repositories-protocol.js.map +1 -0
- package/lib/context-url.d.ts +19 -7
- package/lib/context-url.d.ts.map +1 -1
- package/lib/context-url.js +60 -9
- package/lib/context-url.js.map +1 -1
- package/lib/context-url.spec.d.ts +3 -3
- package/lib/context-url.spec.d.ts.map +1 -1
- package/lib/context-url.spec.js +20 -12
- package/lib/context-url.spec.js.map +1 -1
- package/lib/encryption/container-module.d.ts +1 -1
- package/lib/encryption/container-module.d.ts.map +1 -1
- package/lib/encryption/container-module.js +2 -2
- package/lib/encryption/container-module.js.map +1 -1
- package/lib/encryption/encryption-engine.d.ts +1 -1
- package/lib/encryption/encryption-engine.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.js +10 -10
- package/lib/encryption/encryption-engine.js.map +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.spec.js +3 -4
- package/lib/encryption/encryption-engine.spec.js.map +1 -1
- package/lib/encryption/encryption-service.d.ts +1 -1
- package/lib/encryption/encryption-service.d.ts.map +1 -1
- package/lib/encryption/encryption-service.js +2 -2
- package/lib/encryption/encryption-service.js.map +1 -1
- package/lib/encryption/key-provider.d.ts +1 -1
- package/lib/encryption/key-provider.d.ts.map +1 -1
- package/lib/encryption/key-provider.js +8 -10
- package/lib/encryption/key-provider.js.map +1 -1
- package/lib/env.d.ts +1 -6
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +2 -21
- package/lib/env.js.map +1 -1
- package/lib/experiments/always-default.d.ts +8 -0
- package/lib/experiments/always-default.d.ts.map +1 -0
- package/lib/experiments/always-default.js +20 -0
- package/lib/experiments/always-default.js.map +1 -0
- package/lib/experiments/configcat-server.d.ts +10 -0
- package/lib/experiments/configcat-server.d.ts.map +1 -0
- package/lib/experiments/configcat-server.js +37 -0
- package/lib/experiments/configcat-server.js.map +1 -0
- package/lib/experiments/configcat.d.ts +21 -0
- package/lib/experiments/configcat.d.ts.map +1 -0
- package/lib/experiments/configcat.js +51 -0
- package/lib/experiments/configcat.js.map +1 -0
- package/lib/experiments/types.d.ts +22 -0
- package/lib/experiments/types.d.ts.map +1 -0
- package/lib/experiments/types.js +10 -0
- package/lib/experiments/types.js.map +1 -0
- package/lib/gitpod-file-parser.d.ts +1 -1
- package/lib/gitpod-file-parser.d.ts.map +1 -1
- package/lib/gitpod-file-parser.js +7 -7
- package/lib/gitpod-file-parser.js.map +1 -1
- package/lib/gitpod-file-parser.spec.d.ts +1 -1
- package/lib/gitpod-file-parser.spec.js +43 -40
- package/lib/gitpod-file-parser.spec.js.map +1 -1
- package/lib/gitpod-service.d.ts +93 -48
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +57 -36
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +2 -1
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +3 -2
- package/lib/headless-workspace-log.js.map +1 -1
- package/lib/ide-frontend-service.d.ts +2 -2
- package/lib/ide-frontend-service.js +1 -1
- package/lib/ide-protocol.d.ts +126 -0
- package/lib/ide-protocol.d.ts.map +1 -0
- package/lib/ide-protocol.js +18 -0
- package/lib/ide-protocol.js.map +1 -0
- package/lib/index.d.ts +17 -15
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -2
- package/lib/index.js.map +1 -1
- package/lib/installation-admin-protocol.d.ts +30 -0
- package/lib/installation-admin-protocol.d.ts.map +1 -0
- package/lib/installation-admin-protocol.js +31 -0
- package/lib/installation-admin-protocol.js.map +1 -0
- package/lib/license-protocol.d.ts +8 -1
- package/lib/license-protocol.d.ts.map +1 -1
- package/lib/license-protocol.js +1 -1
- package/lib/license-protocol.js.map +1 -1
- package/lib/messaging/browser/connection.d.ts +1 -1
- package/lib/messaging/browser/connection.d.ts.map +1 -1
- package/lib/messaging/browser/connection.js +19 -19
- package/lib/messaging/browser/connection.js.map +1 -1
- package/lib/messaging/browser/window-connection.d.ts +5 -5
- package/lib/messaging/browser/window-connection.d.ts.map +1 -1
- package/lib/messaging/browser/window-connection.js +10 -7
- package/lib/messaging/browser/window-connection.js.map +1 -1
- package/lib/messaging/client-call-metrics.d.ts +5 -19
- package/lib/messaging/client-call-metrics.d.ts.map +1 -1
- package/lib/messaging/client-call-metrics.js +35 -23
- package/lib/messaging/client-call-metrics.js.map +1 -1
- package/lib/messaging/error.d.ts +11 -2
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +22 -4
- package/lib/messaging/error.js.map +1 -1
- package/lib/messaging/handler.d.ts.map +1 -1
- package/lib/messaging/handler.js +1 -1
- package/lib/messaging/node/connection.d.ts +1 -17
- package/lib/messaging/node/connection.d.ts.map +1 -1
- package/lib/messaging/node/connection.js +23 -59
- package/lib/messaging/node/connection.js.map +1 -1
- package/lib/messaging/proxy-factory.d.ts +1 -1
- package/lib/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/messaging/proxy-factory.js +7 -9
- package/lib/messaging/proxy-factory.js.map +1 -1
- package/lib/oss-allowlist.d.ts +14 -0
- package/lib/oss-allowlist.d.ts.map +1 -0
- package/lib/oss-allowlist.js +8 -0
- package/lib/oss-allowlist.js.map +1 -0
- package/lib/payment-protocol.d.ts +1 -1
- package/lib/payment-protocol.d.ts.map +1 -1
- package/lib/payment-protocol.js +2 -2
- package/lib/payment-protocol.js.map +1 -1
- package/lib/permission.d.ts +10 -4
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +35 -26
- package/lib/permission.js.map +1 -1
- package/lib/plans.d.ts +5 -4
- package/lib/plans.d.ts.map +1 -1
- package/lib/plans.js +211 -172
- package/lib/plans.js.map +1 -1
- package/lib/protocol.d.ts +192 -99
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +293 -105
- package/lib/protocol.js.map +1 -1
- package/lib/protocol.spec.d.ts +7 -0
- package/lib/protocol.spec.d.ts.map +1 -0
- package/lib/protocol.spec.js +127 -0
- package/lib/protocol.spec.js.map +1 -0
- package/lib/snapshot-url.d.ts +1 -1
- package/lib/snapshot-url.js +1 -1
- package/lib/snapshot-url.spec.d.ts +1 -1
- package/lib/snapshot-url.spec.js +1 -1
- package/lib/snapshot-url.spec.js.map +1 -1
- package/lib/team-subscription-protocol.d.ts +23 -4
- package/lib/team-subscription-protocol.d.ts.map +1 -1
- package/lib/team-subscription-protocol.js +21 -6
- package/lib/team-subscription-protocol.js.map +1 -1
- package/lib/teams-projects-protocol.d.ts +35 -5
- package/lib/teams-projects-protocol.d.ts.map +1 -1
- package/lib/teams-projects-protocol.js +9 -2
- package/lib/teams-projects-protocol.js.map +1 -1
- package/lib/typings/globals.d.ts +3 -3
- package/lib/typings/globals.d.ts.map +1 -1
- package/lib/typings/globals.js +1 -1
- package/lib/usage.d.ts +73 -0
- package/lib/usage.d.ts.map +1 -0
- package/lib/usage.js +20 -0
- package/lib/usage.js.map +1 -0
- package/lib/util/analytics.d.ts +1 -1
- package/lib/util/analytics.d.ts.map +1 -1
- package/lib/util/analytics.js +13 -4
- package/lib/util/analytics.js.map +1 -1
- package/lib/util/async-iterator.d.ts +1 -1
- package/lib/util/async-iterator.d.ts.map +1 -1
- package/lib/util/async-iterator.js +4 -4
- package/lib/util/async-iterator.js.map +1 -1
- package/lib/util/cancelable.d.ts +1 -1
- package/lib/util/cancelable.js +1 -1
- package/lib/util/cancelable.js.map +1 -1
- package/lib/util/date-time.d.ts +1 -1
- package/lib/util/date-time.js +7 -7
- package/lib/util/date-time.js.map +1 -1
- package/lib/util/debug-app.d.ts +25 -0
- package/lib/util/debug-app.d.ts.map +1 -0
- package/lib/util/debug-app.js +100 -0
- package/lib/util/debug-app.js.map +1 -0
- package/lib/util/deep-partial.d.ts +1 -1
- package/lib/util/deep-partial.js +1 -1
- package/lib/util/deferred.d.ts +1 -1
- package/lib/util/deferred.js +1 -1
- package/lib/util/deferred.js.map +1 -1
- package/lib/util/disposable.d.ts.map +1 -1
- package/lib/util/disposable.js +2 -2
- package/lib/util/disposable.js.map +1 -1
- package/lib/util/event.d.ts.map +1 -1
- package/lib/util/event.js +5 -3
- package/lib/util/event.js.map +1 -1
- package/lib/util/garbage-collected-cache.d.ts +2 -1
- package/lib/util/garbage-collected-cache.d.ts.map +1 -1
- package/lib/util/garbage-collected-cache.js +12 -3
- package/lib/util/garbage-collected-cache.js.map +1 -1
- package/lib/util/generate-workspace-id.d.ts +6 -1
- package/lib/util/generate-workspace-id.d.ts.map +1 -1
- package/lib/util/generate-workspace-id.js +461 -440
- package/lib/util/generate-workspace-id.js.map +1 -1
- package/lib/util/generate-workspace-id.spec.d.ts +1 -1
- package/lib/util/generate-workspace-id.spec.js +37 -2
- package/lib/util/generate-workspace-id.spec.js.map +1 -1
- package/lib/util/gitpod-cookie.d.ts +2 -2
- package/lib/util/gitpod-cookie.d.ts.map +1 -1
- package/lib/util/gitpod-cookie.js +1 -4
- package/lib/util/gitpod-cookie.js.map +1 -1
- package/lib/util/gitpod-host-url.d.ts +6 -2
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +61 -37
- package/lib/util/gitpod-host-url.js.map +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.spec.js +16 -6
- package/lib/util/gitpod-host-url.spec.js.map +1 -1
- package/lib/util/grpc.d.ts +21 -1
- package/lib/util/grpc.d.ts.map +1 -1
- package/lib/util/grpc.js +74 -2
- package/lib/util/grpc.js.map +1 -1
- package/lib/util/jaeger-client-types.d.ts +68 -0
- package/lib/util/jaeger-client-types.d.ts.map +1 -0
- package/lib/{theia-plugins.js → util/jaeger-client-types.js} +2 -2
- package/lib/util/jaeger-client-types.js.map +1 -0
- package/lib/util/logging.d.ts +2 -2
- package/lib/util/logging.d.ts.map +1 -1
- package/lib/util/logging.js +32 -26
- package/lib/util/logging.js.map +1 -1
- package/lib/util/logging.spec.d.ts +7 -0
- package/lib/util/logging.spec.d.ts.map +1 -0
- package/lib/util/logging.spec.js +52 -0
- package/lib/util/logging.spec.js.map +1 -0
- package/lib/util/make-link.d.ts +1 -1
- package/lib/util/make-link.js +6 -6
- package/lib/util/make-link.js.map +1 -1
- package/lib/util/nice-grpc.d.ts +9 -0
- package/lib/util/nice-grpc.d.ts.map +1 -0
- package/lib/util/nice-grpc.js +121 -0
- package/lib/util/nice-grpc.js.map +1 -0
- package/lib/util/parse-workspace-id.d.ts +1 -1
- package/lib/util/parse-workspace-id.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.js +3 -4
- package/lib/util/parse-workspace-id.js.map +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.spec.js +1 -1
- package/lib/util/parse-workspace-id.spec.js.map +1 -1
- package/lib/util/queue.d.ts +1 -1
- package/lib/util/queue.js +1 -1
- package/lib/util/queue.spec.d.ts +1 -1
- package/lib/util/queue.spec.js +10 -7
- package/lib/util/queue.spec.js.map +1 -1
- package/lib/util/repeat.d.ts +15 -0
- package/lib/util/repeat.d.ts.map +1 -0
- package/lib/util/repeat.js +55 -0
- package/lib/util/repeat.js.map +1 -0
- package/lib/util/semaphore.d.ts +1 -1
- package/lib/util/semaphore.d.ts.map +1 -1
- package/lib/util/semaphore.js +1 -1
- package/lib/util/semaphore.js.map +1 -1
- package/lib/util/skip-if.d.ts +1 -1
- package/lib/util/skip-if.d.ts.map +1 -1
- package/lib/util/skip-if.js +1 -1
- package/lib/util/skip-if.js.map +1 -1
- package/lib/util/timeutil.d.ts +3 -1
- package/lib/util/timeutil.d.ts.map +1 -1
- package/lib/util/timeutil.js +16 -4
- package/lib/util/timeutil.js.map +1 -1
- package/lib/util/timeutil.spec.d.ts +3 -1
- package/lib/util/timeutil.spec.d.ts.map +1 -1
- package/lib/util/timeutil.spec.js +35 -1
- package/lib/util/timeutil.spec.js.map +1 -1
- package/lib/util/tracing.d.ts +53 -7
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +157 -20
- package/lib/util/tracing.js.map +1 -1
- package/lib/util/tracing.spec.d.ts +7 -0
- package/lib/util/tracing.spec.d.ts.map +1 -0
- package/lib/util/tracing.spec.js +121 -0
- package/lib/util/tracing.spec.js.map +1 -0
- package/lib/util/workspace-port-authentication.d.ts +8 -8
- package/lib/util/workspace-port-authentication.d.ts.map +1 -1
- package/lib/util/workspace-port-authentication.js +9 -12
- package/lib/util/workspace-port-authentication.js.map +1 -1
- package/lib/webhook-event.d.ts +44 -0
- package/lib/webhook-event.d.ts.map +1 -0
- package/lib/webhook-event.js +8 -0
- package/lib/webhook-event.js.map +1 -0
- package/lib/workspace-class.d.ts +14 -0
- package/lib/workspace-class.d.ts.map +1 -0
- package/lib/workspace-class.js +8 -0
- package/lib/workspace-class.js.map +1 -0
- package/lib/workspace-cluster.d.ts +19 -18
- package/lib/workspace-cluster.d.ts.map +1 -1
- package/lib/workspace-cluster.js +17 -2
- package/lib/workspace-cluster.js.map +1 -1
- package/lib/workspace-instance.d.ts +41 -4
- package/lib/workspace-instance.d.ts.map +1 -1
- package/lib/workspace-instance.js +1 -1
- package/lib/wsready.d.ts +8 -2
- package/lib/wsready.d.ts.map +1 -1
- package/lib/wsready.js +3 -3
- package/package.json +18 -8
- package/pkg-yarn.lock +11 -6
- package/provenance-bundle.jsonl +2 -0
- package/src/accounting-protocol.ts +67 -52
- package/src/admin-protocol.ts +59 -19
- package/src/analytics.ts +27 -29
- package/src/attribution.ts +63 -0
- package/src/auth.ts +3 -3
- package/src/billing-mode.ts +84 -0
- package/src/blocked-repositories-protocol.ts +13 -0
- package/src/context-url.spec.ts +25 -15
- package/src/context-url.ts +93 -37
- package/src/encryption/container-module.ts +3 -4
- package/src/encryption/encryption-engine.spec.ts +10 -9
- package/src/encryption/encryption-engine.ts +21 -17
- package/src/encryption/encryption-service.ts +5 -6
- package/src/encryption/key-provider.ts +17 -20
- package/src/env.ts +2 -25
- package/src/experiments/always-default.ts +24 -0
- package/src/experiments/configcat-server.ts +42 -0
- package/src/experiments/configcat.ts +56 -0
- package/src/experiments/types.ts +34 -0
- package/src/gitpod-file-parser.spec.ts +56 -62
- package/src/gitpod-file-parser.ts +17 -18
- package/src/gitpod-service.ts +241 -134
- package/src/headless-workspace-log.ts +7 -5
- package/src/ide-frontend-service.ts +3 -3
- package/src/ide-protocol.ts +147 -0
- package/src/index.ts +17 -15
- package/src/installation-admin-protocol.ts +45 -0
- package/src/license-protocol.ts +13 -7
- package/src/messaging/browser/connection.ts +45 -47
- package/src/messaging/browser/window-connection.ts +40 -30
- package/src/messaging/client-call-metrics.ts +79 -82
- package/src/messaging/error.ts +33 -8
- package/src/messaging/handler.ts +6 -6
- package/src/messaging/node/connection.ts +23 -70
- package/src/messaging/proxy-factory.ts +23 -30
- package/src/oss-allowlist.ts +15 -0
- package/src/payment-protocol.ts +3 -3
- package/src/permission.ts +41 -33
- package/src/plans.ts +241 -190
- package/src/protocol.spec.ts +97 -0
- package/src/protocol.ts +557 -297
- package/src/snapshot-url.spec.ts +10 -8
- package/src/snapshot-url.ts +1 -1
- package/src/team-subscription-protocol.ts +60 -23
- package/src/teams-projects-protocol.ts +51 -12
- package/src/typings/globals.ts +5 -5
- package/src/usage.ts +85 -0
- package/src/util/analytics.ts +47 -25
- package/src/util/async-iterator.ts +5 -6
- package/src/util/cancelable.ts +4 -4
- package/src/util/date-time.ts +9 -9
- package/src/util/debug-app.ts +81 -0
- package/src/util/deep-partial.ts +1 -1
- package/src/util/deferred.ts +7 -7
- package/src/util/disposable.ts +3 -6
- package/src/util/event.ts +9 -11
- package/src/util/garbage-collected-cache.ts +15 -7
- package/src/util/generate-workspace-id.spec.ts +35 -8
- package/src/util/generate-workspace-id.ts +465 -441
- package/src/util/gitpod-cookie.ts +9 -10
- package/src/util/gitpod-host-url.spec.ts +41 -14
- package/src/util/gitpod-host-url.ts +70 -42
- package/src/util/grpc.ts +94 -2
- package/src/util/jaeger-client-types.ts +102 -0
- package/src/util/logging.spec.ts +23 -0
- package/src/util/logging.ts +61 -43
- package/src/util/make-link.ts +7 -8
- package/src/util/nice-grpc.ts +96 -0
- package/src/util/parse-workspace-id.spec.ts +18 -9
- package/src/util/parse-workspace-id.ts +7 -8
- package/src/util/queue.spec.ts +28 -26
- package/src/util/queue.ts +1 -1
- package/src/util/repeat.ts +45 -0
- package/src/util/semaphore.ts +5 -7
- package/src/util/skip-if.ts +10 -7
- package/src/util/timeutil.spec.ts +41 -15
- package/src/util/timeutil.ts +28 -12
- package/src/util/tracing.spec.ts +88 -0
- package/src/util/tracing.ts +201 -32
- package/src/util/workspace-port-authentication.ts +11 -14
- package/src/webhook-event.ts +55 -0
- package/src/workspace-class.ts +14 -0
- package/src/workspace-cluster.ts +35 -21
- package/src/workspace-instance.ts +83 -21
- package/src/wsready.ts +11 -4
- package/data/builtin-theia-plugins.json +0 -372
- package/lib/email-protocol.d.ts +0 -49
- package/lib/email-protocol.d.ts.map +0 -1
- package/lib/email-protocol.js +0 -28
- package/lib/email-protocol.js.map +0 -1
- package/lib/messaging/connection-error-handler.d.ts +0 -27
- package/lib/messaging/connection-error-handler.d.ts.map +0 -1
- package/lib/messaging/connection-error-handler.js +0 -34
- package/lib/messaging/connection-error-handler.js.map +0 -1
- package/lib/theia-plugins.d.ts +0 -11
- package/lib/theia-plugins.d.ts.map +0 -1
- package/lib/theia-plugins.js.map +0 -1
- package/lib/util/repeater.d.ts +0 -22
- package/lib/util/repeater.d.ts.map +0 -1
- package/lib/util/repeater.js +0 -65
- package/lib/util/repeater.js.map +0 -1
- package/lib/util/safe-promise.d.ts +0 -11
- package/lib/util/safe-promise.d.ts.map +0 -1
- package/lib/util/safe-promise.js +0 -31
- package/lib/util/safe-promise.js.map +0 -1
- package/src/email-protocol.ts +0 -66
- package/src/messaging/connection-error-handler.ts +0 -62
- package/src/theia-plugins.ts +0 -11
- package/src/util/jaeger-client.d.ts +0 -105
- package/src/util/repeater.ts +0 -49
- package/src/util/safe-promise.ts +0 -26
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{"payloadType":"application/vnd.in-toto+json","payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YwLjEiLAogICJwcmVkaWNhdGVUeXBlIjogImh0dHBzOi8vc2xzYS5kZXYvcHJvdmVuYW5jZS92MC4xIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2xhc3MuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjUyYzFkZjVjMmMxNTA3ZTI5ZDQ2OWUyNDkxN2Y0NDliYTBlNWM5YjdhNTc2MDM1OWY2MzkwOTFiMGFkZDA3YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkYzU3NzIyZWE5NWQ3MGJkMjYzN2Y5YTFmMDE5ZDM4OWY3OTFkNGNhYjQwZDViNWZkN2QzNWJiZThkZTI5ZDJlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YzBiMGYxOGUwOTM2NjJhZDk4NTE3OGI3Mzc0MWZlODZlN2MxMDM3OTk0YjQ0ZWFmOGM0MzhkYjY3YjY4ZDdhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1MDY0NGRiMWI3Y2Q3MjNmN2U0NDQ5ZDE3MTE2ZmM2YzIzMmU2NDRiYTkzNzk5MThlMDM5YTY5MGFhZTE1MzVkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW0tc3Vic2NyaXB0aW9uLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiNjkxNjRlZGQyNjE3YWM2MDkzZjI0NzU5MzE5ZDFhYjhmZTBhMGFhMTdlZjcyOTBkZDVkOGJhYWU5NzlkOGFkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvamFlZ2VyLWNsaWVudC10eXBlcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmNGIyNWJkNDcxMzAxMjkxMzNmMTM4ZGY5MGM2YjdhYjQwYzIzNmVkY2VhZTRhZGIzODJmZmY0Y2ZhMjc3YWQwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyYTkxYWI1MjQ4MDUxZDVkYzQxMmQ1Y2ZkNjk1ZTc0NmI2Yzc0NDA2YjJlZDQxYThmZDg1MDY1NDI3Mzg5ZmFkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9ub2RlL2Nvbm5lY3Rpb24uanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmZiZDc4ZDNmMWViZmE1NmZjODk4ZGI1YTcyMzhlMjIzOGIxNjc2ZTMxY2ZkNDM4YThmZTVmMDViMDlmMjZmYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvY2xpZW50LWNhbGwtbWV0cmljcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhYWI2NTg4M2FjYzk0ZDk3ZjE4Mjc5MzlmZWFiMjNlZjBjYTk3YzhlZGM3MGMwZDdkNDQ2YWVjMDlkOGRmYmM1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGJkYzZhNzk4YTVmY2UzZTc0MDFhYmFhM2U2MGU4MDY3ZTU3ODFlOTY2N2Y3ZWFiODZjNDYwY2MxNDAzZTRiZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM0MTdmMDhmMGZhODljODRmYTY5ZDhiMDE2ZTljMzMzMTAyMzkzNWI5YjczYTI3YmQ4MzNiNTAyYzM2ZjM2NDMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTljYjAwMzc1ZTdhZmZlNjQ4NTkzYzk5YTliOTRlZTc4YWM5MzEzNWUyYzYxYWM3NGYyMzc0YWE0ZTBmM2I0MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RhdGUtdGltZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGIyZDNiZmRlOTk0NTgyNzkyY2JkZDczZDI0ZTkzZGE5YTNiNzNhMTFlZjhmNTM1Njc1ZDQzOTYwYWE2MGZiYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9saWNlbnNlLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNjM2RhODU5NmIxYTE5OTY5YzRlYTUxNDI2NmQxOWQ1MDdjMzY5YTdlOTlmZDZiNDkzNDBmYzRmMmI3OWUxZjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjAwODZkMDdhYTA2MzFkZDgxMTYwMDdhODU3MDFmMzc5MzBiMjRlY2QyNjk1MDJiMTQzNTg2OWYxODMwMDZjN2MiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC93b3Jrc3BhY2UtcG9ydC1hdXRoZW50aWNhdGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjYzOWVmNDhkN2UwYTM4ZmRjNmM4YmNlZDJlMmQ4MWQ0MWIyOTRkYmU5YTk5ZDI3ZjVhYjQzNzNlM2YwMGRhNzkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFmNzBlZDkyNTRlZmUyZTJiZDJlMTIyYzliMjk3OGM5YjViNDliZWYyMTFiYTQxMjA5YjM1ZWRhYmFmYjFmY2YiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLWZyb250ZW5kLXNlcnZpY2UuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNTcwOWIzNDE3MzVjODYzNzdjMjFjNmJhZjM5ZjJmNDNmY2JkZTM4NDlkNzc0OGQwZjMzNmIyZDZjMWEyYzA3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGF0ZS10aW1lLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI1ZTg3ZTY2NTJjZjkwNjM1NWYyYjczZGQwYmEyYmE3Y2I1ZTdmZmQxNTM1ZTdmNzE0MDA1NjQ5MGExNTMyNmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzJmZGZhNjQ2NmEzZDQwNDkzMWM3NWY0MTQ4ODU3NzA4ZGY2NjJkMWJjYjM3ODZiZGE4YTFhYmE0NTM3YWMzOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wYXltZW50LXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdmMmQ0NjczOGI5MTczZDNiNDNmYzMyZTMyMGFhZjE3YmRmZWQyNWRkOTk2NGNmMTc0MDkyNTIxY2RkYmIyOWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM0ZGI2ODMwMGVlNDQyNzM1YTZlZWMzMzgwYzY1MGU2ZjM1ZjAzZjEzYTYxOGEzOGRhODIxZTU3ZjI3MTc4NTEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDViN2EwMzg4N2EwYzRkZDRmNTRjYzE0ODc2Y2JkZmQ1MDk1OGRmZDU0MGIxOGNmN2Q2OGFhYmNkN2VmNjQyMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvbm9kZS9jb25uZWN0aW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjM2VkZjFlYmUwNWQzZTBiMzAzZTcwMTAzNzhiZWFhZTdkZjdjMTUwMjgxZjk5ZDk4NGFiNzliM2EyNmE3YWNhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luc3RhbGxhdGlvbi1hZG1pbi1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYTgxMjkzMGMwYTIxNDEzYjhkZWEyODM4OWJmZjk2Y2M1MWZhZDczNDlmZWMzNDE4M2Y4NTE2MGI0YjZmNTI4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvamFlZ2VyLWNsaWVudC10eXBlcy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMxZDM4YjhkYjIzNTg5MjA2MDY0MTg5N2Q2Y2QzOTBkMjM4YTg4YzE3YjdjMGY2NmYwMTc4NTJlMDk2ODExMjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlZmQ4MDY3MmIyMGJiNzRhNGFmNjc0NmM1ODA3ZTA2OTljYjI0Y2EzYzNkYTI2Y2VhYjc2ODg2NTA2ODljOTc2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1zZXJ2aWNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFmMGQxZTNkODRiYjQ0MzQwNzdkM2I2MDY2Yzk2M2E4OTY0OWE0Yjc0ZDExYWI4NWJlYzVjZDhhMmViNGQwNTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRiOTI5NzE2NzdiNWIyMjlmYmY2NzFhODUyMjAzNmQxYmM4NDJkOTg2ZTdlMmMwMmQ3YzMyY2M0MDg0Mzk2NTIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZXhwZXJpbWVudHMvdHlwZXMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjgwZGQyNmFjMDk5ZmY4MjQ5Mzc1Nzg2OTEwZmZjMmZkNWE0NGE3MTU0ZDZkZjA2YTdhMzMzODYzZjVlNDcxNWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZXhwZXJpbWVudHMvY29uZmlnY2F0LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTc4ZjZlZTAzMTcyOWE0NmU5NjY1ODBkNDY3YTUyZmRmMzQ1MzE0NzQ2MjBiN2JjOGNhNmIyNzU1NWVhM2M5MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWIwN2NkMjhiY2Q2Y2I1NDg2NzFmMzJkMjU0OWE2YzQ2MTJjYmM0YjMzOGM4ZmI5ZGY3NDAzMDczOGRjMjI3MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9jb25maWdjYXQtc2VydmVyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjgwNmI1OWEzMjVmMDMxZWY4ODI1MzU3MzI0NWEyOWM3OWIzYjJmNDQzMzNhYzE1YzVhZjA5N2FkZTY3MzQ4NTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ldmVudC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk5MTU3MjRjODg0NDRmNzg0MDlmYjhkOGJmM2Y5ODhmNTZhY2I3YzRiZTI3NWZmOGMzMTJiMWQyNzg2YTBlMjMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTVhNGVkYTI0ZWEwOTZlNzhiM2ViNTcyYjhjNjg2Y2Q2NTc3MjQ1NjRhZGYwNzg0NTQ3MWNlNzk4YTJlZDc1NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZWJkNzU2ZTUwM2YwMjFlMzQ4MDgzNDdhYzQ5N2YxYjZkMGYzMTEzMGJjYTA5Mzc0OGJkYzk4ZmUyMjRiMjM2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Byb3RvY29sLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2YzYzYzZTU2N2NlMjBlOWU4MmIyZmExOTA4YWFlZmYyN2EwZGQwZDhkMWE4MWNhNjI3NTc5NzQ1MzYyNDU4NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdXRoLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdiMjhmMTI3OWZkN2VmMDEwNzc4NmJjZDM3MDE4YjBkZjNmY2VjZGRjM2U5MGYxOTYxYzRjNTBlYTAyZDZiNTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTQ4NzAyMWFjOWQxYTAwYzk5ZDliYjI1MDY1MDhjNmIzMDQ0YjMxMzQ2YTZlZDQ1OWFkZDRmYmQzYzM5NjNmMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9jb25maWdjYXQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNkZDc1MTcxM2QyYzNkYjk0YzUxZDliZWIyYTZiYWJkMzlmY2EyNTgzZmE3ZWMwYTVjYWU0ZTA0MDQ1Y2E1MDEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmOGUyOTAxMTBiYzdiNmRiZjAyY2U5NjMzNmQ1ZTZhN2Q4Njk2MmNlYTI5OWRmOTIyZWEzYzU2OTU3Y2ZmNjAxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luc3RhbGxhdGlvbi1hZG1pbi1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE1OGU1NWUyZjg2YzFiMjAxNzY3YmI5MjliNTkxYmM5YTJiNzE2NDYyNGNmMjRhOTU1MDhhNjA2MTkwNWFmYWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImUzZGMwYmE0OTk2MGI1ZjhiYjJjNTg5M2Y1MjU5ZTA4N2E1NGVkMjE3NDhjYTJlM2M1YzNmZjJhMTFmNjBmYzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Vycm9yLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjgyMWE2OTEzYTQxOGI3NmEyZmY2ODIzNDdhYmI4NWI4NjMzMTc1YzVhZGIwNTAxNGNhZjliYjQ1NzI0Yjc1YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdXRoLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBmYTNhNDdhNjIzZmY2ZGI1OWY0ZTQ3NDI3NDI4OGVkMTM4MzdjYjk5NzQ0NWZkYTU0M2Q1ZWI4MmY0NGNiOGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNiODI3YjdjYTU3NzgwOTc2YzdhMmU2NDc4OWJjMjMxN2QyYmU4ZWIzMDI5MjkxNTA2MGM5YzNiYTFmYmFlMTIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWNsYXNzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE1M2E1NDJjY2Q5Y2Q3ZGFmMjY1OWNhYjJlZGQ3YTFmMjViYzRhNDM4NzhlY2JjMTk4MTE0YTEwZGU0YTAzNTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXNhZ2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTI0MzIwYzk4YmVlOTM5Nzg4ZTQyODZiZjM4ZGQ5M2UwY2Q5Y2IxOTM5MmQ4OGE3NmM2NzRhM2JkZTYzYWUyZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIxMjE3NjRmMGExZTY1MDI3MDYxNzcyOGEwMjUyZmU4NDRjY2RmNGM2Y2Q5MzkxOWZlODg3ZmI3Y2JhYTM3OGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM5YThlNTliYzZiNDA1MGM3NWNlODM2Mjk1MmNiOTdjOTY5NTQ5NjY5MTE1M2ZiY2ExMTc5NjdhODg2YTg5NjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9tYWtlLWxpbmsuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTk5OTlmNGU2ZmFmMGFmN2MzNGZlNDlhZDQ0NDQyZTkwOWY2MTVjMmRhMTVmYTk1MGRmMWQ1M2ZhM2M2YjAyNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2xhc3MuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg1YzY2ZTNmNDU4ZmE0YjVjNjExNTNmYmI4ZjRlODBmZDRlNWRlNTIwYWU4ODRhYTE1NjU3NTQyNDYyNWNmMDkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1YWI4ZDA4YTM3YjQ2Mjc2ODBiOTI2NmFjYjE5YTU2OGVkZTM4MjZhZTQzZmZlMTI2NDg0YjY5Zjc4ZTY3NTdmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbmljZS1ncnBjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjZiZjc0OThhMmYzZWQ1MjU0MzUyM2I5ODY5MTc2NzhmMTc3NzRmNTczNmYzYTUzYzYwMGE0M2E3MDU4ZDhiYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM5MjY3ZTIyMjc1ZGUzNTkwN2E0ZTkyOGE0NTU3YzU0MDAzODE1MDUzNmQ2ZGQ3NmI0Y2MwOTRiODkyMWQ5NjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ldmVudC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTU4NWQyMGE0N2EyYmYwOThiNGRjYTI1ZjQwZjZlZTg5NWUxMmRlNjMzY2MyNGY4MWEyOTliNTJlZjE1YmZjMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2Rpc3Bvc2FibGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWU5OTE0ZjdiMmQyYzFmODRiOWIwOTg4NWFhMTM3MWIwODdjMTZiMTc3ZDg0ZjRkMWM2MDRmMmE1YTRjODA5ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFiYjVhZTU5OTg4ZTM1MzA5YzNlNGRiYmEyN2ZmYzhjMjMwZjliOWRkMTNhMmFjOWRmZTVlMmNmMWVkYmYwMzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWNsYXNzLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTczY2EwODIxNTk3NTNmZmM3MjM0YzM0OGM4NmQ4NWMyOTE0N2Y3MjcwMTlmNDQ4MTM0MWFkZTcyM2VlZDdkMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4ZjIzMjcwZTRkODZmNGFjOWEwZjAzNmEyMDYyYWI4MzBkMTk3MDY3YmMxZTg4ODkyNmU5ZWY5OTE1ZDFmOTcyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzMxZWVjMjI5OGY2YTVhMTI1OWMzYThhZjViM2NjYzYzNDVjMWJlZDM4ZWVmZjFkMTllZTE0NjEyOGM0OGFiMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93ZWJob29rLWV2ZW50LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTFiYWVjMzY0NGU0ODIzNzUxZGQ1MjZiNWRjYzBiZDljNjViNjdhZWM3Njg4N2EwNzE4Yjg1MzNjMDJkYzRiYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvZXJyb3IuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTE1YmM1NjljNDZmZjM0MDkyZWUwODM1Y2U3NWY4YzhkM2E0YjM3MmMxZmVmNmM3Y2I1ZmFkZDM2ZjRjMjczZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYzQ0MGU0OTM2ZDFjYzM3Zjg1Y2E3ODNhMjQ2ZDc3YjY4OWM1NDA1ODJlYWI5MWQ3ZTQxNmQxYjQ3ZTk4ZjFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Jsb2NrZWQtcmVwb3NpdG9yaWVzLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGJkNzhkOTBjNDljMDQwNDEwY2Y1ZTg3YjVhZmUwNGM5NzY4MThmMjk1MmIyNmY2YzFlZDJjODk1MDAwNTczOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGQwYTc1MDM2YTZjYTM4MjYwMmU2YjdkY2I1NWUwM2I3OTVlOWFlMTljZTUwMzZhYzRmOGQ2NzY5MTQwYTliMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhZGRiOThiNmZhMTY1ODczY2QwM2EwNjdlMDQ5OWEyZDFhOWQ0YmZjYjZhZGM0OGZkZjQ5MjE2MjAzODIwMTU0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vY29udGFpbmVyLW1vZHVsZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTRmZDExZjE3MzIwNmE2YzE5Yjc2NWQ4ZjQ4ZDE0M2M1MDVhOGNkNzNiMGMzZDA5NTY4MGI4NGQ3ZjhmNzcxYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5Zjk0ODVhODBlYzQzMmI1MjEzMzQ4NWNlNzhjMTZlMmUzYzVmZGRmMDkxY2I4ODhlMDVkNDNlOGVhNDhjM2RmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFkN2ExZWIwMTc2NmFiOTUwNjliOTQwNTk4MjJhNzAzN2JiZGNhMDBmZjBiNGE4MzVmZjM2ZjgwODJkMTE0YmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ncnBjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NTAxZDJjMmJiMTljOWFkMDMxYjA3MWQxMDRiMzJiNWI2NmNjNGI2NjNkYWJjNTRmZTVmNjMyY2VhNDA3MjU2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW0tc3Vic2NyaXB0aW9uLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUzM2NlNjY1OTQxOWMxM2RlZjM2YzVmYjZmMGNlNTAxYjEwOGJlYWVlYTJmMWZlNjQ0YTc3OWJiOWZiYTcxYWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLWZyb250ZW5kLXNlcnZpY2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGNhYTgwODc1OGFkMWEzOGZmZmU4NmViM2JkYTdiZWRmMWZmNzI0Mjc5NTk3ODMzZjM3NmMwNTg0NWM0YTMyMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzMyYzZlZDVmY2RjMGE3OGYxZTNhNThlZjhlNzAwNmEyNGU4MjgwOGM5ODZiY2EyNzhiZWNiZjU5NDFhNjc1NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhOTAzZjdiNWEyZTU2ZmU1ODBiNjA4OGY3NGI4ZGRmYzlkYzljN2M2MmI0NmU2NWY2OTRjMDlmMzdkMzMwZjIwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Blcm1pc3Npb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQ5Mzk0MGVkZWRjY2JmYzRhMzRmODNhMzkwYzZlYTA0ZTA0NjkxYzk1OTliYzMyMGIxNTdhMjdkYzE5MmUyNmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3NTJkMmVlODQxNDg3NjBmMzJjNjhmMDU3ZDZhOGI5YTQwOGYzOGQ3MDI5ZTdiMDUzMDIwYTA0MjVkOWRiMTk3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNDM3MzBkMTc3MGNiNjRjMzM2MzE0M2ZiODg2NzgzMmVlODg3YTQwMWI4ZmI1MDMwMzQ2MmM0OTE2Y2JlOTEyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0MDk5NzUxM2IyMDFmZDdhNjViNjMwMjA4MDk3N2QzYjdkMWVhYTYzZDU0M2RiM2U4OWVjNjczYjU5NmE2MTY1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvY2FuY2VsYWJsZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDUzYjA3MmNkYmQ5MjIzOTU0ZGQ1ZmRhOTJkOTJjOTlmODA5OWQ4ZWFlNTBjZmE2YzRiZjJkYWFkZDA2MWEwYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiODI2ZDU5MGVlZjNiYjU1NDhkNTMxNjQyNzFkNzgxZTJkMzgyMTY1MWJjMzVhNmZiNGMwYzJlM2RhZDUyYzFjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9jbGllbnQtY2FsbC1tZXRyaWNzLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjNjMmM4MmY5NGJmMGViOGI0MDJmODkyYTMwOWY5ODQ5NGY0NzlmMjgzYTNjZDAwZGI3YmRmOWViYzIxMzdiOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTQzMjg1Y2ExNDA5ZDU5ZmQxZGRlNjQyYWZkYzc5MzExYTUxNjlhNTY5N2JjMTNlZDA4Mjk4MzVlZTQ2YmU4OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZXAtcGFydGlhbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NmQ5ZDhkMmFmODhjYTE3MjI2NGVkOTBhOTVkZGZiMzZkZTcxZmQ3MTUxYTE0NGJjNjQ2M2UwNmU1ZjZjMTI0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9wcm94eS1mYWN0b3J5LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmQxOGFiYTAzNzAxNWM3NzdhOGFkOTY3Y2IxZDFmNzlhMDg5MmE5NGQxNjBkYTY3ZGUzMjcwNGM2ZmUyMTNmYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjMwZjYwZTI0NDdmNTgzYTZhYjhmNDkzZmVjZmE4ZTk5ZjgzYTEyYzNlMzg5ZGZkYTVkYzdiNDMwMThlMGRiZTUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9jb250YWluZXItbW9kdWxlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVjN2FlM2EwNTBmOWVjODM2NDQ4ZWQ3N2U5NGJmZDJhMTQ1MzI3MGZmYTUwOTZhYWU1ZDY4NmQ4NTQ5ZmI3ZTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODVlYjM4YzIxZjBhN2I5ZmMzZmJkNzE3ZjdhYWFlOWFmODYwZTdlNjA4MjBlZDA1ZmQ2ODMyNzUyYTI3M2QwZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWI3NGQ5NDYzMmMzNjA1YmQ5YWFkYmU5ZDRhMGExNWEzZTA0OWI1ZTQ4MzYwNDQxZmY1MzU3YzJjODdhMDFhNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmZDM3MzYyZWVhMjhlYzFhNDQ5ODE5MDgyNWRmMzFhMGNlZWFlMzg3YTdiYmRmYmQyYTA5ZDNhM2QyYzA2MzYxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMyZjU2ZWUwYzc1MzljMzlmNjk3MWVlOWZhODFjMDQ1MGRmZjQ0YWEzZjAxZDY2NmM4YWQ2MjI5YmRmMzM0NjUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9tYWtlLWxpbmsuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQzZmY0NjNhZmU5NzVkMDVlYzFmMzIzN2VlMzBlZWEzNTBiMjU1NTlmY2MxMzRjMjRlZmExZTYzZjViN2E5ZDEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGF5bWVudC1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjgwZmI4ZTFmYjBiNDlmZmFiOGY1NGMxN2NhOGU2ODhkMjI5YjEwZGIzOGZmYmZkYTI5OGY4YWNjMGJlNzNjM2EiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWNsdXN0ZXIuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiN2U0NDFhYTczYjI0YWI5NjE0YTRhMjFiNGU1NWJiZDk5ZTIwODdjYjljMTI3MjI2ZTYwYzNhMGM0NDZlMWNkYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2tleS1wcm92aWRlci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjcyOWUzYTgzMzgwYzZkMjIxMjIyNGEyY2U1ZjMwMWNmMDA1ZDlmMWUxMzRlMGI4M2E0MjIxYmViYjA5MzhmNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdXRoLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjY1ZTY5N2NmMGRmMTA5NjRkMjAyYmZmYTlhZTQxYmFjYjM2ZTI5ZTFkNjc1MDhkNjA4MjEzMTMzNDI2NWM0NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiN2ZkNTIxYjcwYjc3M2ZiODQ4ZDEyNjlkYzc1NWFhNGE2NjkzZGEyYjE4M2E4NjgxNDYzZTU0YWFkMDgyMzBmNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtLXN1YnNjcmlwdGlvbi1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjZDk4NGY5NTEyZmFkZThhZmEyYTI3NjJjMTdiZTc3NDI2YmE4NjM4YTQ4ZTUxMDAxOGJkNjVlYTJjMzViYjY3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9ub2RlL2Nvbm5lY3Rpb24uZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzU4YWVlYTY1ZmVkZTQxMGZiOWI3MDU2NThmM2Q5NDIwMDk4YTI0YTE1NTk3NzllMjgwYTVjYjI0ZDYzNDU0NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtcy1wcm9qZWN0cy1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY3YThlMjM3YWQ2ZWZlNGI0ZmMxNzExMDNmY2Y1OWEzMjg2NDZiYjE0MmFjZjhmM2JiZmYyMDE2MTVmZjgxMzQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFiMTliYTVmNmQ5OTNmY2NkNDdlYzZhNjc4ODA1NTMzNmE0MmU2OTIyZmE0Y2JlODljMmI0NzY1ZjMyMjFiMGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXNhZ2UuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzMTlkZmYyOTkxZjAwNjJiOWUxOWRjMDE1Njc5MWEzNjZmZDNlNjFkYzNjOGQyOGEyMDI0MmI3MDc0NmI4NTliIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiN2JkOTZkMDA0MjViOGYzYTkzZDA0ODE1YjhkMTE4YWM2MWRmYzBkZjcyN2I0YmZiN2JhM2IzYTdjZWIzZmMzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVidWctYXBwLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQyMWFmMTY1N2M3ODkyMDQ3YzFhOGJkZTRkYjhkMjdjNzMxYjg4YWYyNWU4ZWRiMTdmOWQ1MzBmM2M5YTg2NjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGVybWlzc2lvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlYTUzNjBjMWE0Yjg4ZDdlYWUxODhiYTg0NjI1YTZmMzExZGNkNmQ5MTViYmYxNGQ0YWQ3MDQyZDk5NzZjNTVlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dzcmVhZHkuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZlODg3ZmEzNjlmOGQ2ODU1NWMzYTVmMmViZTY4MTIwY2E3ZDM1MmQzM2FlNzZkYWE2YzliODkxMDBmMjAyZjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC93b3Jrc3BhY2UtcG9ydC1hdXRoZW50aWNhdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkNTYwNmRhMmNmMTkwMTdhN2Q4ZWY4MjY2OWE4YWIwMTE5ODY4NmU5MTMwMTM1MGFiZTlkYWEyZDg5MzZiNjA1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYjNjZGExNzc5ODU0Y2M3Y2RjOWViODVjZTZiZWE1ZDFlN2JkZTExNGRjZjYxYmIyYTQzYWYxNGRhZmY3ZjFmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dlYmhvb2stZXZlbnQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjc2N2UzMTQ0YmMwYWRlOWU4Zjc2NjhkYTQzZjQzMWNjYzExMjU1ZjViYWU1NmI5MjBmNDU1YzI5ODY0N2FlMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9hbHdheXMtZGVmYXVsdC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc4YjdhMWM0NDJmMTI0Y2ZiYzI4MmUyOWMyZDNjOTZiMzM0NTljZGZiNzhiN2Y1ODQwZGUxNDYxNzk2NGFjYWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU1ZTcxY2FkMjJjMDYwMjY1MWVjYjA3YzVmOGU4NDBmODI2MmZiNWNlMzU0ZDU5OTI3YmE1ODg5MmFhYmU1ZWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNjY1NDdlZDZhOTk2MzUwZDk2ZGY1ZGJmMDcxMzI3ZWIzYzkwNTIyYjg3NTk2ODc5YzE1N2Y3MDlkMTc2MTIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2FyYmFnZS1jb2xsZWN0ZWQtY2FjaGUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlZmNjMDlhODZmZTRhYzc4M2U5YzZjZGYwMmVlOTllYTM0NjNmOTIzOWFlOGJlODJiNTA0YmM3YTllNTQ5NDMxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2FyYmFnZS1jb2xsZWN0ZWQtY2FjaGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI0ZDc2ZTI1OWQwNDdmZGIxNDQ5MTU4YmI0ZGVhN2E1NmUyYjMyNTA4YTUxODFhNTc2ODdkOGUyOTYyOTM0OGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nYXJiYWdlLWNvbGxlY3RlZC1jYWNoZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkNjJlMjc4YTc0MzZjY2FkOGMzZDJlNGQzY2UwY2JkNDkyZmUxMmY3ZDYzYjk5YWRiODM4M2NlZDkzZGFkOWU2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTUyNGQyMTIxYmEzYzFiMzJmYWMyNzY0ZjJkMGU2YTA1ZmZhYmFlOTZlNTg4MTYzMzI1YTdiNGE0NTQ0MzU2MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2Qtc2VydmljZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFjMzhkYzVmZWUyM2VmNDBlNjljYjZmNGNhYWRkYzdiNDYzYjdiYTBlZTY3NmRlZDM1Y2Q2ZjgyY2Y2MDQzZTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTBlMTAxYmRmMmMyN2U0YzgyY2YwYTlhZjQyMjY5ZTRlMjE5MzY3ZGU4ODI0N2VmZGM0NzUwZjY5NTM0OTA3ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2Qtc2VydmljZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmNDFiNTRiMzgxNzIzODE3MzU0MzhhNDY4MmZlNjFjYjcxNGVlZmI2N2ZlYjYwN2Y2NGI1YTk1ZDkyNGMxMjE1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2VtYXBob3JlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhYjllYTViMDljYTc5ZWIyYTZmZmJkM2U0MzNiOGZiOTM0NDU0MDEwNmUzMTBjOGE4NjkyNTM3YWVhMTE5NTcyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luc3RhbGxhdGlvbi1hZG1pbi1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5NTkzOWZiMWZhYzE3MWVmMmM0YTIxYTE3MjBlYzU0ZTM2NmY0MGFkMGJiMmJiZmNkMDY3ZjdhMDJkMDI4MmY4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Byb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiNmFjY2JlMjk0MWU3NWVlOGJmMTljYmU1YzY4YmIwZjNhNDU3NGYyMDgxZWY3M2E4NGE5NjBkZWUyZGQ2OWNlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFmMzM4NjA0ZDJiN2MwYzk5NzZkYzk1OGE1MDM5YTYxODk0NjEyMDQxYzVjY2U2NDM4MzE1ODI4Yjk5NTU5ZGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI2NjRhYjg1ZjVmZTI3NGMwNjM3ZDUyZWE0YjAyMmNlYzA3MDBjYzdmZjRmZGNhMmQwOTQ2YjE3ZWUwY2Q0NDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzE3NTliY2RlMjA1NjI5ODFhNTY1YmIzZjFhYjdiMGJiM2QzMDBkOTQ3ZDhhYjY5Y2YyZDAwNzM5MjQ0ZmYzMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9hbHdheXMtZGVmYXVsdC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxYTkyYjFmMWYzNjhiNWUzODQ5MTEyODIwMmViMzE3MzgwNWVjYmY4YjY0OGIzODkwMDkxZmFmM2M3ZTUwNjY4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ODJhNzA0YzA3YTE1M2M2YzIyNTNiMDdjMTFlMjU2NTE0NjA5YjdkMGY0NTQwOTc1ZjVjODljMWEyYTlkYTJjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQ0YzIwYTliODM3YmEzYzVhYzgyYjljMTllM2Q4YWFhNTcwOTAyYmFjMWY4ZWFjM2FkOGE1MjRkMGM4ZGNiMjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd2ViaG9vay1ldmVudC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkNTlmZjA2YTk3ZDViNjFlM2U2ZGYyZTI0MTNiMGEyMjg4NjI0NTBmZDNmNjc4ZjMwNTJkOTVhYzMyM2NiMzZiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Byb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFkZmFmNGY4YTExYzI2OTA5NWNlZDNlZTUyZmM5ZTMyMDA4NzIzZWI1NzIxMzk1ZDIzNjQ4MTQ0YThlNGY3MWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbXMtcHJvamVjdHMtcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY5N2U0MTNiMDJkOWEwYzc1OGZlNDQ3M2JmNjk2NTQxZTNjNDY5OGU2YmExN2JlMWM4MmQ0NjBkMjk5MjczY2QiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZXhwZXJpbWVudHMvYWx3YXlzLWRlZmF1bHQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE0N2Y2Zjc3Mzc4NmIwNzYwYWNlMzM3NzlmZDYxYWE4Y2VlMzIwZjY3OTE2NThhMjc2YTM0NGMzZDZjMzI5ZWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kaXNwb3NhYmxlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI4NWY4NWU5OTQ4N2Q0ZmQ4YWVkOTY2ZmIyMzE3OTllMmE5ZTlmZjQ4ZTk0Y2JlZmNmNmMzZWViNzdjYjkwZDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kaXNwb3NhYmxlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDgwOGZkMjc4MTBkY2E2ZjliMDY0NTZiZjEzMGVlMGViMWUyNzI2MmY2Y2EwYjYzNGYyZDUyYTU2NzZlYjc2YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjcwYzVlNTIzMzg0ZTc1YjQzOGM1ZGE5N2I5ZTkyNTkzZWM5ZDNkYjZiMzc5NzdjNDZhNDk4MWY3NGQ2MzBkMjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9zZW1hcGhvcmUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiNmY4MDRiYmFhMDIwMDBkOTQ1ZTVmMjhhYjQzODI5ZjJhNzUyMzI5YzAwMmY1OTIyMmMzOThiOWMyODhlZDBlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL2Nvbm5lY3Rpb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhNzUwZDZlMGQ5ZmZlYmY0OWU4MDIwZDAwM2NjMzViM2RhNDkxNWU3NjkxZThmNTUzZGEwNmRhNjJmNTVjZTNjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2hlYWRsZXNzLXdvcmtzcGFjZS1sb2cuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWY1MDdkMjRjYzMxMmQyZTBjZGQ2NWFmZDMwZGE5OGViMmYzNWNlZDUxOTdiNzFjMTZhZWZlMjg3NzdhMTVlNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9jb25maWdjYXQtc2VydmVyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDZkMWY5YTQwZDJmMzI5MTRlZDA1ODg1YjhhZGU0NTZkNzQ1NjJlNDQ2ZGUzYmFlMGQzZDA1YTUyZjQ4MGU5YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4ODcyODNlYWMyM2Y0YjJiNDMxNTZkM2EyZGYyZmZiMGI2NzM4YTk1MzgyYmM1NjAzMjA1ZTY0YjJkNzFiMjRmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ZmU0MWQ2YmFkZGVhOTU5MjU3YjM2NDhlNGUxOTg0N2RjZTBiNmU2ZjMzN2E3OWQzYTRhYzI5ZWZkZmZlY2UzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcmVwZWF0LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ5OTA1OTE1Y2NhOTVhMTlmNTRmZGZlZGY3N2VkYjIxMjY1ZTYwNGZlOGJiNjU0ZmZmZTg3YjMyMzBlYTc4NzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE4ZmY0YzFkNTRlYzY4YmI5OGRiYzYxOWJmMDNhMTdjM2YyODBjMWFiOTU0NGJjNDUyYjMzMDc1OTFhZGJiZGMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC93b3Jrc3BhY2UtcG9ydC1hdXRoZW50aWNhdGlvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlYjMzOGFiMDZiYjQzZGFjMTg2NjQ2ZDk4MmI2OGI1YjFlYmY0Yzg0ODM4ZTlhZWNkMzY1ZmI3ZTJkNmRjN2YzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI2YjlhOWI4MmQxMjNlNDYwOTk0ZDQ0MWU3YTIwNGRlOWQwY2U0MWM1YTI3ZTdhNzZhNmY3NmZlMGYzYmU3NWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYmlsbGluZy1tb2RlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmUxM2FhM2VlYmQ4MjVjM2UwOGRhNTgzZGYwNjk3OTA3MDlkYTcyNjUwZTg0MDI0YjE4ZDU1MmE0YjgzZmI5MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FuYWx5dGljcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYmE1YmQ2MTQ5MzQ5Zjc1MTE1ZTI3NDhjNTk5ZmQwZmZkNTZhMTVjOThmODU2OWE2NmM0NmQ5OGNiNTdkZWFiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVlcC1wYXJ0aWFsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjljMDk0YTJiNTNiNWQwOTZiNzc2YjE3YWQxZGNkZDZmOWZkN2UyZDgyODRhNWE2MTA0YzJhMmY2NTIyYmJlMGEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5ZjdhN2JlNzg1MGFiZGVhYjQ5MGM2MTY4NTBhN2EyYjhhYTM1Yjk2ZjQ5MzRkNDM3YjRlZGVlMDMwYmRmMmUwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjcyODdjNGUwYTQwMTdlOTA4Y2I2NjA4OGVhZTQzYmUyZWRlZTNiZTFiMDEwYWRiMDIzNzczODQzMTE5NTJiYWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9jYW5jZWxhYmxlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNiMzdhYWU4YWEwYTUyZjdiNmMwN2Q1YjkyNDMyNTA4YzY2M2I3ZDI1N2MzMzA3OGI4NGQ5Y2I2Yzg1NzFmZGEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA4MGIxMjRmYTZhYzcxMjc0NmY0YjNjYmZiYWUwMGJjNGE4M2VmNGZhOTQzOTdkNWE1MGJkZWViODlhNzg5MmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvY29ubmVjdGlvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMWZhZjdhNzA5YTlhODJiODVhZmJjNjA3NDRhZWJkYjVjNWM5MmQ5ZjllMDg0OTZiYzQ2ZTA1YTU3ZTk0YzJmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNmM4NmZjNWU1ZjAxMmUyZGM3MjVkOWZlNjZkNWI5MDg0ZmUxMWIxMDQxYjhlN2E0M2M1MmM4YjIyYTUyYzljIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTYzNGViZmRkNDJhZjJmYWY2NTNkODNmYjk2M2Q5OTM1YzAwMjcyYjNlMzgxNDc4MWExYjU4YzMxNDljOTlhYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tc2VydmljZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGI1MTI5MThkNjBhZDIxZDE2ZGQxYzc3ZDc4ZDVmNDlmYzRlYmMwMmM0MGMyYTMzOTFhNGNlYjg0NDg5MmVlZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjQ3MWZmMTU0ZjVjYjkxZTNhNTk4ZmZkNWFjMzYxYTE3MTZmYzcwYzhiZmQ5MDEyZDVkMTkyNGM1MmMzNDlkNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2V2ZW50LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNhNmJjNDI2NTNiMzAyNzRmOTU0OWQ4NWIwMWQ2ZjlkMTNmNzhhNmQ2MjllZWRkNzg1OTNjYTRjNTNjNzM1YTEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hc3luYy1pdGVyYXRvci5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhOGM2MDIzNWNhMTMwZTlkMjA2OGI1YTk4ZDk3MWE4ODY2NjQwOGI3Y2QxNjAzNDdkMWMyYTUwZWUxNGViNDFlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDIxYmIxNjRlMmFkZWM2MmYwMGNlY2E0Mjg1MTgwMmQ3NDg0NjFjOGMwNjE4MjU0NzkyY2I4MDg4NzM0N2IwMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjA1MTE4MmE4MDAyYWEyZmJiOTc5YmFmNGE5YzM2YmQxOGMwZmNjMTdiZTU0MGQ5Y2M5OTQ3NjJjMjAzNTI3ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNkNjcxOTIwN2JmOWE4OTY0NDk3Y2NmODQ1ZjRiOTk1ZjcxMjE2ZjJlNzc4NGU5NjAyZWJmNWYzNDllNjRiZDAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9rZXktcHJvdmlkZXIuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjg2NjFiNjU1NTJmN2JjMmRlYmJlNTUzMGMxODgxMzE5ZGYzOThhZDkyMGNmMjhkZGFkZTJjMDU0MjJjMDZjOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3JlcGVhdC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTYzOTY1MWZlZjA4YTYxYzY3ZGQwYjkwZDQ3YTVkMTQwMTQ5YzM0YTI1NjNlYTVkYjBlNWVjZjU3MDI1YmExNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FzeW5jLWl0ZXJhdG9yLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjcxNzJhZWE5ODk4ZmQ3NzE2MThkZDM4M2IxZDA2MzhjZWVhNmY4YTczNmIyMGFhYmFjNGVlNTllN2E3NmFjZmEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYmxvY2tlZC1yZXBvc2l0b3JpZXMtcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM5ZDc5NDFmMDlmMzgxOWQwZGM2YWVhNzMzZDU1MzJkMTY1Njc0ZTc5YzQwOTk5YWYwNWRiZDY5NjliMjFjZWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM0YWYwMDM0YzQxNzZjNDBjN2JiZTBhNzU1YjllNTE4Y2JiNDhhYTk1MDZjODQxYzc5OWRkZWU5OTNmNWE4YzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2hhbmRsZXIuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiN2E5NzdlMDU5MzM4ZjcxNWRmNzE1NzBkZWFmZTljMjc5Zjc4NDAwMGVmZThlZDk0MTMzZjFjNjc4ZDFiYWRjNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL25pY2UtZ3JwYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTNmNTA3MjgwMzMxZWY3YWE1NWUyYWQwNjJkYzYyZmFkYjNmZGI0MTVhNmQwYTM2YmFjZWY3MzRkMDk3MWFkMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlMWZkMTE1NDczZjFkOWVlNzBiNjY4YTNiZWFkYTliZjZkZmRhYzNiNGEwNzlmM2U0ODMwNDcyMWJjMjFhNzRkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQ4MWQ4MDEwNzIzZDg0MjIwYWVjYThlYzQyNGYyNjBlMjAxZTQyZDA4NmRkMGE3NzQ2MGY5MWI4ZTExMjdhZDMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0NTYzMDBmOGFjYWE4YjJiMzdlZGJlODAyNzhlNWM2ZjYxN2RhNjYyZThmNmIxZWIzZDA4NTc2M2Y3N2IwZmM4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2MDEwMzlkZGJiNzZmMmI2OWJhMjQ5YzEyNTIxYWIyOWU0N2FhOTkyYzhlYjA1ZWIwZTE3NzMxNTdlOWY4OTg3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyN2VlYzIwYjFiYWIyMDJiNjVmNjIwOTFiOWQ1Y2M3ZTU5NTFmYzcyNDNlNWQ3MzRkMTM3ZWYwZWQ5M2Q4YmM3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luZGV4LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGU2ODE1YzNiNmE4OTlkNmExZGQ5Yjk2MDI4MzAwMWU3YjUxZDI0OTRlYzI3MmU1OWJjNzBiNmQ0NDJmYjlmNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy90eXBlcy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRiOWVlMzlkNGQ4NTcxMjk0NTJiYTBlOTBjOTU4ODE0NTcyMzQ0NjUwYzA0OGFlNzJlMmRkZTZkNDZlMWU2YWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTNjMTUxMWJhMzhlY2IxMmY0OGQzNzg4YTQ4Y2JkODNmYzNhYTFkNjA4MGYyMTc3NGI4ZDVjNjkzNWU5ODQ3ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hbmFseXRpY3MuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTlmNTI0YjM4ZTkzNTc0M2UxYWE3NzQ1MGRiYzJjMzZiMWExY2VkZDA2NDVlYWI4ZWY2YWM3N2YyOGI0ODM1OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdHRyaWJ1dGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmYTQwMTAzOTYxMjkxMmU3ODg0NDgxZjQyMmM5YTNhNWVmMGM2ZDYwODVlOTUyYzI0MmMwZWNhNDQ3NWU1NTZlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2xpY2Vuc2UtcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE1ZjFhNjVkODMzNzZlMDAzMzI4MjRlM2EzZDg4M2E2MTk5N2Y1MTc4MDljNTNhNTFkNDk1Nzc2YjFkNTMxMzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWZlcnJlZC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NjZmYzc5YWExMzM2MDEwNWQ0MzEzM2JkOWE0ODBlMGM1Y2QzNGM3Y2Q3YmQyMWUxODVlNGI4NWMzM2VlMmYzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1mcm9udGVuZC1zZXJ2aWNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhYWFkM2YxOGZiMDQ5ZjlhNTEzYzBjODgyZGI0YTNiMWE5NDgzYmUzY2U2ZjQyMTNjODBiMDExYjUxZjI2ZDM1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVidWctYXBwLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMmZjZWZiYzEwZjFmNDZiYTlhNzcwMDdhOTgyYmNmYmQwNTJjNWRmNTU1ZDg2YzI5Y2VjZWM5N2RmZDIyZTAyYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wcm90b2NvbC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc0MzYxM2VkOWNmNWMzMjM4ZGRhMjQxY2NiOTY3OWE4MTg1ZmU5ZmMzZTVlZmY2MzkxNTUxOTgzNmZiYTcyN2UiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbS1zdWJzY3JpcHRpb24tcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzMmIyNWZmZGU5Njc0MzU3ZTZkYzE4ZjU4MWU5NzFmNTljNDExMDI3MWQ5NDI5ZWZiNmNjZDk5ZDRjYTQwMDVlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BheW1lbnQtcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY4YjQ2YjdlODlmYmRjZWNlYjdiY2YzOWQwNGMwMWIyNGNlM2YwMTEzYTAxNmVhYThmYzIwMDU1NzQwNmJlNWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJhNDRhMjY1Y2U2MWQ2YTlkODg3NzMyN2NmMDMxNDAxMTk2ZTNmMmE1Nzk5ZjU1NTY1NzY2MDZjODBmZDJkOGMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE0ZDgxNzk1NDNkN2M0OGE3ODI0ZDM5NmQyNTAyYWRjNzI3MjJiMDczZWE5Y2NiMWFiMjU3MGZlNTZiYjZjMDQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhMDM5MWRkYzk2OTFlOTliZTM1Y2VkZDUwN2NmYjczN2ZlNTE2YjJlMGFlMDk3NGFkYjczMjM3NDllZmU4ZDRmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9lcnJvci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZWMxOGJiYmEzZjBiYjQ5YjhmYmFkYzUxOTU2ZWZkOTNhNDc3YTI3ZDg0ODRkN2ZmZWQ3NTllZjQ2ZTM5NTFkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA1NDk4YWRkYjdjOWFlZWRhNTI5MThiYzVmMGYyZjZhNDE2NTU4MjM2YTY4YWMwYjRkMjg3ZmFlMDIzZDk2NTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWRtaW4tcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmYjhiNzJhZjBlNTYxOTQ5ZjMwMzg0MWU1YTc4YWQxNDhjYjMxZGQyOWFkYzBkZjU0MmY0ZjIzZjNlNWI1YzdjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODBmYTc5MDA4ODE2ODE1OTBlNjVhNDUzNGNkNWRmZjY1NjZjZTljMTk2MDhkZjQ3ZDY1ZjA2NTZkODQ5YWIyNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMyMGI3ZTYxZDU3ZjFmMjFjZmUxZjExYTJiMjVlNWUzODBhMGQ2MGQ2OWFiYmM2Mjk5ZTNhZWE4YmI2N2JhZDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmUzYjUwM2ZhOTQ0ODRlN2E4MWE2YmU3M2FiNGQ2NGNmNWE3ZTNkMmVmM2FlMmQzM2M0YjFjNTg5MjcxYTVjMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbnYuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE2YTVjMGY0OThjNWQ1MTk3NzZjYmQ0MzViNmNkOGZkMjgzNGZmZGZlYWZmYjBkODViODU5NTQwYzFhZGNhNmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0NGZhZDczZDU5ZDg1NDJiYzU5MGRjM2VkYzQ2MDI3ZGJiMTI4ZmVmM2EzYTk4NmNkMjFhZjljZmZkMDVlNDBmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2tpcC1pZi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NzUzNjViNDI5M2M3NzQzY2E1NGZhNDg0YjA2ZGViNjc3YjVmZGI1ZGNjNGI4Y2Q2OGRlYTE2NjZhNmMzMjFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2F0dHJpYnV0aW9uLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzQzOGZkNjNhNzVjMzBlNDliOGZmMDZjZWZkNzE5ODAyODk3MGQ1NTIwNzhlZjA5MDcyYjYyOWJlM2JiODQ4YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRhYTdiNTJjYTZiZTE0MTJlMjBlNzJhOWZiYzgzODM0ZDVhZjExNTA2ODIxM2JhNGQ2NzY4YTM5NGUzNWE0YWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kYXRlLXRpbWUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyYzBiZWI4ZWY1MDdlMDA2MmJlNjA5NGY3YmNjYWM0MzBkMWRkYjEyNDJmOGEyM2YxZmVhOWMwYjQ1YTA0ZmY0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE4ZGQ1NmMyMzVkMDU0NjVhZGZkYjA5NzRkZmU4OTNjZjU0MGQ0OTc0OTllZjQ3NzhjMjk3NzAxYTAzNzRjZDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYmxvY2tlZC1yZXBvc2l0b3JpZXMtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWFkNjBmZDBlMmM1Nzc2MmQ3ZGZhM2ZhMmQyY2M0MWVjMjcwYjY5NzQzNzg5NDEwOGNkMTM3ZGM5ODc5MmM4MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZkZDEyNDNjMzViZTQ4NWUyMjI5NGJmMDQ2MGQwYTUzNDZiY2MxZDg2Yjk5ZmM5ZjQ0NDQ1MDlmMGZjMzM0MGMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjczYmI3NDEyNTViYjc4NGVhYTcyZTE2NjdiYjU0NmYzYmRjNGFjNzBkZGQ1ZTg3MDlhNzNlNTkyODRmZDM0YjAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYmlsbGluZy1tb2RlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZmRjMjM0YTFlYWM5YmUyNTJlYTFmZGM1Y2U5YWE0YzNmZDM0YjM1ZGViMDE3MjdlMmVjNjliMzgxODljZGI4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGZiMGJlMGMyZGQ2MzFkY2MyOWVkNzJkMGVmODgxMTk4NDAwNGJjY2QxMTlmZTZhMjQ1ZGE0OTQwNTUwYTc1MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFlMGNjYjA3ODIyOWRiZjFlMzVhNDhkM2VmYmJiYTBkNzYxMmUwNTg4NTFkNWMyMTE2ODU5MjgyNGFkZjhhMjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5zdGFsbGF0aW9uLWFkbWluLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjYzA2YTgyMDViM2I3YmM0MWNiMjQ2NDUwNzUxOWUwYzZmMmJiMzJmOGQ3Y2Q3ZWU5MjE5YjRjZGU2OWMxNmE5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVlcC1wYXJ0aWFsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjhhZGZiY2VhZTg4NDMzOTFjYjBjZjZjZjY2MzdmM2UzN2EwMDBlNjc4NzJhMTgwOWVkMTIwMjk5MzJjYjhmMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tc2VydmljZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU3ZDBkMTNlNWExZWEyNDM4OWRkN2ZkMjIwYzViYTcwNWFjOTE5YzYwYjAyNzExZmY1NWYyMzg2NzkyMTVhMTUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXNhZ2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODAzMWQ1OGRjMTg2MzZlOTZiYTA1YjE3ZmVkNjE3OGU0NWQzMTdiNWQwNTJmZTQ4NzBiMmE4YmVjOTgzOTc5OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzZThlMjQ2NjI2OTc5NzRjNDgyM2Y2MmVmZjFkMTljMDk5YjRlZGRlMzZiMWU1ODg4ZTM3MWViYmVkYzQwNWRhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvY2FuY2VsYWJsZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjJlNWMzNWYzOWI5ZWIxMjE5MTY5NzczOGUwNzc3ZThkMjE5MmNiNDAyNTdiNzVlOGRhYmY2Yjg1OGI4YzFhNTQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2NsaWVudC1jYWxsLW1ldHJpY3MuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU1YWJjZGZiYmNhZDM2ZjM5YmE1OTI3YzBiMTkwZjAwMmE2OTc0ODljMTU0N2NhZTVlM2UwMjFhYzVmYzMwM2UiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjA5NzM3ZWI0ZjI0ODQ3ZWZlZTZlNmNiMzFjNGI3MzBmZWI1NjE3MDBlNDEyODBmY2FmNTlhNDEzZTk0OTU3YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZjhlNDI3OTQ5MWZkODBiNmYyMzEwOTY4NWMyZDIyNWQ5NzM5Zjk5NzE1MWZlNjM1MTk3YWVjYTVhYWZjZWUzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIxMzAzOWU1ZmVhMTkwMjkxMDYwNWEzNmNiMmY1ZDNhZjA0ZTBlN2U1MDMzNjkyZTNkMWQ5ZWZhNTczNWVjZjMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA0MDEyNzc5Y2QzZWMyMDBlZGYzYjM2ODZmNTI2YTk5MTAyM2IwOWYzMWNkM2I3NDYwZDhlNmQxNGM4ZjFlYmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbXMtcHJvamVjdHMtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2FlN2JmNjc5NjA5OWEyYzE3ZDI1MDY2ZDcwMTU2MmMwNjlmOGMwMjNhZGY0MWFiM2I0ZDZkN2Y5OGYxOGZkYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9vc3MtYWxsb3dsaXN0LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MTAwMmFlMzRkZjIxMzFmNjAzZGVjMmZjMTMzOTY4OTc5NWExMGI3YWFhNGVmNjc0ZWIyOGRlZTdlMWIzZDFiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZhNzczNjcxMDU4NmIwOTI5NmRiZmM5NjZhYTY2ZTAwMjU5YTRlODMzYTExMGE4NjVkMWVmYTI4ZTg5OWQxZGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2Mzg1ZjIxYjViMmUzOGFhNTdiZDdlNGRlOWUxYjA0YzQzODkyNjg4ZmQ5YzBkZWI3ZWRmMzUzZDhmNWRiYTYxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2F0dHJpYnV0aW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhjOGZhODMwNzAwZjMxZTFiYzAzMGRmMWJiNDhkNTY2MTIxMTkwODVlNGE2MzQ1YjgyMGJmOTNkMmI5NzBiMjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWZlcnJlZC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTIyYzRmMTczNjc5NWMwMDM2MDRhNWViZmU0MjQ1YWY0NWEyNzc3YmQ1YmI5Njk1MWRkMzA5NjBkOGEzNzQ1ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYjk1ZWM2ZTMzYTVmNzJhYjZjNTUyMWIxNDRmMjZlYTU4MGQxZjA0MDJjZTEyMDkyM2I4N2JiOGM3YjQ2ZmU5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbmljZS1ncnBjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhiN2JkNmRjYjdjNzBiMDRhMGU5NWUwNzJiNzU0YTkxMzdhYmNlMGViMzZjOGM5NWM0ZDA5MDJhMGJiZjY5OGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZXhwZXJpbWVudHMvY29uZmlnY2F0LXNlcnZlci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiODQ5MGZjOTFlZmNhMzZhNzQxMDk3YjBlYjYyYWRkZTYzMjM3ZGRkMTBiNWVmMWMzYWRmOWU3Mjk0M2Q5Y2JiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Byb3RvY29sLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUzMTY5MjYxNGJiYTZiYjQyZmJkMWU3ZTA3OWM5YjBjMTA5OTg2NmY3OGRiZWIzMzA2NjU1N2ZkY2VjYmJmYjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvY29ubmVjdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZjQ4MjY2ODEyNjFkYWYwMTBmZDMxOThkYzMxNDRiODZhM2RjYWYzNjE0ODU1NDViY2Y1NWViYzk5YWJlNzgxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVmODk3MDQxYWE2ZWY3NzBiMWE5M2ZmN2U4MWNjYTIzNjM2ZTE3OWVhYzk4YmIwZWQwZWZiMmRmNzRlZjM3MTMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hbmFseXRpY3MuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDMwZTExOGVkYWZhMWI5ODY2MzQ1ODZlZDg2ZjgxYzI2M2FkMjc2Y2FiZWJhYzcyMzcwZWNmMjQ5OGQ3ZDI0MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci93aW5kb3ctY29ubmVjdGlvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwZWJhMmM1NjA2YTk1NTk2ZmQwMjE0ZDg1MzIzM2RiZmI3YTRlNDM1Y2UwY2NmODZlNWJkNjA4Y2E3ZDQ0MjExIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVidWctYXBwLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhZDViMWUzNzg1ZmQ0N2I0OWQ1YThmYTA5M2Q3ODg2YmFiNjI4OTdlODg2YjMyZmNlZWQwMjczMTc4ZTJkOGUzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA2ZjllMmY0NDM1ZGM4MWE0YTdkOGMzYjZkYzlkZjc2MmRmZDE5ZDM0MWVkOGYxZTQzZjJlNjYyZDJmNjYwZGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMDY3ZGM4MzBiMmE1ZGUwZDUyZTc0ZTMyMzgxMjdlNjc5YTkzNmUwYTc3MGFhY2JjZTY2MTYyYjIyMDAzMTRiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTYwYjFlOGJjNmEwZmJiMDViMDQ4MGE0NTVmZTkwNWJmZWFhYWZlODI2NDg0ZWRhOTIwMTMxOGMzOWM0ZTVlOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjEzODY3ZGNlNmRkNGY5N2EyOWY0ZjhmZmM3NDg1ZTdmYzlkYTNhODg3YmI4NzlmNmE0YzhhNTg3YzUwNTdmYTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hbmFseXRpY3MuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZTI0ZDAyYmUwYzZlMzA1MmY1ZDhhODgxMDI5Y2ExOGE2Njk3OGNjMDk3OTZlNGM5ZjQzMTdhN2ZkNGMwODJhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dzcmVhZHkuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxYmEwNDI3NTBlY2RiYWI0ZDUxY2FiOGIzZTM3YmRkYmUxODE4NTRhNmQzZWViNzk0ZDU4YTI5MWFiMTM5MDkzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOWEzM2NjZTVjODQ0MzhjNGE4ZjU2MDAwZGJkZjQ5MWNhZWJlNjUzNmIzOGUzNTRmMDgwYTBlNDc4YzNkNGUwNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9saWNlbnNlLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2U3NTQ1NjUzNzBiODllZDQ3Y2ZkNjY0MmY4MjcxNjhkYjMyZTBmYjUyZDYyOTBjZjdlZDMzZjk0NzM4NTg0ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE5NzNkMWU0MDFhYWMzZjA4M2M2NTA4NmQzMWFiNTEwZGY1YTM5MzkxMzc1MjUwZDc4ZThjMDY5YTMwNWU5YjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hc3luYy1pdGVyYXRvci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTc2NjUzYzQwYjAwMWZkZTU4YTU5ZDJiMjkyYTRkY2FkNWQxMWRkYzQwZjMyN2RjN2UzMGVhZGZjYjhjODhlMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wbGFucy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDZjN2QxNmE3ZGNlMjgxZjQ3MWI4YTcxZGQ5YzIxOTNkYmY0ZWUzNTk2MTc4MzFiNjE3M2Q0MTA3YzhlYjcwYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9saWNlbnNlLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUzNGM1MmZmY2M4MWI4NDk3NTc1MTMzYjZjNTVhZDM4YWZlNWNmMDBjNGUxZDllOTExMDczNzNkYzQ5ZDg5NjAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9jb250YWluZXItbW9kdWxlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTQ2Y2RlMjVhZWVjM2YyYzI1NzNjMDc1ODBjNDAxOTBmMTBkODJkZjIyNjI3NGI2Y2QyNzA2N2RjYzYwZjExOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9oZWFkbGVzcy13b3Jrc3BhY2UtbG9nLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdjNGFiMTY3OWVhY2ZjMjg2ZTlmNGI0NDExMzYyYzYxZWVkMmIxOTBkOTliYWRjYmZkMGU1MjVkNGRhMmIzYmUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjQyYzJjYmQxY2MzYjBjNWZkMDBjODE4ODczMjFlYjc5M2U0YzE2YTYzMGU2OGMyMmRjZDBjMWY2ZDYzYmRhNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzZlMGQzYWMxYjIyZGIzMWNiY2NlNDE5OTE1ODMxOGVmOWI0MDJlZTk2OWFlZjRjOGU0ZDY1YTY4YjAzNzEyYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbmRleC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkNDNkY2M3YjQzMjQ3NzgzNTVkMWYzMzljYWJhYWQ4NmI2YWQxM2RjNmYyNmUzODg5ZDhlNGE5M2ExODA3ZDYzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL2Nvbm5lY3Rpb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVkY2Q0NjVhYzgzZDEyMGI3ZTE2MWY3ZGNiYzhmNmRlM2Y3MWM4YWVhYjBiNjQ3MzNhZjM5MWNiMWE5ODFhMWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmNWU2ODQyN2JhZmVlN2VhYTg1MTY5ZGMzNWExYjVlN2RiZmU2YTYzZjU0ZjliMjdjYmQwYjYzMzE4NGMyYjVlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODEwZjI3MjE1YjZkNGVlMmVhZGU2MjU1NDg1NWJlYWQzMmJhYjExN2JiYzM0NTgzOGZlODA3MDY0MDA3MDVkNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzFjNWRmOWQ5OTQ5MmZjYWI5NDM3Njk5Njc1MmYxMTc1OTNkNjM1MWYwNmVlYTAxZjc3ZGUxZjFhN2MyNTg0MCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzkzODYzYzk2MjA5OWUxN2YzYjQwY2FmOWVlMjYwOGU5OGZlOTRmYTVhYmIzOWM0Y2ZjNTVhZmNkYTE4MTMyNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2NhbmNlbGFibGUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjNiYWNiNjgyYzkwY2Y4MGVlYTIyZWViODc0MjkwOTkxMDMzNTBjYjNlNmVlOWFkYzM5ZmMxMDU5ODUzOGE5YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjOTE4ZWQwNDI5YjQzYTliZDYxNTI0ZjZhYzRjZmY5MDM3YmVhYTU2NDNhNTUxMjhlNjlhMDBlNDA4OWJmZDdjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVlcC1wYXJ0aWFsLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkMWUwMTJhNzFiZjJmZGYwYjhlZDViYzA0YTQ0ZGE5Mjk2ZTg4YTM3YTAzOWFiNDc5Y2Q4ZWI2ZDMzMjk4ZjY3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE3NGE4ODFhOTliNjI3MTlhOWRhMWMxYjNiMjZlZWUyM2U0OWU2MmE3ZTg3YzY3NTU5MGRhMDM5NTZlMDkzYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9ibG9ja2VkLXJlcG9zaXRvcmllcy1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYjkwODhjODg5MjM0NTcyZmI4NGExZDc5N2JjMzIzN2YwYmUwMWVmNjFmOWVjMzdkOWFkMGE3OTk3MjQ4MmU3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2V4cGVyaW1lbnRzL2Fsd2F5cy1kZWZhdWx0LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE1NDUzNTUxZDcwYjI2NzNkMGI1MzBiOTcxYzEzM2Q0OWZkNTFlZTFlYTMxZTA2ZjAzM2I0YzMyNDJlMjE3YTIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmZWJiN2Q4ZGNmYjg3MGEzMDdkM2FjNzhhOThmMTU3MTczMWU5Mjg2NTYxNGEzMDMyZTMzYjQ0Yzk4ZjU2Y2UwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGYwZDc5NzRkYWYzMjUxYTQ1MDY2NjU3NTk5YTA2NDE5ZWIwZGU1NmU3MDE5MWU0ZDM1YTU0MDFiYjU1ZDY2NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg2ZGM3Nzk1MTEwNzE4ZDZlYTdiMTllMWIwMzE3Yzc2MGYzZGRmNjcyYzExOWQ3Nzc4YzlmMjJiOWE4YTBmNjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9sb2dnaW5nLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzViOTdlZDZkMzNiMmFjNWRmM2RmYzQ3NTY4MTMyZDMyZTUxMDFlYWYyODNjNGQxMzUzODE3ZTQ1NDc2NTNlNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9jb25maWdjYXQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTBkNWY4Mzk3ZmNlNjUwYWYyODU1ZDE2ZmQxYjVkYjNkZmU3OTFmNWY5MDRhNzQ5YmQ1ZjkyMzI1NTMzMzIwNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDg2OGVhMjliZjljNmFjOWFmNDE5YmE0ZTVlMTg4Zjk4ZWU3YTI3NjE0MjMzODU3MzJjMDZhYzEyYTAxYTdjMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dhcmJhZ2UtY29sbGVjdGVkLWNhY2hlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZlODllOWRkNmVmMzMwMGMzMGFiNTUxNDY2Y2NjYTYwMTZlNDJkNDdiZGE1NTI0MzczMDNlMDUxYWI0Mjc1MDEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjg4OTIxMTZjMjI2MjA2MmI5ZTljMzI0MDBkN2M4YWFlYjc2ZDYyN2U4Nzk0OWY4NTU0YWY4ZWYwZjdmZWNkYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvZXJyb3IuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhlNzdlMTUwYmVkZjUxNTcyMzkwMTA3M2ZhM2Y0OGI5NzE3MGEwZDZkZTk1NzY4M2NkZjg1ZWVlNjU5MDNmNzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWRtaW4tcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzRkZWNkZDYyMWQ3M2RlYWFmYTY5ZjFhNzUwOTdlNjNkYTUyM2YyMzBlNDE0NDVlMDVlYTY4MGM4NzVkODBmNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hbmFseXRpY3MuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmEzZjAzZmU4MDY4MDFiNjdiNWQxNjUxN2FhMTk1MWI4YjQ5NmRhODM1YTkwMTZhMjYzOTcyNmNjYmFjNzZjZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9iaWxsaW5nLW1vZGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOWI5NmJlNTVjYWMwMjQxYWFkY2FmMjhiYjcyYWQxYWY4NWU1YzExNmJkZjBiN2Q1MWQ1OWU2NTZmMmJjMWRlYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvcHJveHktZmFjdG9yeS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3OThmMGQzMGM5MGE5YzA1NjJjZGQ5ZmQzOTdkOTdmMDU4NTFmNjA4OGFmN2RmODAyY2Y3NmRhYjdjOGMyYjhmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZhYjg5MjNhNDFkNTVlZDY2MjBmYzdhMjNjNDE5OWRjNWIzODk5OTA4MjRmZjQyNzM2NjI4NmU4N2VhNzk4ZmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd2ViaG9vay1ldmVudC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzFlODk5ZDJjNjE2ZWRiYmY4YjcxNGYwZTc2ZDU5OTgyYmJhMDNlODRiYzc3YWM5ZjMyYWE4ZGUzYzZiZDdmNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZmVycmVkLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDEwMmI5YWRmZDQxNzhmODkzMmM2NWEzOWJmZjYzODdkMWJkNTgwMTU3NWM1ZGIzNzE1YzQ4MDNjMTcyNTk5MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdHRyaWJ1dGlvbi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmM3NDc4Y2E2NmI2ZWM1MGY3ZmNmYmE0MjA5NDI5YzZjYTcyODcyNGNhNDA2ZGYwZmE2NWY1ZDkwMGNmNzVhMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjM1NDUyMGUxMzQ2ZDg2NzRjY2Y4NTEwNjk1NDU3OTllMDRiY2QzMjUzNjk4NGQwNDI0MDRmODIyMjE0MjJmOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RhdGUtdGltZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ODc4YmViMGY3Y2VmMmZhODkyNjY1NWU1YzU5OTBjMDlhNmI5YzgwYzA0MTY2MTAyNGJiMGIwYmYyMmM4YTE5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZkZmU4YzNkNTk4ZjAxNTE0NjQzMjc2ZmQxZDVkNWU4YTUyYzM2N2JkYWQ5OWRmNzgwMTk1YTFhZTBhNzlmNmUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGY4ZDQxMTYxMWIwYjIxNDRiOWQ5MTEyYjFhZGQ5YjQwMzIzOWZjNDg5YzQzOTIzMGJjYTYyYzgwNjVlZTQzZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTViOGExODM2ZmFjMDRmYzdhMzg2MDhmMjQ0NGJiODZmMzBlNDJjZTJiZDhiMjhmN2MxNWVhZWI0NWMyN2NiMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hZG1pbi1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwZGNkMjNiMTIyMzRkMzRjZWZiNDI2ZjFjMjVjNzg5ZTM5NzcwNjY3NzMwOTBmY2MxNjU5ZTk2NGIzMWM4M2E3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2JpbGxpbmctbW9kZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiMzcwYjQwYWI4YjYzMTU4YzQxNTNkYTBjMGJhYzNhMWU0MGNmNDliNjQwMTcyYTUwNmRiZjY5NzFjNDVhZWVkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9wcm94eS1mYWN0b3J5LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiODYyYTY2MjViYjYwMWQxOGI2NTI1ZmFkOGJmNzgzMjY1NTIyMmJjMTk1OGVmYzU5YzViMWE1YTBhZDg2MTgzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVmZXJyZWQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTg4ZThlZWJmZDM4OTA5OTA4ZTMwOGM2MDg2YmUzNGMxZGM5YWM1MzhiYTM4Zjg1NWU5MDMwMWI3NDc4NDkxYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvY2xpZW50LWNhbGwtbWV0cmljcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwM2FhM2M1OTBmYzdkZGI2YzI1ODljZTkwYmUwZjhkYzYyNDk1NDRiMDkwOWRiZmJlOTQ1Y2M5MTcyYTNjODdmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2V4cGVyaW1lbnRzL3R5cGVzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA2YmViNjhiZjUwMzFkOTkxZTViMThhMmIyZTg3Yzg3NTVhMjg5NmY2NjgyZjkyYmFmMmVhNTc4ZDY0MGQxMDgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlMmI0MjhjYzZhN2U5YjI1NjVjMTIzYzhjNzQ1ZDA5NGUzMDUyYTQzNjQyZWNmOWIyOTc0NDRiMGJkYmMxNTQ2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luZGV4LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImUzMDViYjk0NjgxYTcxZjE2Y2M4MDc1ODY2MzFhYmM4YTAxZGQxMTdhMWM3ODA1M2VjNDhlY2I2YjQ0YmQyY2YiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd3NyZWFkeS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MGFlZWE0Y2I2NzIyYmEyMDNlYTQ3MGI4ZDIzZGE4MzhiM2UzNTQyZjE3MzljODQwMzgwMjVkZTBlYzVhZTMyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVidWctYXBwLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI3YWVlMTAyMmNmZWVjYWI2OWJhMGM1YjA5MTU2YjcwYWYzMDgzMzY3NDk3ODZkNTNjZWNkZGMwMzkzOWFhNGEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTQ5NTdjYzgwNDQ4MGUxNjJmMWVkYWM4NzY4NDMzNDY5MDJjZTRjODIxODljN2E5ZjI5NGMyMDA4MjU3ZGFmNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hY2NvdW50aW5nLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA3MTM4Mjk4NjJiZGU3YTAwZDhmYmVlNDE3Zjg3MjRhODcwMmNlMDU5NzNiMjRkMWRjYjc4MmVmOTVkOGRlMjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvb3NzLWFsbG93bGlzdC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3MjJmMzNhNzQ3NzU0MDE4NWE2MWVhZTY4N2YyOWYxZDNjYWFjZmE0NDJjOGE0ZGQxM2I2ZWY3NDVlMGZmOGFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2MmFkZGNiYTc3MDM5NTBiMTE1NmQ3MzU2YjkyN2JhZTM4Mjk5ZGI5NTdhMTdmZDE4NDYyNjQxNDU5NmUwNTM2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjNjNjkwM2Q3MzdlNzNiNzdlYTMyMzgxZWY2ZjVmMjAwYzBjOTIzYWFjODI5M2ExN2MwNjdjZjQ3MTY0ZWNmYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9vc3MtYWxsb3dsaXN0LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRlZGU2NDkzNmU5OGM0ZTUwYTU5Y2M0MzRkYjgwYTk1YzlhNzQxYzM3MTdiZDgxZGE5MmNhNWNmMTBmYjVkZmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXNhZ2UuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRmODUwOGQ1YWY2ZTZmNzcxZDAyNzk5MWNjMjNhZDA3MmFhNTdiNzM1ZjI5ZDczZmZkMTA0ODg3MzNhNWY3MGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZXhwZXJpbWVudHMvY29uZmlnY2F0LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI0NDc4YmEwNTA3NjIzOWY0MDVlMGYzMjc0YjgwMjc2ODQ0YmZjYTAxYTU3ZjMzNjk3MzI0YmIxN2ViMmIxNzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE3ZmQwMjkzZDUyYTFhMjkwZmQ3NzJhMmI3N2VkNmM3YjhlMmZmNGI3Y2Y1NTA0YTMxNDEwM2ExMWUwMGZjOTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmY2ViMmI4MGVjYjYyMWQwMTQ5NTJjNzNjMWYzNTEyNjQ5ZGQyNjRiZTBhNDY3Yjg0MjEwMWVjNjI3NmZkZGVhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk5NDIyMzU4NmNhNThiMzNhYzUzYTE1ODZkNzg1NGFjYjM3MjY2MzlhYzNlYTYzZWQ0ZmJkMTIxOTk1NWM3Y2IiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9zZW1hcGhvcmUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTRmNmQ5ZjcxYTk3OTljNzk3MTg1N2RhZGE5YzZkODNmNTg0ZTc0MDg5NGUwNTg5ZjZjYjZlOTZiY2YxODFmOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbnYuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlMGU3MWQwMTkyMDk1ZTBhN2ZjMzIwZGZkNGRiNTI2MTQ5ZGQ4YzgxOTA4ZDdkNGE1MGRmZmE5YzcyMTRiNmIwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2VtYXBob3JlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY0N2U2YzU0NmY3NmFiMGNiNjEzMjBmMThiMzI0ZTAxYTFmNDU1NDJlMzQ3OTdlOThlYWJiNWJlNmIyZTIwYmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdHlwaW5ncy9nbG9iYWxzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdjZDg0OTVkZWQ0ODAwNzkyMDc4NTgxZDMyMzA1OTZmOWRiNDQxNjE1ODQ3YzA1NjA0NmJiNTYxMWU1NWRkZTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9uaWNlLWdycGMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2YwZjlmNDRhNTVjYTI3OTVjZWE5ODlmNDczODM5OWE1NWNlZTk5NTViZTFiZjVjMzZhNWI2ZmE5ZTVhZDJiNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2x1c3Rlci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE4ZGQ0ZDQ2ZmU4NWNlNjkzYzdjNTQzMWVhMDExOWYxYTlhNWY1NTdhM2ZkODI3MTc0NTZjYThkZGU4ZTY2OWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI5NjFkMzA1MDMyZTE1N2FiNmUzYmJlMzdiNDFhYzRmMWQ0MzBlYzUyMTM2N2YwYThmMjI4ZWEzZTk3YzAyMzciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjc3YmI1MzJmOGFkMmMyYmZmZWQ3ZmUxYzUzMjUyMDlhOGQ1NWI3YTM2NGM2MTRjNmQ0NGNhMzczOWU3YzBiYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhjYzg4MGQ0OWQ1YzJiMTZjNjVlZjUwY2U2Y2M0YWYwZTgwMzM4ZmNmNzQzODc1NzdhZDE5YjljYzc4MzNiMjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjYxODk4ZmU1MDM5YTA5NmI4ZDkxODczZWM3ZGVjM2Q1YjIwMzRlNjkxOGEyOTg1NTY0MzNkMThjZjAyNGRhOGQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9yZXBlYXQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2E4MzBhZDQzOWNkMjg3NzA0ZjEwZjljYzIyNDJjNGFjMDVjMWU5MWFmMzFkNTUwOTA2NDQ4YjZmOTI1MjMzZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTVmMjNlNmZlOGM1MzA0YTg1NTU4MWY0ZDNmZDZhMjQxN2JjYWM4MDBjZjA2OGYyYWJhOTNhYjA4MTA1MzUxOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL21ha2UtbGluay5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiOTIyMDg5MTVmMDY1MGIyODJkMWJkZjRmYTAzZDljODIwMzUyYWViZTg3MGJhMzU5ZGIzMDhlMWQ4M2U2YzAyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BheW1lbnQtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWUyOGEwYWM2MzhhMzFhMTBkZDNhNzQzMTNlMjkwMTRhM2UxZGFhM2IzZTA2NDJmYmE2Y2U3Mjg5YjlkZjRhMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjgzZWMzZmIwN2FmMTY4YmIwNDdkNGIyY2VlMWFlNmEzYjQ1OGM1MzE4YWI3ZTAyZjQxMWNhNzJiMmRlZWEyYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hZG1pbi1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiN2FlOGU1YzZhYzYyYzlkNWZlMmJjNjZiM2ZkZTFhN2NkZmJhYjM4NTRmOTZiY2FlMjI2YmRhYTk0MjliMjcyNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvcHJveHktZmFjdG9yeS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmZmM3YjZhYmNhMDYzZWMyNWEwYmI2MjE5N2VkMmU5NDAxZTBkOGQyYjQ3MWU4NTBiNjFmYzJhN2M2NzBhYmU5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg1MTIyMTg1YWUxM2JhNTgyNzQyMDk3NDVjYTAxZGY3NmUwMjc5MzNiNmMxMThhY2MyYmE0NzExYzUwMzRkYzEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1M2EyNDcwYzA2ZGU2MjAxMTIxNjU3ZjdlNDYwN2FhODE3NTRkNmE4NWI5ZjBkOTdhN2FhNzhlMjZkNTVlZDhlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcmVwZWF0LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMmYxNGI0OGYxNDliNTNhY2Q2NThmNjkwNWMyYTBkN2VmNzUzMzRhZDY5MjMyYjI3YTk3MzkwZGE3YWJlNzhjMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2Qtc2VydmljZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDFhMjA0NDc4ZTQ5MDdmZmUzYTFiM2Q5NWFiYmM1YzhkNmM5M2Y0YTljZDQ5ZDY1OTI2M2MxNmQ0Yjg1MmUwMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjZmZDE0OTEwNTc2MzU0NmRjMzZhOTg2N2UzNDczMTkwMzhlZWZlNDIyOTk2ZjY1Y2FjN2YxYzFiZmZlYmZkZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9vc3MtYWxsb3dsaXN0LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTRmZWQyZDkzNTkwYjIwMTg2NzA5MGQ4YjhmNWViMzc5NzhlZGFmYjc1NGM5MWZhZDdkN2E0YjZlZmZlNmRhZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU0MjBhYWQ0MmQ3N2JjMWI1YzhjNWVhZjc3MTQ5NjI0YjdkYjJhZWJmYjIxODZiMmY5MmIwNTYwN2IyYzViMWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NjJlZDNiMmQ4YzkyODAxMTYyOTFkOWViMjg1ZWIyYmUwYTFlYzMxNGRjNzRmN2E3NzhmZjVkNDMzNzcyZTQ1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9ub2RlL2Nvbm5lY3Rpb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjZDQxODk5YWMyOWU3ZmI3ZTdjYTcxMTliM2QyYjdlMGQxNTM1MTA2NmMxNWFjMzlkMGJjNjk2ZjlmOGVkNmQ4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhhM2YxNTQ4NDZmZDY4MTExZTA3ZGIwNTNiM2ZjZGY0OGY0N2JjY2NmYWE5MGZmMDQ5OTU0OGU0ZWZjNzZlZDkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbXMtcHJvamVjdHMtcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDc2ZjhmZmU1MjFjOTliZjNlMWY1YTU1NmRlYmRjMDQ5ZThiZGM1Y2I1MGJjODE1YjExNjAyYjFiMDdmZmVmMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzU3MDc4ZWUwZTMxMzkwMTlkMzJhM2EwODhkOWJlY2MwMDU4MzFjNTIwNDI5Y2YyNjZhN2JjNTgxZWRiMzUwMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9leHBlcmltZW50cy9jb25maWdjYXQtc2VydmVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1YThkOTNkMjUwYzg2MzVmNDM1Y2EwNmUwYjI5ZmM0MmFkZTQ0ODg5MTU5ZmJiOTNlZjE5YzU3NWNhNmQ5YzVkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvamFlZ2VyLWNsaWVudC10eXBlcy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOWQ4NzVhM2M2ZjQ5N2VkMWY5ZTNiOTgwMDE5NDVmOGJkMTk3YjE5OTlmYjZhZDg3ZTE3OWQ0NzdkMjJmZDc4MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzYTQ1ZTI1YTVkMWNlZDA5ZWYxYjU4ZTRhOGQ4YTllMjIwYmU2NGY0NWFlYmMzMTI4YjU1NGRhNGM0MzA4OGYxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2V4cGVyaW1lbnRzL3R5cGVzLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVkNGZiMzVhYTJiMGQ2ODZiMjgzOTViNWU0MzUxZDBhMDNhMGIxYzNkOGFiMTZlYjFkNmVjZjkzZGYxNzQzZDgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hc3luYy1pdGVyYXRvci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY1MGNjNWJjZGRhNmQ2MmFhZDk0Nzc2OTM0NTgxZDVmMTJjOTBjZjgxYThhOTdkNmJlYzIxYTdiYzVkNjBlZmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9jb250YWluZXItbW9kdWxlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNlMzg3N2ZhNDI3OGQ4ZTMyZjRiYmYwMjNjZjJlOTJlMzQ4YmU2ZmZkNmQ5NWVlZjAzYjUwYzlkYmI2NTMzOTIiCiAgICAgIH0KICAgIH0KICBdLAogICJwcmVkaWNhdGUiOiB7CiAgICAiYnVpbGRlciI6IHsKICAgICAgImlkIjogImdpdGh1Yi5jb20vZ2l0cG9kLWlvL2xlZXdheTowLjcuMy04NTM5ZDkyQHNoYTI1Njo1ZmY2MDhkMGFjNDlhZTMzNjAyMTRkNTZhMWIzZWIxNTYxMzA5Y2MzMWQzZTYyYTU3YTI4MmY0ZmY1YzAxNTg4IgogICAgfSwKICAgICJyZWNpcGUiOiB7CiAgICAgICJ0eXBlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9naXRwb2QtaW8vbGVld2F5L2J1aWxkQHlhcm46NyIsCiAgICAgICJkZWZpbmVkSW5NYXRlcmlhbCI6IDAsCiAgICAgICJlbnRyeVBvaW50IjogImNvbXBvbmVudHMvZ2l0cG9kLXByb3RvY29sOmxpYiIsCiAgICAgICJhcmd1bWVudHMiOiBbCiAgICAgICAgImxlZXdheSIsCiAgICAgICAgImJ1aWxkIiwKICAgICAgICAiLS1kb2NrZXItYnVpbGQtb3B0aW9ucyIsCiAgICAgICAgIm5ldHdvcms9aG9zdCIsCiAgICAgICAgIi0td2VyZnQ9dHJ1ZSIsCiAgICAgICAgIi1jIiwKICAgICAgICAicmVtb3RlIiwKICAgICAgICAiLS1jb3ZlcmFnZS1vdXRwdXQtcGF0aD0vdG1wL3RtcC5CTHFYaU5FOGUyIiwKICAgICAgICAiLUR2ZXJzaW9uPXd2LWFkZC1pbWFnZS1idWlsZHMtdG8tZGFzaGJvYXJkLjAiLAogICAgICAgICItRHJlbW92ZVNvdXJjZXM9ZmFsc2UiLAogICAgICAgICItRGltYWdlUmVwb0Jhc2U9ZXUuZ2NyLmlvL2dpdHBvZC1jb3JlLWRldi9idWlsZCIsCiAgICAgICAgIi1EbG9jYWxBcHBWZXJzaW9uPXVua25vd24iLAogICAgICAgICItRFNFR01FTlRfSU9fVE9LRU49WDNiTmF0WVB1ZElKY0N6NmtGbFRuNTRwcnVtUUFxR2giLAogICAgICAgICItRFJFUExJQ0FURURfQVBJX1RPS0VOPWRlYTEwYzhmYjU4NzU1ZmQ1MWFiOTk2Y2NiYWFiODk2MmY1ZTkwNmFiNDQxMmFlNjc3OTk2ZWE3NGU4NWFlMzUiLAogICAgICAgICItRFJFUExJQ0FURURfQVBQPWdpdHBvZCIsCiAgICAgICAgIi1EbnBtUHVibGlzaFRyaWdnZXI9ZmFsc2UiCiAgICAgIF0sCiAgICAgICJlbnZpcm9ubWVudCI6IHsKICAgICAgICAibWFuaWZlc3QiOiB7CiAgICAgICAgICAiYXJjaCI6ICJhbWQ2NCIsCiAgICAgICAgICAiZ28iOiAiZ28gdmVyc2lvbiBnbzEuMTkuMiBsaW51eC9hbWQ2NCIsCiAgICAgICAgICAibm9kZSI6ICJ2MTYuMTguMSIsCiAgICAgICAgICAib3MiOiAibGludXgiLAogICAgICAgICAgInlhcm4iOiAiMS4yMi4xOSIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAibWV0YWRhdGEiOiB7CiAgICAgICJidWlsZFN0YXJ0ZWRPbiI6ICIyMDIzLTAxLTA5VDEyOjIyOjUzLjk3ODc2NTY1NloiLAogICAgICAiYnVpbGRGaW5pc2hlZE9uIjogIjIwMjMtMDEtMDlUMTI6MjM6MjEuNDU1MDM3ODYyWiIsCiAgICAgICJjb21wbGV0ZW5lc3MiOiB7CiAgICAgICAgImFyZ3VtZW50cyI6IHRydWUsCiAgICAgICAgImVudmlyb25tZW50IjogZmFsc2UsCiAgICAgICAgIm1hdGVyaWFscyI6IHRydWUKICAgICAgfSwKICAgICAgInJlcHJvZHVjaWJsZSI6IGZhbHNlCiAgICB9LAogICAgIm1hdGVyaWFscyI6IFsKICAgICAgewogICAgICAgICJ1cmkiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9naXRwb2QtaW8vZ2l0cG9kLmdpdCIsCiAgICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAgICJzaGEyNTYiOiAiOWZhMDI2MWY1Y2IxZWY0M2U5MzY3NjYxOGVkMzdlYjRhYWQ5MWM3NSIKICAgICAgICB9CiAgICAgIH0KICAgIF0KICB9Cn0=","signatures":null}
|
|
2
|
+
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
import { User } from
|
|
9
|
-
import { oneMonthLater } from
|
|
7
|
+
import { v4 as uuidv4 } from "uuid";
|
|
8
|
+
import { User } from "./protocol";
|
|
9
|
+
import { oneMonthLater } from "./util/timeutil";
|
|
10
10
|
|
|
11
11
|
/*
|
|
12
12
|
* Subscription and acocunting data
|
|
@@ -33,7 +33,7 @@ export interface AccountEntry {
|
|
|
33
33
|
/**
|
|
34
34
|
* credit: end of validity
|
|
35
35
|
*/
|
|
36
|
-
expiryDate?: string;
|
|
36
|
+
expiryDate?: string; // exclusive
|
|
37
37
|
|
|
38
38
|
kind: AccountEntryKind;
|
|
39
39
|
|
|
@@ -46,26 +46,26 @@ export interface AccountEntry {
|
|
|
46
46
|
description?: object;
|
|
47
47
|
}
|
|
48
48
|
export namespace AccountEntry {
|
|
49
|
-
export function create<T extends AccountEntry>(entry: Omit<T,
|
|
49
|
+
export function create<T extends AccountEntry>(entry: Omit<T, "uid">): T {
|
|
50
50
|
const result = entry as T;
|
|
51
51
|
result.uid = uuidv4();
|
|
52
52
|
return result;
|
|
53
|
-
}
|
|
53
|
+
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
export type DebitAccountEntryKind =
|
|
57
|
-
export type AccountEntryKind =
|
|
56
|
+
export type DebitAccountEntryKind = "session" | "expiry" | "loss";
|
|
57
|
+
export type AccountEntryKind = "credit" | DebitAccountEntryKind | "carry" | "open";
|
|
58
58
|
|
|
59
59
|
export interface Credit extends AccountEntry {
|
|
60
|
-
kind:
|
|
60
|
+
kind: "credit";
|
|
61
61
|
expiryDate: string;
|
|
62
62
|
}
|
|
63
63
|
export type Debit = LossDebit | ExpiryDebit | SessionDebit;
|
|
64
64
|
export interface LossDebit extends AccountEntry {
|
|
65
|
-
kind:
|
|
65
|
+
kind: "loss";
|
|
66
66
|
}
|
|
67
67
|
export interface ExpiryDebit extends AccountEntry {
|
|
68
|
-
kind:
|
|
68
|
+
kind: "expiry";
|
|
69
69
|
creditId: undefined;
|
|
70
70
|
}
|
|
71
71
|
export interface SessionDebit extends AccountEntry {
|
|
@@ -80,9 +80,7 @@ export interface CreditDescription {
|
|
|
80
80
|
}
|
|
81
81
|
export namespace CreditDescription {
|
|
82
82
|
export function is(obj: any): obj is CreditDescription {
|
|
83
|
-
return !!obj
|
|
84
|
-
&& obj.hasOwnProperty('subscriptionId')
|
|
85
|
-
&& obj.hasOwnProperty('planId');
|
|
83
|
+
return !!obj && obj.hasOwnProperty("subscriptionId") && obj.hasOwnProperty("planId");
|
|
86
84
|
}
|
|
87
85
|
}
|
|
88
86
|
export interface SessionDescription {
|
|
@@ -93,11 +91,13 @@ export interface SessionDescription {
|
|
|
93
91
|
}
|
|
94
92
|
export namespace SessionDescription {
|
|
95
93
|
export function is(obj: any): obj is SessionDescription {
|
|
96
|
-
return
|
|
97
|
-
&&
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
return (
|
|
95
|
+
!!obj &&
|
|
96
|
+
obj.hasOwnProperty("contextTitle") &&
|
|
97
|
+
obj.hasOwnProperty("contextUrl") &&
|
|
98
|
+
obj.hasOwnProperty("workspaceId") &&
|
|
99
|
+
obj.hasOwnProperty("workspaceInstanceId")
|
|
100
|
+
);
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
|
|
@@ -111,11 +111,11 @@ export namespace SessionDescription {
|
|
|
111
111
|
export interface Subscription {
|
|
112
112
|
uid: string;
|
|
113
113
|
userId: string;
|
|
114
|
-
startDate: string;
|
|
114
|
+
startDate: string; // inclusive
|
|
115
115
|
/** When the subscription will end (must be >= cancellationDate!) */
|
|
116
|
-
endDate?: string;
|
|
116
|
+
endDate?: string; // exclusive
|
|
117
117
|
/** When the subscription was cancelled */
|
|
118
|
-
cancellationDate?: string;
|
|
118
|
+
cancellationDate?: string; // exclusive
|
|
119
119
|
/** Number of granted hours */
|
|
120
120
|
amount: number;
|
|
121
121
|
/** Number of granted hours for the first month: If this is set, use this value for the first month */
|
|
@@ -124,6 +124,7 @@ export interface Subscription {
|
|
|
124
124
|
paymentReference?: string;
|
|
125
125
|
paymentData?: PaymentData;
|
|
126
126
|
teamSubscriptionSlotId?: string;
|
|
127
|
+
teamMembershipId?: string;
|
|
127
128
|
/** marks the subscription as deleted */
|
|
128
129
|
deleted?: boolean;
|
|
129
130
|
}
|
|
@@ -145,8 +146,7 @@ export interface UserPaidSubscription extends Subscription {
|
|
|
145
146
|
}
|
|
146
147
|
export namespace UserPaidSubscription {
|
|
147
148
|
export function is(data: any): data is UserPaidSubscription {
|
|
148
|
-
return !!data
|
|
149
|
-
&& data.hasOwnProperty('paymentReference');
|
|
149
|
+
return !!data && data.hasOwnProperty("paymentReference");
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
|
|
@@ -155,41 +155,56 @@ export interface AssignedTeamSubscription extends Subscription {
|
|
|
155
155
|
}
|
|
156
156
|
export namespace AssignedTeamSubscription {
|
|
157
157
|
export function is(data: any): data is AssignedTeamSubscription {
|
|
158
|
-
return !!data
|
|
159
|
-
|
|
158
|
+
return !!data && data.hasOwnProperty("teamSubscriptionSlotId");
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export interface AssignedTeamSubscription2 extends Subscription {
|
|
163
|
+
teamMembershipId: string;
|
|
164
|
+
}
|
|
165
|
+
export namespace AssignedTeamSubscription2 {
|
|
166
|
+
export function is(data: any): data is AssignedTeamSubscription2 {
|
|
167
|
+
return typeof data === "object" && data.hasOwnProperty("teamMembershipId");
|
|
160
168
|
}
|
|
161
169
|
}
|
|
162
170
|
|
|
163
171
|
export namespace Subscription {
|
|
164
|
-
export function create(newSubscription: Omit<Subscription,
|
|
172
|
+
export function create(newSubscription: Omit<Subscription, "uid">) {
|
|
165
173
|
const subscription = newSubscription as Subscription;
|
|
166
174
|
subscription.uid = uuidv4();
|
|
167
175
|
return subscription;
|
|
168
|
-
}
|
|
176
|
+
}
|
|
169
177
|
export function cancelSubscription(s: Subscription, cancellationDate: string, endDate?: string) {
|
|
170
178
|
s.endDate = endDate || cancellationDate;
|
|
171
179
|
s.cancellationDate = cancellationDate;
|
|
172
|
-
}
|
|
180
|
+
}
|
|
173
181
|
export function isSame(s1: Subscription | undefined, s2: Subscription | undefined): boolean {
|
|
174
|
-
return
|
|
175
|
-
|
|
176
|
-
&&
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
182
|
+
return (
|
|
183
|
+
!!s1 &&
|
|
184
|
+
!!s2 &&
|
|
185
|
+
s1.userId === s2.userId &&
|
|
186
|
+
s1.planId === s2.planId &&
|
|
187
|
+
s1.startDate === s2.startDate &&
|
|
188
|
+
s1.endDate === s2.endDate &&
|
|
189
|
+
s1.amount === s2.amount &&
|
|
190
|
+
s1.cancellationDate === s2.cancellationDate &&
|
|
191
|
+
s1.deleted === s2.deleted &&
|
|
192
|
+
((s1.paymentData === undefined && s2.paymentData === undefined) ||
|
|
193
|
+
(!!s1.paymentData &&
|
|
194
|
+
!!s2.paymentData &&
|
|
195
|
+
s1.paymentData.downgradeDate === s2.paymentData.downgradeDate &&
|
|
196
|
+
s1.paymentData.newPlan === s2.paymentData.newPlan))
|
|
197
|
+
);
|
|
198
|
+
}
|
|
187
199
|
export function isActive(s: Subscription, date: string): boolean {
|
|
188
200
|
return s.startDate <= date && (s.endDate === undefined || date < s.endDate);
|
|
189
|
-
}
|
|
201
|
+
}
|
|
202
|
+
export function isCancelled(s: Subscription, date: string): boolean {
|
|
203
|
+
return (!!s.cancellationDate && s.cancellationDate < date) || (!!s.endDate && s.endDate < date); // This edge case is meant to handle bad data: If for whatever reason cancellationDate has not been set: treat endDate as such
|
|
204
|
+
}
|
|
190
205
|
export function isDowngraded(s: Subscription) {
|
|
191
206
|
return s.paymentData && s.paymentData.downgradeDate;
|
|
192
|
-
}
|
|
207
|
+
}
|
|
193
208
|
export function calculateCurrentPeriod(startDate: string, now: Date) {
|
|
194
209
|
let nextStartDate = startDate;
|
|
195
210
|
do {
|
|
@@ -197,19 +212,19 @@ export namespace Subscription {
|
|
|
197
212
|
nextStartDate = oneMonthLater(startDate, new Date(startDate).getDate());
|
|
198
213
|
} while (nextStartDate < now.toISOString());
|
|
199
214
|
return { startDate, endDate: nextStartDate };
|
|
200
|
-
}
|
|
215
|
+
}
|
|
201
216
|
}
|
|
202
217
|
|
|
203
218
|
export type MaybeSubscription = Subscription | undefined;
|
|
204
219
|
|
|
205
220
|
export interface Period {
|
|
206
|
-
startDate: string;
|
|
207
|
-
endDate: string;
|
|
221
|
+
startDate: string; // inclusive
|
|
222
|
+
endDate: string; // exclusive
|
|
208
223
|
}
|
|
209
224
|
|
|
210
225
|
export type MaybePeriod = Period | undefined;
|
|
211
226
|
|
|
212
|
-
export type AccountEntryFixedPeriod = Omit<AccountEntry,
|
|
227
|
+
export type AccountEntryFixedPeriod = Omit<AccountEntry, "uid"> & { expiryDate: string };
|
|
213
228
|
export interface AccountStatement extends Period {
|
|
214
229
|
userId: string;
|
|
215
230
|
/**
|
|
@@ -221,9 +236,9 @@ export interface AccountStatement extends Period {
|
|
|
221
236
|
/** Remaining valid hours (accumulated from credits) */
|
|
222
237
|
remainingHours: RemainingHours;
|
|
223
238
|
}
|
|
224
|
-
export type RemainingHours = number |
|
|
239
|
+
export type RemainingHours = number | "unlimited";
|
|
225
240
|
|
|
226
241
|
export interface CreditAlert {
|
|
227
|
-
userId: string
|
|
228
|
-
remainingUsageHours: number
|
|
242
|
+
userId: string;
|
|
243
|
+
remainingUsageHours: number;
|
|
229
244
|
}
|
package/src/admin-protocol.ts
CHANGED
|
@@ -1,27 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { User, Workspace, NamedWorkspaceFeatureFlag } from "./protocol";
|
|
8
|
+
import { BlockedRepository } from "./blocked-repositories-protocol";
|
|
9
|
+
import { FindPrebuildsParams } from "./gitpod-service";
|
|
10
|
+
import { Project, Team, PrebuildWithStatus, TeamMemberInfo, TeamMemberRole } from "./teams-projects-protocol";
|
|
8
11
|
import { WorkspaceInstance, WorkspaceInstancePhase } from "./workspace-instance";
|
|
9
12
|
import { RoleOrPermission } from "./permission";
|
|
10
13
|
import { AccountStatement } from "./accounting-protocol";
|
|
14
|
+
import { BillingMode } from "./billing-mode";
|
|
15
|
+
import { CostCenterJSON, ListUsageRequest, ListUsageResponse } from "./usage";
|
|
16
|
+
import { InstallationAdminSettings, TelemetryData } from "./installation-admin-protocol";
|
|
11
17
|
|
|
12
18
|
export interface AdminServer {
|
|
13
19
|
adminGetUsers(req: AdminGetListRequest<User>): Promise<AdminGetListResult<User>>;
|
|
14
20
|
adminGetUser(id: string): Promise<User>;
|
|
15
21
|
adminBlockUser(req: AdminBlockUserRequest): Promise<User>;
|
|
16
22
|
adminDeleteUser(id: string): Promise<void>;
|
|
23
|
+
adminVerifyUser(id: string): Promise<User>;
|
|
17
24
|
adminModifyRoleOrPermission(req: AdminModifyRoleOrPermissionRequest): Promise<User>;
|
|
18
25
|
adminModifyPermanentWorkspaceFeatureFlag(req: AdminModifyPermanentWorkspaceFeatureFlagRequest): Promise<User>;
|
|
19
26
|
|
|
27
|
+
adminCreateBlockedRepository(urlRegexp: string, blockUser: boolean): Promise<BlockedRepository>;
|
|
28
|
+
adminDeleteBlockedRepository(id: number): Promise<void>;
|
|
29
|
+
adminGetBlockedRepositories(
|
|
30
|
+
req: AdminGetListRequest<BlockedRepository>,
|
|
31
|
+
): Promise<AdminGetListResult<BlockedRepository>>;
|
|
32
|
+
|
|
33
|
+
adminGetTeamMembers(teamId: string): Promise<TeamMemberInfo[]>;
|
|
34
|
+
adminGetTeams(req: AdminGetListRequest<Team>): Promise<AdminGetListResult<Team>>;
|
|
35
|
+
adminGetTeamById(id: string): Promise<Team | undefined>;
|
|
36
|
+
adminSetTeamMemberRole(teamId: string, userId: string, role: TeamMemberRole): Promise<void>;
|
|
37
|
+
|
|
20
38
|
adminGetWorkspaces(req: AdminGetWorkspacesRequest): Promise<AdminGetListResult<WorkspaceAndInstance>>;
|
|
21
39
|
adminGetWorkspace(id: string): Promise<WorkspaceAndInstance>;
|
|
22
40
|
adminForceStopWorkspace(id: string): Promise<void>;
|
|
23
41
|
adminRestoreSoftDeletedWorkspace(id: string): Promise<void>;
|
|
24
42
|
|
|
43
|
+
adminGetProjectsBySearchTerm(req: AdminGetListRequest<Project>): Promise<AdminGetListResult<Project>>;
|
|
44
|
+
adminGetProjectById(id: string): Promise<Project | undefined>;
|
|
45
|
+
|
|
46
|
+
adminFindPrebuilds(params: FindPrebuildsParams): Promise<PrebuildWithStatus[]>;
|
|
25
47
|
adminSetLicense(key: string): Promise<void>;
|
|
26
48
|
|
|
27
49
|
adminGetAccountStatement(userId: string): Promise<AccountStatement>;
|
|
@@ -29,43 +51,61 @@ export interface AdminServer {
|
|
|
29
51
|
adminIsStudent(userId: string): Promise<boolean>;
|
|
30
52
|
adminAddStudentEmailDomain(userId: string, domain: string): Promise<void>;
|
|
31
53
|
adminGrantExtraHours(userId: string, extraHours: number): Promise<void>;
|
|
54
|
+
adminGetBillingMode(attributionId: string): Promise<BillingMode>;
|
|
55
|
+
|
|
56
|
+
adminGetSettings(): Promise<InstallationAdminSettings>;
|
|
57
|
+
adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>;
|
|
58
|
+
|
|
59
|
+
adminGetCostCenter(attributionId: string): Promise<CostCenterJSON | undefined>;
|
|
60
|
+
adminSetUsageLimit(attributionId: string, usageLimit: number): Promise<void>;
|
|
61
|
+
|
|
62
|
+
adminListUsage(req: ListUsageRequest): Promise<ListUsageResponse>;
|
|
63
|
+
adminAddUsageCreditNote(attributionId: string, credits: number, note: string): Promise<void>;
|
|
64
|
+
adminGetUsageBalance(attributionId: string): Promise<number>;
|
|
65
|
+
|
|
66
|
+
// Admin Settings
|
|
67
|
+
adminGetSettings(): Promise<InstallationAdminSettings>;
|
|
68
|
+
adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>;
|
|
69
|
+
adminGetTelemetryData(): Promise<TelemetryData>;
|
|
32
70
|
}
|
|
33
71
|
|
|
34
72
|
export interface AdminGetListRequest<T> {
|
|
35
|
-
offset: number
|
|
36
|
-
limit: number
|
|
37
|
-
orderBy: keyof T
|
|
38
|
-
orderDir: "asc" | "desc"
|
|
73
|
+
offset: number;
|
|
74
|
+
limit: number;
|
|
75
|
+
orderBy: keyof T;
|
|
76
|
+
orderDir: "asc" | "desc";
|
|
39
77
|
searchTerm?: string;
|
|
40
78
|
}
|
|
41
79
|
|
|
42
80
|
export interface AdminGetListResult<T> {
|
|
43
|
-
total: number
|
|
44
|
-
rows: T[]
|
|
81
|
+
total: number;
|
|
82
|
+
rows: T[];
|
|
45
83
|
}
|
|
46
84
|
|
|
47
85
|
export interface AdminBlockUserRequest {
|
|
48
|
-
id: string
|
|
49
|
-
blocked: boolean
|
|
86
|
+
id: string;
|
|
87
|
+
blocked: boolean;
|
|
50
88
|
}
|
|
51
89
|
|
|
52
90
|
export interface AdminModifyRoleOrPermissionRequest {
|
|
53
91
|
id: string;
|
|
54
92
|
rpp: {
|
|
55
|
-
r: RoleOrPermission
|
|
56
|
-
add: boolean
|
|
57
|
-
}[]
|
|
93
|
+
r: RoleOrPermission;
|
|
94
|
+
add: boolean;
|
|
95
|
+
}[];
|
|
58
96
|
}
|
|
59
97
|
|
|
60
98
|
export interface AdminModifyPermanentWorkspaceFeatureFlagRequest {
|
|
61
99
|
id: string;
|
|
62
100
|
changes: {
|
|
63
|
-
featureFlag: NamedWorkspaceFeatureFlag
|
|
64
|
-
add: boolean
|
|
65
|
-
}[]
|
|
101
|
+
featureFlag: NamedWorkspaceFeatureFlag;
|
|
102
|
+
add: boolean;
|
|
103
|
+
}[];
|
|
66
104
|
}
|
|
67
105
|
|
|
68
|
-
export interface WorkspaceAndInstance
|
|
106
|
+
export interface WorkspaceAndInstance
|
|
107
|
+
extends Omit<Workspace, "id" | "creationTime">,
|
|
108
|
+
Omit<WorkspaceInstance, "id" | "creationTime"> {
|
|
69
109
|
workspaceId: string;
|
|
70
110
|
workspaceCreationTime: string;
|
|
71
111
|
instanceId: string;
|
|
@@ -78,7 +118,7 @@ export namespace WorkspaceAndInstance {
|
|
|
78
118
|
return {
|
|
79
119
|
id: wai.workspaceId,
|
|
80
120
|
creationTime: wai.workspaceCreationTime,
|
|
81
|
-
...
|
|
121
|
+
...wai,
|
|
82
122
|
};
|
|
83
123
|
}
|
|
84
124
|
|
|
@@ -89,7 +129,7 @@ export namespace WorkspaceAndInstance {
|
|
|
89
129
|
return {
|
|
90
130
|
id: wai.instanceId,
|
|
91
131
|
creationTime: wai.instanceCreationTime,
|
|
92
|
-
...
|
|
132
|
+
...wai,
|
|
93
133
|
};
|
|
94
134
|
}
|
|
95
135
|
}
|
|
@@ -102,4 +142,4 @@ export type AdminGetWorkspacesQuery = {
|
|
|
102
142
|
instanceId?: string;
|
|
103
143
|
workspaceId?: string;
|
|
104
144
|
ownerId?: string;
|
|
105
|
-
};
|
|
145
|
+
};
|