@gitpod/gitpod-protocol 0.1.5-v0.6.0-beta4 → 0.1.5-vn-6525.75
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 +68 -26
- package/lib/accounting-protocol.d.ts +155 -0
- package/lib/accounting-protocol.d.ts.map +1 -0
- package/lib/accounting-protocol.js +100 -0
- package/lib/accounting-protocol.js.map +1 -0
- package/lib/admin-protocol.d.ts +33 -4
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js +15 -0
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +44 -0
- package/lib/analytics.d.ts.map +1 -0
- package/lib/analytics.js +10 -0
- package/lib/analytics.js.map +1 -0
- package/lib/auth.d.ts +25 -0
- package/lib/auth.d.ts.map +1 -0
- package/lib/auth.js +16 -0
- package/lib/auth.js.map +1 -0
- package/lib/context-url.d.ts +31 -0
- package/lib/context-url.d.ts.map +1 -0
- package/lib/context-url.js +102 -0
- package/lib/context-url.js.map +1 -0
- package/lib/context-url.spec.d.ts +14 -0
- package/lib/context-url.spec.d.ts.map +1 -0
- package/lib/context-url.spec.js +109 -0
- package/lib/context-url.spec.js.map +1 -0
- package/lib/email-protocol.d.ts +1 -2
- package/lib/email-protocol.d.ts.map +1 -1
- package/lib/email-protocol.js +4 -4
- package/lib/email-protocol.js.map +1 -1
- package/lib/encryption/container-module.d.ts.map +1 -1
- package/lib/encryption/container-module.js +5 -4
- package/lib/encryption/container-module.js.map +1 -1
- package/lib/encryption/encryption-engine.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.js +25 -26
- package/lib/encryption/encryption-engine.js.map +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.spec.js +29 -37
- package/lib/encryption/encryption-engine.spec.js.map +1 -1
- package/lib/encryption/encryption-service.d.ts.map +1 -1
- package/lib/encryption/encryption-service.js +30 -44
- package/lib/encryption/encryption-service.js.map +1 -1
- package/lib/encryption/key-provider.d.ts.map +1 -1
- package/lib/encryption/key-provider.js +31 -38
- package/lib/encryption/key-provider.js.map +1 -1
- package/lib/env.d.ts +2 -3
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +24 -25
- package/lib/env.js.map +1 -1
- package/lib/gitpod-file-parser.d.ts.map +1 -1
- package/lib/gitpod-file-parser.js +26 -42
- package/lib/gitpod-file-parser.js.map +1 -1
- package/lib/gitpod-file-parser.spec.js +145 -142
- package/lib/gitpod-file-parser.spec.js.map +1 -1
- package/lib/gitpod-service.d.ts +172 -33
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +187 -267
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +9 -11
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +6 -8
- package/lib/headless-workspace-log.js.map +1 -1
- package/lib/ide-frontend-service.d.ts +5 -1
- package/lib/ide-frontend-service.d.ts.map +1 -1
- package/lib/ide-protocol.d.ts +105 -0
- package/lib/ide-protocol.d.ts.map +1 -0
- package/lib/{util/without.js → ide-protocol.js} +2 -2
- package/lib/ide-protocol.js.map +1 -0
- package/lib/index.d.ts +16 -10
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +7 -1
- package/lib/index.js.map +1 -1
- package/lib/installation-admin-protocol.d.ts +27 -0
- package/lib/installation-admin-protocol.d.ts.map +1 -0
- package/lib/installation-admin-protocol.js +30 -0
- package/lib/installation-admin-protocol.js.map +1 -0
- package/lib/license-protocol.d.ts.map +1 -1
- package/lib/license-protocol.js.map +1 -1
- package/lib/messaging/browser/connection.d.ts +5 -3
- package/lib/messaging/browser/connection.d.ts.map +1 -1
- package/lib/messaging/browser/connection.js +184 -34
- package/lib/messaging/browser/connection.js.map +1 -1
- package/lib/messaging/browser/window-connection.d.ts +4 -4
- package/lib/messaging/browser/window-connection.d.ts.map +1 -1
- package/lib/messaging/browser/window-connection.js +42 -59
- package/lib/messaging/browser/window-connection.js.map +1 -1
- package/lib/messaging/client-call-metrics.d.ts +35 -0
- package/lib/messaging/client-call-metrics.d.ts.map +1 -0
- package/lib/messaging/client-call-metrics.js +83 -0
- package/lib/messaging/client-call-metrics.js.map +1 -0
- package/lib/messaging/error.d.ts +5 -1
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +10 -2
- package/lib/messaging/error.js.map +1 -1
- package/lib/messaging/handler.d.ts +10 -0
- 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 +24 -60
- package/lib/messaging/node/connection.js.map +1 -1
- package/lib/messaging/proxy-factory.d.ts +3 -1
- package/lib/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/messaging/proxy-factory.js +75 -162
- 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 +18 -0
- package/lib/payment-protocol.d.ts.map +1 -0
- package/lib/payment-protocol.js +13 -0
- package/lib/payment-protocol.js.map +1 -0
- package/lib/permission.d.ts +10 -5
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +41 -35
- package/lib/permission.js.map +1 -1
- package/lib/plans.d.ts +210 -0
- package/lib/plans.d.ts.map +1 -0
- package/lib/plans.js +605 -0
- package/lib/plans.js.map +1 -0
- package/lib/protocol.d.ts +164 -88
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +184 -199
- package/lib/protocol.js.map +1 -1
- package/lib/snapshot-url.d.ts +14 -0
- package/lib/snapshot-url.d.ts.map +1 -0
- package/lib/snapshot-url.js +26 -0
- package/lib/snapshot-url.js.map +1 -0
- package/{src/util/without.ts → lib/snapshot-url.spec.d.ts} +2 -3
- package/lib/snapshot-url.spec.d.ts.map +1 -0
- package/lib/snapshot-url.spec.js +41 -0
- package/lib/snapshot-url.spec.js.map +1 -0
- package/lib/team-subscription-protocol.d.ts +75 -0
- package/lib/team-subscription-protocol.d.ts.map +1 -0
- package/lib/team-subscription-protocol.js +63 -0
- package/lib/team-subscription-protocol.js.map +1 -0
- package/lib/teams-projects-protocol.d.ts +113 -0
- package/lib/teams-projects-protocol.d.ts.map +1 -0
- package/lib/teams-projects-protocol.js +30 -0
- package/lib/teams-projects-protocol.js.map +1 -0
- package/lib/typings/globals.d.ts +2 -2
- package/lib/typings/globals.d.ts.map +1 -1
- package/lib/util/analytics.d.ts +8 -0
- package/lib/util/analytics.d.ts.map +1 -0
- package/lib/util/analytics.js +88 -0
- package/lib/util/analytics.js.map +1 -0
- package/lib/util/async-iterator.d.ts.map +1 -1
- package/lib/util/async-iterator.js +57 -135
- package/lib/util/async-iterator.js.map +1 -1
- package/lib/util/cancelable.js +17 -59
- package/lib/util/cancelable.js.map +1 -1
- package/lib/util/date-time.js +11 -11
- package/lib/util/date-time.js.map +1 -1
- package/lib/util/deferred.js +10 -12
- package/lib/util/deferred.js.map +1 -1
- package/lib/util/disposable.d.ts.map +1 -1
- package/lib/util/disposable.js +27 -40
- package/lib/util/disposable.js.map +1 -1
- package/lib/util/event.d.ts.map +1 -1
- package/lib/util/event.js +63 -77
- package/lib/util/event.js.map +1 -1
- package/lib/util/garbage-collected-cache.d.ts +1 -0
- package/lib/util/garbage-collected-cache.d.ts.map +1 -1
- package/lib/util/garbage-collected-cache.js +27 -47
- package/lib/util/garbage-collected-cache.js.map +1 -1
- package/lib/util/generate-workspace-id.d.ts +4 -0
- package/lib/util/generate-workspace-id.d.ts.map +1 -0
- package/lib/util/generate-workspace-id.js +487 -0
- package/lib/util/generate-workspace-id.js.map +1 -0
- package/{src/theia-plugins.ts → lib/util/generate-workspace-id.spec.d.ts} +2 -6
- package/lib/util/generate-workspace-id.spec.d.ts.map +1 -0
- package/lib/util/generate-workspace-id.spec.js +91 -0
- package/lib/util/generate-workspace-id.spec.js.map +1 -0
- package/lib/util/gitpod-cookie.d.ts +20 -0
- package/lib/util/gitpod-cookie.d.ts.map +1 -0
- package/lib/util/gitpod-cookie.js +41 -0
- package/lib/util/gitpod-cookie.js.map +1 -0
- package/lib/util/gitpod-host-url.d.ts +2 -2
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +109 -106
- package/lib/util/gitpod-host-url.js.map +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts +8 -1
- package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.spec.js +114 -22
- package/lib/util/gitpod-host-url.spec.js.map +1 -1
- package/lib/util/grpc.d.ts +15 -0
- package/lib/util/grpc.d.ts.map +1 -0
- package/lib/util/grpc.js +18 -0
- package/lib/util/grpc.js.map +1 -0
- 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} +1 -1
- package/lib/util/jaeger-client-types.js.map +1 -0
- package/lib/util/logging.d.ts +49 -33
- package/lib/util/logging.d.ts.map +1 -1
- package/lib/util/logging.js +125 -129
- package/lib/util/logging.js.map +1 -1
- package/lib/util/make-link.js +5 -5
- package/lib/util/make-link.js.map +1 -1
- package/lib/util/parse-workspace-id.d.ts +13 -3
- package/lib/util/parse-workspace-id.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.js +37 -8
- package/lib/util/parse-workspace-id.js.map +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts +8 -0
- package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.spec.js +127 -47
- package/lib/util/parse-workspace-id.spec.js.map +1 -1
- package/lib/util/queue.js +16 -55
- package/lib/util/queue.js.map +1 -1
- package/lib/util/queue.spec.js +147 -288
- 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.map +1 -1
- package/lib/util/semaphore.js +15 -46
- package/lib/util/semaphore.js.map +1 -1
- package/lib/util/skip-if.d.ts.map +1 -1
- package/lib/util/skip-if.js +6 -6
- package/lib/util/skip-if.js.map +1 -1
- package/lib/util/timeutil.d.ts.map +1 -1
- package/lib/util/timeutil.js +28 -16
- package/lib/util/timeutil.js.map +1 -1
- package/lib/util/timeutil.spec.d.ts.map +1 -1
- package/lib/util/timeutil.spec.js +21 -24
- package/lib/util/timeutil.spec.js.map +1 -1
- package/lib/util/tracing.d.ts +52 -6
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +199 -64
- 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 +7 -7
- package/lib/util/workspace-port-authentication.d.ts.map +1 -1
- package/lib/util/workspace-port-authentication.js +10 -12
- package/lib/util/workspace-port-authentication.js.map +1 -1
- package/lib/workspace-cluster.d.ts +76 -0
- package/lib/workspace-cluster.d.ts.map +1 -0
- package/lib/workspace-cluster.js +31 -0
- package/lib/workspace-cluster.js.map +1 -0
- package/lib/workspace-instance.d.ts +28 -4
- package/lib/workspace-instance.d.ts.map +1 -1
- package/lib/wsready.d.ts +1 -1
- package/lib/wsready.d.ts.map +1 -1
- package/lib/wsready.js +2 -2
- package/package.json +33 -17
- package/pkg-yarn.lock +18 -9
- package/provenance-bundle.jsonl +2 -0
- package/src/accounting-protocol.ts +231 -0
- package/src/admin-protocol.ts +71 -19
- package/src/analytics.ts +52 -0
- package/src/auth.ts +27 -0
- package/src/context-url.spec.ts +67 -0
- package/src/context-url.ts +109 -0
- package/src/email-protocol.ts +5 -7
- package/src/encryption/container-module.ts +2 -3
- package/src/encryption/encryption-engine.spec.ts +9 -8
- package/src/encryption/encryption-engine.ts +14 -14
- package/src/encryption/encryption-service.ts +4 -5
- package/src/encryption/key-provider.ts +16 -19
- package/src/env.ts +18 -18
- package/src/gitpod-file-parser.spec.ts +55 -61
- package/src/gitpod-file-parser.ts +16 -17
- package/src/gitpod-service.ts +327 -102
- package/src/headless-workspace-log.ts +12 -14
- package/src/ide-frontend-service.ts +6 -2
- package/src/ide-protocol.ts +119 -0
- package/src/index.ts +16 -10
- package/src/installation-admin-protocol.ts +42 -0
- package/src/license-protocol.ts +5 -6
- package/src/messaging/browser/connection.ts +197 -18
- package/src/messaging/browser/window-connection.ts +39 -29
- package/src/messaging/client-call-metrics.ts +96 -0
- package/src/messaging/error.ts +15 -5
- package/src/messaging/handler.ts +13 -1
- package/src/messaging/node/connection.ts +23 -70
- package/src/messaging/proxy-factory.ts +35 -34
- package/src/oss-allowlist.ts +15 -0
- package/src/payment-protocol.ts +20 -0
- package/src/permission.ts +42 -38
- package/src/plans.ts +679 -0
- package/src/protocol.ts +384 -279
- package/src/snapshot-url.spec.ts +27 -0
- package/src/snapshot-url.ts +27 -0
- package/src/team-subscription-protocol.ts +123 -0
- package/src/teams-projects-protocol.ts +147 -0
- package/src/typings/globals.ts +4 -4
- package/src/util/analytics.ts +109 -0
- package/src/util/async-iterator.ts +4 -5
- package/src/util/cancelable.ts +3 -3
- package/src/util/date-time.ts +8 -8
- package/src/util/deferred.ts +6 -6
- package/src/util/disposable.ts +3 -6
- package/src/util/event.ts +9 -11
- package/src/util/garbage-collected-cache.ts +11 -8
- package/src/util/generate-workspace-id.spec.ts +51 -0
- package/src/util/generate-workspace-id.ts +475 -0
- package/src/util/gitpod-cookie.ts +38 -0
- package/src/util/gitpod-host-url.spec.ts +63 -7
- package/src/util/gitpod-host-url.ts +55 -38
- package/src/util/grpc.ts +15 -0
- package/src/util/jaeger-client-types.ts +102 -0
- package/src/util/logging.ts +145 -71
- package/src/util/make-link.ts +6 -7
- package/src/util/parse-workspace-id.spec.ts +60 -10
- package/src/util/parse-workspace-id.ts +38 -8
- package/src/util/queue.spec.ts +28 -26
- package/src/util/repeat.ts +45 -0
- package/src/util/semaphore.ts +6 -8
- package/src/util/skip-if.ts +10 -7
- package/src/util/timeutil.spec.ts +14 -15
- package/src/util/timeutil.ts +19 -15
- package/src/util/tracing.spec.ts +88 -0
- package/src/util/tracing.ts +202 -31
- package/src/util/workspace-port-authentication.ts +10 -13
- package/src/workspace-cluster.ts +107 -0
- package/src/workspace-instance.ts +72 -30
- package/src/wsready.ts +3 -3
- package/data/builtin-theia-plugins.json +0 -372
- 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 -46
- 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 -118
- 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 -34
- package/lib/util/safe-promise.js.map +0 -1
- package/lib/util/without.d.ts +0 -7
- package/lib/util/without.d.ts.map +0 -1
- package/lib/util/without.js.map +0 -1
- package/src/messaging/connection-error-handler.ts +0 -62
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-cluster.js","sourceRoot":"","sources":["../src/workspace-cluster.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,yBAAyB;AACzB,+BAAkD;AAyClD,IAAiB,SAAS,CAGzB;AAHD,WAAiB,SAAS;IACT,4BAAkB,GAAG,CAAC,IAAY,EAAU,EAAE,CACvD,EAAE,CAAC,YAAY,CAAC,IAAA,+BAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5E,CAAC,EAHgB,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGzB;AAcD,IAAiB,mBAAmB,CAUnC;AAVD,WAAiB,mBAAmB;IAChC,SAAgB,EAAE,CAAC,CAAM;QACrB,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC;IAC9B,CAAC;IAFe,sBAAE,KAEjB,CAAA;IACD,SAAgB,yBAAyB,CAAC,CAAM;QAC5C,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC;IAChD,CAAC;IAFe,6CAAyB,4BAExC,CAAA;IACD,SAAgB,aAAa,CAAC,EAAuB,EAAE,UAA0B;QAC7E,OAAO,yBAAyB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC;IACzE,CAAC;IAFe,iCAAa,gBAE5B,CAAA;AACL,CAAC,EAVgB,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAUnC;AAEY,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
|
|
@@ -10,6 +10,7 @@ export interface WorkspaceInstance {
|
|
|
10
10
|
creationTime: string;
|
|
11
11
|
deployedTime?: string;
|
|
12
12
|
startedTime?: string;
|
|
13
|
+
stoppingTime?: string;
|
|
13
14
|
stoppedTime?: string;
|
|
14
15
|
ideUrl: string;
|
|
15
16
|
region: string;
|
|
@@ -17,6 +18,10 @@ export interface WorkspaceInstance {
|
|
|
17
18
|
status: WorkspaceInstanceStatus;
|
|
18
19
|
configuration?: WorkspaceInstanceConfiguration;
|
|
19
20
|
readonly deleted?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Contains information about the image build, if there was any
|
|
23
|
+
*/
|
|
24
|
+
imageBuildInfo?: ImageBuildInfo;
|
|
20
25
|
}
|
|
21
26
|
export interface WorkspaceInstanceStatus {
|
|
22
27
|
phase: WorkspaceInstancePhase;
|
|
@@ -26,6 +31,8 @@ export interface WorkspaceInstanceStatus {
|
|
|
26
31
|
repo?: WorkspaceInstanceRepoStatus;
|
|
27
32
|
timeout?: string;
|
|
28
33
|
nodeName?: string;
|
|
34
|
+
podName?: string;
|
|
35
|
+
nodeIp?: string;
|
|
29
36
|
ownerToken?: string;
|
|
30
37
|
}
|
|
31
38
|
export declare type WorkspaceInstancePhase = "unknown" | "preparing" | "pending" | "creating" | "initializing" | "running" | "interrupted" | "stopping" | "stopped";
|
|
@@ -33,16 +40,16 @@ export interface WorkspaceInstanceConditions {
|
|
|
33
40
|
failed?: string;
|
|
34
41
|
timeout?: string;
|
|
35
42
|
pullingImages?: boolean;
|
|
36
|
-
serviceExists?: boolean;
|
|
37
43
|
deployed?: boolean;
|
|
38
44
|
neededImageBuild?: boolean;
|
|
39
45
|
firstUserActivity?: string;
|
|
46
|
+
headlessTaskFailed?: string;
|
|
47
|
+
stoppedByRequest?: boolean;
|
|
40
48
|
}
|
|
41
|
-
export declare type AdmissionLevel =
|
|
42
|
-
export declare type PortVisibility =
|
|
49
|
+
export declare type AdmissionLevel = "owner_only" | "everyone";
|
|
50
|
+
export declare type PortVisibility = "public" | "private";
|
|
43
51
|
export interface WorkspaceInstancePort {
|
|
44
52
|
port: number;
|
|
45
|
-
targetPort?: number;
|
|
46
53
|
visibility?: PortVisibility;
|
|
47
54
|
url?: string;
|
|
48
55
|
}
|
|
@@ -60,5 +67,22 @@ export interface WorkspaceInstanceConfiguration {
|
|
|
60
67
|
theiaVersion?: string;
|
|
61
68
|
featureFlags?: NamedWorkspaceFeatureFlag[];
|
|
62
69
|
ideImage: string;
|
|
70
|
+
desktopIdeImage?: string;
|
|
71
|
+
supervisorImage?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Holds information about the image build (if there was one) for this WorkspaceInstance
|
|
75
|
+
*/
|
|
76
|
+
export interface ImageBuildInfo {
|
|
77
|
+
log?: ImageBuildLogInfo;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Holds information about how to access logs for this an image build
|
|
81
|
+
*/
|
|
82
|
+
export interface ImageBuildLogInfo {
|
|
83
|
+
url: string;
|
|
84
|
+
headers: {
|
|
85
|
+
[key: string]: string;
|
|
86
|
+
};
|
|
63
87
|
}
|
|
64
88
|
//# sourceMappingURL=workspace-instance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-instance.d.ts","sourceRoot":"","sources":["../src/workspace-instance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAE9B,EAAE,EAAE,MAAM,CAAC;IAGX,WAAW,EAAE,MAAM,CAAC;IAGpB,YAAY,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-instance.d.ts","sourceRoot":"","sources":["../src/workspace-instance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAE9B,EAAE,EAAE,MAAM,CAAC;IAGX,WAAW,EAAE,MAAM,CAAC;IAGpB,YAAY,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,MAAM,EAAE,MAAM,CAAC;IAIf,MAAM,EAAE,MAAM,CAAC;IAIf,cAAc,EAAE,MAAM,CAAC;IAGvB,MAAM,EAAE,uBAAuB,CAAC;IAKhC,aAAa,CAAC,EAAE,8BAA8B,CAAC;IAG/C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACnC;AAGD,MAAM,WAAW,uBAAuB;IAEpC,KAAK,EAAE,sBAAsB,CAAC;IAG9B,UAAU,EAAE,2BAA2B,CAAC;IAGxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,YAAY,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAGvC,IAAI,CAAC,EAAE,2BAA2B,CAAC;IAGnC,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,oBAAY,sBAAsB,GAG5B,SAAS,GAIT,WAAW,GAKX,SAAS,GAKT,UAAU,GAIV,cAAc,GAId,SAAS,GAIT,aAAa,GAGb,UAAU,GAGV,SAAS,CAAC;AAEhB,MAAM,WAAW,2BAA2B;IAGxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAM3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAGD,oBAAY,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;AAGvD,oBAAY,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAGlD,MAAM,WAAW,qBAAqB;IAElC,IAAI,EAAE,MAAM,CAAC;IAGb,UAAU,CAAC,EAAE,cAAc,CAAC;IAG5B,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,2BAA2B;IAExC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAG1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAGD,MAAM,WAAW,8BAA8B;IAG3C,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAG3C,QAAQ,EAAE,MAAM,CAAC;IAGjB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACtC"}
|
package/lib/wsready.d.ts
CHANGED
package/lib/wsready.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wsready.d.ts","sourceRoot":"","sources":["../src/wsready.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,oBAAY,mBAAmB;IAC3B,uBAAuB,gBAAgB;IACvC,yBAAyB,kBAAkB;IAC3C,sBAAsB,eAAe;CACxC;AACD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"wsready.d.ts","sourceRoot":"","sources":["../src/wsready.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,oBAAY,mBAAmB;IAC3B,uBAAuB,gBAAgB;IACvC,yBAAyB,kBAAkB;IAC3C,sBAAsB,eAAe;CACxC;AACD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,mBAAmB,CAAC;CAC/B"}
|
package/lib/wsready.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Copyright (c)
|
|
3
|
+
* Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
4
4
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
5
5
|
* See License-AGPL.txt in the project root for license information.
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.WorkspaceInitSource = void 0;
|
|
9
|
-
// generated using github.com/32leaves/bel on
|
|
9
|
+
// generated using github.com/32leaves/bel on 2022-02-15 11:53:18.380158212 +0000 UTC m=+0.011913675
|
|
10
10
|
// DO NOT MODIFY
|
|
11
11
|
var WorkspaceInitSource;
|
|
12
12
|
(function (WorkspaceInitSource) {
|
package/package.json
CHANGED
|
@@ -1,38 +1,54 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dependencies": {
|
|
3
|
+
"@types/react": "17.0.32",
|
|
3
4
|
"ajv": "^6.5.4",
|
|
4
|
-
"
|
|
5
|
-
"
|
|
5
|
+
"analytics-node": "^4.0.1",
|
|
6
|
+
"cookie": "^0.4.2",
|
|
7
|
+
"inversify": "^5.1.1",
|
|
8
|
+
"jaeger-client": "^3.18.1",
|
|
6
9
|
"js-yaml": "^3.10.0",
|
|
7
|
-
"opentracing": "^0.14.
|
|
8
|
-
"prom-client": "^
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
10
|
+
"opentracing": "^0.14.5",
|
|
11
|
+
"prom-client": "^13.2.0",
|
|
12
|
+
"random-number-csprng": "^1.0.2",
|
|
13
|
+
"react": "17.0.2",
|
|
14
|
+
"react-dom": "17.0.2",
|
|
15
|
+
"reconnecting-websocket": "^4.4.0",
|
|
16
|
+
"reflect-metadata": "^0.1.13",
|
|
17
|
+
"uuid": "^8.3.2",
|
|
18
|
+
"vscode-jsonrpc": "^5.0.1",
|
|
19
|
+
"vscode-languageserver-protocol": "3.16.0",
|
|
20
|
+
"vscode-languageserver-types": "3.16.0",
|
|
12
21
|
"vscode-uri": "^1.0.1",
|
|
13
22
|
"vscode-ws-jsonrpc": "^0.2.0",
|
|
14
|
-
"ws": "^
|
|
23
|
+
"ws": "^7.4.6"
|
|
15
24
|
},
|
|
16
25
|
"devDependencies": {
|
|
17
|
-
"@types/
|
|
26
|
+
"@types/analytics-node": "^3.1.5",
|
|
27
|
+
"@types/chai-subset": "^1.3.3",
|
|
28
|
+
"@types/cookie": "^0.4.1",
|
|
29
|
+
"@types/jaeger-client": "^3.18.3",
|
|
18
30
|
"@types/js-yaml": "^3.10.1",
|
|
19
|
-
"@types/
|
|
31
|
+
"@types/mocha": "^5.2.7",
|
|
32
|
+
"@types/node": "^16.11.6",
|
|
33
|
+
"@types/random-number-csprng": "^1.0.0",
|
|
34
|
+
"@types/uuid": "^8.3.1",
|
|
20
35
|
"@types/ws": "^5.1.2",
|
|
21
|
-
"chai": "^4.
|
|
36
|
+
"chai": "^4.3.4",
|
|
22
37
|
"chai-subset": "^1.6.0",
|
|
23
38
|
"mocha": "^5.0.0",
|
|
24
39
|
"mocha-typescript": "^1.1.11",
|
|
25
40
|
"rimraf": "^2.6.2",
|
|
26
41
|
"ts-node": "^9.0.0",
|
|
27
|
-
"typescript": "
|
|
28
|
-
"typescript-json-schema": "^0.
|
|
42
|
+
"typescript": "~4.4.2",
|
|
43
|
+
"typescript-json-schema": "^0.50.1",
|
|
29
44
|
"typescript-parser": "^2.6.1"
|
|
30
45
|
},
|
|
31
46
|
"files": [
|
|
32
47
|
"lib",
|
|
33
48
|
"data/*.json",
|
|
34
49
|
"src",
|
|
35
|
-
"pkg-yarn.lock"
|
|
50
|
+
"pkg-yarn.lock",
|
|
51
|
+
"provenance-bundle.jsonl"
|
|
36
52
|
],
|
|
37
53
|
"license": "UNLICENSED",
|
|
38
54
|
"main": "./lib/index.js",
|
|
@@ -41,9 +57,9 @@
|
|
|
41
57
|
"build": "tsc",
|
|
42
58
|
"clean": "rimraf lib",
|
|
43
59
|
"prepare": "yarn run clean && yarn run build",
|
|
44
|
-
"test": "mocha --opts mocha.opts '
|
|
60
|
+
"test": "mocha --opts mocha.opts './**/*.spec.ts' --exclude './node_modules/**'",
|
|
45
61
|
"watch": "leeway exec --package .:lib --transitive-dependencies --filter-type yarn --components --parallel -- tsc -w --preserveWatchOutput"
|
|
46
62
|
},
|
|
47
63
|
"types": "./lib/index.d.ts",
|
|
48
|
-
"version": "0.1.5-
|
|
49
|
-
}
|
|
64
|
+
"version": "0.1.5-vn-6525.75"
|
|
65
|
+
}
|
package/pkg-yarn.lock
CHANGED
|
@@ -4,18 +4,27 @@
|
|
|
4
4
|
|
|
5
5
|
"@gitpod/gitpod-protocol@0.1.5":
|
|
6
6
|
version "0.1.5"
|
|
7
|
-
resolved "file:///tmp/cache/
|
|
7
|
+
resolved "file:///tmp/cache/cff2de46aae10f4b29a7ddff2fcbafe2acbbaa5e.tar.gz"
|
|
8
8
|
dependencies:
|
|
9
|
+
"@types/react" "17.0.32"
|
|
9
10
|
ajv "^6.5.4"
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
analytics-node "^4.0.1"
|
|
12
|
+
cookie "^0.4.2"
|
|
13
|
+
inversify "^5.1.1"
|
|
14
|
+
jaeger-client "^3.18.1"
|
|
12
15
|
js-yaml "^3.10.0"
|
|
13
|
-
opentracing "^0.14.
|
|
14
|
-
prom-client "^
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
opentracing "^0.14.5"
|
|
17
|
+
prom-client "^13.2.0"
|
|
18
|
+
random-number-csprng "^1.0.2"
|
|
19
|
+
react "17.0.2"
|
|
20
|
+
react-dom "17.0.2"
|
|
21
|
+
reconnecting-websocket "^4.4.0"
|
|
22
|
+
reflect-metadata "^0.1.13"
|
|
23
|
+
uuid "^8.3.2"
|
|
24
|
+
vscode-jsonrpc "^5.0.1"
|
|
25
|
+
vscode-languageserver-protocol "3.16.0"
|
|
26
|
+
vscode-languageserver-types "3.16.0"
|
|
18
27
|
vscode-uri "^1.0.1"
|
|
19
28
|
vscode-ws-jsonrpc "^0.2.0"
|
|
20
|
-
ws "^
|
|
29
|
+
ws "^7.4.6"
|
|
21
30
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{"payloadType":"application/vnd.in-toto+json","payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YwLjEiLAogICJwcmVkaWNhdGVUeXBlIjogImh0dHBzOi8vc2xzYS5kZXYvcHJvdmVuYW5jZS92MC4xIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NraXAtaWYuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjc1MzY1YjQyOTNjNzc0M2NhNTRmYTQ4NGIwNmRlYjY3N2I1ZmRiNWRjYzRiOGNkNjhkZWExNjY2YTZjMzIxYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9oZWFkbGVzcy13b3Jrc3BhY2UtbG9nLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGExYmFiYmRlMTA5Y2YyMDVkYWY4MDQ0OWQxNTRhZTVjZjU0ZTZlYTE2NTkxNGQ2NmYwZDZjNjQ1YzZmYTg2ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dhcmJhZ2UtY29sbGVjdGVkLWNhY2hlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3OWIzMzc1MGJmNjZlNzA3OTYwNzQ3YjI5MTI4MTg3MmU2ZWU5NmJlNDczNjdlZGUyMzFmNDNiNTM3ODRkZDQ2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Byb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjQ0OGQ5YTI1N2I3NDI1YTc4NGMyNGUzZGQzZjA0NjQ2ZmRmZTgyZjYyYjdjOGUxNWU5YmJlNWU3ZThmMzQxYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2Qtc2VydmljZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2M2M5NjM1MGNiZTBhNTdiYzIyZDk2NzczOGZhNDc2YmM0N2JkZmE0OTdjNGM4ZmNlMzFiZGU0YmI5M2M0ZDQ0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRjZDEzYzE4Mzg1ODc0Y2ZkYmY4MjVjMTNjYmQyMzZiMjczN2VhYTAzODhmZTFhM2FjZDgwOTEzNjZiYzRkYTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdHlwaW5ncy9nbG9iYWxzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzZDY3MTkyMDdiZjlhODk2NDQ5N2NjZjg0NWY0Yjk5NWY3MTIxNmYyZTc3ODRlOTYwMmViZjVmMzQ5ZTY0YmQwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9lcnJvci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjRiYmJjZGJkMTk1NGIxNDQ0N2QxMjY0NzNiYzQxYmIwM2MxMmVmZTllMjYxMDFjMjU0YTg2MTdhNTgxYzljZWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTc3YjMxMDFmNjM3YzgzZGZmYmM0MzVkY2U1NTczMWI1MDcxOTQ1ZmVlNDIwMTc3ODJmYzQ2ZmZjZjY4ZGIyMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI0ODg1YzQyNzZkZTE1YTdkMzJmZmRjZjM0NGU2YTI0MTNiOTkxZDQwMzlkNGEzYzg3ZmJkODk5N2NhMTJkZmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImUxYzRmNzJkYWM2N2M0Y2VmODUyNDI3ODFjOTE4ZDNkZjQzMjBjZWEyMDZhZWQ3MThmMWU2YzFkNGYwZTYwMjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZGI1ZmJlODQzNTQ1Y2MyMjVhMjUyZTQ0YjQwZTJjNjVlZDdhZGE5ZDBmNmZlNGIwYThkZDBhYjhjZjJhYmEyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ3JwYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkMGRhNzYzYTQxZTE4ZDUwNTNlNjg4NWRiYjIxOTI1MWQ2NjQ1NmQ3ZGMxZTliNWIzMjdmNTNiNjkwYjY5YTI5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NWJmM2MyYmIwNmYyOWVhOWJkODgyMTE4NzBlMTc3MmM1MDVlZWY4MjY2OTZmMmU2NmNjYTBmM2MyNDNhODE5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdhOTc3ZTA1OTMzOGY3MTVkZjcxNTcwZGVhZmU5YzI3OWY3ODQwMDBlZmU4ZWQ5NDEzM2YxYzY3OGQxYmFkYzciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbS1zdWJzY3JpcHRpb24tcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjA2NDg3ZjAzNDJhMGE1YTM3NTlmODM5YWVhMzQ5Yzc3MWNkNzgzNWViMmRkNGFiOTEwODU5ZDgxYTdiMjYyNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvbm9kZS9jb25uZWN0aW9uLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZmYmQ3OGQzZjFlYmZhNTZmYzg5OGRiNWE3MjM4ZTIyMzhiMTY3NmUzMWNmZDQzOGE4ZmU1ZjA1YjA5ZjI2ZmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzkxOGVkMDQyOWI0M2E5YmQ2MTUyNGY2YWM0Y2ZmOTAzN2JlYWE1NjQzYTU1MTI4ZTY5YTAwZTQwODliZmQ3YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTYzNWQ0OTk3ZjE0OTFiN2NmMzk4YmUxZmRkMmZkMTMxNDY3YWJlMjUxYWY1ZWZhZGZhMDQyZGM4MTkzYTU1YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2x1c3Rlci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZDRlOTNkMTBhNGRmNGY5YzRhNTY4YmRjYjU2ZTFiYzMxMTFmMjJmNTdjYTgzOWZmODBmMzEzN2M3ZDE2ZmU4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzU1MTQ5ZmU4MzEzYjA2YjQxMjFmMmNmZDIwMDkyZGYxOTAxZDY1N2FiOTBlYzgyZDY5OTA2ZjQ5MjA1OWJiOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RhdGUtdGltZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMWRmNjYyYzgzMWMyNWRlZWQzNjJjZWU4ODNkNWFkNjUzNTZmOTE1NGU1MzM3ZTM1NzIyMDFmNzU2NWJiZmVmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5OTE1NzI0Yzg4NDQ0Zjc4NDA5ZmI4ZDhiZjNmOTg4ZjU2YWNiN2M0YmUyNzVmZjhjMzEyYjFkMjc4NmEwZTIzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcmVwZWF0LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTdjYTYwMzRiOTU3ZmUyODVmNzZmMWNkYzQ1MjA1OTQ4ZGJmOWE3MzAxMThjMzI5MjYwZmFkMzg0OTU3ZmU4NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvY2xpZW50LWNhbGwtbWV0cmljcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlYjkwNGUxMjI5MWRmMDg1ZmQ4Y2M5NjIwNzJmMGUyMGY3NTQzZjgwYWZhMmY1OGRmYTI3NDAyZThhNTY4NzdkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTNlOTA3YTM4M2MxYzM5ODc2NzAyMWVmYjViZjFjMzc4MTc0MDI0NGU3MjJjZmI4NjMxYTVmNWFkYjUxYTcxYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZmVycmVkLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjBhMmQ2MjY4MDE1OTJjYmJiM2QzMTMxMDM3MjYxYjZiNTFiNWNmYzJjMjk1NGUyM2M1MmVkMWQzMGRiNDYyMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzZiNmU5MmVhNTg1YzE4ZmNhOWU0NTIyZTVmZWI2ZDUyNWQ1MTQ0OGY2OTdjMTE3OGFiNWZiNmY1NzBiMmZlZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI4MGMwMzI2MjhjNmI4MDY0YzFkYTA5N2NkZTAxNmI0MGM0ODFhMGNhMDVhM2E2N2VhZGI4MjBmYWZmZjZjMzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0NGZhZDczZDU5ZDg1NDJiYzU5MGRjM2VkYzQ2MDI3ZGJiMTI4ZmVmM2EzYTk4NmNkMjFhZjljZmZkMDVlNDBmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1pbnN0YW5jZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhNTQwZmU1MjhmOGI4YmVjOGY2NjY3NDY2MzI1ODUwYmE5YzBiMDhiNzA0NmI2MjgyMjEyZDBiMmQxN2UxY2FmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY0MmMyY2JkMWNjM2IwYzVmZDAwYzgxODg3MzIxZWI3OTNlNGMxNmE2MzBlNjhjMjJkY2QwYzFmNmQ2M2JkYTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9sb2dnaW5nLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwZDQ3NzliZWJhYjhmZmNkYzg5NmJiZjg4MzBkNDA4ZDRlMTI5MGJmOGU2NTE1MzVmYWE0YzBiZmI5Mzk0NTkwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkOWJhYmM1YjQ5MzYwMzk3NWQ4OGRhZmRlYzRlYjkxNWY1NTE0ZDhmMGEyNmJmNGRmMGI2OGIwNTBlMmIzNTYzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmFjOGQ0N2VmNmQ0NjcyMmU5ZGFkY2Y2YThhNzY1NTBiM2VhZjE2NDlkZDQ5ZjE1Yzg2YTljNTVmYmE1MjNjNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvaGFuZGxlci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTQzNzMwZDE3NzBjYjY0YzMzNjMxNDNmYjg4Njc4MzJlZTg4N2E0MDFiOGZiNTAzMDM0NjJjNDkxNmNiZTkxMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9oZWFkbGVzcy13b3Jrc3BhY2UtbG9nLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjcwOTc0MDdiMzg3YjQyM2E5MTg5ZTBmY2U3NDI5OTc2OTAwMmJiNWI3ZDM1ZGNhNGRjNmMzYzViMWU3NzE2MmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQzZTZmYzIxNDE4MzJlZmJkZTFiMDlhODY3NDg3Njc1NWMxODI0MjhjNTlmNWM0ZDBmNDM0NTMxNDQ0NTlmNmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxODY5MmYzNmFkM2ExMTA5MzhjYjBkYWU2Nzc0OTYxN2RkYzJhZDU3ZGYzZTNmNzgxNWQzZTYxOWJlMTJlNjJlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1zZXJ2aWNlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg1ZWIzOGMyMWYwYTdiOWZjM2ZiZDcxN2Y3YWFhZTlhZjg2MGU3ZTYwODIwZWQwNWZkNjgzMjc1MmEyNzNkMGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE1YjhhMTgzNmZhYzA0ZmM3YTM4NjA4ZjI0NDRiYjg2ZjMwZTQyY2UyYmQ4YjI4ZjdjMTVlYWViNDVjMjdjYjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjMwODRjZTMzYjBjYzdhZjBmYzFiNGQ1ZDNkY2Q2NjYyN2NjNWUwMmNlMjdhNGRkZmEwZTA5ODUxM2UyMzI1NWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL3Byb3h5LWZhY3RvcnkuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzk4ZjBkMzBjOTBhOWMwNTYyY2RkOWZkMzk3ZDk3ZjA1ODUxZjYwODhhZjdkZjgwMmNmNzZkYWI3YzhjMmI4ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzOWFkNGQ4OTljZTU4OGEwZWE1YTQxY2NiMTY5NDg0NTVhODNmMDQ1OWFmZjc0YjUyNmNmZmQ0NDQ0YTM2NWMwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luc3RhbGxhdGlvbi1hZG1pbi1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWU0YTg5MjYyN2VjYTkwYjE0YTc5MzU1YjE1Y2RiNDQxYWYwODcyNmVjOWU2NzNmNTk2NDI0YjUzNzZmMjJmNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2Qtc2VydmljZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVlMmIxMmFhNzcxYzNlYzA2ZjMwMTExY2JlYWQzYWJiMGI4MDAwMjFiNDBkNWU0MzA0MTZiZTZhMjZiYTJlNjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL3Byb3h5LWZhY3RvcnkuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmZjN2I2YWJjYTA2M2VjMjVhMGJiNjIxOTdlZDJlOTQwMWUwZDhkMmI0NzFlODUwYjYxZmMyYTdjNjcwYWJlOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2NvbnRhaW5lci1tb2R1bGUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2UzODc3ZmE0Mjc4ZDhlMzJmNGJiZjAyM2NmMmU5MmUzNDhiZTZmZmQ2ZDk1ZWVmMDNiNTBjOWRiYjY1MzM5MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9saWNlbnNlLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY0ZWFmMDllMjVjZGI0NjAzOWNmZDA2ZjZjYTExZjkzYWYwN2NiZmZiNmMzZjZmZjlhOTU0ODk2NWFjZTA0NjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nYXJiYWdlLWNvbGxlY3RlZC1jYWNoZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzNGVhYzhlYTIwYWE1NTY0NzI5MTRiN2RhYmIxZjVhZDE3MWI0MzJmMTg5OTU5NDgzYjk0ZmMyNjY0ZDE1MTZlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFkNjNlMDFhNDRjOTZmYWFkOTUxYTQ0ZTdmM2QwMzMyMTU2NjM3MTQ2ODc2M2ZlY2M4NmFkOGM1ODI4ZDdlNzQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWRkYjk4YjZmYTE2NTg3M2NkMDNhMDY3ZTA0OTlhMmQxYTlkNGJmY2I2YWRjNDhmZGY0OTIxNjIwMzgyMDE1NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbmRleC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmY2UyMGU3M2VkOWY3NWM5Mjc2ZGRjOGEwNDRjNGIxMTA3ZDQ4MDM2NTkyZDNmZjQyYzIxYjhmMzM3OTM1YmMzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiZDJjNzUxYWU3YTE4MWVhZjNmZGUzOWQ4M2I1ZDZlZjFhOTE1OWIyMDA0ZDA1MzM5ZDM3ZTU5MDdiMzYxNjFlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3R5cGluZ3MvZ2xvYmFscy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY0NzFlYWRkNTczMGU2YWIxYWJkN2M1ZGJjNjZkZWExNGMzMDNiYzExMjBiMGIwOWNjYTA2YTQ3NDRhNTQ5MDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjZGE5NWFiMGQyYmYyNGQ3NDQ2ZmE1MzhiMTFkMjlkNDlkMDk1OTA5YzE5ODFlZjI3OGViNmM3M2E1MTY4Y2E3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVmZXJyZWQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUyMmM0ZjE3MzY3OTVjMDAzNjA0YTVlYmZlNDI0NWFmNDVhMjc3N2JkNWJiOTY5NTFkZDMwOTYwZDhhMzc0NWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvd2luZG93LWNvbm5lY3Rpb24uanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOWFiZjNiNTdiYzgzNDYyNzJlMTRlNDJhMjJhZmZlMjA5ZGM2M2NiZTk1YzkyMDI3YTY0YzYyNGRhMDA1Zjc2NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY3Y2MwYTY4MjVmMzk2NGM3MDgwOWU5YzY5MmIyMjU1ZmIzM2I2ZGI1MGQ1NTAxNTg2YmI3ZDkyMTAzODJjNzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDJlZDAwYjg5ODI2OTE1ODJlYmU4OTllYTFhODZjMzhjZmE5Y2IzZjNhNTllMWFhYzIzODk0NDQ2ZjliZmVjOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGQ3MWIyYzJiODI4NGYyMGU4OGM3MjI3MDk3OWI2OGU1Zjg5OThkZjgzNmU4N2M3M2MzZGM4MjdhZTZlNzA4MCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wYXltZW50LXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdmMmQ0NjczOGI5MTczZDNiNDNmYzMyZTMyMGFhZjE3YmRmZWQyNWRkOTk2NGNmMTc0MDkyNTIxY2RkYmIyOWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2NsaWVudC1jYWxsLW1ldHJpY3MuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjMDY3MTc2OTM0NjNlMWEzYjY4YmQ3M2U2YTY4NzgyMDMxYzlhZjU3YWQyNmUwOGIzMWYwYjYxZjc5ZTkyZWY0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjVkYmE3YmUxOGQwMWU4ZjRlN2Y3YzZiYjAxNTcyNDdiMWVkZDY4YWQ2N2MwNzIyYTU4YzBlNWRlYzkxN2M1ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGM3MmUzNzIzZGJkOWRmNTJjZmZlNjhjY2I4ZTk3ZDM2OWVmN2RiMWEyM2I1ZTVlMTZjZDljNWI3MDQzMzhmOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvZXJyb3IuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI2M2UyZWQyMDk2NWE4NzgwZTAyMmFiMDIxNjI3MjIzMmMyZjNjMDc1ZTdmNGVmYTUyMTg1ODFjYzIxNzYwMzEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ldmVudC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTU4NWQyMGE0N2EyYmYwOThiNGRjYTI1ZjQwZjZlZTg5NWUxMmRlNjMzY2MyNGY4MWEyOTliNTJlZjE1YmZjMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtLXN1YnNjcmlwdGlvbi1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2Q3YmM3MWQyMWJlYmE5M2U0NTliNzI2OWVlNTQyYmJlYjQ2NzM3N2E3NGI5N2RiZDkxZDE0NGY0Yjc4NmVhOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI4MmYyNjhhMWY2YmRjNjI4YmM2MjkxNjkzZTQxNmU2NjgwNWRiMzY3NDNmMDhlNjFkNDI2MGJkYzA1YzYzMDgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNjY1NDdlZDZhOTk2MzUwZDk2ZGY1ZGJmMDcxMzI3ZWIzYzkwNTIyYjg3NTk2ODc5YzE1N2Y3MDlkMTc2MTIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5Nzc3ZmJlZjg3NzQyMDZlNzUzMzZmMWY4ZjZmZjlmZGYyOTFiNTMxMTA1NWViNTI2YWFmYWMyYjVjZWUyM2FkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGUyZWEwOTg4YmQwOTZlNjhkYjRhM2RmZjJmMDZjMzllZDU5NmEzMmUxMDNhY2FiNzRjZDYxYTQzYTlmMDMzOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMTMwMzllNWZlYTE5MDI5MTA2MDVhMzZjYjJmNWQzYWYwNGUwZTdlNTAzMzY5MmUzZDFkOWVmYTU3MzVlY2YzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW1zLXByb2plY3RzLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRmOTIxMTRkN2RlZTYxZTU2ZjRmZGFiZDkyYmUyOGI0NjlkN2ExMGNlODFlNjQyZDNjZTRmNTI1NTJjOGY2MmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW1haWwtcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzYzI3Yzg5YTgxODQwMGUwMmEyNTVmMjk3ZjE3YWIzMGRlZGZkYTYzMjE2MDFhMzk0NTJlODI2ZjVkOTc2M2M2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWIzMzhhYjA2YmI0M2RhYzE4NjY0NmQ5ODJiNjhiNWIxZWJmNGM4NDgzOGU5YWVjZDM2NWZiN2UyZDZkYzdmMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZXAtcGFydGlhbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk2NGEyOTMxYzE3OTNkZGVhNWE4NmYyNTc2Y2ZiZTQzYjMyYWUwMjBmNmRhOTU4YWU0ZjY5MDVmOWY1MWYyMTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWRtaW4tcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGFhY2E3MDljZDM3ZDEwOGU1YmMwNTZiYmY1NDkzZmE3OGIyMjM5MmE4MjRkOGUyZjFlODIwMzUxY2EzNDFlZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGI5YmJkYmNlNDdjNGRiMzIzNGM0YjA3YWUzNGRhNzdmZjY5MmE0MTgyNzU5M2Q5OTU1OTYxNDAxZDYwZWI2ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZXAtcGFydGlhbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDFlMDEyYTcxYmYyZmRmMGI4ZWQ1YmMwNGE0NGRhOTI5NmU4OGEzN2EwMzlhYjQ3OWNkOGViNmQzMzI5OGY2NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMTg0ODc5MGJiM2VjMTU4OTIwOWI5ODM2ZTMyOTZmNzczMzhhNTk4NzlmMGFmZmVkYjI4OTM3OGNmOWIyODA5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BheW1lbnQtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjc3YzNhZmUzNGViZWRhYzMyNTQ5YzQxMWRhZTAwMTJjYzg4YjIzY2JmNjk4MWUzNDExNjUwMDI2NzcyZmViZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGRkNzYyY2JjNGI1MTBiMWVlODQ4NWJjMjg4ODdiOTc2MGRkZmU4OTRhNWMzZTM4ZDdlODdkZDBmYTJiODM5NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbnN0YWxsYXRpb24tYWRtaW4tcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzMGJlYTVjNDVlY2IxMGFmZmNkOGIyMTA3N2FkNmZjNWY0ZTViNTJiNjBlOGM0MGVhMGQzMjVmMzZhNzM0NzFmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwN2NjOTdlZWNjYTdhYzQxZWJhN2Q1M2FlMzhmODI4ZTYzNzUxNTMyMGM4NjRlM2FjYTc2ODMxMGNiYzg1MmM0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjYyMmY0OTY0MTRhZGMwMjk4NTgxNjFiMDFjNTkyZjIwMTlmZTQ3NmY3MTk0ODYyNDIyNDNmZDc2NTRlNjg1MjgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODU5ZTlkZGJkZjQ1ODc4YWQzZTJjMWZhMTgxYzAwZjU3ZjJlOTk4ZTFhZDEyYTU0NDRhNTkxNGNkYjNlMmIzMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjZmZDE0OTEwNTc2MzU0NmRjMzZhOTg2N2UzNDczMTkwMzhlZWZlNDIyOTk2ZjY1Y2FjN2YxYzFiZmZlYmZkZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWFhZDNmMThmYjA0OWY5YTUxM2MwYzg4MmRiNGEzYjFhOTQ4M2JlM2NlNmY0MjEzYzgwYjAxMWI1MWYyNmQzNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjMmY1NmVlMGM3NTM5YzM5ZjY5NzFlZTlmYTgxYzA0NTBkZmY0NGFhM2YwMWQ2NjZjOGFkNjIyOWJkZjMzNDY1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYXN5bmMtaXRlcmF0b3IuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYThjNjAyMzVjYTEzMGU5ZDIwNjhiNWE5OGQ5NzFhODg2NjY0MDhiN2NkMTYwMzQ3ZDFjMmE1MGVlMTRlYjQxZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hZG1pbi1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjViODdkNzI4NmE0NzBkODRjYTY0Y2YzN2IxNDVlYzk5OTNkOWJhYzZjNjg1MDEyMDEwNzM1OTBhY2RmMDkzZjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL25vZGUvY29ubmVjdGlvbi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzNlZGYxZWJlMDVkM2UwYjMwM2U3MDEwMzc4YmVhYWU3ZGY3YzE1MDI4MWY5OWQ5ODRhYjc5YjNhMjZhN2FjYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiMmI1NWQyNjZkNDNjY2VkZGI5MDU1YmY4M2UwNDkwNTliNmNjOTg4YzM3ZTE0ZmQ3ZTRmNjBjNjZjNWI0YzBiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3MjU0ODI1ZTRlNzI5MjU4NjY4MzhjMjE2ZjIyZTdhZWMxY2Q0MDU2MDU4MmYzNDcxM2M0ZmJiNDg3M2Q1MTRhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FuYWx5dGljcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMjAyZWIwYTMyYzAyZTg4YjNjYjllM2MyNzYwNTY0ODQ5OWRjYjgwZDE0YzAxNWQ0MGQ0MDI0NzEwMTdlNGEwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5Y2YxMzYwNmJmNDU4YjgyZDVhYzliMDdjYmRhYWUzZDE0OTg5Y2QyNTkyNTM0M2NiYzYyNjhjZThlZmI1YTI0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyYTkxYWI1MjQ4MDUxZDVkYzQxMmQ1Y2ZkNjk1ZTc0NmI2Yzc0NDA2YjJlZDQxYThmZDg1MDY1NDI3Mzg5ZmFkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZiNzBkYjg1OGRlNTc0NjMwZmI1NTgwMWUzNDAzMjE5NTEzYTMwOTRhM2VmMGNkOTMwODQ5MzgzMWNlMzRkNmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9jYW5jZWxhYmxlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjJhYTg2OWVkMzk4MGI2YTBmN2NjOTcyMDdjZTkxZjI5ZjdjZGMyZTM3NzI2YjNiNTcxN2QwZjYyYzJlMTA1MTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1Y2M5MDlhNTJhNTkzMjA2YzAzZDZhYzE1ZmQ5NjgyZDA1NzgxNGM3NGYzYjlmYTllNWIxYTg2MGU1YTM1YWI0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FkbWluLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNzI4ODU0YzZiNTY3MWY2YjIxZWIyZDQzZDMwYzZkMzQ1OGFlNzNiNTE4MTZmN2Q4M2MzNmRkN2M3MTJiMWJhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjcyODdjNGUwYTQwMTdlOTA4Y2I2NjA4OGVhZTQzYmUyZWRlZTNiZTFiMDEwYWRiMDIzNzczODQzMTE5NTJiYWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YjI4ZjEyNzlmZDdlZjAxMDc3ODZiY2QzNzAxOGIwZGYzZmNlY2RkYzNlOTBmMTk2MWM0YzUwZWEwMmQ2YjU3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1mcm9udGVuZC1zZXJ2aWNlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNhNDVlMjVhNWQxY2VkMDllZjFiNThlNGE4ZDhhOWUyMjBiZTY0ZjQ1YWViYzMxMjhiNTU0ZGE0YzQzMDg4ZjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW1haWwtcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTQ4OWQ0MDVkODc2ZWEzZGU0MzQ1NWJkMTMyNGM4MjEwZTc5OTQ4Y2MzMmVlODllYTY1NTg1ZTA1ZGNhOTZmZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1jb29raWUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjQ3MWZmMTU0ZjVjYjkxZTNhNTk4ZmZkNWFjMzYxYTE3MTZmYzcwYzhiZmQ5MDEyZDVkMTkyNGM1MmMzNDlkNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImMxZWY0MWNjYWMzOTFkYjljNmRiNDEwNTYxZWYwMmFjMTVjMjg0NThjMmUxNjYxMDQwNGE5YjQ5OGJmMDZlZWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWEwN2Q4MWVmMTI0YjkwMTE2MjMwMzA5YTAwZGYzYzdhZGZmMzRmNDVkZjUwYTczMjUxODg3N2FkMDAwNDA1ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVhYjhkMDhhMzdiNDYyNzY4MGI5MjY2YWNiMTlhNTY4ZWRlMzgyNmFlNDNmZmUxMjY0ODRiNjlmNzhlNjc1N2YiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvY29ubmVjdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZjQ4MjY2ODEyNjFkYWYwMTBmZDMxOThkYzMxNDRiODZhM2RjYWYzNjE0ODU1NDViY2Y1NWViYzk5YWJlNzgxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBjM2I2M2RjZTJkZmI5YWNjOTI4NzAwMTkzMDRkMDZkNzE5YzVlY2M1NzdkNmVkY2MzZmJkY2FjYTc3ZjVkZjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWNjb3VudGluZy1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTVjM2JkZTdmOWI1OWIyOGQ1MzY4OTBmNTFjMDQwNWFmM2I2ZTY5ZWQxZDhjMmQ5MmE4YjJmOWE2NzBjNTRlMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9saWNlbnNlLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTRiNWVmYjg4YjZiYWNhYTAzMTE2NDQ1MDJjODdlZmU1MDQ0OGZlNzM2ZWMyMmM0NDc2ZDYxYzYxNjFkOWNkZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MDFmYmY4MjdkMGIwZTgzNmI3NmVmYzc5M2FlNDU4MzlmZGIxZThhNjUyNmEzZjI3MDE2ZDU3NWU0ZjM4N2U1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcmVwZWF0LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ5OTA1OTE1Y2NhOTVhMTlmNTRmZGZlZGY3N2VkYjIxMjY1ZTYwNGZlOGJiNjU0ZmZmZTg3YjMyMzBlYTc4NzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0MDUzNGQ1NTg5ZTVmYjc4NTdlODQ1NGUyNjM2Nzk2NGNmODAxMzg2ZDFmYjhmYzA1MTVjZTJlNDFiMTA5ZThlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ4MDhmZDI3ODEwZGNhNmY5YjA2NDU2YmYxMzBlZTBlYjFlMjcyNjJmNmNhMGI2MzRmMmQ1MmE1Njc2ZWI3NmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWRtaW4tcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDlhZmRlMDkwNGRlZTMxMTY0YzA2ZDA0YjY3ZWM3Y2Y0OTg2Y2RkMDNkYmY2ZDRkYjZhMWE2YmExNjhkZjc3MCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjYWFlN2MxNzk3ZWNiZjNhZDU1MzZhMzE4MTI5MjRmMjUwM2YyODQ0Y2ZkYzBlNGNhNDc1NDI0ZDVlNzY2YzEwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhZTk5MTRmN2IyZDJjMWY4NGI5YjA5ODg1YWExMzcxYjA4N2MxNmIxNzdkODRmNGQxYzYwNGYyYTVhNGM4MDlmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzQ0MjQ3OWZhNTMxNmVmZjYwOTY5NTY5Nzc2YzdmMTc3ZWFiYTcwMDA3MDhlMWE4ZWJjZWMwYjRjMWY5ZmQ1MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU0OTI2Y2YzZDA5ODdmNDNjYjQ3NDNmMWJkMTMxNGViNTkyZDQ4Y2UxMzQ4ZDZiZjI4MjM1M2M3MDFiYmFlYTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL25vZGUvY29ubmVjdGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImNkNDE4OTlhYzI5ZTdmYjdlN2NhNzExOWIzZDJiN2UwZDE1MzUxMDY2YzE1YWMzOWQwYmM2OTZmOWY4ZWQ2ZDgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ldmVudC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzYTZiYzQyNjUzYjMwMjc0Zjk1NDlkODViMDFkNmY5ZDEzZjc4YTZkNjI5ZWVkZDc4NTkzY2E0YzUzYzczNWExIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Byb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5NWY2ZjZhYTM1OTRkNDA2N2YxMWE2NTllOWU0NmIxZjk5MzJkOTczNWI5M2FhMWI4MTVhZThjZmU3NzBlMjAxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vY29udGFpbmVyLW1vZHVsZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM4YTY5N2I0ZGJkYjVmMWFhODU4OTZjMTU3ZDI0Y2UwZDVkMTE1Yzc0ZjRhZDhhZjcxMjhkNDNiMGQ1NmE1NzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxMzg2N2RjZTZkZDRmOTdhMjlmNGY4ZmZjNzQ4NWU3ZmM5ZGEzYTg4N2JiODc5ZjZhNGM4YTU4N2M1MDU3ZmE3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzVmOTUzNjJhMGExZWE5NDM1YTg1NzA4ODNiODJhYTFiZWUwZjI2ZTgyMWFkY2JlZDIzZTEzNjQ3MzdkOTgyYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2NvbnRhaW5lci1tb2R1bGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmRlYzIyODg0ZmNiZTEyZWU0ODNkOTNjZWQyMmUyYjk4YmU2MTNhNWYwOWY3NjI1Zjc2MTMxNzUxZTIzMjk1OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZXAtcGFydGlhbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNWU2ODExMzgyNzA1MWNkZDkxOTU3ZDI5YWU2M2E4MWVkMGU4NDdiYTg5MTljN2JmOGY5N2U5YmY2OWEwZDRhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmEzZWI5MTdlYTMyZWUwODA5NGNiNjUyOTk1M2QzNjNhZmEwNTY4NTgzYjk3MzUxN2YyOWRhMzVkNmY0YTQ0MCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvcHJveHktZmFjdG9yeS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYjg2MmE2NjI1YmI2MDFkMThiNjUyNWZhZDhiZjc4MzI2NTUyMjJiYzE5NThlZmM1OWM1YjFhNWEwYWQ4NjE4MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvcHJveHktZmFjdG9yeS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZkMThhYmEwMzcwMTVjNzc3YThhZDk2N2NiMWQxZjc5YTA4OTJhOTRkMTYwZGE2N2RlMzI3MDRjNmZlMjEzZmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGRkYzA3NGFhZThlNDdjYzUyNmY3MTdiYTY4MjRlN2RlNDUzNzlhNzU0OThjNjBlOGNkMWIwODRmYmZhNjJmYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWU2ZWYyYzExMDIwNDdmZmZiYWQyY2EwMzUyNGVlOGY0MGVkNTU5ZmQ3NzQwZjEyYTA4NmVlNGNiYzU1NTE1NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2x1c3Rlci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY3ZDFiZjc5YzdmYWQ1NTMxMjRjNjQyYTIyMjgyOTc5MDcwNjQ2YTA3MzAzNWMzZGQ4MTJjNDFhZTMxZjkzNmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNmQ1MmMxMjc0MWJjZTM2ODhiYzEwM2M3NmVhYTFjYjczZWE3YWNiNmUzNDkzZjZlZTNjOGNlYzc2MDU2NzA3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNGU1NzJkZWY2Y2VkOTNjYWI3MGZkY2VkYjE2ZTE1NGExYmQ1NDczMjM3M2QyZDJmZGU4ZTEzNzRkNmVmNDM3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvd29ya3NwYWNlLXBvcnQtYXV0aGVudGljYXRpb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiNTY5YzZkNzVhYTQ4MzViMjkyMDdiZmViNWUyYzM5M2RjMmE1ZGM1M2RmMTRkNWM1ZWEwMzk0ODhmYjYwMjRjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg4YWQ1ZWU0YzQzMDAxZTE0OTQxY2JkZDAzNDMyNzY3MWE5NzY3YmY1OGU1ZjVhYmI5ZDM5M2QzNjExMmIwYTUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzOWQyOTJkZGI0N2Y2ZjcwNzRmNjY4MmE4NTYxMzE4ZTllYzI1YzNmNTU0YmU4YWZiNTQ4MDYzOGM3NjlmOGFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWQ0MGE1NGJhZDIzOGE2MjczOGFhMDRmZTQ4NjdjYzBjODEzZDljMWFhYjIwYTFlMjhhYTk4ZWI2YjA1MTEwZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhYzNmMWE5Y2UyYjU5ZmJmMWJlNGM2MDljZDNhODlhOGVlN2Y1ZWY5N2NjMWQwODNkNjA3YWU5Y2NiOTcwNWNjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxYjE5YmE1ZjZkOTkzZmNjZDQ3ZWM2YTY3ODgwNTUzMzZhNDJlNjkyMmZhNGNiZTg5YzJiNDc2NWYzMjIxYjBiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL3dpbmRvdy1jb25uZWN0aW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBlYmEyYzU2MDZhOTU1OTZmZDAyMTRkODUzMjMzZGJmYjdhNGU0MzVjZTBjY2Y4NmU1YmQ2MDhjYTdkNDQyMTEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmE3NjE1YWFhN2M3ZmE0MzQ2ZWNjNzY5OWQyYTBjZjA4MzQ2Y2RmOWM2ZTFhODM4MmVlZmZhNDJkMTk2NzM5OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2tleS1wcm92aWRlci5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyODY2MWI2NTU1MmY3YmMyZGViYmU1NTMwYzE4ODEzMTlkZjM5OGFkOTIwY2YyOGRkYWRlMmMwNTQyMmMwNmM5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0ODY4ZWEyOWJmOWM2YWM5YWY0MTliYTRlNWUxODhmOThlZTdhMjc2MTQyMzM4NTczMmMwNmFjMTJhMDFhN2MwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BsYW5zLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhlOGQ4YzFhNGZkN2NlMjlkMDlkMWQwM2YxOWVkM2JhNDAzYjg3NGFmMGUxYTZiMThjZmExYmVmNTFjYmZkOTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbS1zdWJzY3JpcHRpb24tcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDMzMWJhMjBlYjMzMjRkMDc0MjAxZmYyMjE4YWJjMGUzY2QxNGY5MmU0NWIyMzVhZTMyZjQxNDlhOGE0MzQzNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJhMzk2NGIzMzE3NzcxYzBhMTk5MGZjNTdhZjlmYmZmM2JmMmQ2Njk1NzgyNDk1MjE2YjQxZTMwOTI4YWFlNTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImY3YTBmODk1YjM1OWJmYmFkMDk2MDI0NzA5NGFlNGI2ZjE2ZTlmYTgzYzIwZWYzYjc3Mjk3YzAxZWY5NzUzNmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9yZXBlYXQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODcwMmY0ODkyMGU5MWEyMWVjZWFmOTMzZTczMTUzZGE1MTEwZmMyN2E2OTNlZWE1MDJhZDZiODkyMWYwZGE5YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NlbWFwaG9yZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NjRlNzg0NDYzYTBlZjAxZDFiOWJjMTkxYjdjZTIxMTNjMTNmOTJlODJiYTAxNDNlMmFiMmMwNTQxYmFmMjVhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9jbGllbnQtY2FsbC1tZXRyaWNzLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU0NTEzMDk2MzdlM2Q3MDFkYjA4ZmM4YjU5ZDhhZmZhZjk5ZmFiMWM0ZTZjMzBlNWRmYWI3MDUwYzNlMTAzOGMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE3ZmQwMjkzZDUyYTFhMjkwZmQ3NzJhMmI3N2VkNmM3YjhlMmZmNGI3Y2Y1NTA0YTMxNDEwM2ExMWUwMGZjOTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvb3NzLWFsbG93bGlzdC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NzdlOTNkM2NmZTQwMzgyNGJlOTFiNTRhMTAyMTBkZjNkNjE5NWFkYzQyZmUwZDBjZWQ2OWZlYTg1NjE5MWFkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9jbGllbnQtY2FsbC1tZXRyaWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjMmUxMjEyMmVkNmQ4NDA4ODFhMDgyNWU3M2JmNWRjNjE5ZjRlMjVkODZlM2QxNDIxMTU2ODM1MWUzYjFiN2I1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVmZXJyZWQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTg4ZThlZWJmZDM4OTA5OTA4ZTMwOGM2MDg2YmUzNGMxZGM5YWM1MzhiYTM4Zjg1NWU5MDMwMWI3NDc4NDkxYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbWFpbC1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWM1YTJiYzE1MjRhYzFlOTY5MzhmMjQ1ZDhmNzBmOTJmZTMwYWZjZjJhZTJiYmE4NjNlMzQwZWU5NTkwNGQyNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYzQ0MGU0OTM2ZDFjYzM3Zjg1Y2E3ODNhMjQ2ZDc3YjY4OWM1NDA1ODJlYWI5MWQ3ZTQxNmQxYjQ3ZTk4ZjFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDA2N2RjODMwYjJhNWRlMGQ1MmU3NGUzMjM4MTI3ZTY3OWE5MzZlMGE3NzBhYWNiY2U2NjE2MmIyMjAwMzE0YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FuYWx5dGljcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYmE1YmQ2MTQ5MzQ5Zjc1MTE1ZTI3NDhjNTk5ZmQwZmZkNTZhMTVjOThmODU2OWE2NmM0NmQ5OGNiNTdkZWFiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODZkYzc3OTUxMTA3MThkNmVhN2IxOWUxYjAzMTdjNzYwZjNkZGY2NzJjMTE5ZDc3NzhjOWYyMmI5YThhMGY2NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dycGMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhmNDFmZGRiMjlmNTRiZGVmNjYxMWYxZDJkMTk2YTM0ZDhiYjBkZmI0YzE4ZDUxZDQ5MTBjOWQ5NzA4ZTFiNzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2hhbmRsZXIuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2YTc0YTg4MWE5OWI2MjcxOWE5ZGExYzFiM2IyNmVlZTIzZTQ5ZTYyYTdlODdjNjc1NTkwZGEwMzk1NmUwOTNiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZDgwZmI5YzM4MGM3ZDkxNzEzN2JjMTgxOWExZGIyNWM0Y2UyZDBhMDhlNGM5MTdlZThlM2VhYTg5ZTBlMDI2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYzZhZDI1NWM3Y2NkOWM0NWZlNDFiMzU3OTM3YmZhMzY0NjUwMGI2MGExNTZiZDJlYmU2YzQyNTZjMDM4YTcxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0M2ZmNDYzYWZlOTc1ZDA1ZWMxZjMyMzdlZTMwZWVhMzUwYjI1NTU5ZmNjMTM0YzI0ZWZhMWU2M2Y1YjdhOWQxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dzcmVhZHkuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZlODg3ZmEzNjlmOGQ2ODU1NWMzYTVmMmViZTY4MTIwY2E3ZDM1MmQzM2FlNzZkYWE2YzliODkxMDBmMjAyZjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBiNTEyOTE4ZDYwYWQyMWQxNmRkMWM3N2Q3OGQ1ZjQ5ZmM0ZWJjMDJjNDBjMmEzMzkxYTRjZWI4NDQ4OTJlZWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kaXNwb3NhYmxlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZjBkNzk3NGRhZjMyNTFhNDUwNjY2NTc1OTlhMDY0MTllYjBkZTU2ZTcwMTkxZTRkMzVhNTQwMWJiNTVkNjY0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1zZXJ2aWNlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjI1OTA4NDJkZDc2N2VmOTA5NTc2YmJhYjgxMTA1ZjUwNDU5NGI0NmVjYmE5MmQ2YmZmZGRhMGU2NmYwZTEwNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hbmFseXRpY3MuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyYTZkMDJmNjJhMGRiNzA1OTAzMGRhYzc3NGUxMGY1NzczNWQ4M2RjNzAyMWU5NzdlNTg1NGQwMGFmY2IyMzczIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ3YTNhYWQ0ZjlhMmMxNWM4MTI0NmMwMWMwNjkxZTU5MzNhOWJjYmM2NzFiZjU4ODY0MDU2NGQ4MjQ1Y2JlZDIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg4Y2I1NTlmNzc2MGE5OTY3MTlhOTIyYjAyYTNkYjVjMTRkOWQ3YjQ5ZWFlM2Q3OGZjOTYzYmY2Yjk4NGE1YjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxOTAwMmQ4ZWQ3MjFkZGU2MjVlZGRiYzQ5YmVhMzdlZjQ4NjBmYTQ3ZTQ5ZTk0Y2MwOThlZjFiYjc5MTM1ZmRjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5OGNkZTU3NWRkN2YxODExNDAzNDliMjE1MTk3MTlkY2UzZmRiMTFiNjFjMjQ4OTY3MTExODMwZDQ5YWIxNjNhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2VtYXBob3JlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhYjllYTViMDljYTc5ZWIyYTZmZmJkM2U0MzNiOGZiOTM0NDU0MDEwNmUzMTBjOGE4NjkyNTM3YWVhMTE5NTcyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvY2FuY2VsYWJsZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVkZjViYzUzOTBiZDM5ZjRmYTI0YzFkYzhlNTZjNjVhNTViMWM1M2FkODdjYWJjMDU2ZWYyYTRkMGNmZGMyNjgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDViN2EwMzg4N2EwYzRkZDRmNTRjYzE0ODc2Y2JkZmQ1MDk1OGRmZDU0MGIxOGNmN2Q2OGFhYmNkN2VmNjQyMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RhdGUtdGltZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGIyZDNiZmRlOTk0NTgyNzkyY2JkZDczZDI0ZTkzZGE5YTNiNzNhMTFlZjhmNTM1Njc1ZDQzOTYwYWE2MGZiYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzE1ZWFlOTE4YzJmNjVlYzlkOGIwYTNjMTA1ZmQ0NDY1ZTcyZjk3NGUzODcwODg0NTE3NzM2YjBlODZjOTE3NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MzExOTgyNDA0N2ZhMzY5YjJiOGNlNjBhYmIzMWY1ZGY2MWQ3ODA4MTQ1ODg1NWJmNDgzODM2YWI0ZGZhMGQ3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FuYWx5dGljcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlOWY1MjRiMzhlOTM1NzQzZTFhYTc3NDUwZGJjMmMzNmIxYTFjZWRkMDY0NWVhYjhlZjZhYzc3ZjI4YjQ4MzU5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2FyYmFnZS1jb2xsZWN0ZWQtY2FjaGUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5OTU5MGFjMzVhZDQxMzliMzRiOTRmMmU1NGFmNzM4MGMzYTgzYjQxMDlhMTM5MWRjOTliMDhmZmJjZDU1MTA2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3R5cGluZ3MvZ2xvYmFscy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmMzU0NTIwZTEzNDZkODY3NGNjZjg1MTA2OTU0NTc5OWUwNGJjZDMyNTM2OTg0ZDA0MjQwNGY4MjIyMTQyMmY4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI4NjZlZDdmMTBiNjYyZGViZjc5MzY2NDAwMTJjZjJhMDI0NmY3OWY1NTgxMDhmM2NjNDc3YTQ4MzQzNzU5MWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbS1zdWJzY3JpcHRpb24tcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmYWYzZjdjNmIwNTVjMWU3OGIzNmYyNGFlY2EzMDM1Y2UzM2E5MTFhYTNhMjY5MjU3ZjAxZTI3M2JiN2UyNWY3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQwMmI1MTUxNzc1OWZmOTIyODEzYzZjYTMxYTY0ZjFmMjczZjU5NTRiNGIzMzUwZjlhZDE3NzFiYjk5ZmM4M2QiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUwYTY0M2UwYjIzNjdhNDljYTU1NDEwYjhkNDMxOWFlMjFlN2ZkZmZmZDQ4OTk0OWJmYTEyOWU2ODYwZTY2ZWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvd2luZG93LWNvbm5lY3Rpb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ODY3ODhkYzhkYzljMDJkNGQ0NDI3YTZmNjJmNGM3MTg5NjI1YTA3MWE0YjBjOTUyYzhjM2JlZTA4YjU4NjE4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVmZXJyZWQuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTQzZGUxNTUyMDExMTU5MTcyZGJkNTFkNGI5YmQzNjBjZDUzZWVhNjBjZDFhZDA1MTJlMDQwZDFlNGQ1MmY5YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbmRleC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY1MmVmYWRmNTZhNWVkZDdmYzgyZWViOTgzNDJhZDJmYjA2ZmYxYzY4ZWE4Y2UzMjFiMTU4YjMxY2I5MmRmZDEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvY29ubmVjdGlvbi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWRjZDQ2NWFjODNkMTIwYjdlMTYxZjdkY2JjOGY2ZGUzZjcxYzhhZWFiMGI2NDczM2FmMzkxY2IxYTk4MWExYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjEyNjVmNjgzMzNlYjQyODcyZjJhMjQ2NGUwMTY0ZGU1YmY4ZmZjNDQ2MWRhM2VjMWExOWRhNDU0OWU0NzIyNmEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM4NmY0MGI4N2Y4ZGJhYjA1OGY1NWFmYTI1MjVmY2UyNzk1N2UyNWM4NDQyYjEwNzk0ZmU2ZDU2MGVhYTk1YTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5kZXguZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE5YWI5ZDc2ZmY0YTg4OTc4MjY3MWM3ZjJjZDlkMGU4YzAyMTk1ZTM3NmE2MTdiNGU2OTAzNTQxNzM3YTQyOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci9jb25uZWN0aW9uLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTc1MGQ2ZTBkOWZmZWJmNDllODAyMGQwMDNjYzM1YjNkYTQ5MTVlNzY5MWU4ZjU1M2RhMDZkYTYyZjU1Y2UzYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wYXltZW50LXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWM4YTM5MDczZjZkZWY5ZmYyOWYyMGUwZjljMWQ2NGNjM2YxMTg1YTUxN2Y2YjAzNmY2NGJlMThjZTc3NWQzNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjlkODc1YTNjNmY0OTdlZDFmOWUzYjk4MDAxOTQ1ZjhiZDE5N2IxOTk5ZmI2YWQ4N2UxNzlkNDc3ZDIyZmQ3ODEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2MTc0YWI2YzA4NmViOGI1N2UzNjRiOTE1M2I3ZmRlYWU5ZmVhMzAxOWIwYmRiNjIxOWQ5MDYyNWE2MTI1OTA2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL3dpbmRvdy1jb25uZWN0aW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZmQ1MjFiNzBiNzczZmI4NDhkMTI2OWRjNzU1YWE0YTY2OTNkYTJiMTgzYTg2ODE0NjNlNTRhYWQwODIzMGY1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ3JwYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM5MjUwYjE0YTE1MmE3ZjQyN2ZlYTM4NWM3Y2VjZTVlMzZkYjhhNmUzMTBiMTIzOWM2ZWIxODgxZGU5NTUxOTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hc3luYy1pdGVyYXRvci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTc2NjUzYzQwYjAwMWZkZTU4YTU5ZDJiMjkyYTRkY2FkNWQxMWRkYzQwZjMyN2RjN2UzMGVhZGZjYjhjODhlMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZThmOTUwMDBhOTRlMzk2OTgxMGZiMDA0ZWE5NTRlNjNlZjUxMDAzODE0MWM0ZGFlMGRhMTQ2NDlmMmNiMjE1NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjJiZTkyOTJkZDc2NDQ2MWE1ZGVkMmUyNzNjMTJiYzcwZDllY2RhYjZmZTBlYjFlODE2NDY5ZjdkZjYwNWZlMzQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjMmRkNjcwNTY0YzA0MmVlMDNmYTgwMmIwYTdlM2RiMzZhMzgwMWIzN2RhZjNjMDg1MTI4MGIzNWI3MTg5MmNhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9lcnJvci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlYTg0OGE4YzRjYjI5ZDM3YWFhOWM5ODZmNTE0ZGFmMDZiZGVmNjQ0Mzc1MDhiYTY4YTk0YzQxODExODc2NGU2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyODVmODVlOTk0ODdkNGZkOGFlZDk2NmZiMjMxNzk5ZTJhOWU5ZmY0OGU5NGNiZWZjZjZjM2VlYjc3Y2I5MGQ1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE4YmJmOGRjZTljZjUyMjc2OTFhMDZhNGJlN2ViNzU2ZjgxZDE4NDVlMWExOGU1ODA5YzYyMzg5ZTg0OGIzOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2NhbmNlbGFibGUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjNiYWNiNjgyYzkwY2Y4MGVlYTIyZWViODc0MjkwOTkxMDMzNTBjYjNlNmVlOWFkYzM5ZmMxMDU5ODUzOGE5YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FzeW5jLWl0ZXJhdG9yLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiN2EwNTY0ZTA1MzM2NWJmMWQyY2ViMWM2N2IzZGNhNTQ1NjM2MTE5YjNjZTU1Y2YyNzhiNzVkOWUwZmUxZGIwNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbnN0YWxsYXRpb24tYWRtaW4tcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjZiYzIzYmIwNThlNzg5M2NiOTRkOTViYTQ3NDg0NzIwZGVjOTQ4N2FkZjYxYzdkMDg3NDRjMGY0MzhiMDU4ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtaW5zdGFuY2UuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxMzFkNzY5MjMyYTRiNDBkYmE4N2NiODg4MWE3NzFmM2JmMWVhZDA5OTYzOTk0MTAxMTcxYjk3MWI4MzFiZjZiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGF0ZS10aW1lLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY4NzhiZWIwZjdjZWYyZmE4OTI2NjU1ZTVjNTk5MGMwOWE2YjljODBjMDQxNjYxMDI0YmIwYjBiZjIyYzhhMTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWVwLXBhcnRpYWwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTZkOWQ4ZDJhZjg4Y2ExNzIyNjRlZDkwYTk1ZGRmYjM2ZGU3MWZkNzE1MWExNDRiYzY0NjNlMDZlNWY2YzEyNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RhdGUtdGltZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZhNDJhZWI1NzNhMTZjNGFkZmUwMzNiY2E5MWU2YTJkMjJlNjUzNGNiYTBkOGUxYzFjNDc0ZmM4NjZiN2FjZDgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMTIxNzY0ZjBhMWU2NTAyNzA2MTc3MjhhMDI1MmZlODQ0Y2NkZjRjNmNkOTM5MTlmZTg4N2ZiN2NiYWEzNzhlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1mcm9udGVuZC1zZXJ2aWNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI3MDliMmNkNDA3ZDczNDA0ZTViYjc1N2YzNGE1MjExZTkzOTg3OGI0NGRhMmRmOTQyMmZlYWE4NjVhZWFiNTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9sb2dnaW5nLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY2NmVlMGEwMzlhYzU4MzhhMjU5ZDgzNTQ0MDA5MTljZDA0ZTBlYTgyMWFlOTQwZmMzYTJjNmQ5YzAwZDFkZjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9zZW1hcGhvcmUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTRmNmQ5ZjcxYTk3OTljNzk3MTg1N2RhZGE5YzZkODNmNTg0ZTc0MDg5NGUwNTg5ZjZjYjZlOTZiY2YxODFmOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NlbWFwaG9yZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU1MGNlZTcwYzMxY2FlNDM2NzIyYjE0OTdhOTUxZTAzYjJkMWY0ZjNmMjc5ZGZlY2YwYzhmYzBlOTBlYjgzODQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Vycm9yLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ0MzMyYjJlYzVjNDZjN2RmY2YyNWIyNzI3MjBiNTFhMjFlZTBkNGY4M2RkMTdhZDEzNGVjN2Y4Yzk2NWMwZDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW52LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4MDRjNGFjNDVhNTM2YzQ0ZjVhNjY2NGZiOTU0MWU5NTJkNzIwMGE4MGQ2MjdhOGZkYzZkOGM2ZGYzODMwZDBiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjkxMDAyYWUzNGRmMjEzMWY2MDNkZWMyZmMxMzM5Njg5Nzk1YTEwYjdhYWE0ZWY2NzRlYjI4ZGVlN2UxYjNkMWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTNkNTI3OGE3NDlhZThlMDllYWFlZWNlMDJhNTM4YTIwNzkxOGU4MDdmODZiN2IyYjZmMjI2MzU4NjQ3YmU4MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjRiMTk1Mzk1NWVkMTY3NTlmMDI2MWIwZTgyZGEzZjNmMmI2ZWFhYzA2MmY1NDhhYmM5ZDc5MWEyYTUyZWM0MjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGRhNWMxMmI0ZjdkMGZjN2QyOGIyYTBhNjA3ZDQyNGM5NjRhNTJlNzk2NGY5MmQyOTc5NTdkOWU1YjU0NmMxMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ4NGNhZjc5ZWZjNzk5MjRkNGRiNWZkZmQ2MGZjOTljYTFmYzcwZjIzZWZiMTg2NjUzMWIxYmJkNGFjMTc5ZjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDYxMWJmMzUzYWQwZmIzMWMyYmI0Nzg0NTQ3OWFlOWFkZWNhZDI5NGY3NWQyNzcxNzUwMzJhN2YxMTE0ZTQ2NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3JlcGVhdC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTYzOTY1MWZlZjA4YTYxYzY3ZGQwYjkwZDQ3YTVkMTQwMTQ5YzM0YTI1NjNlYTVkYjBlNWVjZjU3MDI1YmExNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NraXAtaWYuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImEwMzkxZGRjOTY5MWU5OWJlMzVjZWRkNTA3Y2ZiNzM3ZmU1MTZiMmUwYWUwOTc0YWRiNzMyMzc0OWVmZThkNGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzk3ZjhlOTQ0NmE4MmUzMzVhNDNmZjIxZjQ0MTBlNTZmNTU0ODY5MDNiMWE4ZWM2MTRiMDVhMWJkN2E1MzgxNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2tleS1wcm92aWRlci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWIyYTQ5MjhlNDA0NzBlZDBhYTdhNTRjNjBhMWRiOGU4OWFkYzUzMzA0ODIwZjIyY2FmNGM5Y2NkZDE5NjY0YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvbm9kZS9jb25uZWN0aW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM1OGFlZWE2NWZlZGU0MTBmYjliNzA1NjU4ZjNkOTQyMDA5OGEyNGExNTU5Nzc5ZTI4MGE1Y2IyNGQ2MzQ1NDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTNhZDkwM2Y5ODllOTg5ODhlZjdjNTVmMGFiNDgzNWQ4YTg4MTBlMzNkZDVlODE2YWFiNTQxMjEyNTI0OTE4NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdXRoLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyODg5MjExNmMyMjYyMDYyYjllOWMzMjQwMGQ3YzhhYWViNzZkNjI3ZTg3OTQ5Zjg1NTRhZjhlZjBmN2ZlY2RjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxZmI2MTI2ODkyNjBlNjhlNzM0YzZkY2RhYmY4OGE3MmNlMTRjOTY0NTA1MDRjODVkZGMzMjlkZDIwMzM4YzhmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzIyZjMzYTc0Nzc1NDAxODVhNjFlYWU2ODdmMjlmMWQzY2FhY2ZhNDQyYzhhNGRkMTNiNmVmNzQ1ZTBmZjhhYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2NvbnRhaW5lci1tb2R1bGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE0ZmQxMWYxNzMyMDZhNmMxOWI3NjVkOGY0OGQxNDNjNTA1YThjZDczYjBjM2QwOTU2ODBiODRkN2Y4Zjc3MWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJkZWE2N2FjZWNhMjc0ZWI0YTQ1ZjE0ODYyZmEzMzE3MTQyYTdmMzYxZWNlOWEwNTJmNGQ4OGY1NzY4NjMxYzUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9sb2dnaW5nLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdlOTg4YzczMzM3NmEzOTJiZjRlZWFmYTBhYzc3OTc1Yzk3YTIxMjdiZjI3ZTJiM2E1NWY5MzQ5MWFiYzk3NzYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjRiYWQyNDg2OTUzZWRhMWQ1NmI1YTZjZWM5ZGExZTMyYmVhYzU0YTA0ZTFhMGMzNDM0MTYxYzRhNzYwMDU5NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMmI1MmQ4NWRhZDFlZjhlOTAxMjNmNzlhOTdhM2RjNWJiN2ZjMmE2YmUyYjM3NTNlNTJkYTM4YjZlZTQwYjdkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyNGZhN2EwNjg2OWM3ODlkMjc0NmQ5OWViY2RjZGEyODgxYjU3MGUyOTk1Mjk3N2U2YjdlNGJhN2M1NGI1NWU1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Blcm1pc3Npb24uZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzBmNjBlMjQ0N2Y1ODNhNmFiOGY0OTNmZWNmYThlOTlmODNhMTJjM2UzODlkZmRhNWRjN2I0MzAxOGUwZGJlNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM2OGFlMTIwMDU5ODE5ZTBlYzZmZjNhNDg3Zjg0ODM4YTk2YmZjNzFlNzkwY2VkZmRjN2UyZTkyMzdkOTU2Y2YiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGJjODRmNTE1MTNiNDUxMTc1OWUyNzg0NTYzNDAxY2NjOTc2Mjk1ZTk3NTRjOGNmNTA0ZGM4NTA4NzIwNjFiMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmE0NGEyNjVjZTYxZDZhOWQ4ODc3MzI3Y2YwMzE0MDExOTZlM2YyYTU3OTlmNTU1NjU3NjYwNmM4MGZkMmQ4YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtcy1wcm9qZWN0cy1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNhMTAzOTQ4MzAyYjI2MmFlZTE0YjVjMDJiYTk4Yzk4YTVkYmJhMTBmNjIzZGQzYTU2ZGU3NGM1YTZkODk0NjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjYwMTAzOWRkYmI3NmYyYjY5YmEyNDljMTI1MjFhYjI5ZTQ3YWE5OTJjOGViMDVlYjBlMTc3MzE1N2U5Zjg5ODciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE5NzlmN2Y1MzcxODU4NjFmOTBmZWU4ZDMzZjI5Y2FmYjZkOWMzMDBhOTc4NDJjYWY5NTAzZDA4ZjczZjNmNWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhYmI1YWU1OTk4OGUzNTMwOWMzZTRkYmJhMjdmZmM4YzIzMGY5YjlkZDEzYTJhYzlkZmU1ZTJjZjFlZGJmMDM4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE5OTk5ZjRlNmZhZjBhZjdjMzRmZTQ5YWQ0NDQ0MmU5MDlmNjE1YzJkYTE1ZmE5NTBkZjFkNTNmYTNjNmIwMjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hbmFseXRpY3MuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmQwZGU2Njg4NWEwMDI4NGM5ZDEwMDRkZGRhMGVjOGFkNWYyYzhiZThkMTkwMmRmMmMyMjA2NTUwMDE1MGQ3YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2NhbmNlbGFibGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA1M2IwNzJjZGJkOTIyMzk1NGRkNWZkYTkyZDkyYzk5ZjgwOTlkOGVhZTUwY2ZhNmM0YmYyZGFhZGQwNjFhMGEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGVybWlzc2lvbi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDkzOTQwZWRlZGNjYmZjNGEzNGY4M2EzOTBjNmVhMDRlMDQ2OTFjOTU5OWJjMzIwYjE1N2EyN2RjMTkyZTI2ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbnN0YWxsYXRpb24tYWRtaW4tcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzc4OGYyMzEwNjAzOGM1ZjM5N2RiZjRjM2ZjZjY5YTUzZWJjMTkzYTM2YzhkODcxNzRjMzdhNWY0ZTI1ZDQxYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wYXltZW50LXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2OGI0NmI3ZTg5ZmJkY2VjZWI3YmNmMzlkMDRjMDFiMjRjZTNmMDExM2EwMTZlYWE4ZmMyMDA1NTc0MDZiZTVkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNGJkYzZhNzk4YTVmY2UzZTc0MDFhYmFhM2U2MGU4MDY3ZTU3ODFlOTY2N2Y3ZWFiODZjNDYwY2MxNDAzZTRiZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3dvcmtzcGFjZS1wb3J0LWF1dGhlbnRpY2F0aW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2YWI4OTIzYTQxZDU1ZWQ2NjIwZmM3YTIzYzQxOTlkYzViMzg5OTkwODI0ZmY0MjczNjYyODZlODdlYTc5OGZjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2tpcC1pZi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiMzQ5OWE0NzE4YjcxZTVmMTg3NThjNjQ4OGEyZDNhNWZmZGRiMTc4N2QzN2FiZDlkMWI3Yjc0NmNlMGEwN2NhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VtYWlsLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQzYTIxYzZkMGIzODY2ZDUwZDcxNTc1NWFmMzE5MmI1YjkzOTk4YWJjNjc3YTQxNjdkZGMzY2Q0YTE3ZDE4ZDMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjViMzk4ZGU0OWNiNGRkMjVlZDIzNzM2ODMzMWQ3YzQyNWRiNTBjYjhlNmFkYmQ4MjhlZTNmMWYwYzAxM2VjNDkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI3ZWVjMjBiMWJhYjIwMmI2NWY2MjA5MWI5ZDVjYzdlNTk1MWZjNzI0M2U1ZDczNGQxMzdlZjBlZDkzZDhiYzciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2JiOGI2MGU2ZjVhN2NiYTVlZjViNTc1M2EzNmZkYzY4YWEzMmNmZDJlOWVjMjU5OTBjM2NmNjg1ZDQxMDg0OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2V2ZW50LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhmYjBiZTBjMmRkNjMxZGNjMjllZDcyZDBlZjg4MTE5ODQwMDRiY2NkMTE5ZmU2YTI0NWRhNDk0MDU1MGE3NTMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI5NjFkMzA1MDMyZTE1N2FiNmUzYmJlMzdiNDFhYzRmMWQ0MzBlYzUyMTM2N2YwYThmMjI4ZWEzZTk3YzAyMzciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90aW1ldXRpbC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQwODE1YzhlYzE3NTBhODZkYWY5ZTA5NDNlZDNkMzMxYjA5MTI5YTFkMmU3ZmZmZjU5MmM5OTg1MjI4YjY1ZDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nYXJiYWdlLWNvbGxlY3RlZC1jYWNoZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmZGY1MjI1YTg2ZGRlYWJjNTVkNDY1YWVlZTJlYzRjMjMzODE1YWEyMWQzZDZlMTViN2Q1NmI3OGViYTg2OTQyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2xpY2Vuc2UtcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjlhOWRiMzYzNTZkZjk5MTMyZTI1ZmI2ZmFlZGM0YTdkMzg3NzgxMTNjYWUwMzQ3ZWYxMmMyZDVlYzc0ZGFjYjMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9rZXktcHJvdmlkZXIuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWI1MjFlNGM3NmY2NWNmNDFkZDg5OTNlZTY0M2MyNGE5NmI3MDMwMzZlMzc3MDA3NjlhMDZjMzMyMDlkNjc0NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RpbWV1dGlsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTdjNzJlZmQxNWNlZTg5OWI0ZjQ2Mjg3Mzk0OGNlN2Q4OWFjMjNkZDQzYWRjY2VjMzlkYTBlNzA3OTEyMzUyYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODMyMDcyYTkwNThkZjQxMjNhMWNmYzJmMjZlZTc2ODA2NDdmMzQ1ZTU3OGNhZTkzZGQzNWI4MTNjOTRlZGU5ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxOGRkNTZjMjM1ZDA1NDY1YWRmZGIwOTc0ZGZlODkzY2Y1NDBkNDk3NDk5ZWY0Nzc4YzI5NzcwMWEwMzc0Y2Q1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYXN5bmMtaXRlcmF0b3IuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTEzYjBlNjU5NWI0YzBmOTVjNTM4YjE1ZjU1YzUyMmY0MTg0MmY2MWE0OGVmZjg4NWQ0YzgwOWRiYTk3MDg4MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjUxMTU5ZjIyYThiNjZiMmYxYzVlNjUxZTM4YWExZjU3YmU0ZTY3YjUyMzMwZDAxNmJkMzZkMTRmODVjZTc2ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL3lhcm4ubG9jayIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1M2MyODlkMzY0NjFiMGE0YjEzZGQ3ZTIwNDYxY2JmZTBjZTExNDhkZDYzM2VlYWY3MzRkYWNhMjM3YjRjYTgzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW1zLXByb2plY3RzLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4ODI4ZmZiNDkxYjIwMWZlM2FjYjZiYTMwNzljZDgwNmZmNDk3ZTI4ZTgwNzFkOWIyMWI2ZTYzM2VmOGVmMzk2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2FlZWFlZTg4Y2Q3YjE2Mjk3Nzk0OGM1NGNhNzNiOTMxY2RmODNmMDA5ZjFiN2UwZTNiNjYzYTYxMjAyY2FjOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtcy1wcm9qZWN0cy1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1M2JmNjNiY2VmNzNlYmZkNjk1MDYxZDY4NGJjN2NhMzgwMDQ2OGFlOWU2MDQ2Njg1ZWI0Y2FiNzgwYjhlNGI2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUzZTA1Njk3YmUzOTc1ZGQ0MzFkMDRlODFjNmQ4MTk5ODVlNjQ5ZTU2ZmE2YzhjZGFlYjI2NjMzNGM0NzcwYTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC93b3Jrc3BhY2UtcG9ydC1hdXRoZW50aWNhdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYWYwODcxMDU3ODEwMDYwYjdlZDc1ZDYwM2I0NGUxMTJmZmRmMWE0NDQ2NWU1YWEyMGUyNzIzZDI1YWQwMjYzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL2Nvbm5lY3Rpb24uZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDFmYWY3YTcwOWE5YTgyYjg1YWZiYzYwNzQ0YWViZGI1YzVjOTJkOWY5ZTA4NDk2YmM0NmUwNWE1N2U5NGMyZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NraXAtaWYuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4MDQ1MGVjNGIwZTExZjEwYTY4Nzc4ZDE3ZGUxOTM4NDljMDFmZjQ5M2RhOGE1M2I0MDUwMzU1NjYwYmIxNjg4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTJiNDI4Y2M2YTdlOWIyNTY1YzEyM2M4Yzc0NWQwOTRlMzA1MmE0MzY0MmVjZjliMjk3NDQ0YjBiZGJjMTU0NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9oZWFkbGVzcy13b3Jrc3BhY2UtbG9nLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdjNGFiMTY3OWVhY2ZjMjg2ZTlmNGI0NDExMzYyYzYxZWVkMmIxOTBkOTliYWRjYmZkMGU1MjVkNGRhMmIzYmUiCiAgICAgIH0KICAgIH0KICBdLAogICJwcmVkaWNhdGUiOiB7CiAgICAiYnVpbGRlciI6IHsKICAgICAgImlkIjogImdpdGh1Yi5jb20vZ2l0cG9kLWlvL2xlZXdheTowLjIuMTctM2ViZmIyYUBzaGEyNTY6Yjk2MjllMmQwNDMyYWRlYTFiZTdkZGRiMzYwM2UzNmQ5ZjY5YjA5ZDg5ODVmNzI1MjU3YWRhYWRlNTFkNGE0MCIKICAgIH0sCiAgICAicmVjaXBlIjogewogICAgICAidHlwZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ2l0cG9kLWlvL2xlZXdheS9idWlsZEB5YXJuOjciLAogICAgICAiZGVmaW5lZEluTWF0ZXJpYWwiOiAwLAogICAgICAiZW50cnlQb2ludCI6ICJjb21wb25lbnRzL2dpdHBvZC1wcm90b2NvbDpsaWIiLAogICAgICAiYXJndW1lbnRzIjogWwogICAgICAgICJsZWV3YXkiLAogICAgICAgICJidWlsZCIsCiAgICAgICAgIi0tZG9ja2VyLWJ1aWxkLW9wdGlvbnMiLAogICAgICAgICJuZXR3b3JrPWhvc3QiLAogICAgICAgICItLXdlcmZ0PXRydWUiLAogICAgICAgICItYyIsCiAgICAgICAgInJlbW90ZSIsCiAgICAgICAgIi0tZG9udC1yZXRhZyIsCiAgICAgICAgIi0tY292ZXJhZ2Utb3V0cHV0LXBhdGg9L3RtcC90bXAuMW5KYjVTRVNUNiIsCiAgICAgICAgIi1EdmVyc2lvbj12bi02NTI1Ljc1IiwKICAgICAgICAiLURyZW1vdmVTb3VyY2VzPWZhbHNlIiwKICAgICAgICAiLURpbWFnZVJlcG9CYXNlPWV1Lmdjci5pby9naXRwb2QtY29yZS1kZXYvYnVpbGQiLAogICAgICAgICItRGxvY2FsQXBwVmVyc2lvbj11bmtub3duIiwKICAgICAgICAiLURTRUdNRU5UX0lPX1RPS0VOPVgzYk5hdFlQdWRJSmNDejZrRmxUbjU0cHJ1bVFBcUdoIiwKICAgICAgICAiLURSRVBMSUNBVEVEX0FQSV9UT0tFTj04YWUwYzI3MzhkNGVlYTczMDhmZjVhOWE4YzU0NjUzN2MxYjVkOGM2ZGE2YTEyN2EyNmIxMjU4ODZiNTg3Nzg0IiwKICAgICAgICAiLURSRVBMSUNBVEVEX0FQUD1naXRwb2QiLAogICAgICAgICItRG5wbVB1Ymxpc2hUcmlnZ2VyPWZhbHNlIiwKICAgICAgICAiLURqYk1hcmtldHBsYWNlUHVibGlzaFRyaWdnZXI9ZmFsc2UiCiAgICAgIF0sCiAgICAgICJlbnZpcm9ubWVudCI6IHsKICAgICAgICAibWFuaWZlc3QiOiB7CiAgICAgICAgICAiYXJjaCI6ICJhbWQ2NCIsCiAgICAgICAgICAiZ28iOiAiZ28gdmVyc2lvbiBnbzEuMTcuNSBsaW51eC9hbWQ2NCIsCiAgICAgICAgICAibm9kZSI6ICJ2MTYuMTQuMCIsCiAgICAgICAgICAib3MiOiAibGludXgiLAogICAgICAgICAgInlhcm4iOiAiMS4yMi4xOCIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAibWV0YWRhdGEiOiB7CiAgICAgICJidWlsZFN0YXJ0ZWRPbiI6ICIyMDIyLTA0LTA2VDA5OjI0OjAyLjQxMDk2NjM5OFoiLAogICAgICAiYnVpbGRGaW5pc2hlZE9uIjogIjIwMjItMDQtMDZUMDk6MjQ6NTYuODAzMjAxMTk0WiIsCiAgICAgICJjb21wbGV0ZW5lc3MiOiB7CiAgICAgICAgImFyZ3VtZW50cyI6IHRydWUsCiAgICAgICAgImVudmlyb25tZW50IjogZmFsc2UsCiAgICAgICAgIm1hdGVyaWFscyI6IHRydWUKICAgICAgfSwKICAgICAgInJlcHJvZHVjaWJsZSI6IGZhbHNlCiAgICB9LAogICAgIm1hdGVyaWFscyI6IFsKICAgICAgewogICAgICAgICJ1cmkiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9naXRwb2QtaW8vZ2l0cG9kLmdpdCIsCiAgICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAgICJzaGEyNTYiOiAiNGZiZDMyMmZmODVjYzZiM2U3ZWIyZWRkNTc1YThjMmFlNzRhYWY0MyIKICAgICAgICB9CiAgICAgIH0KICAgIF0KICB9Cn0=","signatures":null}
|
|
2
|
+
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
3
|
+
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
+
* See License-AGPL.txt in the project root for license information.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { v4 as uuidv4 } from "uuid";
|
|
8
|
+
import { User } from "./protocol";
|
|
9
|
+
import { oneMonthLater } from "./util/timeutil";
|
|
10
|
+
|
|
11
|
+
/*
|
|
12
|
+
* Subscription and acocunting data
|
|
13
|
+
*/
|
|
14
|
+
export interface AccountEntry {
|
|
15
|
+
uid: string;
|
|
16
|
+
|
|
17
|
+
userId: string;
|
|
18
|
+
|
|
19
|
+
/** [hours] */
|
|
20
|
+
amount: number;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* credit: start of validity,
|
|
24
|
+
* session: end of (split-) session
|
|
25
|
+
*/
|
|
26
|
+
date: string;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* debits (session, expiry, loss): relation to credit
|
|
30
|
+
*/
|
|
31
|
+
creditId?: string;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* credit: end of validity
|
|
35
|
+
*/
|
|
36
|
+
expiryDate?: string; // exclusive
|
|
37
|
+
|
|
38
|
+
kind: AccountEntryKind;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* credit: amount - accounted debits
|
|
42
|
+
* [hours]
|
|
43
|
+
*/
|
|
44
|
+
remainingAmount?: number;
|
|
45
|
+
|
|
46
|
+
description?: object;
|
|
47
|
+
}
|
|
48
|
+
export namespace AccountEntry {
|
|
49
|
+
export function create<T extends AccountEntry>(entry: Omit<T, "uid">): T {
|
|
50
|
+
const result = entry as T;
|
|
51
|
+
result.uid = uuidv4();
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export type DebitAccountEntryKind = "session" | "expiry" | "loss";
|
|
57
|
+
export type AccountEntryKind = "credit" | DebitAccountEntryKind | "carry" | "open";
|
|
58
|
+
|
|
59
|
+
export interface Credit extends AccountEntry {
|
|
60
|
+
kind: "credit";
|
|
61
|
+
expiryDate: string;
|
|
62
|
+
}
|
|
63
|
+
export type Debit = LossDebit | ExpiryDebit | SessionDebit;
|
|
64
|
+
export interface LossDebit extends AccountEntry {
|
|
65
|
+
kind: "loss";
|
|
66
|
+
}
|
|
67
|
+
export interface ExpiryDebit extends AccountEntry {
|
|
68
|
+
kind: "expiry";
|
|
69
|
+
creditId: undefined;
|
|
70
|
+
}
|
|
71
|
+
export interface SessionDebit extends AccountEntry {
|
|
72
|
+
kind: DebitAccountEntryKind;
|
|
73
|
+
creditId: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export type AccountEntryDescription = SessionDescription | CreditDescription;
|
|
77
|
+
export interface CreditDescription {
|
|
78
|
+
subscriptionId: string;
|
|
79
|
+
planId: string;
|
|
80
|
+
}
|
|
81
|
+
export namespace CreditDescription {
|
|
82
|
+
export function is(obj: any): obj is CreditDescription {
|
|
83
|
+
return !!obj && obj.hasOwnProperty("subscriptionId") && obj.hasOwnProperty("planId");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export interface SessionDescription {
|
|
87
|
+
contextTitle: string;
|
|
88
|
+
contextUrl: string;
|
|
89
|
+
workspaceId: string;
|
|
90
|
+
workspaceInstanceId: string;
|
|
91
|
+
}
|
|
92
|
+
export namespace SessionDescription {
|
|
93
|
+
export function is(obj: any): obj is SessionDescription {
|
|
94
|
+
return (
|
|
95
|
+
!!obj &&
|
|
96
|
+
obj.hasOwnProperty("contextTitle") &&
|
|
97
|
+
obj.hasOwnProperty("contextUrl") &&
|
|
98
|
+
obj.hasOwnProperty("workspaceId") &&
|
|
99
|
+
obj.hasOwnProperty("workspaceInstanceId")
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* - The earliest subscription may start with User.creationDate
|
|
106
|
+
* - There may be multiple Gitpod subscriptions for a user at any given time
|
|
107
|
+
* - The dates form an interval of the form: [startDate, endDate)
|
|
108
|
+
* - Subscriptions that directly map to a Chargebee plan have their paymentReference set and MAY carry additional paymentData (UserPaidSubscription)
|
|
109
|
+
* - Subscriptions that are assigned to a user through a Team Subscription carry a teamSubscriptionSlotId (AssignedTeamSubscription)
|
|
110
|
+
*/
|
|
111
|
+
export interface Subscription {
|
|
112
|
+
uid: string;
|
|
113
|
+
userId: string;
|
|
114
|
+
startDate: string; // inclusive
|
|
115
|
+
/** When the subscription will end (must be >= cancellationDate!) */
|
|
116
|
+
endDate?: string; // exclusive
|
|
117
|
+
/** When the subscription was cancelled */
|
|
118
|
+
cancellationDate?: string; // exclusive
|
|
119
|
+
/** Number of granted hours */
|
|
120
|
+
amount: number;
|
|
121
|
+
/** Number of granted hours for the first month: If this is set, use this value for the first month */
|
|
122
|
+
firstMonthAmount?: number;
|
|
123
|
+
planId?: string;
|
|
124
|
+
paymentReference?: string;
|
|
125
|
+
paymentData?: PaymentData;
|
|
126
|
+
teamSubscriptionSlotId?: string;
|
|
127
|
+
/** marks the subscription as deleted */
|
|
128
|
+
deleted?: boolean;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export interface SubscriptionAndUser extends Subscription {
|
|
132
|
+
user: User;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export interface PaymentData {
|
|
136
|
+
/** Marks the date as of which the _switch_ is effective. */
|
|
137
|
+
downgradeDate?: string;
|
|
138
|
+
/** Determines the new plan the dowgrade is targeted against (optional for backwards compatibility) */
|
|
139
|
+
newPlan?: string;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export interface UserPaidSubscription extends Subscription {
|
|
143
|
+
paymentReference: string;
|
|
144
|
+
paymentData?: PaymentData;
|
|
145
|
+
}
|
|
146
|
+
export namespace UserPaidSubscription {
|
|
147
|
+
export function is(data: any): data is UserPaidSubscription {
|
|
148
|
+
return !!data && data.hasOwnProperty("paymentReference");
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export interface AssignedTeamSubscription extends Subscription {
|
|
153
|
+
teamSubscriptionSlotId: string;
|
|
154
|
+
}
|
|
155
|
+
export namespace AssignedTeamSubscription {
|
|
156
|
+
export function is(data: any): data is AssignedTeamSubscription {
|
|
157
|
+
return !!data && data.hasOwnProperty("teamSubscriptionSlotId");
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export namespace Subscription {
|
|
162
|
+
export function create(newSubscription: Omit<Subscription, "uid">) {
|
|
163
|
+
const subscription = newSubscription as Subscription;
|
|
164
|
+
subscription.uid = uuidv4();
|
|
165
|
+
return subscription;
|
|
166
|
+
}
|
|
167
|
+
export function cancelSubscription(s: Subscription, cancellationDate: string, endDate?: string) {
|
|
168
|
+
s.endDate = endDate || cancellationDate;
|
|
169
|
+
s.cancellationDate = cancellationDate;
|
|
170
|
+
}
|
|
171
|
+
export function isSame(s1: Subscription | undefined, s2: Subscription | undefined): boolean {
|
|
172
|
+
return (
|
|
173
|
+
!!s1 &&
|
|
174
|
+
!!s2 &&
|
|
175
|
+
s1.userId === s2.userId &&
|
|
176
|
+
s1.planId === s2.planId &&
|
|
177
|
+
s1.startDate === s2.startDate &&
|
|
178
|
+
s1.endDate === s2.endDate &&
|
|
179
|
+
s1.amount === s2.amount &&
|
|
180
|
+
s1.cancellationDate === s2.cancellationDate &&
|
|
181
|
+
s1.deleted === s2.deleted &&
|
|
182
|
+
((s1.paymentData === undefined && s2.paymentData === undefined) ||
|
|
183
|
+
(!!s1.paymentData &&
|
|
184
|
+
!!s2.paymentData &&
|
|
185
|
+
s1.paymentData.downgradeDate === s2.paymentData.downgradeDate &&
|
|
186
|
+
s1.paymentData.newPlan === s2.paymentData.newPlan))
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
export function isActive(s: Subscription, date: string): boolean {
|
|
190
|
+
return s.startDate <= date && (s.endDate === undefined || date < s.endDate);
|
|
191
|
+
}
|
|
192
|
+
export function isDowngraded(s: Subscription) {
|
|
193
|
+
return s.paymentData && s.paymentData.downgradeDate;
|
|
194
|
+
}
|
|
195
|
+
export function calculateCurrentPeriod(startDate: string, now: Date) {
|
|
196
|
+
let nextStartDate = startDate;
|
|
197
|
+
do {
|
|
198
|
+
startDate = nextStartDate;
|
|
199
|
+
nextStartDate = oneMonthLater(startDate, new Date(startDate).getDate());
|
|
200
|
+
} while (nextStartDate < now.toISOString());
|
|
201
|
+
return { startDate, endDate: nextStartDate };
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export type MaybeSubscription = Subscription | undefined;
|
|
206
|
+
|
|
207
|
+
export interface Period {
|
|
208
|
+
startDate: string; // inclusive
|
|
209
|
+
endDate: string; // exclusive
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export type MaybePeriod = Period | undefined;
|
|
213
|
+
|
|
214
|
+
export type AccountEntryFixedPeriod = Omit<AccountEntry, "uid"> & { expiryDate: string };
|
|
215
|
+
export interface AccountStatement extends Period {
|
|
216
|
+
userId: string;
|
|
217
|
+
/**
|
|
218
|
+
* The subscriptions that have not been cancelled yet at the end of the period
|
|
219
|
+
*/
|
|
220
|
+
subscriptions: Subscription[];
|
|
221
|
+
credits: Credit[];
|
|
222
|
+
debits: Debit[];
|
|
223
|
+
/** Remaining valid hours (accumulated from credits) */
|
|
224
|
+
remainingHours: RemainingHours;
|
|
225
|
+
}
|
|
226
|
+
export type RemainingHours = number | "unlimited";
|
|
227
|
+
|
|
228
|
+
export interface CreditAlert {
|
|
229
|
+
userId: string;
|
|
230
|
+
remainingUsageHours: number;
|
|
231
|
+
}
|