@mavogel/cdk-vscode-server 0.0.55 → 0.0.56
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/.claude/hooks/file_checker.sh +0 -0
- package/.jsii +96 -24
- package/API.md +56 -0
- package/CLAUDE.md +84 -118
- package/README.md +48 -0
- package/assets/installer/installer.lambda/index.js +14 -2
- package/examples/custom-domain/main.ts +49 -0
- package/integ-tests/integ.al2023.ts.snapshot/IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645.assets.json +7 -6
- package/integ-tests/integ.al2023.ts.snapshot/IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645.template.json +6 -6
- package/integ-tests/integ.al2023.ts.snapshot/IntegTestStackAl2023.assets.json +20 -12
- package/integ-tests/integ.al2023.ts.snapshot/IntegTestStackAl2023.template.json +36 -152
- package/integ-tests/integ.al2023.ts.snapshot/{asset.23732f3d1982f7fb0da3bd6638a8107337bb767fea165b45eae12000a1dd67ce → asset.0ad50fc42afd768c3d0bfdd4701e43284fb077a25f19eea1e8c51a5ca36ebfe4}/index.js +988 -1165
- package/integ-tests/{integ.ubuntu.ts.snapshot/asset.a9865c9d36c7aa999e28cb7926e7a3a8e0b6d0854b25131a172024c5777442fa.lambda → integ.al2023.ts.snapshot/asset.33da23274e25bd9f43638c5d83dad26e3931cbe78d462ffd9a9f565e948b4f5f.lambda}/index.js +14 -2
- package/integ-tests/{integ.ubuntu.ts.snapshot/asset.f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd.bundle → integ.al2023.ts.snapshot/asset.530055f7515b3f0a47900f5df37e729ba40ca977b2d07b952bdefa2b8f883f42.bundle}/index.js +296 -191
- package/integ-tests/{integ.ubuntu.ts.snapshot/asset.ce2f3595a340d6c519a65888ef97e3b9b64f053f83608e32cc28162e22d7d99a → integ.al2023.ts.snapshot/asset.9d043014be736e8162bcc7ec5590cc6d2ff24fd0d9c73a5c5d595151c5fdad00}/index.js +1 -1
- package/integ-tests/integ.al2023.ts.snapshot/cdk.out +1 -1
- package/integ-tests/integ.al2023.ts.snapshot/integ.json +4 -3
- package/integ-tests/integ.al2023.ts.snapshot/manifest.json +956 -7
- package/integ-tests/integ.al2023.ts.snapshot/tree.json +1 -3228
- package/integ-tests/integ.custom-domain.ts +87 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/IntegSetupVSCodeOnCustomDomainDefaultTestDeployAssert6982D514.assets.json +33 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/IntegSetupVSCodeOnCustomDomainDefaultTestDeployAssert6982D514.template.json +333 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/IntegTestStackCustomDomain.assets.json +132 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/IntegTestStackCustomDomain.template.json +2862 -0
- package/integ-tests/{integ.ubuntu.ts.snapshot/asset.23732f3d1982f7fb0da3bd6638a8107337bb767fea165b45eae12000a1dd67ce → integ.custom-domain.ts.snapshot/asset.0ad50fc42afd768c3d0bfdd4701e43284fb077a25f19eea1e8c51a5ca36ebfe4}/index.js +988 -1165
- package/integ-tests/integ.custom-domain.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
- package/integ-tests/{integ.al2023.ts.snapshot/asset.a9865c9d36c7aa999e28cb7926e7a3a8e0b6d0854b25131a172024c5777442fa.lambda → integ.custom-domain.ts.snapshot/asset.33da23274e25bd9f43638c5d83dad26e3931cbe78d462ffd9a9f565e948b4f5f.lambda}/index.js +14 -2
- package/integ-tests/{integ.al2023.ts.snapshot/asset.f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd.bundle → integ.custom-domain.ts.snapshot/asset.530055f7515b3f0a47900f5df37e729ba40ca977b2d07b952bdefa2b8f883f42.bundle}/index.js +296 -191
- package/integ-tests/integ.custom-domain.ts.snapshot/asset.781ab0ab74634cdaf61539ab208ab777829ef07097ac21f95b9e15a3b1eedc1b.lambda/index.js +57 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/__entrypoint__.js +1 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/index.js +1 -0
- package/integ-tests/{integ.al2023.ts.snapshot/asset.ce2f3595a340d6c519a65888ef97e3b9b64f053f83608e32cc28162e22d7d99a → integ.custom-domain.ts.snapshot/asset.9d043014be736e8162bcc7ec5590cc6d2ff24fd0d9c73a5c5d595151c5fdad00}/index.js +1 -1
- package/integ-tests/integ.custom-domain.ts.snapshot/asset.b073cebcf4d61fb152a30f5a5e57a94df7f980a549fdf1a79a0b18c5750522d8/index.js +1 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/cfn-response.js +1 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/consts.js +1 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/framework.js +3 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/outbound.js +1 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/util.js +1 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/integ.json +23 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/manifest.json +1653 -0
- package/integ-tests/integ.custom-domain.ts.snapshot/tree.json +1 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.assets.json +7 -6
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.template.json +6 -6
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegTestStackUbuntu22.assets.json +20 -12
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegTestStackUbuntu22.template.json +36 -72
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.0ad50fc42afd768c3d0bfdd4701e43284fb077a25f19eea1e8c51a5ca36ebfe4/index.js +5992 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.33da23274e25bd9f43638c5d83dad26e3931cbe78d462ffd9a9f565e948b4f5f.lambda/index.js +143 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.530055f7515b3f0a47900f5df37e729ba40ca977b2d07b952bdefa2b8f883f42.bundle/index.js +30676 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.9d043014be736e8162bcc7ec5590cc6d2ff24fd0d9c73a5c5d595151c5fdad00/index.js +1 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/cdk.out +1 -1
- package/integ-tests/integ.ubuntu.ts.snapshot/integ.json +3 -2
- package/integ-tests/integ.ubuntu.ts.snapshot/manifest.json +956 -7
- package/integ-tests/integ.ubuntu.ts.snapshot/tree.json +1 -3070
- package/lib/installer/installer.d.ts +7 -0
- package/lib/installer/installer.js +15 -7
- package/lib/installer/installer.lambda.js +20 -3
- package/lib/vscode-server.d.ts +33 -0
- package/lib/vscode-server.js +165 -5
- package/mavogelcdkvscodeserver/go.mod +1 -1
- package/mavogelcdkvscodeserver/jsii/jsii.go +2 -2
- package/mavogelcdkvscodeserver/version +1 -1
- package/package.json +4 -4
|
@@ -40,6 +40,13 @@ interface InstallerOptionsBase {
|
|
|
40
40
|
* @default 8081
|
|
41
41
|
*/
|
|
42
42
|
readonly devServerPort?: number;
|
|
43
|
+
/**
|
|
44
|
+
* The custom domain name for the VS Code server
|
|
45
|
+
* Used to configure nginx server_name directive
|
|
46
|
+
*
|
|
47
|
+
* @default - uses *.cloudfront.net only
|
|
48
|
+
*/
|
|
49
|
+
readonly customDomainName?: string;
|
|
43
50
|
}
|
|
44
51
|
export interface InstallerOptions extends InstallerOptionsBase {
|
|
45
52
|
}
|
|
@@ -19,7 +19,7 @@ class Installer {
|
|
|
19
19
|
documentName = options.documentName;
|
|
20
20
|
}
|
|
21
21
|
else {
|
|
22
|
-
const document = this.createSSMDocument(scope, devServerBasePath, devServerPort, options.vsCodeUser, options.homeFolder, vscode_server_1.LinuxFlavorType.UBUNTU_22);
|
|
22
|
+
const document = this.createSSMDocument(scope, devServerBasePath, devServerPort, options.vsCodeUser, options.homeFolder, vscode_server_1.LinuxFlavorType.UBUNTU_22, options.customDomainName);
|
|
23
23
|
documentName = document.name;
|
|
24
24
|
}
|
|
25
25
|
const cloudWatchLogGroupName = options.cloudWatchLogGroupName ?? `/aws/ssm/${documentName}`;
|
|
@@ -45,7 +45,7 @@ class Installer {
|
|
|
45
45
|
documentName = options.documentName;
|
|
46
46
|
}
|
|
47
47
|
else {
|
|
48
|
-
const document = this.createSSMDocument(scope, devServerBasePath, devServerPort, options.vsCodeUser, options.homeFolder, vscode_server_1.LinuxFlavorType.AMAZON_LINUX_2023);
|
|
48
|
+
const document = this.createSSMDocument(scope, devServerBasePath, devServerPort, options.vsCodeUser, options.homeFolder, vscode_server_1.LinuxFlavorType.AMAZON_LINUX_2023, options.customDomainName);
|
|
49
49
|
documentName = document.name;
|
|
50
50
|
}
|
|
51
51
|
const cloudWatchLogGroupName = options.cloudWatchLogGroupName ?? `/aws/ssm/${documentName}`;
|
|
@@ -65,7 +65,11 @@ class Installer {
|
|
|
65
65
|
* @internal
|
|
66
66
|
*/
|
|
67
67
|
constructor() { }
|
|
68
|
-
createSSMDocument(scope, devServerBasePath, devServerPort, vsCodeUser, homeFolder, linuxFlavor) {
|
|
68
|
+
createSSMDocument(scope, devServerBasePath, devServerPort, vsCodeUser, homeFolder, linuxFlavor, customDomainName) {
|
|
69
|
+
// Generate nginx server_name directive based on custom domain
|
|
70
|
+
const serverNameDirective = customDomainName
|
|
71
|
+
? `server_name *.cloudfront.net ${customDomainName};`
|
|
72
|
+
: 'server_name *.cloudfront.net;';
|
|
69
73
|
let ssmDocument;
|
|
70
74
|
switch (linuxFlavor) {
|
|
71
75
|
case vscode_server_1.LinuxFlavorType.UBUNTU_22:
|
|
@@ -260,7 +264,7 @@ server {
|
|
|
260
264
|
listen 80;
|
|
261
265
|
listen [::]:80;
|
|
262
266
|
# server_name distribution.distributionDomainName;
|
|
263
|
-
|
|
267
|
+
${serverNameDirective}
|
|
264
268
|
location / {
|
|
265
269
|
proxy_pass http://localhost:8080/;
|
|
266
270
|
proxy_set_header Host \\$host;
|
|
@@ -526,7 +530,7 @@ server {
|
|
|
526
530
|
listen 80;
|
|
527
531
|
listen [::]:80;
|
|
528
532
|
# server_name distribution.distributionDomainName;
|
|
529
|
-
|
|
533
|
+
${serverNameDirective}
|
|
530
534
|
location / {
|
|
531
535
|
proxy_pass http://localhost:8080/;
|
|
532
536
|
proxy_set_header Host \\$host;
|
|
@@ -661,7 +665,11 @@ class CustomResourceInstaller extends Installer {
|
|
|
661
665
|
resourceName: options.instanceId,
|
|
662
666
|
}, core_1.Stack.of(scope));
|
|
663
667
|
onEvent.addToRolePolicy(new aws_iam_1.PolicyStatement({
|
|
664
|
-
actions: [
|
|
668
|
+
actions: [
|
|
669
|
+
'ssm:SendCommand',
|
|
670
|
+
'ssm:GetCommandInvocation',
|
|
671
|
+
'ssm:ListCommandInvocations',
|
|
672
|
+
],
|
|
665
673
|
resources: [documentArn, cwManageAgentArn, targetEc2InstanceArn],
|
|
666
674
|
}));
|
|
667
675
|
const provider = new custom_resources_1.Provider(scope, 'InstallerProvider', {
|
|
@@ -694,4 +702,4 @@ class CustomResourceInstaller extends Installer {
|
|
|
694
702
|
}
|
|
695
703
|
_bind() { }
|
|
696
704
|
}
|
|
697
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc3RhbGxlci9pbnN0YWxsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXNEO0FBRXRELDJDQUEyQztBQUMzQywyQ0FBd0U7QUFDeEUsbUVBQXdEO0FBQ3hELHFDQUEwQztBQUUxQyw2REFBeUQ7QUFDekQsb0RBQW1EO0FBc0RuRCxNQUFzQixTQUFTO0lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBeUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBTSxTQUFRLFNBQVM7WUFDMUIsS0FBSyxDQUFDLEtBQWdCO2dCQUMzQixJQUFJLFlBQVksQ0FBQztnQkFDakIsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksS0FBSyxDQUFDO2dCQUM3RCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQztnQkFDcEQsSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ3ZELFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO2dCQUN0QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUNyQyxLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixPQUFPLENBQUMsVUFBVSxFQUNsQixPQUFPLENBQUMsVUFBVSxFQUNsQiwrQkFBZSxDQUFDLFNBQVMsQ0FDMUIsQ0FBQztvQkFDRixZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUssQ0FBQztnQkFDaEMsQ0FBQztnQkFFRCxNQUFNLHNCQUFzQixHQUMxQixPQUFPLENBQUMsc0JBQXNCLElBQUksWUFBWSxZQUFZLEVBQUUsQ0FBQztnQkFFL0QsTUFBTSxTQUFTLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUU7b0JBQ25ELFVBQVUs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QyxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7WUFDeEQsY0FBYyxFQUFFLE9BQU87U0FDeEIsQ0FBQyxDQUFDO1FBQ0gseUJBQWUsQ0FBQyx1QkFBdUIsQ0FDckMsQ0FBQyxRQUFRLENBQUMsRUFDVjtZQUNFO2dCQUNFLEVBQUUsRUFBRSxtQkFBbUI7Z0JBQ3ZCLE1BQU0sRUFDSiwrREFBK0Q7YUFDbEU7WUFDRDtnQkFDRSxFQUFFLEVBQUUsbUJBQW1CO2dCQUN2QixNQUFNLEVBQUUsc0NBQXNDO2FBQy9DO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLGlCQUFpQjtnQkFDckIsTUFBTSxFQUFFLG9EQUFvRDthQUM3RDtTQUNGLEVBQ0QsSUFBSSxDQUNMLENBQUM7UUFFRixJQUFJLHFCQUFjLENBQUMsS0FBSyxFQUFFLDRCQUE0QixFQUFFO1lBQ3RELFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxVQUFVLEVBQUU7Z0JBQ1YsY0FBYyxFQUFFLEdBQUcsRUFBRSxvQkFBb0I7Z0JBQ3pDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtnQkFDOUIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2dCQUNsQyxzQkFBc0IsRUFBRSxPQUFPLENBQUMsc0JBQXNCO2dCQUN0RCxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7YUFDdkM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxLQUFJLENBQUM7Q0FDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IEZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgeyBBcm4sIEN1c3RvbVJlc291cmNlLCBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgeyBOYWdTdXBwcmVzc2lvbnMgfSBmcm9tICdjZGstbmFnJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSW5zdGFsbGVyRnVuY3Rpb24gfSBmcm9tICcuL2luc3RhbGxlci1mdW5jdGlvbic7XG5pbXBvcnQgeyBMaW51eEZsYXZvclR5cGUgfSBmcm9tICcuLi92c2NvZGUtc2VydmVyJztcblxuaW50ZXJmYWNlIEluc3RhbGxlck9wdGlvbnNCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBlYzIgaW5zdGFuY2UgaWQgdG8gaW5zdGFsbCB0aGUgc3NtIGRvY3VtZW50IG9uXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjdXN0b20gc3NtIGRvY3VtZW50IHRvIGluc3RhbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBzc20gZG9jdW1lbnQgb2YgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xvdWR3YXRjaCBsb2cgZ3JvdXAgZm9yIHRoZSBpbnN0YWxsIGxvZ3NcbiAgICpcbiAgICogQGRlZmF1bHQgL2F3cy9zc20vJHtkb2N1bWVudE5hbWV9XG4gICAqL1xuICByZWFkb25seSBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVVc2VyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVQYXNzd29yZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9tZSBmb2xkZXIgb2YgdGhlIHVzZXIgdW5kZXIgd2hpY2ggdGhlIHZzY29kZSBzZXJ2ZXIgcnVuc1xuICAgKi9cbiAgcmVhZG9ubHkgaG9tZUZvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSByZXN0IHBhdGggdnMgY29kZSBzZXJ2ZXIgd2lsbCBydW5cbiAgICpcbiAgICogQGRlZmF1bHQgYXBwXG4gICAqL1xuICByZWFkb25seSBkZXZTZXJ2ZXJCYXNlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBvcnQgdnNjb2RlciBzZXJ2ZXIgd2lsbCBiZSBzZXJ2ZWQgaW4gdGhlIGluc3RhbmNlXG4gICAqXG4gICAqIEBkZWZhdWx0IDgwODFcbiAgICovXG4gIHJlYWRvbmx5IGRldlNlcnZlclBvcnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFsbGVyT3B0aW9ucyBleHRlbmRzIEluc3RhbGxlck9wdGlvbnNCYXNlIHt9XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbnN0YWxsZXIge1xuICBwdWJsaWMgc3RhdGljIHVidW50dShvcHRpb25zOiBJbnN0YWxsZXJPcHRpb25zKTogSW5zdGFsbGVyIHtcbiAgICByZXR1cm4gbmV3IChjbGFzcyBleHRlbmRzIEluc3RhbGxlciB7XG4gICAgICBwdWJsaWMgX2JpbmQoc2NvcGU6IENvbnN0cnVjdCk6IEluc3RhbGxlciB7XG4gICAgICAgIGxldCBkb2N1bWVudE5hbWU7XG4gICAgICAgIGNvbnN0IGRldlNlcnZlckJhc2VQYXRoID0gb3B0aW9ucy5kZXZTZXJ2ZXJCYXNlUGF0aCA/PyAnYXBwJztcbiAgICAgICAgY29uc3QgZGV2U2VydmVyUG9ydCA9IG9wdGlvbnMuZGV2U2VydmVyUG9ydCA/PyA4MDgxO1xuICAgICAgICBpZiAob3B0aW9ucy5kb2N1bWVudE5hbWUgJiYgb3B0aW9ucy5kb2N1bWVudE5hbWUgIT0gJycpIHtcbiAgICAgICAgICBkb2N1bWVudE5hbWUgPSBvcHRpb25zLmRvY3VtZW50TmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMuY3JlYXRlU1NNRG9jdW1lbnQoXG4gICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgIGRldlNlcnZlckJhc2VQYXRoLFxuICAgICAgICAgICAgZGV2U2VydmVyUG9ydCxcbiAgICAgICAgICAgIG9wdGlvbnMudnNDb2RlVXNlcixcbiAgICAgICAgICAgIG9wdGlvbnMuaG9tZUZvbGRlcixcbiAgICAgICAgICAgIExpbnV4Rmxhdm9yVHlwZS5VQlVOVFVfMjIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBkb2N1bWVudE5hbWUgPSBkb2N1bWVudC5uYW1lITtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsb3VkV2F0Y2hMb2dHcm91cE5hbWUgPVxuICAgICAgICAgIG9wdGlvbnMuY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSA/PyBgL2F3cy9zc20vJHtkb2N1bWVudE5hbWV9YDtcblxuICAgICAgICBjb25zdCBpbnN0YWxsZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2VJbnN0YWxsZXIoc2NvcGUsIHtcbiAgICAgICAgICBpbnN0YW5jZUlkOiBvcHRpb25zLmluc3RhbmNlSWQsXG4gICAgICAgICAgZG9jdW1lbnROYW1lOiBkb2N1bWVudE5hbWUsXG4gICAgICAgICAgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZTogY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSxcbiAgICAgICAgICB2c0NvZGVVc2VyOiBvcHRpb25zLnZzQ29kZVVzZXIsXG4gICAgICAgICAgdnNDb2RlUGFzc3dvcmQ6IG9wdGlvbnMudnNDb2RlUGFzc3dvcmQsXG4gICAgICAgICAgaG9tZUZvbGRlcjogb3B0aW9ucy5ob21lRm9sZGVyLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaW5zdGFsbGVyO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFtYXpvbkxpbnV4MjAyMyhvcHRpb25zOiBJbnN0YWxsZXJPcHRpb25zKTogSW5zdGFsbGVyIHtcbiAgICByZXR1cm4gbmV3IChjbGFzcyBleHRlbmRzIEluc3RhbGxlciB7XG4gICAgICBwdWJsaWMgX2JpbmQoc2NvcGU6IENvbnN0cnVjdCk6IEluc3RhbGxlciB7XG4gICAgICAgIGxldCBkb2N1bWVudE5hbWU7XG4gICAgICAgIGNvbnN0IGRldlNlcnZlckJhc2VQYXRoID0gb3B0aW9ucy5kZXZTZXJ2ZXJCYXNlUGF0aCA/PyAnYXBwJztcbiAgICAgICAgY29uc3QgZGV2U2VydmVyUG9ydCA9IG9wdGlvbnMuZGV2U2VydmVyUG9ydCA/PyA4MDgxO1xuICAgICAgICBpZiAob3B0aW9ucy5kb2N1bWVudE5hbWUgJiYgb3B0aW9ucy5kb2N1bWVudE5hbWUgIT0gJycpIHtcbiAgICAgICAgICBkb2N1bWVudE5hbWUgPSBvcHRpb25zLmRvY3VtZW50TmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMuY3JlYXRlU1NNRG9jdW1lbnQoXG4gICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgIGRldlNlcnZlckJhc2VQYXRoLFxuICAgICAgICAgICAgZGV2U2VydmVyUG9ydCxcbiAgICAgICAgICAgIG9wdGlvbnMudnNDb2RlVXNlcixcbiAgICAgICAgICAgIG9wdGlvbnMuaG9tZUZvbGRlcixcbiAgICAgICAgICAgIExpbnV4Rmxhdm9yVHlwZS5BTUFaT05fTElOVVhfMjAyMyxcbiAgICAgICAgICApO1xuICAgICAgICAgIGRvY3VtZW50TmFtZSA9IGRvY3VtZW50Lm5hbWUhO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSA9XG4gICAgICAgICAgb3B0aW9ucy5jbG91ZFdhdGNoTG9nR3JvdXBOYW1lID8/IGAvYXdzL3NzbS8ke2RvY3VtZW50TmFtZX1gO1xuXG4gICAgICAgIGNvbnN0IGluc3RhbGxlciA9IG5ldyBDdXN0b21SZXNvdXJjZUluc3RhbGxlcihzY29wZSwge1xuICAgICAgICAgIGluc3RhbmNlSWQ6IG9wdGlvbnMuaW5zdGFuY2VJZCxcbiAgICAgICAgICBkb2N1bWVudE5hbWU6IGRvY3VtZW50TmFtZSxcbiAgICAgICAgICBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lOiBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lLFxuICAgICAgICAgIHZzQ29kZVVzZXI6IG9wdGlvbnMudnNDb2RlVXNlcixcbiAgICAgICAgICB2c0NvZGVQYXNzd29yZDogb3B0aW9ucy52c0NvZGVQYXNzd29yZCxcbiAgICAgICAgICBob21lRm9sZGVyOiBvcHRpb25zLmhvbWVGb2xkZXIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpbnN0YWxsZXI7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbnN0YW5jZUlkITogc3RyaW5nO1xuICBwdWJsaWMgZG9jdW1lbnROYW1lITogc3RyaW5nO1xuICBwdWJsaWMgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSE6IHN0cmluZztcbiAgcHVibGljIHZzQ29kZVBhc3N3b3JkITogc3RyaW5nO1xuICBwdWJsaWMgdnNDb2RlUGFzc3dvcmRUZXN0ITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IF9iaW5kKHNjb3BlOiBDb25zdHJ1Y3QpOiBhbnk7XG5cbiAgcHJpdmF0ZSBjcmVhdGVTU01Eb2N1bWVudChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGRldlNlcnZlckJhc2VQYXRoOiBzdHJpbmcsXG4gICAgZGV2U2VydmVyUG9ydDogbnVtYmVyLFxuICAgIHZzQ29kZVVzZXI6IHN0cmluZyxcbiAgICBob21lRm9sZGVyOiBzdHJpbmcsXG4gICAgbGludXhGbGF2b3I6IExpbnV4Rmxhdm9yVHlwZSxcbiAgKTogc3NtLkNmbkRvY3VtZW50IHtcbiAgICBsZXQgc3NtRG9jdW1lbnQ6IHNzbS5DZm5Eb2N1bWVudDtcbiAgICBzd2l0Y2ggKGxpbnV4Rmxhdm9yKSB7XG4gICAgICBjYXNlIExpbnV4Rmxhdm9yVHlwZS5VQlVOVFVfMjI6XG4gICAgICBjYXNlIExpbnV4Rmxhdm9yVHlwZS5VQlVOVFVfMjQ6XG4gICAgICAgIC8vIENyZWF0ZSBhbiBTU00gZG9jdW1lbnQgd2l0aCBtdWx0aXBsZSBhY3Rpb25zIHRvIGluc3RhbGwgdGhlIHNvZnR3YXJlXG4gICAgICAgIHNzbURvY3VtZW50ID0gbmV3IHNzbS5DZm5Eb2N1bWVudChzY29wZSwgJ3NzbS1kb2N1bWVudC11YnVudHUnLCB7XG4gICAgICAgICAgbmFtZTogYHZzY29kZS1zZXJ2ZXItdWJ1bnR1LSR7U3RhY2sub2Yoc2NvcGUpLnN0YWNrTmFtZX1gLFxuICAgICAgICAgIGRvY3VtZW50VHlwZTogJ0NvbW1hbmQnLFxuICAgICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICAgIHNjaGVtYVZlcnNpb246ICcyLjInLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdCb290c3RyYXAgVlNDb2RlIGNvZGUtc2VydmVyIGluc3RhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgVlNDb2RlUGFzc3dvcmQ6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBTdGFjay5vZihzY29wZSkuc3RhY2tJZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgTm9kZVZlcnNpb246IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiAnMjAnLFxuICAgICAgICAgICAgICAgIGFsbG93ZWRWYWx1ZXM6IFsnMjInLCAnMjAnLCAnMTgnXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgRG90TmV0VmVyc2lvbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICc4LjAnLFxuICAgICAgICAgICAgICAgIGFsbG93ZWRWYWx1ZXM6IFsnOC4wJywgJzcuMCddLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGFsbCBtYWluU3RlcHMgc2NyaXB0cyBhcmUgaW4gaW4gL3Zhci9saWIvYW1hem9uL3NzbS88aW5zdGFuY2VpZD4vZG9jdW1lbnQvb3JjaGVzdHJhdGlvbi88dXVpZD4vPFN0ZXBOYW1lPi9fc2NyaXB0LnNoXG4gICAgICAgICAgICBtYWluU3RlcHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpjb25maWd1cmVQYWNrYWdlJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbENsb3VkV2F0Y2hBZ2VudCcsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnQW1hem9uQ2xvdWRXYXRjaEFnZW50JyxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ0luc3RhbGwnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuRG9jdW1lbnQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdDb25maWd1cmVDbG91ZFdhdGNoQWdlbnQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiAnU1NNRG9jdW1lbnQnLFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnRQYXRoOiAnQW1hem9uQ2xvdWRXYXRjaC1NYW5hZ2VBZ2VudCcsXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudFBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnY29uZmlndXJlJyxcbiAgICAgICAgICAgICAgICAgICAgbW9kZTogJ2VjMicsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsQ29uZmlndXJhdGlvblNvdXJjZTogJ2RlZmF1bHQnLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbFJlc3RhcnQ6ICd5ZXMnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbEFwdFBhY2thZ2VzQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FwdC1nZXQgLXEgdXBkYXRlICYmIERFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IGluc3RhbGwgLXkgLXEgYXB0LXV0aWxzJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FwdC1nZXQgLXEgdXBkYXRlICYmIERFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IGluc3RhbGwgLXkgLXEgbmVlZHJlc3RhcnQgdW5hdHRlbmRlZC11cGdyYWRlcycsXG4gICAgICAgICAgICAgICAgICAgIFwic2VkIC1pICdzLyMkbnJjb25me2tlcm5lbGhpbnRzfSA9IC0xOy8kbnJjb25me2tlcm5lbGhpbnRzfSA9IDA7LycgL2V0Yy9uZWVkcmVzdGFydC9uZWVkcmVzdGFydC5jb25mXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic2VkIC1pICdzLyMkbnJjb25me3ZlcmJvc2l0eX0gPSAyOy8kbnJjb25me3ZlcmJvc2l0eX0gPSAwOy8nIC9ldGMvbmVlZHJlc3RhcnQvbmVlZHJlc3RhcnQuY29uZlwiLFxuICAgICAgICAgICAgICAgICAgICBcInNlZCAtaSBcXFwicy8jXFwkbnJjb25me3Jlc3RhcnR9ID0gJ2knOy9cXCRucmNvbmZ7cmVzdGFydH0gPSAnYSc7L1xcXCIgL2V0Yy9uZWVkcmVzdGFydC9uZWVkcmVzdGFydC5jb25mXCIsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiQXB0IGhlbHBlciBwYWNrYWdlcyBhZGRlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2NhdCAvZXRjL25lZWRyZXN0YXJ0L25lZWRyZXN0YXJ0LmNvbmYnLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbEJhc2VQYWNrYWdlc0FwdCcsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIGN1cmwgZ251cGcgd2hvaXMgYXJnb24yIG9wZW5zc2wgbG9jYWxlcyBsb2NhbGVzLWFsbCB1bnppcCBhcHQtdHJhbnNwb3J0LWh0dHBzIGNhLWNlcnRpZmljYXRlcyBzb2Z0d2FyZS1wcm9wZXJ0aWVzLWNvbW1vbiBuZ2lueCcsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdBZGRVc2VyQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgXCJlY2hvICdBZGRpbmcgdXNlcjogJHtWU0NvZGVVc2VyfSdcIixcbiAgICAgICAgICAgICAgICAgICAgYGFkZHVzZXIgLS1kaXNhYmxlZC1wYXNzd29yZCAtLWdlY29zICcnICR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyBcIiR7dnNDb2RlVXNlcn06e3sgVlNDb2RlUGFzc3dvcmQgfX1cIiB8IGNocGFzc3dkYCxcbiAgICAgICAgICAgICAgICAgICAgYHVzZXJtb2QgLWFHIHN1ZG8gJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICAgIGB0ZWUgL2V0Yy9zdWRvZXJzLmQvOTEtdnNjb2RlLXVzZXIgPDxFT0ZcbiR7dnNDb2RlVXNlcn0gQUxMPShBTEwpIE5PUEFTU1dEOkFMTFxuRU9GYCxcbiAgICAgICAgICAgICAgICAgICAgYG1rZGlyIC1wIC9ob21lLyR7dnNDb2RlVXNlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIlVzZXIgYWRkZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgIGBnZXRlbnQgcGFzc3dkICR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbE5vZGVBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnY3VybCAtZnNTTCBodHRwczovL2RlYi5ub2Rlc291cmNlLmNvbS9ncGdrZXkvbm9kZXNvdXJjZS1yZXBvLmdwZy5rZXkgfCBncGcgLS1kZWFybW9yIC1vIC91c3Ivc2hhcmUva2V5cmluZ3Mvbm9kZXNvdXJjZS5ncGcnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcImRlYiBbYXJjaD0kKGRwa2cgLS1wcmludC1hcmNoaXRlY3R1cmUpIHNpZ25lZC1ieT0vdXNyL3NoYXJlL2tleXJpbmdzL25vZGVzb3VyY2UuZ3BnXSBodHRwczovL2RlYi5ub2Rlc291cmNlLmNvbS9ub2RlX3t7IE5vZGVWZXJzaW9uIH19Lnggbm9kaXN0cm8gbWFpblwiID4gL2V0Yy9hcHQvc291cmNlcy5saXN0LmQvbm9kZXNvdXJjZS5saXN0JyxcbiAgICAgICAgICAgICAgICAgICAgJ2FwdC1nZXQgLXEgdXBkYXRlICYmIERFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IGluc3RhbGwgLXkgLXEgbm9kZWpzJyxcbiAgICAgICAgICAgICAgICAgICAgJ25wbSBpbnN0YWxsIC1nIG5wbUBsYXRlc3QnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIk5vZGUgYW5kIG5wbSBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdub2RlIC12JyxcbiAgICAgICAgICAgICAgICAgICAgJ25wbSAtdicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsRG9ja2VyQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2N1cmwgLWZzU0wgaHR0cHM6Ly9kb3dubG9hZC5kb2NrZXIuY29tL2xpbnV4L3VidW50dS9ncGcgfCBncGcgLS1kZWFybW9yIC1vIC91c3Ivc2hhcmUva2V5cmluZ3MvZG9ja2VyLWFyY2hpdmUta2V5cmluZy5ncGcnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcImRlYiBbc2lnbmVkLWJ5PS91c3Ivc2hhcmUva2V5cmluZ3MvZG9ja2VyLWFyY2hpdmUta2V5cmluZy5ncGddIGh0dHBzOi8vZG93bmxvYWQuZG9ja2VyLmNvbS9saW51eC91YnVudHUgJChsc2JfcmVsZWFzZSAtLWNvZGVuYW1lIC0tc2hvcnQpIHN0YWJsZVwiID4gL2V0Yy9hcHQvc291cmNlcy5saXN0LmQvZG9ja2VyLmxpc3QnLFxuICAgICAgICAgICAgICAgICAgICAnYXB0LWdldCAtcSB1cGRhdGUgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBkb2NrZXItY2UgZG9ja2VyLWNlLWNsaSBjb250YWluZXJkLmlvJyxcbiAgICAgICAgICAgICAgICAgICAgYHN5c3RlbWN0bCByZXN0YXJ0IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn0uc2VydmljZWAsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgc3RhcnQgZG9ja2VyLnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkRvY2tlciBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdkb2NrZXIgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWN0bCBzdGF0dXMgZG9ja2VyLnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbEdpdEFwdCcsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdhZGQtYXB0LXJlcG9zaXRvcnkgcHBhOmdpdC1jb3JlL3BwYScsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIGdpdCcsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsIFwiJHt2c0NvZGVVc2VyfUBleGFtcGxlLmNvbVwiYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSBcIldvcmtzaG9wICR7dnNDb2RlVXNlcn1cImAsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IGNvbmZpZyAtLWdsb2JhbCBpbml0LmRlZmF1bHRCcmFuY2ggXCJtYWluXCJgLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkdpdCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdnaXQgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxQeXRob25BcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAvLyBVYnVudHUgMjIgZGVmYXVsdCBpcyBQeXRob24gMy4xMFxuICAgICAgICAgICAgICAgICAgICAvLyBVYnVudHUgMjQgZGVmYXVsdCBpcyBQeXRob24gMy4xMlxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCBpbnN0YWxsZWQgUHl0aG9uIHZlcnNpb24gd2lsbCBtYXAgdG8gUHl0aG9uM1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnYXB0LWdldCAtcSB1cGRhdGUgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBweXRob24zLXBpcCBweXRob24zLXZlbnYgcHl0aG9uMy1ib3RvMyBweXRob24zLXB5dGVzdCcsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdhbGlhcyBweXRlc3Q9cHl0ZXN0LTMnID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBzeXN0ZW1jdGwgcmVzdGFydCBjb2RlLXNlcnZlckAke3ZzQ29kZVVzZXJ9LnNlcnZpY2VgLFxuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtY3RsIHN0YXJ0IG11bHRpcGF0aGQuc2VydmljZSBwYWNrYWdla2l0LnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtY3RsIHJlc3RhcnQgdW5hdHRlbmRlZC11cGdyYWRlcy5zZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJQeXRob24gYW5kIFBpcCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdweXRob24zIC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICdwaXAzIC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQVdTQ0xJJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2N1cmwgLWZzU0wgaHR0cHM6Ly9hd3NjbGkuYW1hem9uYXdzLmNvbS9hd3NjbGktZXhlLWxpbnV4LSQodW5hbWUgLW0pLnppcCAtbyAvdG1wL2F3cy1jbGkuemlwJyxcbiAgICAgICAgICAgICAgICAgICAgJ3VuemlwIC1xIC1kIC90bXAgL3RtcC9hd3MtY2xpLnppcCcsXG4gICAgICAgICAgICAgICAgICAgICdzdWRvIC90bXAvYXdzL2luc3RhbGwnLFxuICAgICAgICAgICAgICAgICAgICAncm0gLXJmIC90bXAvYXdzJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJBV1MgQ0xJIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F3cyAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ29uZmlndXJlQ29kZVNlcnZlcicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgIGBleHBvcnQgSE9NRT0vaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgJ2N1cmwgLWZzU0wgaHR0cHM6Ly9jb2RlLXNlcnZlci5kZXYvaW5zdGFsbC5zaCB8IGJhc2ggLXMgLS0gMj4mMScsXG4gICAgICAgICAgICAgICAgICAgIGBzeXN0ZW1jdGwgZW5hYmxlIC0tbm93IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn0gMj4mMWAsXG4gICAgICAgICAgICAgICAgICAgIGB0ZWUgL2V0Yy9uZ2lueC9jb25mLmQvY29kZS1zZXJ2ZXIuY29uZiA8PEVPRlxuc2VydmVyIHtcbiAgICBsaXN0ZW4gODA7XG4gICAgbGlzdGVuIFs6Ol06ODA7XG4gICAgIyBzZXJ2ZXJfbmFtZSBkaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uRG9tYWluTmFtZTtcbiAgICBzZXJ2ZXJfbmFtZSAqLmNsb3VkZnJvbnQubmV0O1xuICAgIGxvY2F0aW9uIC8ge1xuICAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OjgwODAvO1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBIb3N0IFxcXFwkaG9zdDtcbiAgICAgIHByb3h5X3NldF9oZWFkZXIgVXBncmFkZSBcXFxcJGh0dHBfdXBncmFkZTtcbiAgICAgIHByb3h5X3NldF9oZWFkZXIgQ29ubmVjdGlvbiB1cGdyYWRlO1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBBY2NlcHQtRW5jb2RpbmcgZ3ppcDtcbiAgICB9XG4gICAgbG9jYXRpb24gLyR7ZGV2U2VydmVyQmFzZVBhdGh9IHtcbiAgICAgIHByb3h5X3Bhc3MgaHR0cDovL2xvY2FsaG9zdDoke2RldlNlcnZlclBvcnR9LyR7ZGV2U2VydmVyQmFzZVBhdGh9O1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBIb3N0IFxcXFwkaG9zdDtcbiAgICAgIHByb3h5X3NldF9oZWFkZXIgVXBncmFkZSBcXFxcJGh0dHBfdXBncmFkZTtcbiAgICAgIHByb3h5X3NldF9oZWFkZXIgQ29ubmVjdGlvbiB1cGdyYWRlO1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBBY2NlcHQtRW5jb2RpbmcgZ3ppcDtcbiAgICB9XG59XG5FT0ZgLFxuICAgICAgICAgICAgICAgICAgICBgbWtkaXIgLXAgL2hvbWUvJHt2c0NvZGVVc2VyfS8uY29uZmlnL2NvZGUtc2VydmVyYCxcbiAgICAgICAgICAgICAgICAgICAgYHRlZSAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5jb25maWcvY29kZS1zZXJ2ZXIvY29uZmlnLnlhbWwgPDxFT0ZcbmNlcnQ6IGZhbHNlXG5hdXRoOiBwYXNzd29yZFxuaGFzaGVkLXBhc3N3b3JkOiBcIiQoZWNobyAtbiB7eyBWU0NvZGVQYXNzd29yZCB9fSB8IGFyZ29uMiAkKG9wZW5zc2wgcmFuZCAtYmFzZTY0IDEyKSAtZSlcIlxuRU9GYCxcbiAgICAgICAgICAgICAgICAgICAgYG1rZGlyIC1wIC9ob21lLyR7dnNDb2RlVXNlcn0vLmxvY2FsL3NoYXJlL2NvZGUtc2VydmVyL1VzZXIvYCxcbiAgICAgICAgICAgICAgICAgICAgYHRvdWNoIC9ob21lLyR7dnNDb2RlVXNlcn0vLmh1c2hsb2dpbmAsXG4gICAgICAgICAgICAgICAgICAgIGBta2RpciAtcCAke2hvbWVGb2xkZXJ9ICYmIGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAke2hvbWVGb2xkZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgYHRlZSAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5sb2NhbC9zaGFyZS9jb2RlLXNlcnZlci9Vc2VyL3NldHRpbmdzLmpzb24gPDxFT0ZcbntcbiAgXCJleHRlbnNpb25zLmF1dG9VcGRhdGVcIjogZmFsc2UsXG4gIFwiZXh0ZW5zaW9ucy5hdXRvQ2hlY2tVcGRhdGVzXCI6IGZhbHNlLFxuICBcInRlbGVtZXRyeS50ZWxlbWV0cnlMZXZlbFwiOiBcIm9mZlwiLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5zdGFydHVwUHJvbXB0XCI6IFwibmV2ZXJcIixcbiAgXCJzZWN1cml0eS53b3Jrc3BhY2UudHJ1c3QuZW5hYmxlZFwiOiBmYWxzZSxcbiAgXCJzZWN1cml0eS53b3Jrc3BhY2UudHJ1c3QuYmFubmVyXCI6IFwibmV2ZXJcIixcbiAgXCJzZWN1cml0eS53b3Jrc3BhY2UudHJ1c3QuZW1wdHlXaW5kb3dcIjogZmFsc2UsXG4gIFwicHl0aG9uLnRlc3RpbmcucHl0ZXN0RW5hYmxlZFwiOiB0cnVlLFxuICBcImF1dG8tcnVuLWNvbW1hbmQucnVsZXNcIjogW1xuICAgIHtcbiAgICAgIFwiY29tbWFuZFwiOiBcIndvcmtiZW5jaC5hY3Rpb24udGVybWluYWwubmV3XCJcbiAgICB9XG4gIF1cbn1cbkVPRmAsXG4gICAgICAgICAgICAgICAgICAgIGBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICAgIGBzeXN0ZW1jdGwgcmVzdGFydCBjb2RlLXNlcnZlckAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWN0bCByZXN0YXJ0IG5naW54JyxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gQW1hem9uV2ViU2VydmljZXMuYXdzLXRvb2xraXQtdnNjb2RlIC0tZm9yY2VgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY29kZS1zZXJ2ZXIgLS1pbnN0YWxsLWV4dGVuc2lvbiBBbWF6b25XZWJTZXJ2aWNlcy5hbWF6b24tcS12c2NvZGUgLS1mb3JjZWAsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIHN5bmVkcmEuYXV0by1ydW4tY29tbWFuZCAtLWZvcmNlYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gdnNjamF2YS52c2NvZGUtamF2YS1wYWNrIC0tZm9yY2VgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY29kZS1zZXJ2ZXIgLS1pbnN0YWxsLWV4dGVuc2lvbiBtcy12c2NvZGUubGl2ZS1zZXJ2ZXIgLS1mb3JjZWAsXG4gICAgICAgICAgICAgICAgICAgIGBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiTmdpbnggaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnbmdpbnggLXQgMj4mMScsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgc3RhdHVzIG5naW54JyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJDb2RlU2VydmVyIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2NvZGUtc2VydmVyIC12JyxcbiAgICAgICAgICAgICAgICAgICAgYHN5c3RlbWN0bCBzdGF0dXMgY29kZS1zZXJ2ZXJAJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdVcGRhdGVQcm9maWxlJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gTEFORz1lbl9VUy51dGYtOCA+PiAvZXRjL2Vudmlyb25tZW50JyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gTENfQUxMPWVuX1VTLlVURi04ID4+IC9ldGMvZW52aXJvbm1lbnQnLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnUEFUSD0kUEFUSDovaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5sb2NhbC9iaW4nID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgUEFUSCcgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBBV1NfUkVHSU9OPSR7U3RhY2sub2Yoc2NvcGUpLnJlZ2lvbn0nID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgQVdTX0FDQ09VTlRJRD0ke1N0YWNrLm9mKHNjb3BlKS5hY2NvdW50fScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBORVhUX1RFTEVNRVRSWV9ESVNBQkxFRD0xJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyBcImV4cG9ydCBQUzE9J1xcXFxbXFxcXDAzM1swMTszMm1cXFxcXVxcXFx1OlxcXFxbXFxcXDAzM1swMTszNG1cXFxcXVxcXFx3XFxcXFtcXFxcMDMzWzAwbVxcXFxdXFxcXCQgJ1wiID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQ0RLJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ25wbSBpbnN0YWxsIC1nIGF3cy1jZGsnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkFXUyBDREsgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnY2RrIC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTGludXhGbGF2b3JUeXBlLkFNQVpPTl9MSU5VWF8yMDIzOlxuICAgICAgICBzc21Eb2N1bWVudCA9IG5ldyBzc20uQ2ZuRG9jdW1lbnQoc2NvcGUsICdzc20tZG9jdW1lbnQtYWwyMDIzJywge1xuICAgICAgICAgIG5hbWU6IGB2c2NvZGUtc2VydmVyLWFsMjAyMy0ke1N0YWNrLm9mKHNjb3BlKS5zdGFja05hbWV9YCxcbiAgICAgICAgICBkb2N1bWVudFR5cGU6ICdDb21tYW5kJyxcbiAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICBzY2hlbWFWZXJzaW9uOiAnMi4yJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQm9vdHN0cmFwIFZTQ29kZSBjb2RlLXNlcnZlciBpbnN0YW5jZScsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIFZTQ29kZVBhc3N3b3JkOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogU3RhY2sub2Yoc2NvcGUpLnN0YWNrSWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIE5vZGVWZXJzaW9uOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogJzIwJyxcbiAgICAgICAgICAgICAgICBhbGxvd2VkVmFsdWVzOiBbJzIyJywgJzIwJywgJzE4J10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIERvdE5ldFZlcnNpb246IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiAnOC4wJyxcbiAgICAgICAgICAgICAgICBhbGxvd2VkVmFsdWVzOiBbJzguMCcsICc3LjAnXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBhbGwgbWFpblN0ZXBzIHNjcmlwdHMgYXJlIGluIGluIC92YXIvbGliL2FtYXpvbi9zc20vPGluc3RhbmNlaWQ+L2RvY3VtZW50L29yY2hlc3RyYXRpb24vPHV1aWQ+LzxTdGVwTmFtZT4vX3NjcmlwdC5zaFxuICAgICAgICAgICAgbWFpblN0ZXBzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6Y29uZmlndXJlUGFja2FnZScsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxDbG91ZFdhdGNoQWdlbnQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ0FtYXpvbkNsb3VkV2F0Y2hBZ2VudCcsXG4gICAgICAgICAgICAgICAgICBhY3Rpb246ICdJbnN0YWxsJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1bkRvY3VtZW50JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ29uZmlndXJlQ2xvdWRXYXRjaEFnZW50JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZTogJ1NTTURvY3VtZW50JyxcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50UGF0aDogJ0FtYXpvbkNsb3VkV2F0Y2gtTWFuYWdlQWdlbnQnLFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnRQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2NvbmZpZ3VyZScsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6ICdlYzInLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbENvbmZpZ3VyYXRpb25Tb3VyY2U6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxSZXN0YXJ0OiAneWVzJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxCYXNlUGFja2FnZXNEbmYnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZG5mIGluc3RhbGwgLXkgLS1hbGxvd2VyYXNpbmcgd2hvaXMgYXJnb24yIHVuemlwIG5naW54IGN1cmwgZ251cGcgb3BlbnNzbCcsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdBZGRVc2VyRG5mJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ0FkZGluZyB1c2VyOiAke3ZzQ29kZVVzZXJ9J2AsXG4gICAgICAgICAgICAgICAgICAgIGBhZGR1c2VyIC1jICcnICR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICBgcGFzc3dkIC1sICR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyBcIiR7dnNDb2RlVXNlcn06e3sgVlNDb2RlUGFzc3dvcmQgfX1cIiB8IGNocGFzc3dkYCxcbiAgICAgICAgICAgICAgICAgICAgYHVzZXJtb2QgLWFHIHdoZWVsICR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIlVzZXIgYWRkZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgIGBnZXRlbnQgcGFzc3dkICR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbE5vZGVEbmYnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZG5mIGluc3RhbGwgLXkgbm9kZWpzMjAgbnBtJyxcbiAgICAgICAgICAgICAgICAgICAgJ2xuIC1zIC1mIC91c3IvYmluL25vZGUtMjAgL3Vzci9iaW4vbm9kZScsXG4gICAgICAgICAgICAgICAgICAgICducG0gaW5zdGFsbCAtZyBucG1AbGF0ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJOb2RlIGFuZCBucG0gaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnbm9kZSAtdicsXG4gICAgICAgICAgICAgICAgICAgICducG0gLXYnLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbERvY2tlckRuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSBkb2NrZXInLFxuICAgICAgICAgICAgICAgICAgICBgdXNlcm1vZCAtYUcgZG9ja2VyICR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICBgc3lzdGVtY3RsIHJlc3RhcnQgY29kZS1zZXJ2ZXJAJHt2c0NvZGVVc2VyfS5zZXJ2aWNlYCxcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWN0bCBzdGFydCBkb2NrZXIuc2VydmljZScsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiRG9ja2VyIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RvY2tlciAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtY3RsIHN0YXR1cyBkb2NrZXIuc2VydmljZScsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsR2l0RG5mJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RuZiBpbnN0YWxsIC15IGdpdCcsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsIFwiJHt2c0NvZGVVc2VyfUBleGFtcGxlLmNvbVwiYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSBcIldvcmtzaG9wICR7dnNDb2RlVXNlcn1cImAsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IGNvbmZpZyAtLWdsb2JhbCBpbml0LmRlZmF1bHRCcmFuY2ggXCJtYWluXCJgLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkdpdCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdnaXQgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxQeXRob25EbmYnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAvLyBBTDIwMjMgY3VycmVudGx5IHNoaXBzIHdpdGggUHl0aG9uIDMuOSBwcmVpbnN0YWxsZWQsIGJ1dCAzLjExIGlzIGF2YWlsYWJsZSBpbiB0aGUgcmVwb3NpdG9yeVxuICAgICAgICAgICAgICAgICAgICAvLyBJbnN0YWxsIDMuMTEgYWxvbmdzaWRlIDMuOSBhbmQgc2V0dXAgc29tZSBhbGlhcyBzbyB0aGF0IDMuMTEgaXMgbG9hZGVkIHdoZW4gcGFydGljaXBhbnQgcnVucyBQeXRob24zXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIFB5dGhvbiAzLjEyIGJlY29tZSBhdmFpbGFibGUsIHVwZGF0ZSBiZWxvd1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZG5mIGluc3RhbGwgLXkgcHl0aG9uMy4xMSBweXRob24zLjExLXBpcCBweXRob24zLXZpcnR1YWxlbnYgcHl0aG9uMy1weXRlc3QgcHl0aG9uMy1ib3RvMycsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdhbGlhcyBweXRlc3Q9cHl0ZXN0LTMnID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdhbGlhcyBweXRob24zPXB5dGhvbjMuMTEnID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdhbGlhcyBwaXAzPXBpcDMuMTEnID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIFwiZWNobyAnYWxpYXM9cHl0aG9uMz1weXRob24zLjExJyA+PiB+Ly5iYXNocmNcIixcbiAgICAgICAgICAgICAgICAgICAgXCJlY2hvICdhbGlhcyBwaXAzPXBpcDMuMTEnID4+IH4vLmJhc2hyY1wiLFxuICAgICAgICAgICAgICAgICAgICAncHl0aG9uMy4xMSAtbSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcGlwIDI+JjEnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIlB5dGhvbiBhbmQgUGlwIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbjMuMTEgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbjMuMTEgLW0gcGlwIC0tdmVyc2lvbiAyPiYxJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLy8gYWRkIGdvLCBkb3RuZXRcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxBV1NDTEknLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnY3VybCAtZnNTTCBodHRwczovL2F3c2NsaS5hbWF6b25hd3MuY29tL2F3c2NsaS1leGUtbGludXgtJCh1bmFtZSAtbSkuemlwIC1vIC90bXAvYXdzLWNsaS56aXAnLFxuICAgICAgICAgICAgICAgICAgICAndW56aXAgLXEgLWQgL3RtcCAvdG1wL2F3cy1jbGkuemlwJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N1ZG8gL3RtcC9hd3MvaW5zdGFsbCcsXG4gICAgICAgICAgICAgICAgICAgICdybSAtcmYgL3RtcC9hd3MnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkFXUyBDTEkgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnYXdzIC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdDb25maWd1cmVDb2RlU2VydmVyJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgYGV4cG9ydCBIT01FPS9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICAnY3VybCAtZnNTTCBodHRwczovL2NvZGUtc2VydmVyLmRldi9pbnN0YWxsLnNoIHwgYmFzaCAtcyAtLSAyPiYxJyxcbiAgICAgICAgICAgICAgICAgICAgYHN5c3RlbWN0bCBlbmFibGUgLS1ub3cgY29kZS1zZXJ2ZXJAJHt2c0NvZGVVc2VyfSAyPiYxYCxcbiAgICAgICAgICAgICAgICAgICAgYHRlZSAvZXRjL25naW54L2NvbmYuZC9jb2RlLXNlcnZlci5jb25mIDw8RU9GXG5zZXJ2ZXIge1xuICAgIGxpc3RlbiA4MDtcbiAgICBsaXN0ZW4gWzo6XTo4MDtcbiAgICAjIHNlcnZlcl9uYW1lIGRpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25Eb21haW5OYW1lO1xuICAgIHNlcnZlcl9uYW1lICouY2xvdWRmcm9udC5uZXQ7XG4gICAgbG9jYXRpb24gLyB7XG4gICAgICBwcm94eV9wYXNzIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC87XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgXFxcXCRob3N0O1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBVcGdyYWRlIFxcXFwkaHR0cF91cGdyYWRlO1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIHVwZ3JhZGU7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEFjY2VwdC1FbmNvZGluZyBnemlwO1xuICAgIH1cbiAgICBsb2NhdGlvbiAvJHtkZXZTZXJ2ZXJCYXNlUGF0aH0ge1xuICAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7ZGV2U2VydmVyUG9ydH0vJHtkZXZTZXJ2ZXJCYXNlUGF0aH07XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgXFxcXCRob3N0O1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBVcGdyYWRlIFxcXFwkaHR0cF91cGdyYWRlO1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIHVwZ3JhZGU7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEFjY2VwdC1FbmNvZGluZyBnemlwO1xuICAgIH1cbn1cbkVPRmAsXG4gICAgICAgICAgICAgICAgICAgIGBta2RpciAtcCAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5jb25maWcvY29kZS1zZXJ2ZXJgLFxuICAgICAgICAgICAgICAgICAgICBgdGVlIC9ob21lLyR7dnNDb2RlVXNlcn0vLmNvbmZpZy9jb2RlLXNlcnZlci9jb25maWcueWFtbCA8PEVPRlxuY2VydDogZmFsc2VcbmF1dGg6IHBhc3N3b3JkXG5oYXNoZWQtcGFzc3dvcmQ6IFwiJChlY2hvIC1uIHt7IFZTQ29kZVBhc3N3b3JkIH19IHwgYXJnb24yICQob3BlbnNzbCByYW5kIC1iYXNlNjQgMTIpIC1lKVwiXG5FT0ZgLFxuICAgICAgICAgICAgICAgICAgICBgbWtkaXIgLXAgL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvc2hhcmUvY29kZS1zZXJ2ZXIvVXNlci9gLFxuICAgICAgICAgICAgICAgICAgICBgdG91Y2ggL2hvbWUvJHt2c0NvZGVVc2VyfS8uaHVzaGxvZ2luYCxcbiAgICAgICAgICAgICAgICAgICAgYG1rZGlyIC1wICR7aG9tZUZvbGRlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR7aG9tZUZvbGRlcn1gLFxuICAgICAgICAgICAgICAgICAgICBgdGVlIC9ob21lLyR7dnNDb2RlVXNlcn0vLmxvY2FsL3NoYXJlL2NvZGUtc2VydmVyL1VzZXIvc2V0dGluZ3MuanNvbiA8PEVPRlxue1xuICBcImV4dGVuc2lvbnMuYXV0b1VwZGF0ZVwiOiBmYWxzZSxcbiAgXCJleHRlbnNpb25zLmF1dG9DaGVja1VwZGF0ZXNcIjogZmFsc2UsXG4gIFwidGVsZW1ldHJ5LnRlbGVtZXRyeUxldmVsXCI6IFwib2ZmXCIsXG4gIFwic2VjdXJpdHkud29ya3NwYWNlLnRydXN0LnN0YXJ0dXBQcm9tcHRcIjogXCJuZXZlclwiLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5lbmFibGVkXCI6IGZhbHNlLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5iYW5uZXJcIjogXCJuZXZlclwiLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5lbXB0eVdpbmRvd1wiOiBmYWxzZSxcbiAgXCJweXRob24udGVzdGluZy5weXRlc3RFbmFibGVkXCI6IHRydWUsXG4gIFwiYXV0by1ydW4tY29tbWFuZC5ydWxlc1wiOiBbXG4gICAge1xuICAgICAgXCJjb21tYW5kXCI6IFwid29ya2JlbmNoLmFjdGlvbi50ZXJtaW5hbC5uZXdcIlxuICAgIH1cbiAgXVxufVxuRU9GYCxcbiAgICAgICAgICAgICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgYHN5c3RlbWN0bCByZXN0YXJ0IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtY3RsIHJlc3RhcnQgbmdpbngnLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY29kZS1zZXJ2ZXIgLS1pbnN0YWxsLWV4dGVuc2lvbiBBbWF6b25XZWJTZXJ2aWNlcy5hd3MtdG9vbGtpdC12c2NvZGUgLS1mb3JjZWAsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIEFtYXpvbldlYlNlcnZpY2VzLmFtYXpvbi1xLXZzY29kZSAtLWZvcmNlYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gc3luZWRyYS5hdXRvLXJ1bi1jb21tYW5kIC0tZm9yY2VgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY29kZS1zZXJ2ZXIgLS1pbnN0YWxsLWV4dGVuc2lvbiB2c2NqYXZhLnZzY29kZS1qYXZhLXBhY2sgLS1mb3JjZWAsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIG1zLXZzY29kZS5saXZlLXNlcnZlciAtLWZvcmNlYCxcbiAgICAgICAgICAgICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJOZ2lueCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICduZ2lueCAtdCAyPiYxJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWN0bCBzdGF0dXMgbmdpbngnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkNvZGVTZXJ2ZXIgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnY29kZS1zZXJ2ZXIgLXYnLFxuICAgICAgICAgICAgICAgICAgICBgc3lzdGVtY3RsIHN0YXR1cyBjb2RlLXNlcnZlckAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ1VwZGF0ZVByb2ZpbGUnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBMQU5HPWVuX1VTLnV0Zi04ID4+IC9ldGMvZW52aXJvbm1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBMQ19BTEw9ZW5fVVMuVVRGLTggPj4gL2V0Yy9lbnZpcm9ubWVudCcsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdQQVRIPSRQQVRIOi9ob21lLyR7dnNDb2RlVXNlcn0vLmxvY2FsL2JpbicgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBQQVRIJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEFXU19SRUdJT049JHtTdGFjay5vZihzY29wZSkucmVnaW9ufScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBBV1NfQUNDT1VOVElEPSR7U3RhY2sub2Yoc2NvcGUpLmFjY291bnR9JyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IE5FWFRfVEVMRU1FVFJZX0RJU0FCTEVEPTEnID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvIFwiZXhwb3J0IFBTMT0nXFxcXFtcXFxcMDMzWzAxOzMybVxcXFxdXFxcXHU6XFxcXFtcXFxcMDMzWzAxOzM0bVxcXFxdXFxcXHdcXFxcW1xcXFwwMzNbMDBtXFxcXF1cXFxcJCAnXCIgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxDREsnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnbnBtIGluc3RhbGwgLWcgYXdzLWNkaycsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiQVdTIENESyBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdjZGsgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBMaW51eCBmbGF2b3I6ICR7bGludXhGbGF2b3J9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNzbURvY3VtZW50O1xuICB9XG59XG5cbmludGVyZmFjZSBDdXN0b21SZXNvdXJjZUluc3RhbGxlck9wdGlvbnMgZXh0ZW5kcyBJbnN0YWxsZXJPcHRpb25zIHt9XG5cbmNsYXNzIEN1c3RvbVJlc291cmNlSW5zdGFsbGVyIGV4dGVuZHMgSW5zdGFsbGVyIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgb3B0aW9uczogQ3VzdG9tUmVzb3VyY2VJbnN0YWxsZXJPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IG9uRXZlbnQ6IEZ1bmN0aW9uID0gbmV3IEluc3RhbGxlckZ1bmN0aW9uKFxuICAgICAgc2NvcGUsXG4gICAgICAnSW5zdGFsbGVyT25FdmVudEhhbmRsZXInLFxuICAgICAge1xuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwMCksIC8vIFRPRE8gY29uZmlndXJhYmxlXG4gICAgICAgIG1lbW9yeVNpemU6IDUxMiwgLy8gVE9ETyBjb25maWd1cmFibGVcbiAgICAgIH0sXG4gICAgKTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbb25FdmVudF0sXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1JQU00JyxcbiAgICAgICAgICByZWFzb246XG4gICAgICAgICAgICAnRm9yIHRoaXMgZXZlbnQgaGFuZGxlciB3ZSBkbyBub3QgbmVlZCB0byByZXN0cmljdCBtYW5hZ2VkIHBvbGljaWVzJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUwxJyxcbiAgICAgICAgICByZWFzb246ICdGb3IgdGhpcyBsYW1iZGEgdGhlIGxhdGVzdCBydW50aW1lIGlzIG5vdCBuZWVkZWQnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIGNvbnN0IGRvY3VtZW50QXJuID0gQXJuLmZvcm1hdChcbiAgICAgIHtcbiAgICAgICAgc2VydmljZTogJ3NzbScsXG4gICAgICAgIHJlc291cmNlOiAnZG9jdW1lbnQnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IG9wdGlvbnMuZG9jdW1lbnROYW1lLFxuICAgICAgfSxcbiAgICAgIFN0YWNrLm9mKHNjb3BlKSxcbiAgICApO1xuXG4gICAgY29uc3QgY3dNYW5hZ2VBZ2VudEFybiA9IEFybi5mb3JtYXQoXG4gICAgICB7XG4gICAgICAgIHNlcnZpY2U6ICdzc20nLFxuICAgICAgICByZXNvdXJjZTogJ2RvY3VtZW50JyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiAnQW1hem9uQ2xvdWRXYXRjaC1NYW5hZ2VBZ2VudCcsXG4gICAgICB9LFxuICAgICAgU3RhY2sub2Yoc2NvcGUpLFxuICAgICk7XG5cbiAgICBjb25zdCB0YXJnZXRFYzJJbnN0YW5jZUFybiA9IEFybi5mb3JtYXQoXG4gICAgICB7XG4gICAgICAgIHNlcnZpY2U6ICdlYzInLFxuICAgICAgICByZXNvdXJjZTogJ2luc3RhbmNlJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBvcHRpb25zLmluc3RhbmNlSWQsXG4gICAgICB9LFxuICAgICAgU3RhY2sub2Yoc2NvcGUpLFxuICAgICk7XG5cbiAgICBvbkV2ZW50LmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ3NzbTpTZW5kQ29tbWFuZCddLFxuICAgICAgICByZXNvdXJjZXM6IFtkb2N1bWVudEFybiwgY3dNYW5hZ2VBZ2VudEFybiwgdGFyZ2V0RWMySW5zdGFuY2VBcm5dLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFByb3ZpZGVyKHNjb3BlLCAnSW5zdGFsbGVyUHJvdmlkZXInLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogb25FdmVudCxcbiAgICB9KTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbcHJvdmlkZXJdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNCcsXG4gICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgJ0ZvciB0aGlzIHByb3ZpZGVyIHdlIGRvIG5vdCBuZWVkIHRvIHJlc3RyaWN0IG1hbmFnZWQgcG9saWNpZXMnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsXG4gICAgICAgICAgcmVhc29uOiAnRm9yIHRoaXMgcHJvdmlkZXIgd2lsZGNhcmRzIGFyZSBmaW5lJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUwxJyxcbiAgICAgICAgICByZWFzb246ICdGb3IgdGhpcyBwcm92aWRlciB0aGUgbGF0ZXN0IHJ1bnRpbWUgaXMgbm90IG5lZWRlZCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuXG4gICAgbmV3IEN1c3RvbVJlc291cmNlKHNjb3BlLCAnU1NNSW5zdGFsbGVyQ3VzdG9tUmVzb3VyY2UnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgU2VydmljZVRpbWVvdXQ6IDMwNSwgLy8gVE9ETyBjb25maWd1cmFibGVcbiAgICAgICAgSW5zdGFuY2VJZDogb3B0aW9ucy5pbnN0YW5jZUlkLFxuICAgICAgICBEb2N1bWVudE5hbWU6IG9wdGlvbnMuZG9jdW1lbnROYW1lLFxuICAgICAgICBDbG91ZFdhdGNoTG9nR3JvdXBOYW1lOiBvcHRpb25zLmNsb3VkV2F0Y2hMb2dHcm91cE5hbWUsXG4gICAgICAgIFZTQ29kZVBhc3N3b3JkOiBvcHRpb25zLnZzQ29kZVBhc3N3b3JkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBfYmluZCgpIHt9XG59XG4iXX0=
|
|
705
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc3RhbGxlci9pbnN0YWxsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXNEO0FBRXRELDJDQUEyQztBQUMzQywyQ0FBd0U7QUFDeEUsbUVBQXdEO0FBQ3hELHFDQUEwQztBQUUxQyw2REFBeUQ7QUFDekQsb0RBQW1EO0FBOERuRCxNQUFzQixTQUFTO0lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBeUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBTSxTQUFRLFNBQVM7WUFDMUIsS0FBSyxDQUFDLEtBQWdCO2dCQUMzQixJQUFJLFlBQVksQ0FBQztnQkFDakIsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksS0FBSyxDQUFDO2dCQUM3RCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQztnQkFDcEQsSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ3ZELFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO2dCQUN0QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUNyQyxLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixPQUFPLENBQUMsVUFBVSxFQUNsQixPQUFPLENBQUMsVUFBVSxFQUNsQiwrQkFBZSxDQUFDLFNBQVMsRUFDekIsT0FBTyxDQUFDLGdCQUFnQixDQUN6QixDQUFDO29CQUNGLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSyxDQUFDO2dCQUNoQyxDQUFDO2dCQUVELE1BQU0sc0JBQXNCLEdBQzFCLE9BQU8sQ0FBQyxzQkFBc0IsSUFBSSxZQUFZLFlBQVksRUFBRSxDQUFDO2dCQUUvRCxNQUFNLFNBQVMsR0FBRyxJQUFJLHVCQUF1QixDQUFD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Yi9hd3MtaWFtJztcbmltcG9ydCB7IEZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgeyBBcm4sIEN1c3RvbVJlc291cmNlLCBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgeyBOYWdTdXBwcmVzc2lvbnMgfSBmcm9tICdjZGstbmFnJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSW5zdGFsbGVyRnVuY3Rpb24gfSBmcm9tICcuL2luc3RhbGxlci1mdW5jdGlvbic7XG5pbXBvcnQgeyBMaW51eEZsYXZvclR5cGUgfSBmcm9tICcuLi92c2NvZGUtc2VydmVyJztcblxuaW50ZXJmYWNlIEluc3RhbGxlck9wdGlvbnNCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBlYzIgaW5zdGFuY2UgaWQgdG8gaW5zdGFsbCB0aGUgc3NtIGRvY3VtZW50IG9uXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjdXN0b20gc3NtIGRvY3VtZW50IHRvIGluc3RhbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBzc20gZG9jdW1lbnQgb2YgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xvdWR3YXRjaCBsb2cgZ3JvdXAgZm9yIHRoZSBpbnN0YWxsIGxvZ3NcbiAgICpcbiAgICogQGRlZmF1bHQgL2F3cy9zc20vJHtkb2N1bWVudE5hbWV9XG4gICAqL1xuICByZWFkb25seSBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVVc2VyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVQYXNzd29yZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9tZSBmb2xkZXIgb2YgdGhlIHVzZXIgdW5kZXIgd2hpY2ggdGhlIHZzY29kZSBzZXJ2ZXIgcnVuc1xuICAgKi9cbiAgcmVhZG9ubHkgaG9tZUZvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSByZXN0IHBhdGggdnMgY29kZSBzZXJ2ZXIgd2lsbCBydW5cbiAgICpcbiAgICogQGRlZmF1bHQgYXBwXG4gICAqL1xuICByZWFkb25seSBkZXZTZXJ2ZXJCYXNlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBvcnQgdnNjb2RlciBzZXJ2ZXIgd2lsbCBiZSBzZXJ2ZWQgaW4gdGhlIGluc3RhbmNlXG4gICAqXG4gICAqIEBkZWZhdWx0IDgwODFcbiAgICovXG4gIHJlYWRvbmx5IGRldlNlcnZlclBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gZG9tYWluIG5hbWUgZm9yIHRoZSBWUyBDb2RlIHNlcnZlclxuICAgKiBVc2VkIHRvIGNvbmZpZ3VyZSBuZ2lueCBzZXJ2ZXJfbmFtZSBkaXJlY3RpdmVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2VzICouY2xvdWRmcm9udC5uZXQgb25seVxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRG9tYWluTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YWxsZXJPcHRpb25zIGV4dGVuZHMgSW5zdGFsbGVyT3B0aW9uc0Jhc2Uge31cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEluc3RhbGxlciB7XG4gIHB1YmxpYyBzdGF0aWMgdWJ1bnR1KG9wdGlvbnM6IEluc3RhbGxlck9wdGlvbnMpOiBJbnN0YWxsZXIge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgSW5zdGFsbGVyIHtcbiAgICAgIHB1YmxpYyBfYmluZChzY29wZTogQ29uc3RydWN0KTogSW5zdGFsbGVyIHtcbiAgICAgICAgbGV0IGRvY3VtZW50TmFtZTtcbiAgICAgICAgY29uc3QgZGV2U2VydmVyQmFzZVBhdGggPSBvcHRpb25zLmRldlNlcnZlckJhc2VQYXRoID8/ICdhcHAnO1xuICAgICAgICBjb25zdCBkZXZTZXJ2ZXJQb3J0ID0gb3B0aW9ucy5kZXZTZXJ2ZXJQb3J0ID8/IDgwODE7XG4gICAgICAgIGlmIChvcHRpb25zLmRvY3VtZW50TmFtZSAmJiBvcHRpb25zLmRvY3VtZW50TmFtZSAhPSAnJykge1xuICAgICAgICAgIGRvY3VtZW50TmFtZSA9IG9wdGlvbnMuZG9jdW1lbnROYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gdGhpcy5jcmVhdGVTU01Eb2N1bWVudChcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgZGV2U2VydmVyQmFzZVBhdGgsXG4gICAgICAgICAgICBkZXZTZXJ2ZXJQb3J0LFxuICAgICAgICAgICAgb3B0aW9ucy52c0NvZGVVc2VyLFxuICAgICAgICAgICAgb3B0aW9ucy5ob21lRm9sZGVyLFxuICAgICAgICAgICAgTGludXhGbGF2b3JUeXBlLlVCVU5UVV8yMixcbiAgICAgICAgICAgIG9wdGlvbnMuY3VzdG9tRG9tYWluTmFtZSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGRvY3VtZW50TmFtZSA9IGRvY3VtZW50Lm5hbWUhO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSA9XG4gICAgICAgICAgb3B0aW9ucy5jbG91ZFdhdGNoTG9nR3JvdXBOYW1lID8/IGAvYXdzL3NzbS8ke2RvY3VtZW50TmFtZX1gO1xuXG4gICAgICAgIGNvbnN0IGluc3RhbGxlciA9IG5ldyBDdXN0b21SZXNvdXJjZUluc3RhbGxlcihzY29wZSwge1xuICAgICAgICAgIGluc3RhbmNlSWQ6IG9wdGlvbnMuaW5zdGFuY2VJZCxcbiAgICAgICAgICBkb2N1bWVudE5hbWU6IGRvY3VtZW50TmFtZSxcbiAgICAgICAgICBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lOiBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lLFxuICAgICAgICAgIHZzQ29kZVVzZXI6IG9wdGlvbnMudnNDb2RlVXNlcixcbiAgICAgICAgICB2c0NvZGVQYXNzd29yZDogb3B0aW9ucy52c0NvZGVQYXNzd29yZCxcbiAgICAgICAgICBob21lRm9sZGVyOiBvcHRpb25zLmhvbWVGb2xkZXIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpbnN0YWxsZXI7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYW1hem9uTGludXgyMDIzKG9wdGlvbnM6IEluc3RhbGxlck9wdGlvbnMpOiBJbnN0YWxsZXIge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgSW5zdGFsbGVyIHtcbiAgICAgIHB1YmxpYyBfYmluZChzY29wZTogQ29uc3RydWN0KTogSW5zdGFsbGVyIHtcbiAgICAgICAgbGV0IGRvY3VtZW50TmFtZTtcbiAgICAgICAgY29uc3QgZGV2U2VydmVyQmFzZVBhdGggPSBvcHRpb25zLmRldlNlcnZlckJhc2VQYXRoID8/ICdhcHAnO1xuICAgICAgICBjb25zdCBkZXZTZXJ2ZXJQb3J0ID0gb3B0aW9ucy5kZXZTZXJ2ZXJQb3J0ID8/IDgwODE7XG4gICAgICAgIGlmIChvcHRpb25zLmRvY3VtZW50TmFtZSAmJiBvcHRpb25zLmRvY3VtZW50TmFtZSAhPSAnJykge1xuICAgICAgICAgIGRvY3VtZW50TmFtZSA9IG9wdGlvbnMuZG9jdW1lbnROYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gdGhpcy5jcmVhdGVTU01Eb2N1bWVudChcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgZGV2U2VydmVyQmFzZVBhdGgsXG4gICAgICAgICAgICBkZXZTZXJ2ZXJQb3J0LFxuICAgICAgICAgICAgb3B0aW9ucy52c0NvZGVVc2VyLFxuICAgICAgICAgICAgb3B0aW9ucy5ob21lRm9sZGVyLFxuICAgICAgICAgICAgTGludXhGbGF2b3JUeXBlLkFNQVpPTl9MSU5VWF8yMDIzLFxuICAgICAgICAgICAgb3B0aW9ucy5jdXN0b21Eb21haW5OYW1lLFxuICAgICAgICAgICk7XG4gICAgICAgICAgZG9jdW1lbnROYW1lID0gZG9jdW1lbnQubmFtZSE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lID1cbiAgICAgICAgICBvcHRpb25zLmNsb3VkV2F0Y2hMb2dHcm91cE5hbWUgPz8gYC9hd3Mvc3NtLyR7ZG9jdW1lbnROYW1lfWA7XG5cbiAgICAgICAgY29uc3QgaW5zdGFsbGVyID0gbmV3IEN1c3RvbVJlc291cmNlSW5zdGFsbGVyKHNjb3BlLCB7XG4gICAgICAgICAgaW5zdGFuY2VJZDogb3B0aW9ucy5pbnN0YW5jZUlkLFxuICAgICAgICAgIGRvY3VtZW50TmFtZTogZG9jdW1lbnROYW1lLFxuICAgICAgICAgIGNsb3VkV2F0Y2hMb2dHcm91cE5hbWU6IGNsb3VkV2F0Y2hMb2dHcm91cE5hbWUsXG4gICAgICAgICAgdnNDb2RlVXNlcjogb3B0aW9ucy52c0NvZGVVc2VyLFxuICAgICAgICAgIHZzQ29kZVBhc3N3b3JkOiBvcHRpb25zLnZzQ29kZVBhc3N3b3JkLFxuICAgICAgICAgIGhvbWVGb2xkZXI6IG9wdGlvbnMuaG9tZUZvbGRlcixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbGxlcjtcbiAgICAgIH1cbiAgICB9KSgpO1xuICB9XG5cbiAgcHVibGljIGluc3RhbmNlSWQhOiBzdHJpbmc7XG4gIHB1YmxpYyBkb2N1bWVudE5hbWUhOiBzdHJpbmc7XG4gIHB1YmxpYyBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lITogc3RyaW5nO1xuICBwdWJsaWMgdnNDb2RlUGFzc3dvcmQhOiBzdHJpbmc7XG4gIHB1YmxpYyB2c0NvZGVQYXNzd29yZFRlc3QhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge31cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgX2JpbmQoc2NvcGU6IENvbnN0cnVjdCk6IGFueTtcblxuICBwcml2YXRlIGNyZWF0ZVNTTURvY3VtZW50KFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgZGV2U2VydmVyQmFzZVBhdGg6IHN0cmluZyxcbiAgICBkZXZTZXJ2ZXJQb3J0OiBudW1iZXIsXG4gICAgdnNDb2RlVXNlcjogc3RyaW5nLFxuICAgIGhvbWVGb2xkZXI6IHN0cmluZyxcbiAgICBsaW51eEZsYXZvcjogTGludXhGbGF2b3JUeXBlLFxuICAgIGN1c3RvbURvbWFpbk5hbWU/OiBzdHJpbmcsXG4gICk6IHNzbS5DZm5Eb2N1bWVudCB7XG4gICAgLy8gR2VuZXJhdGUgbmdpbnggc2VydmVyX25hbWUgZGlyZWN0aXZlIGJhc2VkIG9uIGN1c3RvbSBkb21haW5cbiAgICBjb25zdCBzZXJ2ZXJOYW1lRGlyZWN0aXZlID0gY3VzdG9tRG9tYWluTmFtZVxuICAgICAgPyBgc2VydmVyX25hbWUgKi5jbG91ZGZyb250Lm5ldCAke2N1c3RvbURvbWFpbk5hbWV9O2BcbiAgICAgIDogJ3NlcnZlcl9uYW1lICouY2xvdWRmcm9udC5uZXQ7JztcblxuICAgIGxldCBzc21Eb2N1bWVudDogc3NtLkNmbkRvY3VtZW50O1xuICAgIHN3aXRjaCAobGludXhGbGF2b3IpIHtcbiAgICAgIGNhc2UgTGludXhGbGF2b3JUeXBlLlVCVU5UVV8yMjpcbiAgICAgIGNhc2UgTGludXhGbGF2b3JUeXBlLlVCVU5UVV8yNDpcbiAgICAgICAgLy8gQ3JlYXRlIGFuIFNTTSBkb2N1bWVudCB3aXRoIG11bHRpcGxlIGFjdGlvbnMgdG8gaW5zdGFsbCB0aGUgc29mdHdhcmVcbiAgICAgICAgc3NtRG9jdW1lbnQgPSBuZXcgc3NtLkNmbkRvY3VtZW50KHNjb3BlLCAnc3NtLWRvY3VtZW50LXVidW50dScsIHtcbiAgICAgICAgICBuYW1lOiBgdnNjb2RlLXNlcnZlci11YnVudHUtJHtTdGFjay5vZihzY29wZSkuc3RhY2tOYW1lfWAsXG4gICAgICAgICAgZG9jdW1lbnRUeXBlOiAnQ29tbWFuZCcsXG4gICAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgc2NoZW1hVmVyc2lvbjogJzIuMicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Jvb3RzdHJhcCBWU0NvZGUgY29kZS1zZXJ2ZXIgaW5zdGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICBWU0NvZGVQYXNzd29yZDoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFN0YWNrLm9mKHNjb3BlKS5zdGFja0lkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBOb2RlVmVyc2lvbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICcyMCcsXG4gICAgICAgICAgICAgICAgYWxsb3dlZFZhbHVlczogWycyMicsICcyMCcsICcxOCddLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBEb3ROZXRWZXJzaW9uOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogJzguMCcsXG4gICAgICAgICAgICAgICAgYWxsb3dlZFZhbHVlczogWyc4LjAnLCAnNy4wJ10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gYWxsIG1haW5TdGVwcyBzY3JpcHRzIGFyZSBpbiBpbiAvdmFyL2xpYi9hbWF6b24vc3NtLzxpbnN0YW5jZWlkPi9kb2N1bWVudC9vcmNoZXN0cmF0aW9uLzx1dWlkPi88U3RlcE5hbWU+L19zY3JpcHQuc2hcbiAgICAgICAgICAgIG1haW5TdGVwczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOmNvbmZpZ3VyZVBhY2thZ2UnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQ2xvdWRXYXRjaEFnZW50JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdBbWF6b25DbG91ZFdhdGNoQWdlbnQnLFxuICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnSW5zdGFsbCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5Eb2N1bWVudCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0NvbmZpZ3VyZUNsb3VkV2F0Y2hBZ2VudCcsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6ICdTU01Eb2N1bWVudCcsXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudFBhdGg6ICdBbWF6b25DbG91ZFdhdGNoLU1hbmFnZUFnZW50JyxcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50UGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdjb25maWd1cmUnLFxuICAgICAgICAgICAgICAgICAgICBtb2RlOiAnZWMyJyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxDb25maWd1cmF0aW9uU291cmNlOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsUmVzdGFydDogJ3llcycsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQXB0UGFja2FnZXNBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnYXB0LWdldCAtcSB1cGRhdGUgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBhcHQtdXRpbHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXB0LWdldCAtcSB1cGRhdGUgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBuZWVkcmVzdGFydCB1bmF0dGVuZGVkLXVwZ3JhZGVzJyxcbiAgICAgICAgICAgICAgICAgICAgXCJzZWQgLWkgJ3MvIyRucmNvbmZ7a2VybmVsaGludHN9ID0gLTE7LyRucmNvbmZ7a2VybmVsaGludHN9ID0gMDsvJyAvZXRjL25lZWRyZXN0YXJ0L25lZWRyZXN0YXJ0LmNvbmZcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzZWQgLWkgJ3MvIyRucmNvbmZ7dmVyYm9zaXR5fSA9IDI7LyRucmNvbmZ7dmVyYm9zaXR5fSA9IDA7LycgL2V0Yy9uZWVkcmVzdGFydC9uZWVkcmVzdGFydC5jb25mXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic2VkIC1pIFxcXCJzLyNcXCRucmNvbmZ7cmVzdGFydH0gPSAnaSc7L1xcJG5yY29uZntyZXN0YXJ0fSA9ICdhJzsvXFxcIiAvZXRjL25lZWRyZXN0YXJ0L25lZWRyZXN0YXJ0LmNvbmZcIixcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJBcHQgaGVscGVyIHBhY2thZ2VzIGFkZGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnY2F0IC9ldGMvbmVlZHJlc3RhcnQvbmVlZHJlc3RhcnQuY29uZicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQmFzZVBhY2thZ2VzQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FwdC1nZXQgLXEgdXBkYXRlICYmIERFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IGluc3RhbGwgLXkgLXEgY3VybCBnbnVwZyB3aG9pcyBhcmdvbjIgb3BlbnNzbCBsb2NhbGVzIGxvY2FsZXMtYWxsIHVuemlwIGFwdC10cmFuc3BvcnQtaHR0cHMgY2EtY2VydGlmaWNhdGVzIHNvZnR3YXJlLXByb3BlcnRpZXMtY29tbW9uIG5naW54JyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0FkZFVzZXJBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICBcImVjaG8gJ0FkZGluZyB1c2VyOiAke1ZTQ29kZVVzZXJ9J1wiLFxuICAgICAgICAgICAgICAgICAgICBgYWRkdXNlciAtLWRpc2FibGVkLXBhc3N3b3JkIC0tZ2Vjb3MgJycgJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvIFwiJHt2c0NvZGVVc2VyfTp7eyBWU0NvZGVQYXNzd29yZCB9fVwiIHwgY2hwYXNzd2RgLFxuICAgICAgICAgICAgICAgICAgICBgdXNlcm1vZCAtYUcgc3VkbyAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgYHRlZSAvZXRjL3N1ZG9lcnMuZC85MS12c2NvZGUtdXNlciA8PEVPRlxuJHt2c0NvZGVVc2VyfSBBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMXG5FT0ZgLFxuICAgICAgICAgICAgICAgICAgICBgbWtkaXIgLXAgL2hvbWUvJHt2c0NvZGVVc2VyfSAmJiBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiVXNlciBhZGRlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgYGdldGVudCBwYXNzd2QgJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsTm9kZUFwdCcsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdjdXJsIC1mc1NMIGh0dHBzOi8vZGViLm5vZGVzb3VyY2UuY29tL2dwZ2tleS9ub2Rlc291cmNlLXJlcG8uZ3BnLmtleSB8IGdwZyAtLWRlYXJtb3IgLW8gL3Vzci9zaGFyZS9rZXlyaW5ncy9ub2Rlc291cmNlLmdwZycsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiZGViIFthcmNoPSQoZHBrZyAtLXByaW50LWFyY2hpdGVjdHVyZSkgc2lnbmVkLWJ5PS91c3Ivc2hhcmUva2V5cmluZ3Mvbm9kZXNvdXJjZS5ncGddIGh0dHBzOi8vZGViLm5vZGVzb3VyY2UuY29tL25vZGVfe3sgTm9kZVZlcnNpb24gfX0ueCBub2Rpc3RybyBtYWluXCIgPiAvZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9ub2Rlc291cmNlLmxpc3QnLFxuICAgICAgICAgICAgICAgICAgICAnYXB0LWdldCAtcSB1cGRhdGUgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBub2RlanMnLFxuICAgICAgICAgICAgICAgICAgICAnbnBtIGluc3RhbGwgLWcgbnBtQGxhdGVzdCcsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiTm9kZSBhbmQgbnBtIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ25vZGUgLXYnLFxuICAgICAgICAgICAgICAgICAgICAnbnBtIC12JyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxEb2NrZXJBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnY3VybCAtZnNTTCBodHRwczovL2Rvd25sb2FkLmRvY2tlci5jb20vbGludXgvdWJ1bnR1L2dwZyB8IGdwZyAtLWRlYXJtb3IgLW8gL3Vzci9zaGFyZS9rZXlyaW5ncy9kb2NrZXItYXJjaGl2ZS1rZXlyaW5nLmdwZycsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiZGViIFtzaWduZWQtYnk9L3Vzci9zaGFyZS9rZXlyaW5ncy9kb2NrZXItYXJjaGl2ZS1rZXlyaW5nLmdwZ10gaHR0cHM6Ly9kb3dubG9hZC5kb2NrZXIuY29tL2xpbnV4L3VidW50dSAkKGxzYl9yZWxlYXNlIC0tY29kZW5hbWUgLS1zaG9ydCkgc3RhYmxlXCIgPiAvZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9kb2NrZXIubGlzdCcsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIGRvY2tlci1jZSBkb2NrZXItY2UtY2xpIGNvbnRhaW5lcmQuaW8nLFxuICAgICAgICAgICAgICAgICAgICBgc3lzdGVtY3RsIHJlc3RhcnQgY29kZS1zZXJ2ZXJAJHt2c0NvZGVVc2VyfS5zZXJ2aWNlYCxcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWN0bCBzdGFydCBkb2NrZXIuc2VydmljZScsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiRG9ja2VyIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RvY2tlciAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtY3RsIHN0YXR1cyBkb2NrZXIuc2VydmljZScsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsR2l0QXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZC1hcHQtcmVwb3NpdG9yeSBwcGE6Z2l0LWNvcmUvcHBhJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FwdC1nZXQgLXEgdXBkYXRlICYmIERFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IGluc3RhbGwgLXkgLXEgZ2l0JyxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIuZW1haWwgXCIke3ZzQ29kZVVzZXJ9QGV4YW1wbGUuY29tXCJgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lIFwiV29ya3Nob3AgJHt2c0NvZGVVc2VyfVwiYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgY29uZmlnIC0tZ2xvYmFsIGluaXQuZGVmYXVsdEJyYW5jaCBcIm1haW5cImAsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiR2l0IGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2dpdCAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbFB5dGhvbkFwdCcsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vIFVidW50dSAyMiBkZWZhdWx0IGlzIFB5dGhvbiAzLjEwXG4gICAgICAgICAgICAgICAgICAgIC8vIFVidW50dSAyNCBkZWZhdWx0IGlzIFB5dGhvbiAzLjEyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IGluc3RhbGxlZCBQeXRob24gdmVyc2lvbiB3aWxsIG1hcCB0byBQeXRob24zXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIHB5dGhvbjMtcGlwIHB5dGhvbjMtdmVudiBweXRob24zLWJvdG8zIHB5dGhvbjMtcHl0ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2FsaWFzIHB5dGVzdD1weXRlc3QtMycgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYHN5c3RlbWN0bCByZXN0YXJ0IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn0uc2VydmljZWAsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgc3RhcnQgbXVsdGlwYXRoZC5zZXJ2aWNlIHBhY2thZ2VraXQuc2VydmljZScsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgcmVzdGFydCB1bmF0dGVuZGVkLXVwZ3JhZGVzLnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIlB5dGhvbiBhbmQgUGlwIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbjMgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ3BpcDMgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxBV1NDTEknLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnY3VybCAtZnNTTCBodHRwczovL2F3c2NsaS5hbWF6b25hd3MuY29tL2F3c2NsaS1leGUtbGludXgtJCh1bmFtZSAtbSkuemlwIC1vIC90bXAvYXdzLWNsaS56aXAnLFxuICAgICAgICAgICAgICAgICAgICAndW56aXAgLXEgLWQgL3RtcCAvdG1wL2F3cy1jbGkuemlwJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N1ZG8gL3RtcC9hd3MvaW5zdGFsbCcsXG4gICAgICAgICAgICAgICAgICAgICdybSAtcmYgL3RtcC9hd3MnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkFXUyBDTEkgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnYXdzIC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdDb25maWd1cmVDb2RlU2VydmVyJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgYGV4cG9ydCBIT01FPS9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICAnY3VybCAtZnNTTCBodHRwczovL2NvZGUtc2VydmVyLmRldi9pbnN0YWxsLnNoIHwgYmFzaCAtcyAtLSAyPiYxJyxcbiAgICAgICAgICAgICAgICAgICAgYHN5c3RlbWN0bCBlbmFibGUgLS1ub3cgY29kZS1zZXJ2ZXJAJHt2c0NvZGVVc2VyfSAyPiYxYCxcbiAgICAgICAgICAgICAgICAgICAgYHRlZSAvZXRjL25naW54L2NvbmYuZC9jb2RlLXNlcnZlci5jb25mIDw8RU9GXG5zZXJ2ZXIge1xuICAgIGxpc3RlbiA4MDtcbiAgICBsaXN0ZW4gWzo6XTo4MDtcbiAgICAjIHNlcnZlcl9uYW1lIGRpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25Eb21haW5OYW1lO1xuICAgICR7c2VydmVyTmFtZURpcmVjdGl2ZX1cbiAgICBsb2NhdGlvbiAvIHtcbiAgICAgIHByb3h5X3Bhc3MgaHR0cDovL2xvY2FsaG9zdDo4MDgwLztcbiAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCBcXFxcJGhvc3Q7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIFVwZ3JhZGUgXFxcXCRodHRwX3VwZ3JhZGU7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIENvbm5lY3Rpb24gdXBncmFkZTtcbiAgICAgIHByb3h5X3NldF9oZWFkZXIgQWNjZXB0LUVuY29kaW5nIGd6aXA7XG4gICAgfVxuICAgIGxvY2F0aW9uIC8ke2RldlNlcnZlckJhc2VQYXRofSB7XG4gICAgICBwcm94eV9wYXNzIGh0dHA6Ly9sb2NhbGhvc3Q6JHtkZXZTZXJ2ZXJQb3J0fS8ke2RldlNlcnZlckJhc2VQYXRofTtcbiAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCBcXFxcJGhvc3Q7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIFVwZ3JhZGUgXFxcXCRodHRwX3VwZ3JhZGU7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIENvbm5lY3Rpb24gdXBncmFkZTtcbiAgICAgIHByb3h5X3NldF9oZWFkZXIgQWNjZXB0LUVuY29kaW5nIGd6aXA7XG4gICAgfVxufVxuRU9GYCxcbiAgICAgICAgICAgICAgICAgICAgYG1rZGlyIC1wIC9ob21lLyR7dnNDb2RlVXNlcn0vLmNvbmZpZy9jb2RlLXNlcnZlcmAsXG4gICAgICAgICAgICAgICAgICAgIGB0ZWUgL2hvbWUvJHt2c0NvZGVVc2VyfS8uY29uZmlnL2NvZGUtc2VydmVyL2NvbmZpZy55YW1sIDw8RU9GXG5jZXJ0OiBmYWxzZVxuYXV0aDogcGFzc3dvcmRcbmhhc2hlZC1wYXNzd29yZDogXCIkKGVjaG8gLW4ge3sgVlNDb2RlUGFzc3dvcmQgfX0gfCBhcmdvbjIgJChvcGVuc3NsIHJhbmQgLWJhc2U2NCAxMikgLWUpXCJcbkVPRmAsXG4gICAgICAgICAgICAgICAgICAgIGBta2RpciAtcCAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5sb2NhbC9zaGFyZS9jb2RlLXNlcnZlci9Vc2VyL2AsXG4gICAgICAgICAgICAgICAgICAgIGB0b3VjaCAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5odXNobG9naW5gLFxuICAgICAgICAgICAgICAgICAgICBgbWtkaXIgLXAgJHtob21lRm9sZGVyfSAmJiBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gJHtob21lRm9sZGVyfWAsXG4gICAgICAgICAgICAgICAgICAgIGB0ZWUgL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvc2hhcmUvY29kZS1zZXJ2ZXIvVXNlci9zZXR0aW5ncy5qc29uIDw8RU9GXG57XG4gIFwiZXh0ZW5zaW9ucy5hdXRvVXBkYXRlXCI6IGZhbHNlLFxuICBcImV4dGVuc2lvbnMuYXV0b0NoZWNrVXBkYXRlc1wiOiBmYWxzZSxcbiAgXCJ0ZWxlbWV0cnkudGVsZW1ldHJ5TGV2ZWxcIjogXCJvZmZcIixcbiAgXCJzZWN1cml0eS53b3Jrc3BhY2UudHJ1c3Quc3RhcnR1cFByb21wdFwiOiBcIm5ldmVyXCIsXG4gIFwic2VjdXJpdHkud29ya3NwYWNlLnRydXN0LmVuYWJsZWRcIjogZmFsc2UsXG4gIFwic2VjdXJpdHkud29ya3NwYWNlLnRydXN0LmJhbm5lclwiOiBcIm5ldmVyXCIsXG4gIFwic2VjdXJpdHkud29ya3NwYWNlLnRydXN0LmVtcHR5V2luZG93XCI6IGZhbHNlLFxuICBcInB5dGhvbi50ZXN0aW5nLnB5dGVzdEVuYWJsZWRcIjogdHJ1ZSxcbiAgXCJhdXRvLXJ1bi1jb21tYW5kLnJ1bGVzXCI6IFtcbiAgICB7XG4gICAgICBcImNvbW1hbmRcIjogXCJ3b3JrYmVuY2guYWN0aW9uLnRlcm1pbmFsLm5ld1wiXG4gICAgfVxuICBdXG59XG5FT0ZgLFxuICAgICAgICAgICAgICAgICAgICBgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICBgc3lzdGVtY3RsIHJlc3RhcnQgY29kZS1zZXJ2ZXJAJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgcmVzdGFydCBuZ2lueCcsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIEFtYXpvbldlYlNlcnZpY2VzLmF3cy10b29sa2l0LXZzY29kZSAtLWZvcmNlYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gQW1hem9uV2ViU2VydmljZXMuYW1hem9uLXEtdnNjb2RlIC0tZm9yY2VgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY29kZS1zZXJ2ZXIgLS1pbnN0YWxsLWV4dGVuc2lvbiBzeW5lZHJhLmF1dG8tcnVuLWNvbW1hbmQgLS1mb3JjZWAsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIHZzY2phdmEudnNjb2RlLWphdmEtcGFjayAtLWZvcmNlYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gbXMtdnNjb2RlLmxpdmUtc2VydmVyIC0tZm9yY2VgLFxuICAgICAgICAgICAgICAgICAgICBgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIk5naW54IGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ25naW54IC10IDI+JjEnLFxuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtY3RsIHN0YXR1cyBuZ2lueCcsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiQ29kZVNlcnZlciBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdjb2RlLXNlcnZlciAtdicsXG4gICAgICAgICAgICAgICAgICAgIGBzeXN0ZW1jdGwgc3RhdHVzIGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnVXBkYXRlUHJvZmlsZScsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIExBTkc9ZW5fVVMudXRmLTggPj4gL2V0Yy9lbnZpcm9ubWVudCcsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIExDX0FMTD1lbl9VUy5VVEYtOCA+PiAvZXRjL2Vudmlyb25tZW50JyxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ1BBVEg9JFBBVEg6L2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvYmluJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IFBBVEgnID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgQVdTX1JFR0lPTj0ke1N0YWNrLm9mKHNjb3BlKS5yZWdpb259JyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEFXU19BQ0NPVU5USUQ9JHtTdGFjay5vZihzY29wZSkuYWNjb3VudH0nID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgTkVYVF9URUxFTUVUUllfRElTQUJMRUQ9MScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gXCJleHBvcnQgUFMxPSdcXFxcW1xcXFwwMzNbMDE7MzJtXFxcXF1cXFxcdTpcXFxcW1xcXFwwMzNbMDE7MzRtXFxcXF1cXFxcd1xcXFxbXFxcXDAzM1swMG1cXFxcXVxcXFwkICdcIiA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbENESycsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICducG0gaW5zdGFsbCAtZyBhd3MtY2RrJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJBV1MgQ0RLIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2NkayAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExpbnV4Rmxhdm9yVHlwZS5BTUFaT05fTElOVVhfMjAyMzpcbiAgICAgICAgc3NtRG9jdW1lbnQgPSBuZXcgc3NtLkNmbkRvY3VtZW50KHNjb3BlLCAnc3NtLWRvY3VtZW50LWFsMjAyMycsIHtcbiAgICAgICAgICBuYW1lOiBgdnNjb2RlLXNlcnZlci1hbDIwMjMtJHtTdGFjay5vZihzY29wZSkuc3RhY2tOYW1lfWAsXG4gICAgICAgICAgZG9jdW1lbnRUeXBlOiAnQ29tbWFuZCcsXG4gICAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgc2NoZW1hVmVyc2lvbjogJzIuMicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Jvb3RzdHJhcCBWU0NvZGUgY29kZS1zZXJ2ZXIgaW5zdGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICBWU0NvZGVQYXNzd29yZDoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFN0YWNrLm9mKHNjb3BlKS5zdGFja0lkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBOb2RlVmVyc2lvbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICcyMCcsXG4gICAgICAgICAgICAgICAgYWxsb3dlZFZhbHVlczogWycyMicsICcyMCcsICcxOCddLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBEb3ROZXRWZXJzaW9uOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogJzguMCcsXG4gICAgICAgICAgICAgICAgYWxsb3dlZFZhbHVlczogWyc4LjAnLCAnNy4wJ10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gYWxsIG1haW5TdGVwcyBzY3JpcHRzIGFyZSBpbiBpbiAvdmFyL2xpYi9hbWF6b24vc3NtLzxpbnN0YW5jZWlkPi9kb2N1bWVudC9vcmNoZXN0cmF0aW9uLzx1dWlkPi88U3RlcE5hbWU+L19zY3JpcHQuc2hcbiAgICAgICAgICAgIG1haW5TdGVwczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOmNvbmZpZ3VyZVBhY2thZ2UnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQ2xvdWRXYXRjaEFnZW50JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdBbWF6b25DbG91ZFdhdGNoQWdlbnQnLFxuICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnSW5zdGFsbCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5Eb2N1bWVudCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0NvbmZpZ3VyZUNsb3VkV2F0Y2hBZ2VudCcsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6ICdTU01Eb2N1bWVudCcsXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudFBhdGg6ICdBbWF6b25DbG91ZFdhdGNoLU1hbmFnZUFnZW50JyxcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50UGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdjb25maWd1cmUnLFxuICAgICAgICAgICAgICAgICAgICBtb2RlOiAnZWMyJyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxDb25maWd1cmF0aW9uU291cmNlOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsUmVzdGFydDogJ3llcycsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQmFzZVBhY2thZ2VzRG5mJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RuZiBpbnN0YWxsIC15IC0tYWxsb3dlcmFzaW5nIHdob2lzIGFyZ29uMiB1bnppcCBuZ2lueCBjdXJsIGdudXBnIG9wZW5zc2wnLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnQWRkVXNlckRuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdBZGRpbmcgdXNlcjogJHt2c0NvZGVVc2VyfSdgLFxuICAgICAgICAgICAgICAgICAgICBgYWRkdXNlciAtYyAnJyAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgYHBhc3N3ZCAtbCAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gXCIke3ZzQ29kZVVzZXJ9Ont7IFZTQ29kZVBhc3N3b3JkIH19XCIgfCBjaHBhc3N3ZGAsXG4gICAgICAgICAgICAgICAgICAgIGB1c2VybW9kIC1hRyB3aGVlbCAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJVc2VyIGFkZGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICBgZ2V0ZW50IHBhc3N3ZCAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxOb2RlRG5mJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RuZiBpbnN0YWxsIC15IG5vZGVqczIwIG5wbScsXG4gICAgICAgICAgICAgICAgICAgICdsbiAtcyAtZiAvdXNyL2Jpbi9ub2RlLTIwIC91c3IvYmluL25vZGUnLFxuICAgICAgICAgICAgICAgICAgICAnbnBtIGluc3RhbGwgLWcgbnBtQGxhdGVzdCcsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiTm9kZSBhbmQgbnBtIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ25vZGUgLXYnLFxuICAgICAgICAgICAgICAgICAgICAnbnBtIC12JyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxEb2NrZXJEbmYnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZG5mIGluc3RhbGwgLXkgZG9ja2VyJyxcbiAgICAgICAgICAgICAgICAgICAgYHVzZXJtb2QgLWFHIGRvY2tlciAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgYHN5c3RlbWN0bCByZXN0YXJ0IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn0uc2VydmljZWAsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgc3RhcnQgZG9ja2VyLnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkRvY2tlciBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdkb2NrZXIgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWN0bCBzdGF0dXMgZG9ja2VyLnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbEdpdERuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSBnaXQnLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBcIiR7dnNDb2RlVXNlcn1AZXhhbXBsZS5jb21cImAsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgXCJXb3Jrc2hvcCAke3ZzQ29kZVVzZXJ9XCJgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCBjb25maWcgLS1nbG9iYWwgaW5pdC5kZWZhdWx0QnJhbmNoIFwibWFpblwiYCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJHaXQgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnZ2l0IC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsUHl0aG9uRG5mJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gQUwyMDIzIGN1cnJlbnRseSBzaGlwcyB3aXRoIFB5dGhvbiAzLjkgcHJlaW5zdGFsbGVkLCBidXQgMy4xMSBpcyBhdmFpbGFibGUgaW4gdGhlIHJlcG9zaXRvcnlcbiAgICAgICAgICAgICAgICAgICAgLy8gSW5zdGFsbCAzLjExIGFsb25nc2lkZSAzLjkgYW5kIHNldHVwIHNvbWUgYWxpYXMgc28gdGhhdCAzLjExIGlzIGxvYWRlZCB3aGVuIHBhcnRpY2lwYW50IHJ1bnMgUHl0aG9uM1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBQeXRob24gMy4xMiBiZWNvbWUgYXZhaWxhYmxlLCB1cGRhdGUgYmVsb3dcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RuZiBpbnN0YWxsIC15IHB5dGhvbjMuMTEgcHl0aG9uMy4xMS1waXAgcHl0aG9uMy12aXJ0dWFsZW52IHB5dGhvbjMtcHl0ZXN0IHB5dGhvbjMtYm90bzMnLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnYWxpYXMgcHl0ZXN0PXB5dGVzdC0zJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnYWxpYXMgcHl0aG9uMz1weXRob24zLjExJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnYWxpYXMgcGlwMz1waXAzLjExJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBcImVjaG8gJ2FsaWFzPXB5dGhvbjM9cHl0aG9uMy4xMScgPj4gfi8uYmFzaHJjXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZWNobyAnYWxpYXMgcGlwMz1waXAzLjExJyA+PiB+Ly5iYXNocmNcIixcbiAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbjMuMTEgLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIHBpcCAyPiYxJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJQeXRob24gYW5kIFBpcCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdweXRob24zLjExIC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICdweXRob24zLjExIC1tIHBpcCAtLXZlcnNpb24gMj4mMScsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC8vIGFkZCBnbywgZG90bmV0XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQVdTQ0xJJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2N1cmwgLWZzU0wgaHR0cHM6Ly9hd3NjbGkuYW1hem9uYXdzLmNvbS9hd3NjbGktZXhlLWxpbnV4LSQodW5hbWUgLW0pLnppcCAtbyAvdG1wL2F3cy1jbGkuemlwJyxcbiAgICAgICAgICAgICAgICAgICAgJ3VuemlwIC1xIC1kIC90bXAgL3RtcC9hd3MtY2xpLnppcCcsXG4gICAgICAgICAgICAgICAgICAgICdzdWRvIC90bXAvYXdzL2luc3RhbGwnLFxuICAgICAgICAgICAgICAgICAgICAncm0gLXJmIC90bXAvYXdzJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJBV1MgQ0xJIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F3cyAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ29uZmlndXJlQ29kZVNlcnZlcicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgIGBleHBvcnQgSE9NRT0vaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgJ2N1cmwgLWZzU0wgaHR0cHM6Ly9jb2RlLXNlcnZlci5kZXYvaW5zdGFsbC5zaCB8IGJhc2ggLXMgLS0gMj4mMScsXG4gICAgICAgICAgICAgICAgICAgIGBzeXN0ZW1jdGwgZW5hYmxlIC0tbm93IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn0gMj4mMWAsXG4gICAgICAgICAgICAgICAgICAgIGB0ZWUgL2V0Yy9uZ2lueC9jb25mLmQvY29kZS1zZXJ2ZXIuY29uZiA8PEVPRlxuc2VydmVyIHtcbiAgICBsaXN0ZW4gODA7XG4gICAgbGlzdGVuIFs6Ol06ODA7XG4gICAgIyBzZXJ2ZXJfbmFtZSBkaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uRG9tYWluTmFtZTtcbiAgICAke3NlcnZlck5hbWVEaXJlY3RpdmV9XG4gICAgbG9jYXRpb24gLyB7XG4gICAgICBwcm94eV9wYXNzIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC87XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgXFxcXCRob3N0O1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBVcGdyYWRlIFxcXFwkaHR0cF91cGdyYWRlO1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIHVwZ3JhZGU7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEFjY2VwdC1FbmNvZGluZyBnemlwO1xuICAgIH1cbiAgICBsb2NhdGlvbiAvJHtkZXZTZXJ2ZXJCYXNlUGF0aH0ge1xuICAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7ZGV2U2VydmVyUG9ydH0vJHtkZXZTZXJ2ZXJCYXNlUGF0aH07XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgXFxcXCRob3N0O1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBVcGdyYWRlIFxcXFwkaHR0cF91cGdyYWRlO1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIHVwZ3JhZGU7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEFjY2VwdC1FbmNvZGluZyBnemlwO1xuICAgIH1cbn1cbkVPRmAsXG4gICAgICAgICAgICAgICAgICAgIGBta2RpciAtcCAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5jb25maWcvY29kZS1zZXJ2ZXJgLFxuICAgICAgICAgICAgICAgICAgICBgdGVlIC9ob21lLyR7dnNDb2RlVXNlcn0vLmNvbmZpZy9jb2RlLXNlcnZlci9jb25maWcueWFtbCA8PEVPRlxuY2VydDogZmFsc2VcbmF1dGg6IHBhc3N3b3JkXG5oYXNoZWQtcGFzc3dvcmQ6IFwiJChlY2hvIC1uIHt7IFZTQ29kZVBhc3N3b3JkIH19IHwgYXJnb24yICQob3BlbnNzbCByYW5kIC1iYXNlNjQgMTIpIC1lKVwiXG5FT0ZgLFxuICAgICAgICAgICAgICAgICAgICBgbWtkaXIgLXAgL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvc2hhcmUvY29kZS1zZXJ2ZXIvVXNlci9gLFxuICAgICAgICAgICAgICAgICAgICBgdG91Y2ggL2hvbWUvJHt2c0NvZGVVc2VyfS8uaHVzaGxvZ2luYCxcbiAgICAgICAgICAgICAgICAgICAgYG1rZGlyIC1wICR7aG9tZUZvbGRlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR7aG9tZUZvbGRlcn1gLFxuICAgICAgICAgICAgICAgICAgICBgdGVlIC9ob21lLyR7dnNDb2RlVXNlcn0vLmxvY2FsL3NoYXJlL2NvZGUtc2VydmVyL1VzZXIvc2V0dGluZ3MuanNvbiA8PEVPRlxue1xuICBcImV4dGVuc2lvbnMuYXV0b1VwZGF0ZVwiOiBmYWxzZSxcbiAgXCJleHRlbnNpb25zLmF1dG9DaGVja1VwZGF0ZXNcIjogZmFsc2UsXG4gIFwidGVsZW1ldHJ5LnRlbGVtZXRyeUxldmVsXCI6IFwib2ZmXCIsXG4gIFwic2VjdXJpdHkud29ya3NwYWNlLnRydXN0LnN0YXJ0dXBQcm9tcHRcIjogXCJuZXZlclwiLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5lbmFibGVkXCI6IGZhbHNlLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5iYW5uZXJcIjogXCJuZXZlclwiLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5lbXB0eVdpbmRvd1wiOiBmYWxzZSxcbiAgXCJweXRob24udGVzdGluZy5weXRlc3RFbmFibGVkXCI6IHRydWUsXG4gIFwiYXV0by1ydW4tY29tbWFuZC5ydWxlc1wiOiBbXG4gICAge1xuICAgICAgXCJjb21tYW5kXCI6IFwid29ya2JlbmNoLmFjdGlvbi50ZXJtaW5hbC5uZXdcIlxuICAgIH1cbiAgXVxufVxuRU9GYCxcbiAgICAgICAgICAgICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgYHN5c3RlbWN0bCByZXN0YXJ0IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtY3RsIHJlc3RhcnQgbmdpbngnLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY29kZS1zZXJ2ZXIgLS1pbnN0YWxsLWV4dGVuc2lvbiBBbWF6b25XZWJTZXJ2aWNlcy5hd3MtdG9vbGtpdC12c2NvZGUgLS1mb3JjZWAsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIEFtYXpvbldlYlNlcnZpY2VzLmFtYXpvbi1xLXZzY29kZSAtLWZvcmNlYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gc3luZWRyYS5hdXRvLXJ1bi1jb21tYW5kIC0tZm9yY2VgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY29kZS1zZXJ2ZXIgLS1pbnN0YWxsLWV4dGVuc2lvbiB2c2NqYXZhLnZzY29kZS1qYXZhLXBhY2sgLS1mb3JjZWAsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIG1zLXZzY29kZS5saXZlLXNlcnZlciAtLWZvcmNlYCxcbiAgICAgICAgICAgICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJOZ2lueCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICduZ2lueCAtdCAyPiYxJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWN0bCBzdGF0dXMgbmdpbngnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkNvZGVTZXJ2ZXIgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnY29kZS1zZXJ2ZXIgLXYnLFxuICAgICAgICAgICAgICAgICAgICBgc3lzdGVtY3RsIHN0YXR1cyBjb2RlLXNlcnZlckAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ1VwZGF0ZVByb2ZpbGUnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBMQU5HPWVuX1VTLnV0Zi04ID4+IC9ldGMvZW52aXJvbm1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBMQ19BTEw9ZW5fVVMuVVRGLTggPj4gL2V0Yy9lbnZpcm9ubWVudCcsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdQQVRIPSRQQVRIOi9ob21lLyR7dnNDb2RlVXNlcn0vLmxvY2FsL2JpbicgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBQQVRIJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEFXU19SRUdJT049JHtTdGFjay5vZihzY29wZSkucmVnaW9ufScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBBV1NfQUNDT1VOVElEPSR7U3RhY2sub2Yoc2NvcGUpLmFjY291bnR9JyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IE5FWFRfVEVMRU1FVFJZX0RJU0FCTEVEPTEnID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvIFwiZXhwb3J0IFBTMT0nXFxcXFtcXFxcMDMzWzAxOzMybVxcXFxdXFxcXHU6XFxcXFtcXFxcMDMzWzAxOzM0bVxcXFxdXFxcXHdcXFxcW1xcXFwwMzNbMDBtXFxcXF1cXFxcJCAnXCIgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxDREsnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnbnBtIGluc3RhbGwgLWcgYXdzLWNkaycsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiQVdTIENESyBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdjZGsgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBMaW51eCBmbGF2b3I6ICR7bGludXhGbGF2b3J9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNzbURvY3VtZW50O1xuICB9XG59XG5cbmludGVyZmFjZSBDdXN0b21SZXNvdXJjZUluc3RhbGxlck9wdGlvbnMgZXh0ZW5kcyBJbnN0YWxsZXJPcHRpb25zIHt9XG5cbmNsYXNzIEN1c3RvbVJlc291cmNlSW5zdGFsbGVyIGV4dGVuZHMgSW5zdGFsbGVyIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgb3B0aW9uczogQ3VzdG9tUmVzb3VyY2VJbnN0YWxsZXJPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IG9uRXZlbnQ6IEZ1bmN0aW9uID0gbmV3IEluc3RhbGxlckZ1bmN0aW9uKFxuICAgICAgc2NvcGUsXG4gICAgICAnSW5zdGFsbGVyT25FdmVudEhhbmRsZXInLFxuICAgICAge1xuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwMCksIC8vIFRPRE8gY29uZmlndXJhYmxlXG4gICAgICAgIG1lbW9yeVNpemU6IDUxMiwgLy8gVE9ETyBjb25maWd1cmFibGVcbiAgICAgIH0sXG4gICAgKTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbb25FdmVudF0sXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1JQU00JyxcbiAgICAgICAgICByZWFzb246XG4gICAgICAgICAgICAnRm9yIHRoaXMgZXZlbnQgaGFuZGxlciB3ZSBkbyBub3QgbmVlZCB0byByZXN0cmljdCBtYW5hZ2VkIHBvbGljaWVzJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUwxJyxcbiAgICAgICAgICByZWFzb246ICdGb3IgdGhpcyBsYW1iZGEgdGhlIGxhdGVzdCBydW50aW1lIGlzIG5vdCBuZWVkZWQnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIGNvbnN0IGRvY3VtZW50QXJuID0gQXJuLmZvcm1hdChcbiAgICAgIHtcbiAgICAgICAgc2VydmljZTogJ3NzbScsXG4gICAgICAgIHJlc291cmNlOiAnZG9jdW1lbnQnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IG9wdGlvbnMuZG9jdW1lbnROYW1lLFxuICAgICAgfSxcbiAgICAgIFN0YWNrLm9mKHNjb3BlKSxcbiAgICApO1xuXG4gICAgY29uc3QgY3dNYW5hZ2VBZ2VudEFybiA9IEFybi5mb3JtYXQoXG4gICAgICB7XG4gICAgICAgIHNlcnZpY2U6ICdzc20nLFxuICAgICAgICByZXNvdXJjZTogJ2RvY3VtZW50JyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiAnQW1hem9uQ2xvdWRXYXRjaC1NYW5hZ2VBZ2VudCcsXG4gICAgICB9LFxuICAgICAgU3RhY2sub2Yoc2NvcGUpLFxuICAgICk7XG5cbiAgICBjb25zdCB0YXJnZXRFYzJJbnN0YW5jZUFybiA9IEFybi5mb3JtYXQoXG4gICAgICB7XG4gICAgICAgIHNlcnZpY2U6ICdlYzInLFxuICAgICAgICByZXNvdXJjZTogJ2luc3RhbmNlJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBvcHRpb25zLmluc3RhbmNlSWQsXG4gICAgICB9LFxuICAgICAgU3RhY2sub2Yoc2NvcGUpLFxuICAgICk7XG5cbiAgICBvbkV2ZW50LmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ3NzbTpTZW5kQ29tbWFuZCcsXG4gICAgICAgICAgJ3NzbTpHZXRDb21tYW5kSW52b2NhdGlvbicsXG4gICAgICAgICAgJ3NzbTpMaXN0Q29tbWFuZEludm9jYXRpb25zJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbZG9jdW1lbnRBcm4sIGN3TWFuYWdlQWdlbnRBcm4sIHRhcmdldEVjMkluc3RhbmNlQXJuXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBQcm92aWRlcihzY29wZSwgJ0luc3RhbGxlclByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IG9uRXZlbnQsXG4gICAgfSk7XG4gICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgW3Byb3ZpZGVyXSxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUlBTTQnLFxuICAgICAgICAgIHJlYXNvbjpcbiAgICAgICAgICAgICdGb3IgdGhpcyBwcm92aWRlciB3ZSBkbyBub3QgbmVlZCB0byByZXN0cmljdCBtYW5hZ2VkIHBvbGljaWVzJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUlBTTUnLFxuICAgICAgICAgIHJlYXNvbjogJ0ZvciB0aGlzIHByb3ZpZGVyIHdpbGRjYXJkcyBhcmUgZmluZScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1MMScsXG4gICAgICAgICAgcmVhc29uOiAnRm9yIHRoaXMgcHJvdmlkZXIgdGhlIGxhdGVzdCBydW50aW1lIGlzIG5vdCBuZWVkZWQnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIG5ldyBDdXN0b21SZXNvdXJjZShzY29wZSwgJ1NTTUluc3RhbGxlckN1c3RvbVJlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFNlcnZpY2VUaW1lb3V0OiAzMDUsIC8vIFRPRE8gY29uZmlndXJhYmxlXG4gICAgICAgIEluc3RhbmNlSWQ6IG9wdGlvbnMuaW5zdGFuY2VJZCxcbiAgICAgICAgRG9jdW1lbnROYW1lOiBvcHRpb25zLmRvY3VtZW50TmFtZSxcbiAgICAgICAgQ2xvdWRXYXRjaExvZ0dyb3VwTmFtZTogb3B0aW9ucy5jbG91ZFdhdGNoTG9nR3JvdXBOYW1lLFxuICAgICAgICBWU0NvZGVQYXNzd29yZDogb3B0aW9ucy52c0NvZGVQYXNzd29yZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgX2JpbmQoKSB7fVxufVxuIl19
|
|
@@ -85,10 +85,27 @@ const handler = async (event, context) => {
|
|
|
85
85
|
return { Data: responseData };
|
|
86
86
|
}
|
|
87
87
|
catch (error) {
|
|
88
|
-
console.log(error);
|
|
89
|
-
|
|
88
|
+
console.log('Error occurred:', error);
|
|
89
|
+
// Check if this is a retryable error (IAM propagation, throttling, etc.)
|
|
90
|
+
const isUnauthorized = error.name === 'UnauthorizedException' ||
|
|
91
|
+
error.name === 'AccessDeniedException' ||
|
|
92
|
+
(error.message && error.message.includes('not authorized'));
|
|
93
|
+
const isThrottled = error.name === 'ThrottlingException' ||
|
|
94
|
+
error.name === 'TooManyRequestsException';
|
|
95
|
+
const isRetryable = isUnauthorized || isThrottled;
|
|
96
|
+
timeRemaining = context.getRemainingTimeInMillis();
|
|
97
|
+
if (isRetryable && timeRemaining > SLEEP_MS) {
|
|
98
|
+
console.log(`Retryable error encountered (${error.name}). Attempt ${attemptNo}. Sleeping: ${SLEEP_MS / 1000}s before retry`);
|
|
99
|
+
await new Promise((resolve) => setTimeout(resolve, SLEEP_MS));
|
|
100
|
+
// Continue to next iteration of while loop
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// Non-retryable error or out of time
|
|
104
|
+
console.log('Non-retryable error or timeout. Failing...');
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
90
107
|
}
|
|
91
108
|
}
|
|
92
109
|
};
|
|
93
110
|
exports.handler = handler;
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnN0YWxsZXIvaW5zdGFsbGVyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBbUQ7QUFTbkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxnQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRWYsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUMxQixLQUFxQixFQUNyQixPQUFnQixFQUNVLEVBQUU7SUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUUzRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsYUFBYTtRQUNiLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELG1CQUFtQjtJQUNuQixNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDO0lBQ3ZELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7SUFDM0QsTUFBTSxzQkFBc0IsR0FDMUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDO0lBRWxELFFBQVE7SUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFM0UsNEJB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QUFNLElBQUksS0FBSyxDQUNiLGdCQUFnQixZQUFZLG9CQUFvQixVQUFVLHFDQUFxQyxDQUNoRyxDQUFDO29CQUNKLENBQUM7Z0JBQ0gsS0FBSyxTQUFTO29CQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxVQUFVLDRCQUE0QixDQUFDLENBQUM7b0JBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssVUFBVTtvQkFDYixNQUFNLElBQUksS0FBSyxDQUNiLGdCQUFnQixZQUFZLG9CQUFvQixVQUFVLFlBQVksQ0FDdkUsQ0FBQztnQkFDSixLQUFLLFdBQVc7b0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FDYixnQkFBZ0IsWUFBWSxvQkFBb0IsVUFBVSxZQUFZLENBQ3ZFLENBQUM7Z0JBQ0osS0FBSyxRQUFRO29CQUNYLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0JBQWdCLFlBQVksb0JBQW9CLFVBQVUsU0FBUyxDQUNwRSxDQUFDO2dCQUNKO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0JBQWdCLFlBQVksb0JBQW9CLFVBQVUsV0FBVyxPQUFPLENBQUMsTUFBTyxFQUFFLENBQ3ZGLENBQUM7WUFDTixDQUFDO1lBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQztBQXhIVyxRQUFBLE9BQU8sV0F3SGxCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCwgU1NNIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNzbSc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgdHlwZSB7XG4gIE9uRXZlbnRSZXF1ZXN0LFxuICBPbkV2ZW50UmVzcG9uc2UsXG59IGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMvbGliL3Byb3ZpZGVyLWZyYW1ld29yay90eXBlcyc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlUmVzb3VyY2VQcm9wZXJ0aWVzQ29tbW9uIH0gZnJvbSAnYXdzLWxhbWJkYS90cmlnZ2VyL2Nsb3VkZm9ybWF0aW9uLWN1c3RvbS1yZXNvdXJjZSc7XG5cbmNvbnN0IHNzbSA9IG5ldyBTU00oKTtcbmNvbnN0IFNMRUVQX01TID0gMjkwMDtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoXG4gIGV2ZW50OiBPbkV2ZW50UmVxdWVzdCxcbiAgY29udGV4dDogQ29udGV4dCxcbik6IFByb21pc2U8T25FdmVudFJlc3BvbnNlPiA9PiB7XG4gIGNvbnNvbGUubG9nKCdFdmVudDogJWonLCB7IC4uLmV2ZW50LCBSZXNwb25zZVVSTDogJy4uLicgfSk7XG5cbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlICE9PSAnQ3JlYXRlJykge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvLyBvbmx5IENyZWF0ZSBjYXNlXG4gIGNvbnN0IHJlc291cmNlUHJvcGVydGllcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcztcbiAgY29uc3QgaW5zdGFuY2VJZCA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5JbnN0YW5jZUlkO1xuICBjb25zdCBkb2N1bWVudE5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG9jdW1lbnROYW1lO1xuICBjb25zdCBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lID1cbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuQ2xvdWRXYXRjaExvZ0dyb3VwTmFtZTtcblxuICAvLyBkZWJ1Z1xuICBjb25zb2xlLmxvZygnUmVzb3VyY2VQcm9wZXJ0aWVzIHJhdzogJWonLCByZXNvdXJjZVByb3BlcnRpZXMpO1xuICBjb25zb2xlLmxvZygnSW5zdGFuY2VJZDogJXMnLCBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuSW5zdGFuY2VJZCk7XG4gIGNvbnNvbGUubG9nKCdWU0NvZGVQYXNzd29yZDogJXMnLCBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuVlNDb2RlUGFzc3dvcmQpO1xuXG4gIC8vIHRvIGJlIGFibGUgdG8gbW9kaWZ5IHRoZW1cbiAgY29uc3QgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbCA9XG4gICAgcmVzb3VyY2VQcm9wZXJ0aWVzIGFzIFBhcnRpYWw8Q2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZVJlc291cmNlUHJvcGVydGllc0NvbW1vbj47XG4gIGNvbnNvbGUubG9nKCdSZXNvdXJjZVByb3BlcnRpZXMgYmVmb3JlOiAlaicsIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwpO1xuICBkZWxldGUgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5TZXJ2aWNlVG9rZW47XG4gIGlmIChyZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLlNlcnZpY2VUaW1lb3V0KSB7XG4gICAgZGVsZXRlIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuU2VydmljZVRpbWVvdXQ7XG4gIH1cbiAgZGVsZXRlIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuSW5zdGFuY2VJZDtcbiAgZGVsZXRlIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuRG9jdW1lbnROYW1lO1xuICBkZWxldGUgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5DbG91ZFdhdGNoTG9nR3JvdXBOYW1lO1xuICBpZiAocmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5QaHlzaWNhbFJlc291cmNlSWQpIHtcbiAgICBkZWxldGUgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5QaHlzaWNhbFJlc291cmNlSWQ7XG4gIH1cblxuICBjb25zb2xlLmxvZyhcbiAgICAnUmVzb3VyY2VQcm9wZXJ0aWVzIGZpbHRlcmVkIGFmdGVyOiAlaicsXG4gICAgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbCxcbiAgKTtcblxuICBjb25zdCBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbCkpIHtcbiAgICBwYXJhbWV0ZXJzW2tleV0gPSBbdmFsdWVdO1xuICB9XG4gIGNvbnNvbGUubG9nKCdtYXBwZWQgcGFyYW1ldGVyczogJWonLCBwYXJhbWV0ZXJzKTtcblxuICBsZXQgYXR0ZW1wdE5vOiBudW1iZXIgPSAwO1xuICBsZXQgdGltZVJlbWFpbmluZzogbnVtYmVyID0gY29udGV4dC5nZXRSZW1haW5pbmdUaW1lSW5NaWxsaXMoKTtcblxuICBjb25zb2xlLmxvZyhcbiAgICBgUnVubmluZyBTU00gRG9jdW1lbnQgJyR7ZG9jdW1lbnROYW1lfScgb24gRUMyIGluc3RhbmNlICcke2luc3RhbmNlSWR9Jy4gTG9nZ2luZyB0byAnJHtjbG91ZFdhdGNoTG9nR3JvdXBOYW1lfScgd2l0aCBwYXJhbWV0ZXJzOiAnJHtKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKX0nYCxcbiAgKTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGF0dGVtcHRObyArPSAxO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYEF0dGVtcHQ6ICR7YXR0ZW1wdE5vfS4gVGltZSBSZW1haW5pbmc6ICR7dGltZVJlbWFpbmluZyAvIDEwMDB9c2AsXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNzbS5zZW5kQ29tbWFuZCh7XG4gICAgICAgIERvY3VtZW50TmFtZTogZG9jdW1lbnROYW1lLFxuICAgICAgICBJbnN0YW5jZUlkczogW2luc3RhbmNlSWRdLFxuICAgICAgICBDbG91ZFdhdGNoT3V0cHV0Q29uZmlnOiB7XG4gICAgICAgICAgQ2xvdWRXYXRjaExvZ0dyb3VwTmFtZTogY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSxcbiAgICAgICAgICBDbG91ZFdhdGNoT3V0cHV0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgUGFyYW1ldGVyczogcGFyYW1ldGVycyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zb2xlLmxvZyhgcmVzcG9uc2U6ICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpfWApO1xuICAgICAgY29uc3QgY29tbWFuZDogQ29tbWFuZCA9IHJlc3BvbnNlLkNvbW1hbmQhO1xuICAgICAgY29uc3QgY29tbWFuZElkOiBzdHJpbmcgPSBjb21tYW5kLkNvbW1hbmRJZCE7XG4gICAgICBjb25zdCByZXNwb25zZURhdGE6IGFueSA9IHsgQ29tbWFuZElkOiBjb21tYW5kSWQgfTtcblxuICAgICAgc3dpdGNoIChjb21tYW5kLlN0YXR1cyEpIHtcbiAgICAgICAgY2FzZSAnUGVuZGluZyc6XG4gICAgICAgIGNhc2UgJ0luUHJvZ3Jlc3MnOlxuICAgICAgICAgIHRpbWVSZW1haW5pbmcgPSBjb250ZXh0LmdldFJlbWFpbmluZ1RpbWVJbk1pbGxpcygpO1xuICAgICAgICAgIGlmICh0aW1lUmVtYWluaW5nID4gU0xFRVBfTVMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBgSW5zdGFuY2UgJHtpbnN0YW5jZUlkfSBub3QgcmVhZHk6ICdJblByb2dyZXNzJy4gU2xlZXBpbmc6ICR7U0xFRVBfTVMgLyAxMDAwfXNgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIFNMRUVQX01TKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgU1NNIERvY3VtZW50ICR7ZG9jdW1lbnROYW1lfSBvbiBFQzIgaW5zdGFuY2UgJHtpbnN0YW5jZUlkfSB0aW1lZCBvdXQgd2hpbGUgbGFtYmRhIGluIHByb2dyZXNzYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdTdWNjZXNzJzpcbiAgICAgICAgICBjb25zb2xlLmxvZyhgSW5zdGFuY2UgJHtpbnN0YW5jZUlkfSBzdWNjZXNzZnVsbHkgYm9vdHN0cmFwcGVkYCk7XG4gICAgICAgICAgcmV0dXJuIHsgRGF0YTogcmVzcG9uc2VEYXRhIH07XG4gICAgICAgIGNhc2UgJ1RpbWVkT3V0JzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgU1NNIERvY3VtZW50ICR7ZG9jdW1lbnROYW1lfSBvbiBFQzIgaW5zdGFuY2UgJHtpbnN0YW5jZUlkfSB0aW1lZCBvdXRgLFxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgJ0NhbmNlbGxlZCc6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFNTTSBEb2N1bWVudCAke2RvY3VtZW50TmFtZX0gb24gRUMyIGluc3RhbmNlICR7aW5zdGFuY2VJZH0gY2FuY2VsbGVkYCxcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlICdGYWlsZWQnOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBTU00gRG9jdW1lbnQgJHtkb2N1bWVudE5hbWV9IG9uIEVDMiBpbnN0YW5jZSAke2luc3RhbmNlSWR9IGZhaWxlZGAsXG4gICAgICAgICAgKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgU1NNIERvY3VtZW50ICR7ZG9jdW1lbnROYW1lfSBvbiBFQzIgaW5zdGFuY2UgJHtpbnN0YW5jZUlkfSBzdGF0dXMgJHtjb21tYW5kLlN0YXR1cyF9YCxcbiAgICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBEYXRhOiByZXNwb25zZURhdGEgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59O1xuIl19
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnN0YWxsZXIvaW5zdGFsbGVyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBbUQ7QUFTbkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxnQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRWYsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUMxQixLQUFxQixFQUNyQixPQUFnQixFQUNVLEVBQUU7SUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUUzRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsYUFBYTtRQUNiLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELG1CQUFtQjtJQUNuQixNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDO0lBQ3ZELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7SUFDM0QsTUFBTSxzQkFBc0IsR0FDMUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDO0lBRWxELFFBQVE7SUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFM0UsNEJB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Q0FBQyxJQUFJLEtBQUssMEJBQTBCLENBQUM7WUFDN0QsTUFBTSxXQUFXLEdBQUcsY0FBYyxJQUFJLFdBQVcsQ0FBQztZQUVsRCxhQUFhLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFFbkQsSUFBSSxXQUFXLElBQUksYUFBYSxHQUFHLFFBQVEsRUFBRSxDQUFDO2dCQUM1QyxPQUFPLENBQUMsR0FBRyxDQUNULGdDQUFnQyxLQUFLLENBQUMsSUFBSSxjQUFjLFNBQVMsZUFBZSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDaEgsQ0FBQztnQkFDRixNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQzlELDJDQUEyQztZQUM3QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04scUNBQXFDO2dCQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7Z0JBQzFELE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBN0lXLFFBQUEsT0FBTyxXQTZJbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kLCBTU00gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3NtJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB0eXBlIHtcbiAgT25FdmVudFJlcXVlc3QsXG4gIE9uRXZlbnRSZXNwb25zZSxcbn0gZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcy9saWIvcHJvdmlkZXItZnJhbWV3b3JrL3R5cGVzJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICdhd3MtbGFtYmRhJztcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VSZXNvdXJjZVByb3BlcnRpZXNDb21tb24gfSBmcm9tICdhd3MtbGFtYmRhL3RyaWdnZXIvY2xvdWRmb3JtYXRpb24tY3VzdG9tLXJlc291cmNlJztcblxuY29uc3Qgc3NtID0gbmV3IFNTTSgpO1xuY29uc3QgU0xFRVBfTVMgPSAyOTAwO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IGFzeW5jIChcbiAgZXZlbnQ6IE9uRXZlbnRSZXF1ZXN0LFxuICBjb250ZXh0OiBDb250ZXh0LFxuKTogUHJvbWlzZTxPbkV2ZW50UmVzcG9uc2U+ID0+IHtcbiAgY29uc29sZS5sb2coJ0V2ZW50OiAlaicsIHsgLi4uZXZlbnQsIFJlc3BvbnNlVVJMOiAnLi4uJyB9KTtcblxuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgIT09ICdDcmVhdGUnKSB7XG4gICAgLy8gZG8gbm90aGluZ1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8vIG9ubHkgQ3JlYXRlIGNhc2VcbiAgY29uc3QgcmVzb3VyY2VQcm9wZXJ0aWVzID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzO1xuICBjb25zdCBpbnN0YW5jZUlkID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkluc3RhbmNlSWQ7XG4gIGNvbnN0IGRvY3VtZW50TmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5Eb2N1bWVudE5hbWU7XG4gIGNvbnN0IGNsb3VkV2F0Y2hMb2dHcm91cE5hbWUgPVxuICAgIGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5DbG91ZFdhdGNoTG9nR3JvdXBOYW1lO1xuXG4gIC8vIGRlYnVnXG4gIGNvbnNvbGUubG9nKCdSZXNvdXJjZVByb3BlcnRpZXMgcmF3OiAlaicsIHJlc291cmNlUHJvcGVydGllcyk7XG4gIGNvbnNvbGUubG9nKCdJbnN0YW5jZUlkOiAlcycsIGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5JbnN0YW5jZUlkKTtcbiAgY29uc29sZS5sb2coJ1ZTQ29kZVBhc3N3b3JkOiAlcycsIGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5WU0NvZGVQYXNzd29yZCk7XG5cbiAgLy8gdG8gYmUgYWJsZSB0byBtb2RpZnkgdGhlbVxuICBjb25zdCByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsID1cbiAgICByZXNvdXJjZVByb3BlcnRpZXMgYXMgUGFydGlhbDxDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlUmVzb3VyY2VQcm9wZXJ0aWVzQ29tbW9uPjtcbiAgY29uc29sZS5sb2coJ1Jlc291cmNlUHJvcGVydGllcyBiZWZvcmU6ICVqJywgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbCk7XG4gIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLlNlcnZpY2VUb2tlbjtcbiAgaWYgKHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuU2VydmljZVRpbWVvdXQpIHtcbiAgICBkZWxldGUgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5TZXJ2aWNlVGltZW91dDtcbiAgfVxuICBkZWxldGUgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5JbnN0YW5jZUlkO1xuICBkZWxldGUgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5Eb2N1bWVudE5hbWU7XG4gIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLkNsb3VkV2F0Y2hMb2dHcm91cE5hbWU7XG4gIGlmIChyZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLlBoeXNpY2FsUmVzb3VyY2VJZCkge1xuICAgIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLlBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKFxuICAgICdSZXNvdXJjZVByb3BlcnRpZXMgZmlsdGVyZWQgYWZ0ZXI6ICVqJyxcbiAgICByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLFxuICApO1xuXG4gIGNvbnN0IHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsKSkge1xuICAgIHBhcmFtZXRlcnNba2V5XSA9IFt2YWx1ZV07XG4gIH1cbiAgY29uc29sZS5sb2coJ21hcHBlZCBwYXJhbWV0ZXJzOiAlaicsIHBhcmFtZXRlcnMpO1xuXG4gIGxldCBhdHRlbXB0Tm86IG51bWJlciA9IDA7XG4gIGxldCB0aW1lUmVtYWluaW5nOiBudW1iZXIgPSBjb250ZXh0LmdldFJlbWFpbmluZ1RpbWVJbk1pbGxpcygpO1xuXG4gIGNvbnNvbGUubG9nKFxuICAgIGBSdW5uaW5nIFNTTSBEb2N1bWVudCAnJHtkb2N1bWVudE5hbWV9JyBvbiBFQzIgaW5zdGFuY2UgJyR7aW5zdGFuY2VJZH0nLiBMb2dnaW5nIHRvICcke2Nsb3VkV2F0Y2hMb2dHcm91cE5hbWV9JyB3aXRoIHBhcmFtZXRlcnM6ICcke0pTT04uc3RyaW5naWZ5KHBhcmFtZXRlcnMpfSdgLFxuICApO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgYXR0ZW1wdE5vICs9IDE7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgQXR0ZW1wdDogJHthdHRlbXB0Tm99LiBUaW1lIFJlbWFpbmluZzogJHt0aW1lUmVtYWluaW5nIC8gMTAwMH1zYCxcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc3NtLnNlbmRDb21tYW5kKHtcbiAgICAgICAgRG9jdW1lbnROYW1lOiBkb2N1bWVudE5hbWUsXG4gICAgICAgIEluc3RhbmNlSWRzOiBbaW5zdGFuY2VJZF0sXG4gICAgICAgIENsb3VkV2F0Y2hPdXRwdXRDb25maWc6IHtcbiAgICAgICAgICBDbG91ZFdhdGNoTG9nR3JvdXBOYW1lOiBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lLFxuICAgICAgICAgIENsb3VkV2F0Y2hPdXRwdXRFbmFibGVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBQYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKGByZXNwb25zZTogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZSl9YCk7XG4gICAgICBjb25zdCBjb21tYW5kOiBDb21tYW5kID0gcmVzcG9uc2UuQ29tbWFuZCE7XG4gICAgICBjb25zdCBjb21tYW5kSWQ6IHN0cmluZyA9IGNvbW1hbmQuQ29tbWFuZElkITtcbiAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YTogYW55ID0geyBDb21tYW5kSWQ6IGNvbW1hbmRJZCB9O1xuXG4gICAgICBzd2l0Y2ggKGNvbW1hbmQuU3RhdHVzISkge1xuICAgICAgICBjYXNlICdQZW5kaW5nJzpcbiAgICAgICAgY2FzZSAnSW5Qcm9ncmVzcyc6XG4gICAgICAgICAgdGltZVJlbWFpbmluZyA9IGNvbnRleHQuZ2V0UmVtYWluaW5nVGltZUluTWlsbGlzKCk7XG4gICAgICAgICAgaWYgKHRpbWVSZW1haW5pbmcgPiBTTEVFUF9NUykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIGBJbnN0YW5jZSAke2luc3RhbmNlSWR9IG5vdCByZWFkeTogJ0luUHJvZ3Jlc3MnLiBTbGVlcGluZzogJHtTTEVFUF9NUyAvIDEwMDB9c2AsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgU0xFRVBfTVMpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBTU00gRG9jdW1lbnQgJHtkb2N1bWVudE5hbWV9IG9uIEVDMiBpbnN0YW5jZSAke2luc3RhbmNlSWR9IHRpbWVkIG91dCB3aGlsZSBsYW1iZGEgaW4gcHJvZ3Jlc3NgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ1N1Y2Nlc3MnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKGBJbnN0YW5jZSAke2luc3RhbmNlSWR9IHN1Y2Nlc3NmdWxseSBib290c3RyYXBwZWRgKTtcbiAgICAgICAgICByZXR1cm4geyBEYXRhOiByZXNwb25zZURhdGEgfTtcbiAgICAgICAgY2FzZSAnVGltZWRPdXQnOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBTU00gRG9jdW1lbnQgJHtkb2N1bWVudE5hbWV9IG9uIEVDMiBpbnN0YW5jZSAke2luc3RhbmNlSWR9IHRpbWVkIG91dGAsXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAnQ2FuY2VsbGVkJzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgU1NNIERvY3VtZW50ICR7ZG9jdW1lbnROYW1lfSBvbiBFQzIgaW5zdGFuY2UgJHtpbnN0YW5jZUlkfSBjYW5jZWxsZWRgLFxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgJ0ZhaWxlZCc6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFNTTSBEb2N1bWVudCAke2RvY3VtZW50TmFtZX0gb24gRUMyIGluc3RhbmNlICR7aW5zdGFuY2VJZH0gZmFpbGVkYCxcbiAgICAgICAgICApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBTU00gRG9jdW1lbnQgJHtkb2N1bWVudE5hbWV9IG9uIEVDMiBpbnN0YW5jZSAke2luc3RhbmNlSWR9IHN0YXR1cyAke2NvbW1hbmQuU3RhdHVzIX1gLFxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IERhdGE6IHJlc3BvbnNlRGF0YSB9O1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBvY2N1cnJlZDonLCBlcnJvcik7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSByZXRyeWFibGUgZXJyb3IgKElBTSBwcm9wYWdhdGlvbiwgdGhyb3R0bGluZywgZXRjLilcbiAgICAgIGNvbnN0IGlzVW5hdXRob3JpemVkID0gZXJyb3IubmFtZSA9PT0gJ1VuYXV0aG9yaXplZEV4Y2VwdGlvbicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvci5uYW1lID09PSAnQWNjZXNzRGVuaWVkRXhjZXB0aW9uJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvci5tZXNzYWdlICYmIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ25vdCBhdXRob3JpemVkJykpO1xuICAgICAgY29uc3QgaXNUaHJvdHRsZWQgPSBlcnJvci5uYW1lID09PSAnVGhyb3R0bGluZ0V4Y2VwdGlvbicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvci5uYW1lID09PSAnVG9vTWFueVJlcXVlc3RzRXhjZXB0aW9uJztcbiAgICAgIGNvbnN0IGlzUmV0cnlhYmxlID0gaXNVbmF1dGhvcml6ZWQgfHwgaXNUaHJvdHRsZWQ7XG5cbiAgICAgIHRpbWVSZW1haW5pbmcgPSBjb250ZXh0LmdldFJlbWFpbmluZ1RpbWVJbk1pbGxpcygpO1xuXG4gICAgICBpZiAoaXNSZXRyeWFibGUgJiYgdGltZVJlbWFpbmluZyA+IFNMRUVQX01TKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBSZXRyeWFibGUgZXJyb3IgZW5jb3VudGVyZWQgKCR7ZXJyb3IubmFtZX0pLiBBdHRlbXB0ICR7YXR0ZW1wdE5vfS4gU2xlZXBpbmc6ICR7U0xFRVBfTVMgLyAxMDAwfXMgYmVmb3JlIHJldHJ5YCxcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgU0xFRVBfTVMpKTtcbiAgICAgICAgLy8gQ29udGludWUgdG8gbmV4dCBpdGVyYXRpb24gb2Ygd2hpbGUgbG9vcFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm9uLXJldHJ5YWJsZSBlcnJvciBvciBvdXQgb2YgdGltZVxuICAgICAgICBjb25zb2xlLmxvZygnTm9uLXJldHJ5YWJsZSBlcnJvciBvciB0aW1lb3V0LiBGYWlsaW5nLi4uJyk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbiJdfQ==
|
package/lib/vscode-server.d.ts
CHANGED
|
@@ -85,6 +85,39 @@ export interface VSCodeServerProps {
|
|
|
85
85
|
readonly additionalTags?: {
|
|
86
86
|
[key: string]: string;
|
|
87
87
|
};
|
|
88
|
+
/**
|
|
89
|
+
* Custom domain name for the VS Code server
|
|
90
|
+
* When provided, creates a CloudFront distribution with this domain name
|
|
91
|
+
* and sets up Route53 A record pointing to the distribution
|
|
92
|
+
*
|
|
93
|
+
* @default - uses CloudFront default domain
|
|
94
|
+
*/
|
|
95
|
+
readonly domainName?: string;
|
|
96
|
+
/**
|
|
97
|
+
* Route53 hosted zone ID for the domain
|
|
98
|
+
* Required when using autoCreateCertificate
|
|
99
|
+
* If not provided, will attempt to lookup hosted zone from domain name
|
|
100
|
+
*
|
|
101
|
+
* @default - auto-discover from domain name
|
|
102
|
+
*/
|
|
103
|
+
readonly hostedZoneId?: string;
|
|
104
|
+
/**
|
|
105
|
+
* ARN of existing ACM certificate for the domain
|
|
106
|
+
* Certificate must be in us-east-1 region for CloudFront
|
|
107
|
+
* Cannot be used together with autoCreateCertificate
|
|
108
|
+
*
|
|
109
|
+
* @default - auto-create certificate if autoCreateCertificate is true
|
|
110
|
+
*/
|
|
111
|
+
readonly certificateArn?: string;
|
|
112
|
+
/**
|
|
113
|
+
* Auto-create ACM certificate with DNS validation in us-east-1 region
|
|
114
|
+
* Requires hostedZoneId to be provided for DNS validation
|
|
115
|
+
* Cannot be used together with certificateArn
|
|
116
|
+
* Certificate will automatically be created in us-east-1 as required by CloudFront
|
|
117
|
+
*
|
|
118
|
+
* @default false
|
|
119
|
+
*/
|
|
120
|
+
readonly autoCreateCertificate?: boolean;
|
|
88
121
|
}
|
|
89
122
|
/**
|
|
90
123
|
* The flavor of linux you want to run vscode server on
|