@cdktn/cli-core 0.23.0-pre.30 → 0.23.0-pre.36

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdktn/cli-core",
3
- "version": "0.23.0-pre.30",
3
+ "version": "0.23.0-pre.36",
4
4
  "description": "CDK Terrain CLI Core, meant for internal use only",
5
5
  "scripts": {
6
6
  "build": "tsc",
@@ -40,18 +40,18 @@
40
40
  ],
41
41
  "license": "MPL-2.0",
42
42
  "dependencies": {
43
- "@cdktn/commons": "0.23.0-pre.30",
44
- "@cdktn/hcl-tools": "0.23.0-pre.30",
45
- "@cdktn/hcl2cdk": "0.23.0-pre.30",
46
- "@cdktn/hcl2json": "0.23.0-pre.30",
47
- "@cdktn/provider-schema": "0.23.0-pre.30",
43
+ "@cdktn/commons": "0.23.0-pre.36",
44
+ "@cdktn/hcl-tools": "0.23.0-pre.36",
45
+ "@cdktn/hcl2cdk": "0.23.0-pre.36",
46
+ "@cdktn/hcl2json": "0.23.0-pre.36",
47
+ "@cdktn/provider-schema": "0.23.0-pre.36",
48
48
  "@sentry/node": "7.120.4",
49
- "cdktn": "0.23.0-pre.30",
49
+ "cdktn": "0.23.0-pre.36",
50
50
  "chalk": "4.1.2",
51
51
  "chokidar": "3.6.0",
52
52
  "cli-spinners": "2.9.2",
53
- "codemaker": "1.112.0",
54
- "constructs": "10.4.2",
53
+ "codemaker": "1.128.0",
54
+ "constructs": "10.6.0",
55
55
  "cross-fetch": "3.2.0",
56
56
  "cross-spawn": "7.0.6",
57
57
  "detect-port": "1.6.1",
@@ -66,9 +66,9 @@
66
66
  "ink-spinner": "4.0.3",
67
67
  "ink-testing-library": "2.1.0",
68
68
  "ink-use-stdout-dimensions": "1.0.5",
69
- "jsii": "^5.8.9",
70
- "jsii-pacmak": "^1.112.0",
71
- "jsii-rosetta": "^5.8.8",
69
+ "jsii": "^5.9.37",
70
+ "jsii-pacmak": "^1.128.0",
71
+ "jsii-rosetta": "^5.9.39",
72
72
  "lodash.isequal": "4.5.0",
73
73
  "log4js": "6.9.1",
74
74
  "minimatch": "5.1.9",
@@ -92,7 +92,7 @@
92
92
  "src/**/*.{ts,tsx}": "tsc-files ambient.d.ts --noEmit"
93
93
  },
94
94
  "devDependencies": {
95
- "@cdktn/provider-generator": "0.23.0-pre.30",
95
+ "@cdktn/provider-generator": "0.23.0-pre.36",
96
96
  "@eslint/compat": "^1.4.1",
97
97
  "@eslint/eslintrc": "^3.3.5",
98
98
  "@eslint/js": "^9.39.4",
@@ -19,7 +19,7 @@ class CdktfProject {
19
19
  // Set during deploy / destroy
20
20
  this.stacksToRun = [];
21
21
  // This means sth different in deploy / destroy
22
- this.stopAllStacksThatCanNotRunWithout = () => { }; // eslint-disable-line @typescript-eslint/no-empty-function
22
+ this.stopAllStacksThatCanNotRunWithout = () => { };
23
23
  this.synthCommand = synthCommand;
24
24
  this.outDir = outDir;
25
25
  this.workingDirectory = workingDirectory;
@@ -368,4 +368,4 @@ class CdktfProject {
368
368
  }
369
369
  }
370
370
  exports.CdktfProject = CdktfProject;
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrdGYtcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNka3RmLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyw0Q0FNd0I7QUFDeEIsK0NBQTBFO0FBQzFFLG1DQUEyQztBQUMzQywrQ0FRdUI7QUFFdkIscURBQTJEO0FBQzNELDJEQVFpQztBQUNqQyx5RUFBbUU7QUErRm5FLFNBQWdCLDJCQUEyQixDQUN6QyxNQUFtQztJQUVuQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsK0JBQStCLENBQUMsQ0FBQyxRQUFRLENBQ3ZFLE1BQU0sQ0FBQyxJQUFJLENBQ1osQ0FBQztBQUNKLENBQUM7QUFORCxrRUFNQztBQWNELE1BQWEsWUFBWTtJQXFCdkIsWUFBWSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQ2hDLFdBQVcsRUFDWCxHQUFHLEdBQUcsS0FBSyxHQUNTO1FBaEJ0Qiw4QkFBOEI7UUFDdkIsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQ3RDLCtDQUErQztRQUN2QyxzQ0FBaUMsR0FDdkMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsMkRBQTJEO1FBYXJFLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMs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RSxLQUFLLENBQUMsNkJBQTZCLENBQ3pDLE9BQWlCLEVBQ2pCLGdCQUEwQixFQUMxQixZQUFzQjtRQUV0QixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDMUUsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTFpQkQsb0NBMGlCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQge1xuICBFcnJvcnMsXG4gIGVuc3VyZUFsbFNldHRsZWRCZWZvcmVUaHJvd2luZyxcbiAgbG9nZ2VyLFxuICByZWFkQ29uZmlnU3luYyxcbiAgc2VuZFRlbGVtZXRyeSxcbn0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgeyBTeW50aGVzaXplZFN0YWNrLCBTeW50aE9yaWdpbiwgU3ludGhTdGFjayB9IGZyb20gXCIuL3N5bnRoLXN0YWNrXCI7XG5pbXBvcnQgeyBwcmludEFubm90YXRpb25zIH0gZnJvbSBcIi4vc3ludGhcIjtcbmltcG9ydCB7XG4gIENka3RmU3RhY2ssXG4gIEV4dGVybmFsU3RhY2tBcHByb3ZhbFVwZGF0ZSxcbiAgRXh0ZXJuYWxTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGUsXG4gIFN0YWNrQXBwcm92YWxVcGRhdGUsXG4gIFN0YWNrU2VudGluZWxPdmVycmlkZVVwZGF0ZSxcbiAgU3RhY2tVcGRhdGUsXG4gIFN0YWNrVXNlcklucHV0VXBkYXRlLFxufSBmcm9tIFwiLi9jZGt0Zi1zdGFja1wiO1xuaW1wb3J0IHsgTmVzdGVkVGVycmFmb3JtT3V0cHV0cyB9IGZyb20gXCIuL291dHB1dFwiO1xuaW1wb3J0IHsgY3JlYXRlRW5oYW5jZUxvZ01lc3NhZ2UgfSBmcm9tIFwiLi9leGVjdXRpb24tbG9nc1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZkFsbERlcGVuZGFudHNBcmVJbmNsdWRlZCxcbiAgY2hlY2tJZkFsbERlcGVuZGVuY2llc0FyZUluY2x1ZGVkLFxuICBmaW5kQWxsTmVzdGVkRGVwZW5kYW50U3RhY2tzLFxuICBnZXRNdWx0aXBsZVN0YWNrcyxcbiAgZ2V0U2luZ2xlU3RhY2ssXG4gIGdldFN0YWNrV2l0aE5vVW5tZXREZXBlbmRhbnRzLFxuICBnZXRTdGFja1dpdGhOb1VubWV0RGVwZW5kZW5jaWVzLFxufSBmcm9tIFwiLi9oZWxwZXJzL3N0YWNrLWhlbHBlcnNcIjtcbmltcG9ydCB7IENka3RmUHJvamVjdElPSGFuZGxlciB9IGZyb20gXCIuL2Nka3RmLXByb2plY3QtaW8taGFuZGxlclwiO1xuXG50eXBlIE11bHRpU3RhY2tBcHByb3ZhbFVwZGF0ZSA9IHtcbiAgdHlwZTogXCJ3YWl0aW5nIGZvciBhcHByb3ZhbFwiO1xuICBzdGFja05hbWU6IHN0cmluZztcbiAgYXBwcm92ZTogKCkgPT4gdm9pZDtcbiAgZGlzbWlzczogKCkgPT4gdm9pZDtcbiAgc3RvcDogKCkgPT4gdm9pZDtcbn07XG5cbnR5cGUgTXVsdGlTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGUgPSB7XG4gIHR5cGU6IFwid2FpdGluZyBmb3Igc2VudGluZWwgb3ZlcnJpZGVcIjtcbiAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIG92ZXJyaWRlOiAoKSA9PiB2b2lkO1xuICByZWplY3Q6ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBNdWx0aVN0YWNrVXBkYXRlID1cbiAgfCBNdWx0aVN0YWNrQXBwcm92YWxVcGRhdGVcbiAgfCBNdWx0aVN0YWNrU2VudGluZWxPdmVycmlkZVVwZGF0ZTtcblxuZXhwb3J0IHR5cGUgUHJvamVjdFVwZGF0ZSA9XG4gIHwge1xuICAgICAgdHlwZTogXCJzeW50aGVzaXppbmdcIjtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJzeW50aGVzaXplZFwiO1xuICAgICAgc3RhY2tzOiBTeW50aGVzaXplZFN0YWNrW107XG4gICAgICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgfVxuICB8IFN0YWNrVXBkYXRlXG4gIHwgTXVsdGlTdGFja1VwZGF0ZTtcblxuZXhwb3J0IHR5cGUgU2luZ2xlU3RhY2tPcHRpb25zID0ge1xuICBzdGFja05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBNdWx0aXBsZVN0YWNrT3B0aW9ucyA9IHtcbiAgc3RhY2tOYW1lcz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU2tpcFN5bnRoT3B0aW9ucyA9IHtcbiAgc2tpcFN5bnRoPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFNraXBQcm92aWRlckxvY2tPcHRpb25zID0ge1xuICBza2lwUHJvdmlkZXJMb2NrPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZldGNoT3V0cHV0T3B0aW9ucyA9IFNraXBTeW50aE9wdGlvbnMgJlxuICBTa2lwUHJvdmlkZXJMb2NrT3B0aW9ucyAmXG4gIE11bHRpcGxlU3RhY2tPcHRpb25zO1xuXG5leHBvcnQgdHlwZSBBdXRvQXBwcm92ZU9wdGlvbnMgPSB7XG4gIGF1dG9BcHByb3ZlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERpZmZPcHRpb25zID0gU2luZ2xlU3RhY2tPcHRpb25zICZcbiAgU2tpcFByb3ZpZGVyTG9ja09wdGlvbnMgJlxuICBTa2lwU3ludGhPcHRpb25zICYge1xuICAgIHJlZnJlc2hPbmx5PzogYm9vbGVhbjtcbiAgICB0ZXJyYWZvcm1QYXJhbGxlbGlzbT86IG51bWJlcjtcbiAgICB2YXJzPzogc3RyaW5nW107XG4gICAgdmFyRmlsZXM/OiBzdHJpbmdbXTtcbiAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgICBtaWdyYXRlU3RhdGU/OiBib29sZWFuO1xuICB9O1xuXG5leHBvcnQgdHlwZSBNdXRhdGlvbk9wdGlvbnMgPSBNdWx0aXBsZVN0YWNrT3B0aW9ucyAmXG4gIFNraXBQcm92aWRlckxvY2tPcHRpb25zICZcbiAgU2tpcFN5bnRoT3B0aW9ucyAmXG4gIEF1dG9BcHByb3ZlT3B0aW9ucyAmIHtcbiAgICByZWZyZXNoT25seT86IGJvb2xlYW47XG4gICAgaWdub3JlTWlzc2luZ1N0YWNrRGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcbiAgICBwYXJhbGxlbGlzbT86IG51bWJlcjtcbiAgICB0ZXJyYWZvcm1QYXJhbGxlbGlzbT86IG51bWJlcjtcbiAgICB2YXJzPzogc3RyaW5nW107XG4gICAgdmFyRmlsZXM/OiBzdHJpbmdbXTtcbiAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgICBtaWdyYXRlU3RhdGU/OiBib29sZWFuO1xuICB9O1xuXG5leHBvcnQgdHlwZSBMb2dNZXNzYWdlID0ge1xuICBzdGFja05hbWU6IHN0cmluZztcbiAgbWVzc2FnZVdpdGhDb25zdHJ1Y3RQYXRoPzogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59O1xuXG4vLyBTdG9yZXMgYSBsb2cgdmFsdWUgb2YgYSBjZXJ0YWluIHR5cGUgdW50aWwgaXQgY2FuIGJlIHNlbnRcbnR5cGUgQnVmZmVyZWQ8VCwgVj4gPSB7XG4gIGNiOiAoaXRlbTogVCkgPT4gdm9pZDtcbiAgdmFsdWU6IFQ7XG4gIHR5cGU6IFY7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNXYWl0aW5nRm9yVXNlcklucHV0VXBkYXRlKFxuICB1cGRhdGU6IFByb2plY3RVcGRhdGUgfCBTdGFja1VwZGF0ZSxcbikge1xuICByZXR1cm4gW1wid2FpdGluZyBmb3IgYXBwcm92YWxcIiwgXCJ3YWl0aW5nIGZvciBzZW50aW5lbCBvdmVycmlkZVwiXS5pbmNsdWRlcyhcbiAgICB1cGRhdGUudHlwZSxcbiAgKTtcbn1cblxuZXhwb3J0IHR5cGUgUHJvamVjdEV2ZW50ID1cbiAgfCBCdWZmZXJlZDxQcm9qZWN0VXBkYXRlLCBcInByb2plY3RVcGRhdGVcIj5cbiAgfCBCdWZmZXJlZDxMb2dNZXNzYWdlLCBcImxvZ01lc3NhZ2VcIj47XG5leHBvcnQgdHlwZSBDZGt0ZlByb2plY3RPcHRpb25zID0ge1xuICBzeW50aENvbW1hbmQ6IHN0cmluZztcbiAgb3V0RGlyOiBzdHJpbmc7XG4gIG9uVXBkYXRlOiAodXBkYXRlOiBQcm9qZWN0VXBkYXRlKSA9PiB2b2lkO1xuICBvbkxvZz86IChsb2c6IExvZ01lc3NhZ2UpID0+IHZvaWQ7XG4gIHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIHN5bnRoT3JpZ2luPzogU3ludGhPcmlnaW47XG4gIGhjbD86IGJvb2xlYW47XG59O1xuZXhwb3J0IGNsYXNzIENka3RmUHJvamVjdCB7XG4gIHB1YmxpYyBzdGFja3M/OiBTeW50aGVzaXplZFN0YWNrW107XG4gIHB1YmxpYyBoYXJkQWJvcnQ6ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBzeW50aENvbW1hbmQ6IHN0cmluZztcbiAgcHJpdmF0ZSBvdXREaXI6IHN0cmluZztcbiAgcHJpdmF0ZSB3b3JraW5nRGlyZWN0b3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgb25VcGRhdGU6ICh1cGRhdGU6IFByb2plY3RVcGRhdGUpID0+IHZvaWQ7XG4gIHByaXZhdGUgb25Mb2c/OiAobG9nOiBMb2dNZXNzYWdlKSA9PiB2b2lkO1xuICBwcml2YXRlIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgcHJpdmF0ZSBzeW50aE9yaWdpbj86IFN5bnRoT3JpZ2luO1xuICBwcml2YXRlIGhjbD86IGJvb2xlYW47XG5cbiAgLy8gU2V0IGR1cmluZyBkZXBsb3kgLyBkZXN0cm95XG4gIHB1YmxpYyBzdGFja3NUb1J1bjogQ2RrdGZTdGFja1tdID0gW107XG4gIC8vIFRoaXMgbWVhbnMgc3RoIGRpZmZlcmVudCBpbiBkZXBsb3kgLyBkZXN0cm95XG4gIHByaXZhdGUgc3RvcEFsbFN0YWNrc1RoYXRDYW5Ob3RSdW5XaXRob3V0OiAoc3RhY2tOYW1lOiBzdHJpbmcpID0+IHZvaWQgPVxuICAgICgpID0+IHt9OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuXG4gIHByaXZhdGUgaW9IYW5kbGVyOiBDZGt0ZlByb2plY3RJT0hhbmRsZXI7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIHN5bnRoQ29tbWFuZCxcbiAgICBvdXREaXIsXG4gICAgb25VcGRhdGUsXG4gICAgb25Mb2csXG4gICAgd29ya2luZ0RpcmVjdG9yeSA9IHByb2Nlc3MuY3dkKCksXG4gICAgc3ludGhPcmlnaW4sXG4gICAgaGNsID0gZmFsc2UsXG4gIH06IENka3RmUHJvamVjdE9wdGlvbnMpIHtcbiAgICB0aGlzLnN5bnRoQ29tbWFuZCA9IHN5bnRoQ29tbWFuZDtcbiAgICB0aGlzLm91dERpciA9IG91dERpcjtcbiAgICB0aGlzLndvcmtpbmdEaXJlY3RvcnkgPSB3b3JraW5nRGlyZWN0b3J5O1xuICAgIHRoaXMub25VcGRhdGUgPSBvblVwZGF0ZTtcbiAgICB0aGlzLm9uTG9nID0gb25Mb2c7XG4gICAgY29uc3QgYWMgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5hYm9ydFNpZ25hbCA9IGFjLnNpZ25hbDtcbiAgICB0aGlzLnN5bnRoT3JpZ2luID0gc3ludGhPcmlnaW47XG4gICAgdGhpcy5oY2wgPVxuICAgICAgcHJvY2Vzcy5lbnYuU1lOVEhfSENMX09VVFBVVCA9PT0gXCJ0cnVlXCIgfHxcbiAgICAgIHByb2Nlc3MuZW52LlNZTlRIX0hDTF9PVVRQVVQgPT09IFwiMVwiIHx8XG4gICAgICBoY2w7XG5cbiAgICB0aGlzLmhhcmRBYm9ydCA9IGFjLmFib3J0LmJpbmQoYWMpO1xuICAgIHRoaXMuaW9IYW5kbGVyID0gbmV3IENka3RmUHJvamVjdElPSGFuZGxlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wQWxsU3RhY2tzKCkge1xuICAgIHRoaXMuc3RhY2tzVG9SdW4uZm9yRWFjaCgoc3RhY2spID0+IHN0YWNrLnN0b3AoKSk7XG4gICAgdGhpcy5pb0hhbmRsZXIuZmlsdGVyVXNlcklucHV0RXZlbnRzRnJvbUJ1ZmZlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVVc2VyVXBkYXRlPFxuICAgIFQgZXh0ZW5kcyBNdWx0aVN0YWNrVXBkYXRlLFxuICAgIFYgZXh0ZW5kcyBTdGFja1VzZXJJbnB1dFVwZGF0ZSxcbiAgPihcbiAgICB1cGRhdGU6IFN0YWNrVXNlcklucHV0VXBkYXRlLFxuICAgIG9wZXJhdGlvbnM6IFJlY29yZDxzdHJpbmcsICh1cGRhdGU6IFYpID0+IHZvaWQ+LFxuICAgIG9yaWdpbmFsQ2FsbGJhY2s6ICh1cGRhdGVUb1NlbmQ6IFByb2plY3RVcGRhdGUpID0+IHZvaWQsXG4gICAgZXZlbnRUeXBlOiBUW1widHlwZVwiXSxcbiAgKSB7XG4gICAgY29uc3QgY2FsbGJhY2tzID0gKHVwZGF0ZTogVikgPT5cbiAgICAgIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMob3BlcmF0aW9ucykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgLy8gVGhpcyBpcyBwYXNzZWQgaW4gdG8gbWFrZSB0eXBlc2NyaXB0IGhhcHB5IG9ubHlcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgIChfOiBWKSA9PiB7XG4gICAgICAgICAgICAgIHZhbHVlKHVwZGF0ZSk7XG5cbiAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBkZWZlciB0aGVzZSBjYWxscyBmb3IgdGhlIGNhc2UgdGhhdCBhcHByb3ZlKCkgaXMgaW5zdGFudGx5IGludm9rZWRcbiAgICAgICAgICAgICAgLy8gaW4gdGhlIGxpc3RlbmVyIHRoYXQgcmVjZWl2ZXMgdGhlc2UgY2FsbGJhY2tzIGFzIGl0IG90aGVyd2lzZSB3b3VsZCBhbHJlYWR5XG4gICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgXCJ3YWl0aW5nIGZvciBzdGFjayBhcHByb3ZhbFwiIGV2ZW50IGZyb20gdGhlIGJ1ZmZlciBiZWZvcmUgd2UgZXZlblxuICAgICAgICAgICAgICAvLyBzZXQgd2FpdGluZ0ZvckFwcHJvdmFsIHRvIHRydWUgKGF0IHRoZSBlbmQgb2YgdGhpcyBpZiBzdGF0ZW1lbnQpIHdoaWNoIHJlc3VsdHNcbiAgICAgICAgICAgICAgLy8gaW4gYnVmZmVyZWQgdXBkYXRlcyB3aGljaCB3aWxsIG5ldmVyIHVuYmxvY2tcbiAgICAgICAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLmlvSGFuZGxlci5yZXN1bWVBZnRlclVzZXJJbnB1dCh1cGRhdGUuc3RhY2tOYW1lKSxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAvLyBhbHdheXMgc2VuZCB0byBidWZmZXIsIGFzIHJlc3VtZUFmdGVyVXNlcklucHV0KCkgYWx3YXlzIGV4cGVjdHMgYSBtYXRjaGluZyBldmVudFxuICAgIHRoaXMuaW9IYW5kbGVyLnB1c2hFdmVudCh7XG4gICAgICBjYjogb3JpZ2luYWxDYWxsYmFjayxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIHR5cGU6IGV2ZW50VHlwZSxcbiAgICAgICAgc3RhY2tOYW1lOiB1cGRhdGUuc3RhY2tOYW1lLFxuICAgICAgICAuLi5jYWxsYmFja3ModXBkYXRlIGFzIFYpLFxuICAgICAgfSBhcyBULFxuICAgICAgdHlwZTogXCJwcm9qZWN0VXBkYXRlXCIsXG4gICAgfSk7XG5cbiAgICAvLyBpZiB3ZSBhcmVuJ3QgYWxyZWFkeSB3YWl0aW5nLCB0aGlzIG5lZWRzIHRvIGdvIHRvIGNiKCkgdG9vIHRvIGFycml2ZSBhdCB0aGUgVUlcbiAgICBpZiAoIXRoaXMuaW9IYW5kbGVyLmlzV2FpdGluZ0ZvclVzZXJJbnB1dCgpKSB7XG4gICAgICBvcmlnaW5hbENhbGxiYWNrKHtcbiAgICAgICAgdHlwZTogZXZlbnRUeXBlLFxuICAgICAgICBzdGFja05hbWU6IHVwZGF0ZS5zdGFja05hbWUsXG4gICAgICAgIC4uLmNhbGxiYWNrcyh1cGRhdGUgYXMgViksXG4gICAgICB9IGFzIFQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVXNlcklucHV0UHJvY2VzcyhjYjogKHVwZGF0ZVRvU2VuZDogUHJvamVjdFVwZGF0ZSkgPT4gdm9pZCkge1xuICAgIHJldHVybiAoXG4gICAgICB1cGRhdGU6XG4gICAgICAgIHwgU3RhY2tVcGRhdGVcbiAgICAgICAgfCBTdGFja0FwcHJvdmFsVXBkYXRlXG4gICAgICAgIHwgRXh0ZXJuYWxTdGFja0FwcHJvdmFsVXBkYXRlXG4gICAgICAgIHwgU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlXG4gICAgICAgIHwgRXh0ZXJuYWxTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGUsXG4gICAgKSA9PiB7XG4gICAgICBpZiAodXBkYXRlLnR5cGUgPT09IFwiZXh0ZXJuYWwgc3RhY2sgYXBwcm92YWwgcmVwbHlcIikge1xuICAgICAgICBpZiAoIXVwZGF0ZS5hcHByb3ZlZCkge1xuICAgICAgICAgIHRoaXMuc3RvcEFsbFN0YWNrc1RoYXRDYW5Ob3RSdW5XaXRob3V0KHVwZGF0ZS5zdGFja05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW9IYW5kbGVyLnJlc3VtZUFmdGVyVXNlcklucHV0KHVwZGF0ZS5zdGFja05hbWUpO1xuICAgICAgICByZXR1cm47IC8vIGFrYSBkb24ndCBzZW5kIHRoaXMgZXZlbnQgdG8gYW55IGJ1ZmZlclxuICAgICAgfVxuICAgICAgaWYgKHVwZGF0ZS50eXBlID09PSBcImV4dGVybmFsIHN0YWNrIHNlbnRpbmVsIG92ZXJyaWRlIHJlcGx5XCIpIHtcbiAgICAgICAgaWYgKCF1cGRhdGUub3ZlcnJpZGRlbikge1xuICAgICAgICAgIHRoaXMuc3RvcEFsbFN0YWNrc1RoYXRDYW5Ob3RSdW5XaXRob3V0KHVwZGF0ZS5zdGFja05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW9IYW5kbGVyLnJlc3VtZUFmdGVyVXNlcklucHV0KHVwZGF0ZS5zdGFja05hbWUpO1xuICAgICAgICByZXR1cm47IC8vIGFrYSBkb24ndCBzZW5kIHRoaXMgZXZlbnQgdG8gYW55IGJ1ZmZlclxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHVwZGF0ZS50eXBlID09PSBcIndhaXRpbmcgZm9yIHN0YWNrIGFwcHJvdmFsXCIgfHxcbiAgICAgICAgdXBkYXRlLnR5cGUgPT09IFwid2FpdGluZyBmb3Igc3RhY2sgc2VudGluZWwgb3ZlcnJpZGVcIlxuICAgICAgKSB7XG4gICAgICAgIGlmICh1cGRhdGUudHlwZSA9PT0gXCJ3YWl0aW5nIGZvciBzdGFjayBhcHByb3ZhbFwiKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVVc2VyVXBkYXRlPE11bHRpU3RhY2tBcHByb3ZhbFVwZGF0ZSwgU3RhY2tBcHByb3ZhbFVwZGF0ZT4oXG4gICAgICAgICAgICB1cGRhdGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFwcHJvdmU6ICh1cGRhdGUpID0+IHVwZGF0ZS5hcHByb3ZlKCksXG4gICAgICAgICAgICAgIGRpc21pc3M6ICh1cGRhdGUpID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGUucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wQWxsU3RhY2tzVGhhdENhbk5vdFJ1bldpdGhvdXQodXBkYXRlLnN0YWNrTmFtZSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHN0b3A6ICh1cGRhdGUpID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGUucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wQWxsU3RhY2tzKCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2IsXG4gICAgICAgICAgICBcIndhaXRpbmcgZm9yIGFwcHJvdmFsXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICh1cGRhdGUudHlwZSA9PT0gXCJ3YWl0aW5nIGZvciBzdGFjayBzZW50aW5lbCBvdmVycmlkZVwiKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVVc2VyVXBkYXRlPFxuICAgICAgICAgICAgTXVsdGlTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGUsXG4gICAgICAgICAgICBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGVcbiAgICAgICAgICA+KFxuICAgICAgICAgICAgdXBkYXRlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBvdmVycmlkZTogKHVwZGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHVwZGF0ZS5vdmVycmlkZSgpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZWplY3Q6ICh1cGRhdGUpID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGUucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wQWxsU3RhY2tzVGhhdENhbk5vdFJ1bldpdGhvdXQodXBkYXRlLnN0YWNrTmFtZSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2IsXG4gICAgICAgICAgICBcIndhaXRpbmcgZm9yIHNlbnRpbmVsIG92ZXJyaWRlXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW9IYW5kbGVyLmF3YWl0VXNlcklucHV0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5pb0hhbmRsZXIuaXNXYWl0aW5nRm9yVXNlcklucHV0KCkpIHtcbiAgICAgICAgICB0aGlzLmlvSGFuZGxlci5wdXNoRXZlbnQoe1xuICAgICAgICAgICAgY2IsXG4gICAgICAgICAgICB2YWx1ZTogdXBkYXRlLFxuICAgICAgICAgICAgdHlwZTogXCJwcm9qZWN0VXBkYXRlXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2IodXBkYXRlIGFzIFByb2plY3RVcGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdGFja0V4ZWN1dG9yKFxuICAgIHN0YWNrOiBTeW50aGVzaXplZFN0YWNrLFxuICAgIG9wdHM6IEF1dG9BcHByb3ZlT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBjb25zdCBlbmhhbmNlTG9nTWVzc2FnZSA9IGNyZWF0ZUVuaGFuY2VMb2dNZXNzYWdlKHN0YWNrKTtcbiAgICBjb25zdCBvbkxvZyA9IHRoaXMuaW9IYW5kbGVyLmJ1ZmZlcldoaWxlQXdhaXRpbmdVc2VySW5wdXQodGhpcy5vbkxvZyk7XG4gICAgcmV0dXJuIG5ldyBDZGt0ZlN0YWNrKHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICBzdGFjayxcbiAgICAgIG9uVXBkYXRlOiB0aGlzLmhhbmRsZVVzZXJJbnB1dFByb2Nlc3ModGhpcy5vblVwZGF0ZSksXG4gICAgICBvbkxvZzogb25Mb2dcbiAgICAgICAgPyAoeyBtZXNzYWdlIH0pID0+XG4gICAgICAgICAgICBvbkxvZyh7XG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogc3RhY2submFtZSxcbiAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgbWVzc2FnZVdpdGhDb25zdHJ1Y3RQYXRoOiBlbmhhbmNlTG9nTWVzc2FnZShtZXNzYWdlKSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgYWJvcnRTaWduYWw6IHRoaXMuYWJvcnRTaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG91dHB1dHNCeUNvbnN0cnVjdElkKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrc1RvUnVuLnJlZHVjZShcbiAgICAgIChhY2MsIHN0YWNrKSA9PiAoe1xuICAgICAgICAuLi5hY2MsXG4gICAgICAgIC4uLnN0YWNrLm91dHB1dHNCeUNvbnN0cnVjdElkLFxuICAgICAgfSksXG4gICAgICB7fSBhcyBOZXN0ZWRUZXJyYWZvcm1PdXRwdXRzLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3ludGgobm9Db2xvcj86IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9uVXBkYXRlKHtcbiAgICAgIHR5cGU6IFwic3ludGhlc2l6aW5nXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdGFja3MgPSBhd2FpdCBTeW50aFN0YWNrLnN5bnRoKFxuICAgICAgdGhpcy5hYm9ydFNpZ25hbCBhcyBhbnksXG4gICAgICB0aGlzLnN5bnRoQ29tbWFuZCxcbiAgICAgIHRoaXMub3V0RGlyLFxuICAgICAgdGhpcy53b3JraW5nRGlyZWN0b3J5LFxuICAgICAgZmFsc2UsXG4gICAgICBub0NvbG9yLFxuICAgICAgdGhpcy5zeW50aE9yaWdpbixcbiAgICAgIHRoaXMuaGNsLFxuICAgICk7XG5cbiAgICBwcmludEFubm90YXRpb25zKHN0YWNrcyk7XG5cbiAgICB0aGlzLm9uVXBkYXRlKHtcbiAgICAgIHR5cGU6IFwic3ludGhlc2l6ZWRcIixcbiAgICAgIHN0YWNrcyxcbiAgICB9KTtcblxuICAgIHJldHVybiBzdGFja3M7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVhZFN5bnRoZXNpemVkU3RhY2tzKCkge1xuICAgIGNvbnN0IHN0YWNrcyA9IGF3YWl0IFN5bnRoU3RhY2sucmVhZFN5bnRoZXNpemVkU3RhY2tzKHRoaXMub3V0RGlyKTtcblxuICAgIHByaW50QW5ub3RhdGlvbnMoc3RhY2tzKTtcblxuICAgIHRoaXMub25VcGRhdGUoe1xuICAgICAgdHlwZTogXCJzeW50aGVzaXplZFwiLFxuICAgICAgc3RhY2tzLFxuICAgIH0pO1xuICAgIHJldHVybiBzdGFja3M7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGlmZihvcHRzOiBEaWZmT3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3Qgc3RhY2tzID0gb3B0cy5za2lwU3ludGhcbiAgICAgID8gYXdhaXQgdGhpcy5yZWFkU3ludGhlc2l6ZWRTdGFja3MoKVxuICAgICAgOiBhd2FpdCB0aGlzLnN5bnRoKG9wdHMubm9Db2xvcik7XG4gICAgY29uc3Qgc3RhY2sgPSB0aGlzLmdldFN0YWNrRXhlY3V0b3IoXG4gICAgICBnZXRTaW5nbGVTdGFjayhzdGFja3MsIG9wdHM/LnN0YWNrTmFtZSwgXCJkaWZmXCIpLFxuICAgICk7XG4gICAgYXdhaXQgc3RhY2suaW5pdGFsaXplVGVycmFmb3JtKFxuICAgICAgb3B0cy5ub0NvbG9yLFxuICAgICAgb3B0cy5za2lwUHJvdmlkZXJMb2NrLFxuICAgICAgb3B0cy5taWdyYXRlU3RhdGUsXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBzdGFjay5kaWZmKG9wdHMpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgRXJyb3JzLkV4dGVybmFsKFxuICAgICAgICBgU3RhY2sgZmFpbGVkIHRvIHBsYW46ICR7c3RhY2suc3RhY2submFtZX0uIFBsZWFzZSBjaGVjayB0aGUgbG9ncyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5gLFxuICAgICAgICBlLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHN0YWNrLmVycm9yKSB7XG4gICAgICB0aHJvdyBFcnJvcnMuRXh0ZXJuYWwoXG4gICAgICAgIGBTdGFjayBmYWlsZWQgdG8gcGxhbjogJHtzdGFjay5zdGFjay5uYW1lfS4gUGxlYXNlIGNoZWNrIHRoZSBsb2dzIGZvciBtb3JlIGluZm9ybWF0aW9uLmAsXG4gICAgICAgIG5ldyBFcnJvcihzdGFjay5lcnJvciksXG4gICAgICApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnByb2plY3RUZWxlbWV0cnkoXCJkaWZmXCIsIHtcbiAgICAgICAgc3RhY2tNZXRhZGF0YTogc3RhY2tzLm1hcCgoc3RhY2spID0+XG4gICAgICAgICAgSlNPTi5wYXJzZShzdGFjay5jb250ZW50KVtcIi8vXCJdXG4gICAgICAgICAgICA/IEpTT04ucGFyc2Uoc3RhY2suY29udGVudClbXCIvL1wiXS5tZXRhZGF0YVxuICAgICAgICAgICAgOiB7fSxcbiAgICAgICAgKSxcbiAgICAgICAgZXJyb3JzOiBzdGFjay5lcnJvcixcbiAgICAgICAgcmVxdWlyZWRQcm92aWRlcnM6IHN0YWNrcy5tYXAoKHN0YWNrOiBhbnkpID0+XG4gICAgICAgICAgSlNPTi5wYXJzZShzdGFjay5jb250ZW50KVtcInRlcnJhZm9ybVwiXVxuICAgICAgICAgICAgPyBKU09OLnBhcnNlKHN0YWNrLmNvbnRlbnQpW1widGVycmFmb3JtXCJdLnJlcXVpcmVkX3Byb3ZpZGVyc1xuICAgICAgICAgICAgOiB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcIkZhaWxlZCB0byBzZW5kIHRlbGVtZXRyeVwiLCBlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGUoXG4gICAgbWV0aG9kOiBcImRlcGxveVwiIHwgXCJkZXN0cm95XCIsXG4gICAgbmV4dDogKCkgPT4gUHJvbWlzZTxDZGt0ZlN0YWNrIHwgdW5kZWZpbmVkPixcbiAgICBvcHRzOiBNdXRhdGlvbk9wdGlvbnMsXG4gICkge1xuICAgIC8vIFdlIG9ubHkgc3VwcG9ydCByZWZyZXNoIG9ubHkgb24gZGVwbG95LCBhIGJpdCBvZiBhIGxlYWt5IGFic3RyYWN0aW9uIGhlcmVcbiAgICBpZiAob3B0cy5yZWZyZXNoT25seSAmJiBtZXRob2QgIT09IFwiZGVwbG95XCIpIHtcbiAgICAgIHRocm93IEVycm9ycy5JbnRlcm5hbChgUmVmcmVzaCBvbmx5IGlzIG9ubHkgc3VwcG9ydGVkIG9uIGRlcGxveWApO1xuICAgIH1cbiAgICBjb25zdCBtYXhQYXJhbGxlbFJ1bnMgPVxuICAgICAgIW9wdHMucGFyYWxsZWxpc20gfHwgb3B0cy5wYXJhbGxlbGlzbSA8IDAgPyBJbmZpbml0eSA6IG9wdHMucGFyYWxsZWxpc207XG4gICAgY29uc3QgYWxsRXhlY3V0aW9ucyA9IFtdO1xuXG4gICAgYXdhaXQgdGhpcy5pbml0aWFsaXplU3RhY2tzVG9SdW5JblNlcmlhbChcbiAgICAgIG9wdHMubm9Db2xvcixcbiAgICAgIG9wdHMuc2tpcFByb3ZpZGVyTG9jayxcbiAgICAgIG9wdHMubWlncmF0ZVN0YXRlLFxuICAgICk7XG4gICAgd2hpbGUgKHRoaXMuc3RhY2tzVG9SdW4uZmlsdGVyKChzdGFjaykgPT4gc3RhY2suaXNQZW5kaW5nKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBydW5uaW5nU3RhY2tzID0gdGhpcy5zdGFja3NUb1J1bi5maWx0ZXIoKHN0YWNrKSA9PiBzdGFjay5pc1J1bm5pbmcpO1xuICAgICAgaWYgKHJ1bm5pbmdTdGFja3MubGVuZ3RoID49IG1heFBhcmFsbGVsUnVucykge1xuICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UocnVubmluZ1N0YWNrcy5tYXAoKHMpID0+IHMuY3VycmVudFdvcmtQcm9taXNlKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbmV4dFJ1bm5pbmdFeGVjdXRvciA9IGF3YWl0IG5leHQoKTtcbiAgICAgICAgaWYgKCFuZXh0UnVubmluZ0V4ZWN1dG9yKSB7XG4gICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGhhdmUgbm8gcGVuZGluZyBzdGFja3MsIGJ1dCB3ZSBhbHNvIGNhbiBub3QgZmluZCBhIG5ldyBleGVjdXRvclxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21pc2UgPVxuICAgICAgICAgIG1ldGhvZCA9PT0gXCJkZXBsb3lcIlxuICAgICAgICAgICAgPyBuZXh0UnVubmluZ0V4ZWN1dG9yLmRlcGxveShvcHRzKVxuICAgICAgICAgICAgOiBuZXh0UnVubmluZ0V4ZWN1dG9yLmRlc3Ryb3kob3B0cyk7XG5cbiAgICAgICAgYWxsRXhlY3V0aW9ucy5wdXNoKHByb21pc2UpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBhd2FpdCBuZXh0KCkgdGhyZXcgYW4gZXJyb3IgYmVjYXVzZSBhIHN0YWNrIGZhaWxlZCB0byBhcHBseS9kZXN0cm95XG4gICAgICAgIC8vIHdhaXQgZm9yIGFsbCBvdGhlciBjdXJyZW50bHkgcnVubmluZyBzdGFja3MgdG8gY29tcGxldGUgYmVmb3JlIHByb3BhZ2F0aW5nIHRoYXQgZXJyb3JcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiRW5jb3VudGVyZWQgYW4gZXJyb3Igd2hpbGUgYXdhaXRpbmcgc3RhY2sgdG8gZmluaXNoXCIsIGUpO1xuICAgICAgICBjb25zdCBvcGVuU3RhY2tzID0gdGhpcy5zdGFja3NUb1J1bi5maWx0ZXIoXG4gICAgICAgICAgKGV4KSA9PiBleC5jdXJyZW50V29ya1Byb21pc2UsXG4gICAgICAgICk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIldhaXRpbmcgZm9yIHN0aWxsIHJ1bm5pbmcgc3RhY2tzIHRvIGZpbmlzaDpcIiwgb3BlblN0YWNrcyk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChvcGVuU3RhY2tzLm1hcCgoZXgpID0+IGV4LmN1cnJlbnRXb3JrUHJvbWlzZSkpO1xuICAgICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgICAgXCJEb25lIHdhaXRpbmcgZm9yIHN0aWxsIHJ1bm5pbmcgc3RhY2tzLiBBbGwgcGVuZGluZyB3b3JrIGZpbmlzaGVkXCIsXG4gICAgICAgICk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFdlIGVuZCB0aGUgbG9vcCB3aGVuIGFsbCBzdGFja3MgYXJlIHN0YXJ0ZWQsIG5vdyB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZW0gdG8gYmUgZG9uZVxuICAgIC8vIFdlIHdhaXQgZm9yIGFsbCB3b3JrIHRvIGZpbmlzaCBldmVuIGlmIG9uZSBvZiB0aGUgcHJvbWlzZXMgdGhyZXcgYW4gZXJyb3IuXG4gICAgYXdhaXQgZW5zdXJlQWxsU2V0dGxlZEJlZm9yZVRocm93aW5nKFxuICAgICAgUHJvbWlzZS5hbGwoYWxsRXhlY3V0aW9ucyksXG4gICAgICBhbGxFeGVjdXRpb25zLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVwbG95KG9wdHM6IE11dGF0aW9uT3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3Qgc3RhY2tzID0gb3B0cy5za2lwU3ludGhcbiAgICAgID8gYXdhaXQgdGhpcy5yZWFkU3ludGhlc2l6ZWRTdGFja3MoKVxuICAgICAgOiBhd2FpdCB0aGlzLnN5bnRoKG9wdHMubm9Db2xvcik7XG4gICAgY29uc3Qgc3RhY2tzVG9SdW4gPSBnZXRNdWx0aXBsZVN0YWNrcyhzdGFja3MsIG9wdHMuc3RhY2tOYW1lcywgXCJkZXBsb3lcIik7XG4gICAgaWYgKCFvcHRzLmlnbm9yZU1pc3NpbmdTdGFja0RlcGVuZGVuY2llcykge1xuICAgICAgY2hlY2tJZkFsbERlcGVuZGVuY2llc0FyZUluY2x1ZGVkKHN0YWNrc1RvUnVuKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BBbGxTdGFja3NUaGF0Q2FuTm90UnVuV2l0aG91dCA9IChzdGFja05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgZmluZEFsbE5lc3RlZERlcGVuZGFudFN0YWNrcyh0aGlzLnN0YWNrc1RvUnVuLCBzdGFja05hbWUpLmZvckVhY2goXG4gICAgICAgIChzdGFjaykgPT4gc3RhY2suc3RvcCgpLFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgdGhpcy5zdGFja3NUb1J1biA9IHN0YWNrc1RvUnVuLm1hcCgoc3RhY2spID0+XG4gICAgICB0aGlzLmdldFN0YWNrRXhlY3V0b3Ioc3RhY2ssIG9wdHMpLFxuICAgICk7XG5cbiAgICBjb25zdCBuZXh0ID0gb3B0cy5pZ25vcmVNaXNzaW5nU3RhY2tEZXBlbmRlbmNpZXNcbiAgICAgID8gKCkgPT5cbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgICB0aGlzLnN0YWNrc1RvUnVuLmZpbHRlcigoc3RhY2spID0+IHN0YWNrLmlzUGVuZGluZylbMF0sXG4gICAgICAgICAgKVxuICAgICAgOiAoKSA9PiBnZXRTdGFja1dpdGhOb1VubWV0RGVwZW5kZW5jaWVzKHRoaXMuc3RhY2tzVG9SdW4pO1xuXG4gICAgYXdhaXQgdGhpcy5leGVjdXRlKFwiZGVwbG95XCIsIG5leHQsIG9wdHMpO1xuXG4gICAgY29uc3QgdW5wcm9jZXNzZWRTdGFja3MgPSB0aGlzLnN0YWNrc1RvUnVuLmZpbHRlcihcbiAgICAgIChleGVjdXRvcikgPT4gZXhlY3V0b3IuaXNQZW5kaW5nLFxuICAgICk7XG4gICAgaWYgKHVucHJvY2Vzc2VkU3RhY2tzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IEVycm9ycy5FeHRlcm5hbChcbiAgICAgICAgYFNvbWUgc3RhY2tzIGZhaWxlZCB0byBkZXBsb3k6ICR7dW5wcm9jZXNzZWRTdGFja3NcbiAgICAgICAgICAubWFwKChzKSA9PiBzLnN0YWNrLm5hbWUpXG4gICAgICAgICAgLmpvaW4oXCIsIFwiKX0uIFBsZWFzZSBjaGVjayB0aGUgbG9ncyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5wcm9qZWN0VGVsZW1ldHJ5KFwiZGVwbG95XCIsIHtcbiAgICAgICAgc3RhY2tNZXRhZGF0YTogc3RhY2tzVG9SdW4ubWFwKChzdGFjaykgPT5cbiAgICAgICAgICBKU09OLnBhcnNlKHN0YWNrLmNvbnRlbnQpW1wiLy9cIl1cbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShzdGFjay5jb250ZW50KVtcIi8vXCJdLm1ldGFkYXRhXG4gICAgICAgICAgICA6IHt9LFxuICAgICAgICApLFxuICAgICAgICBmYWlsZWRTdGFja3M6IHVucHJvY2Vzc2VkU3RhY2tzLm1hcCgoc3RhY2spID0+IHN0YWNrLmVycm9yKSxcbiAgICAgICAgcmVxdWlyZWRQcm92aWRlcnM6IHN0YWNrc1RvUnVuLm1hcCgoc3RhY2s6IGFueSkgPT5cbiAgICAgICAgICBKU09OLnBhcnNlKHN0YWNrLmNvbnRlbnQpW1widGVycmFmb3JtXCJdXG4gICAgICAgICAgICA/IEpTT04ucGFyc2Uoc3RhY2suY29udGVudClbXCJ0ZXJyYWZvcm1cIl0ucmVxdWlyZWRfcHJvdmlkZXJzXG4gICAgICAgICAgICA6IHt9LFxuICAgICAgICApLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiRmFpbGVkIHRvIHNlbmQgdGVsZW1ldHJ5XCIsIGUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZXN0cm95KG9wdHM6IE11dGF0aW9uT3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3Qgc3RhY2tzID0gb3B0cy5za2lwU3ludGhcbiAgICAgID8gYXdhaXQgdGhpcy5yZWFkU3ludGhlc2l6ZWRTdGFja3MoKVxuICAgICAgOiBhd2FpdCB0aGlzLnN5bnRoKG9wdHMubm9Db2xvcik7XG4gICAgY29uc3Qgc3RhY2tzVG9SdW4gPSBnZXRNdWx0aXBsZVN0YWNrcyhzdGFja3MsIG9wdHMuc3RhY2tOYW1lcywgXCJkZXN0cm95XCIpO1xuXG4gICAgaWYgKCFvcHRzLmlnbm9yZU1pc3NpbmdTdGFja0RlcGVuZGVuY2llcykge1xuICAgICAgY2hlY2tJZkFsbERlcGVuZGFudHNBcmVJbmNsdWRlZChzdGFja3NUb1J1biwgc3RhY2tzKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BBbGxTdGFja3NUaGF0Q2FuTm90UnVuV2l0aG91dCA9IChzdGFja05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc3RhY2tFeGVjdXRvciA9IHRoaXMuc3RhY2tzVG9SdW4uZmluZChcbiAgICAgICAgKHMpID0+IHMuc3RhY2submFtZSA9PT0gc3RhY2tOYW1lLFxuICAgICAgKTtcbiAgICAgIGlmICghc3RhY2tFeGVjdXRvcikge1xuICAgICAgICB0aHJvdyBFcnJvcnMuSW50ZXJuYWwoXG4gICAgICAgICAgYENvdWxkIG5vdCBmaW5kIHN0YWNrIFwiJHtzdGFja05hbWV9XCIgdGhhdCB3YXMgc3RvcHBlZGAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHN0YWNrRXhlY3V0b3Iuc3RhY2suZGVwZW5kZW5jaWVzLmZvckVhY2goKGRlcGVuZGFudCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3BBbGxTdGFja3NUaGF0Q2FuTm90UnVuV2l0aG91dChkZXBlbmRhbnQpO1xuXG4gICAgICAgIGNvbnN0IGRlcGVuZGFudFN0YWNrID0gdGhpcy5zdGFja3NUb1J1bi5maW5kKFxuICAgICAgICAgIChzKSA9PiBzLnN0YWNrLm5hbWUgPT09IGRlcGVuZGFudCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFkZXBlbmRhbnRTdGFjaykge1xuICAgICAgICAgIHRocm93IEVycm9ycy5JbnRlcm5hbChcbiAgICAgICAgICAgIGBDb3VsZCBub3QgZmluZCBzdGFjayBcIiR7ZGVwZW5kYW50fVwiIHRoYXQgd2FzIHN0b3BwZWRgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXBlbmRhbnRTdGFjay5zdG9wKCk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRoaXMuc3RhY2tzVG9SdW4gPSBzdGFja3NUb1J1bi5tYXAoKHN0YWNrKSA9PlxuICAgICAgdGhpcy5nZXRTdGFja0V4ZWN1dG9yKHN0YWNrLCBvcHRzKSxcbiAgICApO1xuICAgIGNvbnN0IG5leHQgPSBvcHRzLmlnbm9yZU1pc3NpbmdTdGFja0RlcGVuZGVuY2llc1xuICAgICAgPyAoKSA9PlxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICAgIHRoaXMuc3RhY2tzVG9SdW4uZmlsdGVyKFxuICAgICAgICAgICAgICAoc3RhY2spID0+IHN0YWNrLmN1cnJlbnRTdGF0ZSAhPT0gXCJkb25lXCIsXG4gICAgICAgICAgICApWzBdLFxuICAgICAgICAgIClcbiAgICAgIDogKCkgPT4gZ2V0U3RhY2tXaXRoTm9Vbm1ldERlcGVuZGFudHModGhpcy5zdGFja3NUb1J1bik7XG5cbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGUoXCJkZXN0cm95XCIsIG5leHQsIG9wdHMpO1xuXG4gICAgY29uc3QgdW5wcm9jZXNzZWRTdGFja3MgPSB0aGlzLnN0YWNrc1RvUnVuLmZpbHRlcihcbiAgICAgIChleGVjdXRvcikgPT4gZXhlY3V0b3IuaXNQZW5kaW5nLFxuICAgICk7XG4gICAgaWYgKHVucHJvY2Vzc2VkU3RhY2tzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IEVycm9ycy5FeHRlcm5hbChcbiAgICAgICAgYFNvbWUgc3RhY2tzIGZhaWxlZCB0byBkZXN0cm95OiAke3VucHJvY2Vzc2VkU3RhY2tzXG4gICAgICAgICAgLm1hcCgocykgPT4gcy5zdGFjay5uYW1lKVxuICAgICAgICAgIC5qb2luKFwiLCBcIil9LiBQbGVhc2UgY2hlY2sgdGhlIGxvZ3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucHJvamVjdFRlbGVtZXRyeShcImRlc3Ryb3lcIiwge1xuICAgICAgICBzdGFja01ldGFkYXRhOiBzdGFja3NUb1J1bi5tYXAoKHN0YWNrKSA9PlxuICAgICAgICAgIEpTT04ucGFyc2Uoc3RhY2suY29udGVudClbXCIvL1wiXVxuICAgICAgICAgICAgPyBKU09OLnBhcnNlKHN0YWNrLmNvbnRlbnQpW1wiLy9cIl0ubWV0YWRhdGFcbiAgICAgICAgICAgIDoge30sXG4gICAgICAgICksXG4gICAgICAgIGZhaWxlZFN0YWNrczogdW5wcm9jZXNzZWRTdGFja3MubWFwKChzdGFjaykgPT4gc3RhY2suZXJyb3IpLFxuICAgICAgICByZXF1aXJlZFByb3ZpZGVyczogc3RhY2tzVG9SdW4ubWFwKChzdGFjazogYW55KSA9PlxuICAgICAgICAgIEpTT04ucGFyc2Uoc3RhY2suY29udGVudClbXCJ0ZXJyYWZvcm1cIl1cbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShzdGFjay5jb250ZW50KVtcInRlcnJhZm9ybVwiXS5yZXF1aXJlZF9wcm92aWRlcnNcbiAgICAgICAgICAgIDoge30sXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZGVidWcoXCJGYWlsZWQgdG8gc2VuZCB0ZWxlbWV0cnlcIiwgZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHByb2plY3RUZWxlbWV0cnkoY29tbWFuZDogc3RyaW5nLCBwYXlsb2FkOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb25maWcgPSByZWFkQ29uZmlnU3luYygpO1xuICAgIGF3YWl0IHNlbmRUZWxlbWV0cnkoY29tbWFuZCwge1xuICAgICAgLi4ucGF5bG9hZCxcbiAgICAgIGxhbmd1YWdlOiBjb25maWcubGFuZ3VhZ2UsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmV0Y2hPdXRwdXRzKG9wdHM6IEZldGNoT3V0cHV0T3B0aW9ucykge1xuICAgIGNvbnN0IHN0YWNrcyA9IG9wdHMuc2tpcFN5bnRoXG4gICAgICA/IGF3YWl0IHRoaXMucmVhZFN5bnRoZXNpemVkU3RhY2tzKClcbiAgICAgIDogYXdhaXQgdGhpcy5zeW50aCgpO1xuXG4gICAgY29uc3Qgc3RhY2tzVG9SdW4gPSBnZXRNdWx0aXBsZVN0YWNrcyhcbiAgICAgIHN0YWNrcyxcbiAgICAgIG9wdHMuc3RhY2tOYW1lcyB8fCBbXSxcbiAgICAgIFwiZGVwbG95XCIsXG4gICAgKTtcblxuICAgIGlmIChzdGFja3NUb1J1bi5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHN0YWNrcyB0byBmZXRjaCBvdXRwdXRzIGZvciBzcGVjaWZpZWRcIik7XG4gICAgfVxuXG4gICAgdGhpcy5zdGFja3NUb1J1biA9IHN0YWNrc1RvUnVuLm1hcCgoc3RhY2spID0+XG4gICAgICAvLyBPcHRpb25zIGFyZSBlbXB0eSwgYmVjYXVzZSBNdWx0aXBsZVN0YWNrT3B0aW9ucyBkb2Vzbid0IGhhdmUgYW55IHJlbGV2YW50XG4gICAgICAvLyBvcHRpb25zIGZvciBgZ2V0U3RhY2tFeGVjdXRvcmAsIGhlbmNlIGRlZmF1bHRzIGFyZSBmaW5lXG4gICAgICB0aGlzLmdldFN0YWNrRXhlY3V0b3Ioc3RhY2ssIHt9KSxcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5pbml0aWFsaXplU3RhY2tzVG9SdW5JblNlcmlhbCh1bmRlZmluZWQsIG9wdHMuc2tpcFByb3ZpZGVyTG9jayk7XG4gICAgY29uc3Qgb3V0cHV0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdGhpcy5zdGFja3NUb1J1bi5tYXAoYXN5bmMgKHMpID0+IHtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgcy5mZXRjaE91dHB1dHMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBbcy5zdGFjay5uYW1lXTogb3V0cHV0LFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIHJldHVybiBvdXRwdXRzLnJlZHVjZShcbiAgICAgIChhY2MsIGN1cnIpID0+ICh7IC4uLmFjYywgLi4uY3VyciB9KSxcbiAgICAgIHt9LFxuICAgICkgYXMgTmVzdGVkVGVycmFmb3JtT3V0cHV0cztcbiAgfVxuXG4gIC8vIFNlcmlhbGx5IHJ1biB0ZXJyYWZvcm0gaW5pdCB0byBwcm9oaWJpdCB0ZXh0IGZpbGUgYnVzeSBlcnJvcnMgZm9yIHRoZSBjYWNoZSBmaWxlc1xuICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemVTdGFja3NUb1J1bkluU2VyaWFsKFxuICAgIG5vQ29sb3I/OiBib29sZWFuLFxuICAgIHNraXBQcm92aWRlckxvY2s/OiBib29sZWFuLFxuICAgIG1pZ3JhdGVTdGF0ZT86IGJvb2xlYW4sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3Qgc3RhY2sgb2YgdGhpcy5zdGFja3NUb1J1bikge1xuICAgICAgYXdhaXQgc3RhY2suaW5pdGFsaXplVGVycmFmb3JtKG5vQ29sb3IsIHNraXBQcm92aWRlckxvY2ssIG1pZ3JhdGVTdGF0ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
371
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrdGYtcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNka3RmLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyw0Q0FNd0I7QUFDeEIsK0NBQTBFO0FBQzFFLG1DQUEyQztBQUMzQywrQ0FRdUI7QUFFdkIscURBQTJEO0FBQzNELDJEQVFpQztBQUNqQyx5RUFBbUU7QUErRm5FLFNBQWdCLDJCQUEyQixDQUN6QyxNQUFtQztJQUVuQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsK0JBQStCLENBQUMsQ0FBQyxRQUFRLENBQ3ZFLE1BQU0sQ0FBQyxJQUFJLENBQ1osQ0FBQztBQUNKLENBQUM7QUFORCxrRUFNQztBQWNELE1BQWEsWUFBWTtJQXFCdkIsWUFBWSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQ2hDLFdBQVcsRUFDWCxHQUFHLEdBQUcsS0FBSyxHQUNTO1FBaEJ0Qiw4QkFBOEI7UUFDdkIsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQ3RDLCtDQUErQztRQUN2QyxzQ0FBaUMsR0FDdkMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBYVQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE1BQU0sRUFBRSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FB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QkFBNkIsQ0FDekMsT0FBaUIsRUFDakIsZ0JBQTBCLEVBQzFCLFlBQXNCO1FBRXRCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBMWlCRCxvQ0EwaUJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7XG4gIEVycm9ycyxcbiAgZW5zdXJlQWxsU2V0dGxlZEJlZm9yZVRocm93aW5nLFxuICBsb2dnZXIsXG4gIHJlYWRDb25maWdTeW5jLFxuICBzZW5kVGVsZW1ldHJ5LFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IFN5bnRoZXNpemVkU3RhY2ssIFN5bnRoT3JpZ2luLCBTeW50aFN0YWNrIH0gZnJvbSBcIi4vc3ludGgtc3RhY2tcIjtcbmltcG9ydCB7IHByaW50QW5ub3RhdGlvbnMgfSBmcm9tIFwiLi9zeW50aFwiO1xuaW1wb3J0IHtcbiAgQ2RrdGZTdGFjayxcbiAgRXh0ZXJuYWxTdGFja0FwcHJvdmFsVXBkYXRlLFxuICBFeHRlcm5hbFN0YWNrU2VudGluZWxPdmVycmlkZVVwZGF0ZSxcbiAgU3RhY2tBcHByb3ZhbFVwZGF0ZSxcbiAgU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlLFxuICBTdGFja1VwZGF0ZSxcbiAgU3RhY2tVc2VySW5wdXRVcGRhdGUsXG59IGZyb20gXCIuL2Nka3RmLXN0YWNrXCI7XG5pbXBvcnQgeyBOZXN0ZWRUZXJyYWZvcm1PdXRwdXRzIH0gZnJvbSBcIi4vb3V0cHV0XCI7XG5pbXBvcnQgeyBjcmVhdGVFbmhhbmNlTG9nTWVzc2FnZSB9IGZyb20gXCIuL2V4ZWN1dGlvbi1sb2dzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmQWxsRGVwZW5kYW50c0FyZUluY2x1ZGVkLFxuICBjaGVja0lmQWxsRGVwZW5kZW5jaWVzQXJlSW5jbHVkZWQsXG4gIGZpbmRBbGxOZXN0ZWREZXBlbmRhbnRTdGFja3MsXG4gIGdldE11bHRpcGxlU3RhY2tzLFxuICBnZXRTaW5nbGVTdGFjayxcbiAgZ2V0U3RhY2tXaXRoTm9Vbm1ldERlcGVuZGFudHMsXG4gIGdldFN0YWNrV2l0aE5vVW5tZXREZXBlbmRlbmNpZXMsXG59IGZyb20gXCIuL2hlbHBlcnMvc3RhY2staGVscGVyc1wiO1xuaW1wb3J0IHsgQ2RrdGZQcm9qZWN0SU9IYW5kbGVyIH0gZnJvbSBcIi4vY2RrdGYtcHJvamVjdC1pby1oYW5kbGVyXCI7XG5cbnR5cGUgTXVsdGlTdGFja0FwcHJvdmFsVXBkYXRlID0ge1xuICB0eXBlOiBcIndhaXRpbmcgZm9yIGFwcHJvdmFsXCI7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuICBhcHByb3ZlOiAoKSA9PiB2b2lkO1xuICBkaXNtaXNzOiAoKSA9PiB2b2lkO1xuICBzdG9wOiAoKSA9PiB2b2lkO1xufTtcblxudHlwZSBNdWx0aVN0YWNrU2VudGluZWxPdmVycmlkZVVwZGF0ZSA9IHtcbiAgdHlwZTogXCJ3YWl0aW5nIGZvciBzZW50aW5lbCBvdmVycmlkZVwiO1xuICBzdGFja05hbWU6IHN0cmluZztcbiAgb3ZlcnJpZGU6ICgpID0+IHZvaWQ7XG4gIHJlamVjdDogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE11bHRpU3RhY2tVcGRhdGUgPVxuICB8IE11bHRpU3RhY2tBcHByb3ZhbFVwZGF0ZVxuICB8IE11bHRpU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlO1xuXG5leHBvcnQgdHlwZSBQcm9qZWN0VXBkYXRlID1cbiAgfCB7XG4gICAgICB0eXBlOiBcInN5bnRoZXNpemluZ1wiO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcInN5bnRoZXNpemVkXCI7XG4gICAgICBzdGFja3M6IFN5bnRoZXNpemVkU3RhY2tbXTtcbiAgICAgIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgICB9XG4gIHwgU3RhY2tVcGRhdGVcbiAgfCBNdWx0aVN0YWNrVXBkYXRlO1xuXG5leHBvcnQgdHlwZSBTaW5nbGVTdGFja09wdGlvbnMgPSB7XG4gIHN0YWNrTmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE11bHRpcGxlU3RhY2tPcHRpb25zID0ge1xuICBzdGFja05hbWVzPzogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBTa2lwU3ludGhPcHRpb25zID0ge1xuICBza2lwU3ludGg/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgU2tpcFByb3ZpZGVyTG9ja09wdGlvbnMgPSB7XG4gIHNraXBQcm92aWRlckxvY2s/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRmV0Y2hPdXRwdXRPcHRpb25zID0gU2tpcFN5bnRoT3B0aW9ucyAmXG4gIFNraXBQcm92aWRlckxvY2tPcHRpb25zICZcbiAgTXVsdGlwbGVTdGFja09wdGlvbnM7XG5cbmV4cG9ydCB0eXBlIEF1dG9BcHByb3ZlT3B0aW9ucyA9IHtcbiAgYXV0b0FwcHJvdmU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGlmZk9wdGlvbnMgPSBTaW5nbGVTdGFja09wdGlvbnMgJlxuICBTa2lwUHJvdmlkZXJMb2NrT3B0aW9ucyAmXG4gIFNraXBTeW50aE9wdGlvbnMgJiB7XG4gICAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICAgIHRlcnJhZm9ybVBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICAgIG1pZ3JhdGVTdGF0ZT86IGJvb2xlYW47XG4gIH07XG5cbmV4cG9ydCB0eXBlIE11dGF0aW9uT3B0aW9ucyA9IE11bHRpcGxlU3RhY2tPcHRpb25zICZcbiAgU2tpcFByb3ZpZGVyTG9ja09wdGlvbnMgJlxuICBTa2lwU3ludGhPcHRpb25zICZcbiAgQXV0b0FwcHJvdmVPcHRpb25zICYge1xuICAgIHJlZnJlc2hPbmx5PzogYm9vbGVhbjtcbiAgICBpZ25vcmVNaXNzaW5nU3RhY2tEZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuICAgIHBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHRlcnJhZm9ybVBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICAgIG1pZ3JhdGVTdGF0ZT86IGJvb2xlYW47XG4gIH07XG5cbmV4cG9ydCB0eXBlIExvZ01lc3NhZ2UgPSB7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuICBtZXNzYWdlV2l0aENvbnN0cnVjdFBhdGg/OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn07XG5cbi8vIFN0b3JlcyBhIGxvZyB2YWx1ZSBvZiBhIGNlcnRhaW4gdHlwZSB1bnRpbCBpdCBjYW4gYmUgc2VudFxudHlwZSBCdWZmZXJlZDxULCBWPiA9IHtcbiAgY2I6IChpdGVtOiBUKSA9PiB2b2lkO1xuICB2YWx1ZTogVDtcbiAgdHlwZTogVjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1dhaXRpbmdGb3JVc2VySW5wdXRVcGRhdGUoXG4gIHVwZGF0ZTogUHJvamVjdFVwZGF0ZSB8IFN0YWNrVXBkYXRlLFxuKSB7XG4gIHJldHVybiBbXCJ3YWl0aW5nIGZvciBhcHByb3ZhbFwiLCBcIndhaXRpbmcgZm9yIHNlbnRpbmVsIG92ZXJyaWRlXCJdLmluY2x1ZGVzKFxuICAgIHVwZGF0ZS50eXBlLFxuICApO1xufVxuXG5leHBvcnQgdHlwZSBQcm9qZWN0RXZlbnQgPVxuICB8IEJ1ZmZlcmVkPFByb2plY3RVcGRhdGUsIFwicHJvamVjdFVwZGF0ZVwiPlxuICB8IEJ1ZmZlcmVkPExvZ01lc3NhZ2UsIFwibG9nTWVzc2FnZVwiPjtcbmV4cG9ydCB0eXBlIENka3RmUHJvamVjdE9wdGlvbnMgPSB7XG4gIHN5bnRoQ29tbWFuZDogc3RyaW5nO1xuICBvdXREaXI6IHN0cmluZztcbiAgb25VcGRhdGU6ICh1cGRhdGU6IFByb2plY3RVcGRhdGUpID0+IHZvaWQ7XG4gIG9uTG9nPzogKGxvZzogTG9nTWVzc2FnZSkgPT4gdm9pZDtcbiAgd29ya2luZ0RpcmVjdG9yeT86IHN0cmluZztcbiAgc3ludGhPcmlnaW4/OiBTeW50aE9yaWdpbjtcbiAgaGNsPzogYm9vbGVhbjtcbn07XG5leHBvcnQgY2xhc3MgQ2RrdGZQcm9qZWN0IHtcbiAgcHVibGljIHN0YWNrcz86IFN5bnRoZXNpemVkU3RhY2tbXTtcbiAgcHVibGljIGhhcmRBYm9ydDogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIHN5bnRoQ29tbWFuZDogc3RyaW5nO1xuICBwcml2YXRlIG91dERpcjogc3RyaW5nO1xuICBwcml2YXRlIHdvcmtpbmdEaXJlY3Rvcnk6IHN0cmluZztcbiAgcHJpdmF0ZSBvblVwZGF0ZTogKHVwZGF0ZTogUHJvamVjdFVwZGF0ZSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvbkxvZz86IChsb2c6IExvZ01lc3NhZ2UpID0+IHZvaWQ7XG4gIHByaXZhdGUgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsO1xuICBwcml2YXRlIHN5bnRoT3JpZ2luPzogU3ludGhPcmlnaW47XG4gIHByaXZhdGUgaGNsPzogYm9vbGVhbjtcblxuICAvLyBTZXQgZHVyaW5nIGRlcGxveSAvIGRlc3Ryb3lcbiAgcHVibGljIHN0YWNrc1RvUnVuOiBDZGt0ZlN0YWNrW10gPSBbXTtcbiAgLy8gVGhpcyBtZWFucyBzdGggZGlmZmVyZW50IGluIGRlcGxveSAvIGRlc3Ryb3lcbiAgcHJpdmF0ZSBzdG9wQWxsU3RhY2tzVGhhdENhbk5vdFJ1bldpdGhvdXQ6IChzdGFja05hbWU6IHN0cmluZykgPT4gdm9pZCA9XG4gICAgKCkgPT4ge307XG5cbiAgcHJpdmF0ZSBpb0hhbmRsZXI6IENka3RmUHJvamVjdElPSGFuZGxlcjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgc3ludGhDb21tYW5kLFxuICAgIG91dERpcixcbiAgICBvblVwZGF0ZSxcbiAgICBvbkxvZyxcbiAgICB3b3JraW5nRGlyZWN0b3J5ID0gcHJvY2Vzcy5jd2QoKSxcbiAgICBzeW50aE9yaWdpbixcbiAgICBoY2wgPSBmYWxzZSxcbiAgfTogQ2RrdGZQcm9qZWN0T3B0aW9ucykge1xuICAgIHRoaXMuc3ludGhDb21tYW5kID0gc3ludGhDb21tYW5kO1xuICAgIHRoaXMub3V0RGlyID0gb3V0RGlyO1xuICAgIHRoaXMud29ya2luZ0RpcmVjdG9yeSA9IHdvcmtpbmdEaXJlY3Rvcnk7XG4gICAgdGhpcy5vblVwZGF0ZSA9IG9uVXBkYXRlO1xuICAgIHRoaXMub25Mb2cgPSBvbkxvZztcbiAgICBjb25zdCBhYyA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLmFib3J0U2lnbmFsID0gYWMuc2lnbmFsO1xuICAgIHRoaXMuc3ludGhPcmlnaW4gPSBzeW50aE9yaWdpbjtcbiAgICB0aGlzLmhjbCA9XG4gICAgICBwcm9jZXNzLmVudi5TWU5USF9IQ0xfT1VUUFVUID09PSBcInRydWVcIiB8fFxuICAgICAgcHJvY2Vzcy5lbnYuU1lOVEhfSENMX09VVFBVVCA9PT0gXCIxXCIgfHxcbiAgICAgIGhjbDtcblxuICAgIHRoaXMuaGFyZEFib3J0ID0gYWMuYWJvcnQuYmluZChhYyk7XG4gICAgdGhpcy5pb0hhbmRsZXIgPSBuZXcgQ2RrdGZQcm9qZWN0SU9IYW5kbGVyKCk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BBbGxTdGFja3MoKSB7XG4gICAgdGhpcy5zdGFja3NUb1J1bi5mb3JFYWNoKChzdGFjaykgPT4gc3RhY2suc3RvcCgpKTtcbiAgICB0aGlzLmlvSGFuZGxlci5maWx0ZXJVc2VySW5wdXRFdmVudHNGcm9tQnVmZmVyKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVVzZXJVcGRhdGU8XG4gICAgVCBleHRlbmRzIE11bHRpU3RhY2tVcGRhdGUsXG4gICAgViBleHRlbmRzIFN0YWNrVXNlcklucHV0VXBkYXRlLFxuICA+KFxuICAgIHVwZGF0ZTogU3RhY2tVc2VySW5wdXRVcGRhdGUsXG4gICAgb3BlcmF0aW9uczogUmVjb3JkPHN0cmluZywgKHVwZGF0ZTogVikgPT4gdm9pZD4sXG4gICAgb3JpZ2luYWxDYWxsYmFjazogKHVwZGF0ZVRvU2VuZDogUHJvamVjdFVwZGF0ZSkgPT4gdm9pZCxcbiAgICBldmVudFR5cGU6IFRbXCJ0eXBlXCJdLFxuICApIHtcbiAgICBjb25zdCBjYWxsYmFja3MgPSAodXBkYXRlOiBWKSA9PlxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhvcGVyYXRpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAvLyBUaGlzIGlzIHBhc3NlZCBpbiB0byBtYWtlIHR5cGVzY3JpcHQgaGFwcHkgb25seVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgKF86IFYpID0+IHtcbiAgICAgICAgICAgICAgdmFsdWUodXBkYXRlKTtcblxuICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGRlZmVyIHRoZXNlIGNhbGxzIGZvciB0aGUgY2FzZSB0aGF0IGFwcHJvdmUoKSBpcyBpbnN0YW50bHkgaW52b2tlZFxuICAgICAgICAgICAgICAvLyBpbiB0aGUgbGlzdGVuZXIgdGhhdCByZWNlaXZlcyB0aGVzZSBjYWxsYmFja3MgYXMgaXQgb3RoZXJ3aXNlIHdvdWxkIGFscmVhZHlcbiAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBcIndhaXRpbmcgZm9yIHN0YWNrIGFwcHJvdmFsXCIgZXZlbnQgZnJvbSB0aGUgYnVmZmVyIGJlZm9yZSB3ZSBldmVuXG4gICAgICAgICAgICAgIC8vIHNldCB3YWl0aW5nRm9yQXBwcm92YWwgdG8gdHJ1ZSAoYXQgdGhlIGVuZCBvZiB0aGlzIGlmIHN0YXRlbWVudCkgd2hpY2ggcmVzdWx0c1xuICAgICAgICAgICAgICAvLyBpbiBidWZmZXJlZCB1cGRhdGVzIHdoaWNoIHdpbGwgbmV2ZXIgdW5ibG9ja1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgICAgICgpID0+IHRoaXMuaW9IYW5kbGVyLnJlc3VtZUFmdGVyVXNlcklucHV0KHVwZGF0ZS5zdGFja05hbWUpLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgIC8vIGFsd2F5cyBzZW5kIHRvIGJ1ZmZlciwgYXMgcmVzdW1lQWZ0ZXJVc2VySW5wdXQoKSBhbHdheXMgZXhwZWN0cyBhIG1hdGNoaW5nIGV2ZW50XG4gICAgdGhpcy5pb0hhbmRsZXIucHVzaEV2ZW50KHtcbiAgICAgIGNiOiBvcmlnaW5hbENhbGxiYWNrLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdHlwZTogZXZlbnRUeXBlLFxuICAgICAgICBzdGFja05hbWU6IHVwZGF0ZS5zdGFja05hbWUsXG4gICAgICAgIC4uLmNhbGxiYWNrcyh1cGRhdGUgYXMgViksXG4gICAgICB9IGFzIFQsXG4gICAgICB0eXBlOiBcInByb2plY3RVcGRhdGVcIixcbiAgICB9KTtcblxuICAgIC8vIGlmIHdlIGFyZW4ndCBhbHJlYWR5IHdhaXRpbmcsIHRoaXMgbmVlZHMgdG8gZ28gdG8gY2IoKSB0b28gdG8gYXJyaXZlIGF0IHRoZSBVSVxuICAgIGlmICghdGhpcy5pb0hhbmRsZXIuaXNXYWl0aW5nRm9yVXNlcklucHV0KCkpIHtcbiAgICAgIG9yaWdpbmFsQ2FsbGJhY2soe1xuICAgICAgICB0eXBlOiBldmVudFR5cGUsXG4gICAgICAgIHN0YWNrTmFtZTogdXBkYXRlLnN0YWNrTmFtZSxcbiAgICAgICAgLi4uY2FsbGJhY2tzKHVwZGF0ZSBhcyBWKSxcbiAgICAgIH0gYXMgVCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVVc2VySW5wdXRQcm9jZXNzKGNiOiAodXBkYXRlVG9TZW5kOiBQcm9qZWN0VXBkYXRlKSA9PiB2b2lkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHVwZGF0ZTpcbiAgICAgICAgfCBTdGFja1VwZGF0ZVxuICAgICAgICB8IFN0YWNrQXBwcm92YWxVcGRhdGVcbiAgICAgICAgfCBFeHRlcm5hbFN0YWNrQXBwcm92YWxVcGRhdGVcbiAgICAgICAgfCBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGVcbiAgICAgICAgfCBFeHRlcm5hbFN0YWNrU2VudGluZWxPdmVycmlkZVVwZGF0ZSxcbiAgICApID0+IHtcbiAgICAgIGlmICh1cGRhdGUudHlwZSA9PT0gXCJleHRlcm5hbCBzdGFjayBhcHByb3ZhbCByZXBseVwiKSB7XG4gICAgICAgIGlmICghdXBkYXRlLmFwcHJvdmVkKSB7XG4gICAgICAgICAgdGhpcy5zdG9wQWxsU3RhY2tzVGhhdENhbk5vdFJ1bldpdGhvdXQodXBkYXRlLnN0YWNrTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pb0hhbmRsZXIucmVzdW1lQWZ0ZXJVc2VySW5wdXQodXBkYXRlLnN0YWNrTmFtZSk7XG4gICAgICAgIHJldHVybjsgLy8gYWthIGRvbid0IHNlbmQgdGhpcyBldmVudCB0byBhbnkgYnVmZmVyXG4gICAgICB9XG4gICAgICBpZiAodXBkYXRlLnR5cGUgPT09IFwiZXh0ZXJuYWwgc3RhY2sgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIikge1xuICAgICAgICBpZiAoIXVwZGF0ZS5vdmVycmlkZGVuKSB7XG4gICAgICAgICAgdGhpcy5zdG9wQWxsU3RhY2tzVGhhdENhbk5vdFJ1bldpdGhvdXQodXBkYXRlLnN0YWNrTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pb0hhbmRsZXIucmVzdW1lQWZ0ZXJVc2VySW5wdXQodXBkYXRlLnN0YWNrTmFtZSk7XG4gICAgICAgIHJldHVybjsgLy8gYWthIGRvbid0IHNlbmQgdGhpcyBldmVudCB0byBhbnkgYnVmZmVyXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgdXBkYXRlLnR5cGUgPT09IFwid2FpdGluZyBmb3Igc3RhY2sgYXBwcm92YWxcIiB8fFxuICAgICAgICB1cGRhdGUudHlwZSA9PT0gXCJ3YWl0aW5nIGZvciBzdGFjayBzZW50aW5lbCBvdmVycmlkZVwiXG4gICAgICApIHtcbiAgICAgICAgaWYgKHVwZGF0ZS50eXBlID09PSBcIndhaXRpbmcgZm9yIHN0YWNrIGFwcHJvdmFsXCIpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVVzZXJVcGRhdGU8TXVsdGlTdGFja0FwcHJvdmFsVXBkYXRlLCBTdGFja0FwcHJvdmFsVXBkYXRlPihcbiAgICAgICAgICAgIHVwZGF0ZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXBwcm92ZTogKHVwZGF0ZSkgPT4gdXBkYXRlLmFwcHJvdmUoKSxcbiAgICAgICAgICAgICAgZGlzbWlzczogKHVwZGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHVwZGF0ZS5yZWplY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BBbGxTdGFja3NUaGF0Q2FuTm90UnVuV2l0aG91dCh1cGRhdGUuc3RhY2tOYW1lKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc3RvcDogKHVwZGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHVwZGF0ZS5yZWplY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BBbGxTdGFja3MoKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYixcbiAgICAgICAgICAgIFwid2FpdGluZyBmb3IgYXBwcm92YWxcIixcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHVwZGF0ZS50eXBlID09PSBcIndhaXRpbmcgZm9yIHN0YWNrIHNlbnRpbmVsIG92ZXJyaWRlXCIpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVVzZXJVcGRhdGU8XG4gICAgICAgICAgICBNdWx0aVN0YWNrU2VudGluZWxPdmVycmlkZVVwZGF0ZSxcbiAgICAgICAgICAgIFN0YWNrU2VudGluZWxPdmVycmlkZVVwZGF0ZVxuICAgICAgICAgID4oXG4gICAgICAgICAgICB1cGRhdGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG92ZXJyaWRlOiAodXBkYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgdXBkYXRlLm92ZXJyaWRlKCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHJlamVjdDogKHVwZGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHVwZGF0ZS5yZWplY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BBbGxTdGFja3NUaGF0Q2FuTm90UnVuV2l0aG91dCh1cGRhdGUuc3RhY2tOYW1lKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYixcbiAgICAgICAgICAgIFwid2FpdGluZyBmb3Igc2VudGluZWwgb3ZlcnJpZGVcIixcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pb0hhbmRsZXIuYXdhaXRVc2VySW5wdXQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmlvSGFuZGxlci5pc1dhaXRpbmdGb3JVc2VySW5wdXQoKSkge1xuICAgICAgICAgIHRoaXMuaW9IYW5kbGVyLnB1c2hFdmVudCh7XG4gICAgICAgICAgICBjYixcbiAgICAgICAgICAgIHZhbHVlOiB1cGRhdGUsXG4gICAgICAgICAgICB0eXBlOiBcInByb2plY3RVcGRhdGVcIixcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYih1cGRhdGUgYXMgUHJvamVjdFVwZGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldFN0YWNrRXhlY3V0b3IoXG4gICAgc3RhY2s6IFN5bnRoZXNpemVkU3RhY2ssXG4gICAgb3B0czogQXV0b0FwcHJvdmVPcHRpb25zID0ge30sXG4gICkge1xuICAgIGNvbnN0IGVuaGFuY2VMb2dNZXNzYWdlID0gY3JlYXRlRW5oYW5jZUxvZ01lc3NhZ2Uoc3RhY2spO1xuICAgIGNvbnN0IG9uTG9nID0gdGhpcy5pb0hhbmRsZXIuYnVmZmVyV2hpbGVBd2FpdGluZ1VzZXJJbnB1dCh0aGlzLm9uTG9nKTtcbiAgICByZXR1cm4gbmV3IENka3RmU3RhY2soe1xuICAgICAgLi4ub3B0cyxcbiAgICAgIHN0YWNrLFxuICAgICAgb25VcGRhdGU6IHRoaXMuaGFuZGxlVXNlcklucHV0UHJvY2Vzcyh0aGlzLm9uVXBkYXRlKSxcbiAgICAgIG9uTG9nOiBvbkxvZ1xuICAgICAgICA/ICh7IG1lc3NhZ2UgfSkgPT5cbiAgICAgICAgICAgIG9uTG9nKHtcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiBzdGFjay5uYW1lLFxuICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICBtZXNzYWdlV2l0aENvbnN0cnVjdFBhdGg6IGVuaGFuY2VMb2dNZXNzYWdlKG1lc3NhZ2UpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBhYm9ydFNpZ25hbDogdGhpcy5hYm9ydFNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3V0cHV0c0J5Q29uc3RydWN0SWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tzVG9SdW4ucmVkdWNlKFxuICAgICAgKGFjYywgc3RhY2spID0+ICh7XG4gICAgICAgIC4uLmFjYyxcbiAgICAgICAgLi4uc3RhY2sub3V0cHV0c0J5Q29uc3RydWN0SWQsXG4gICAgICB9KSxcbiAgICAgIHt9IGFzIE5lc3RlZFRlcnJhZm9ybU91dHB1dHMsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzeW50aChub0NvbG9yPzogYm9vbGVhbikge1xuICAgIHRoaXMub25VcGRhdGUoe1xuICAgICAgdHlwZTogXCJzeW50aGVzaXppbmdcIixcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0YWNrcyA9IGF3YWl0IFN5bnRoU3RhY2suc3ludGgoXG4gICAgICB0aGlzLmFib3J0U2lnbmFsIGFzIGFueSxcbiAgICAgIHRoaXMuc3ludGhDb21tYW5kLFxuICAgICAgdGhpcy5vdXREaXIsXG4gICAgICB0aGlzLndvcmtpbmdEaXJlY3RvcnksXG4gICAgICBmYWxzZSxcbiAgICAgIG5vQ29sb3IsXG4gICAgICB0aGlzLnN5bnRoT3JpZ2luLFxuICAgICAgdGhpcy5oY2wsXG4gICAgKTtcblxuICAgIHByaW50QW5ub3RhdGlvbnMoc3RhY2tzKTtcblxuICAgIHRoaXMub25VcGRhdGUoe1xuICAgICAgdHlwZTogXCJzeW50aGVzaXplZFwiLFxuICAgICAgc3RhY2tzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN0YWNrcztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWFkU3ludGhlc2l6ZWRTdGFja3MoKSB7XG4gICAgY29uc3Qgc3RhY2tzID0gYXdhaXQgU3ludGhTdGFjay5yZWFkU3ludGhlc2l6ZWRTdGFja3ModGhpcy5vdXREaXIpO1xuXG4gICAgcHJpbnRBbm5vdGF0aW9ucyhzdGFja3MpO1xuXG4gICAgdGhpcy5vblVwZGF0ZSh7XG4gICAgICB0eXBlOiBcInN5bnRoZXNpemVkXCIsXG4gICAgICBzdGFja3MsXG4gICAgfSk7XG4gICAgcmV0dXJuIHN0YWNrcztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkaWZmKG9wdHM6IERpZmZPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBzdGFja3MgPSBvcHRzLnNraXBTeW50aFxuICAgICAgPyBhd2FpdCB0aGlzLnJlYWRTeW50aGVzaXplZFN0YWNrcygpXG4gICAgICA6IGF3YWl0IHRoaXMuc3ludGgob3B0cy5ub0NvbG9yKTtcbiAgICBjb25zdCBzdGFjayA9IHRoaXMuZ2V0U3RhY2tFeGVjdXRvcihcbiAgICAgIGdldFNpbmdsZVN0YWNrKHN0YWNrcywgb3B0cz8uc3RhY2tOYW1lLCBcImRpZmZcIiksXG4gICAgKTtcbiAgICBhd2FpdCBzdGFjay5pbml0YWxpemVUZXJyYWZvcm0oXG4gICAgICBvcHRzLm5vQ29sb3IsXG4gICAgICBvcHRzLnNraXBQcm92aWRlckxvY2ssXG4gICAgICBvcHRzLm1pZ3JhdGVTdGF0ZSxcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHN0YWNrLmRpZmYob3B0cyk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBFcnJvcnMuRXh0ZXJuYWwoXG4gICAgICAgIGBTdGFjayBmYWlsZWQgdG8gcGxhbjogJHtzdGFjay5zdGFjay5uYW1lfS4gUGxlYXNlIGNoZWNrIHRoZSBsb2dzIGZvciBtb3JlIGluZm9ybWF0aW9uLmAsXG4gICAgICAgIGUsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoc3RhY2suZXJyb3IpIHtcbiAgICAgIHRocm93IEVycm9ycy5FeHRlcm5hbChcbiAgICAgICAgYFN0YWNrIGZhaWxlZCB0byBwbGFuOiAke3N0YWNrLnN0YWNrLm5hbWV9LiBQbGVhc2UgY2hlY2sgdGhlIGxvZ3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uYCxcbiAgICAgICAgbmV3IEVycm9yKHN0YWNrLmVycm9yKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucHJvamVjdFRlbGVtZXRyeShcImRpZmZcIiwge1xuICAgICAgICBzdGFja01ldGFkYXRhOiBzdGFja3MubWFwKChzdGFjaykgPT5cbiAgICAgICAgICBKU09OLnBhcnNlKHN0YWNrLmNvbnRlbnQpW1wiLy9cIl1cbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShzdGFjay5jb250ZW50KVtcIi8vXCJdLm1ldGFkYXRhXG4gICAgICAgICAgICA6IHt9LFxuICAgICAgICApLFxuICAgICAgICBlcnJvcnM6IHN0YWNrLmVycm9yLFxuICAgICAgICByZXF1aXJlZFByb3ZpZGVyczogc3RhY2tzLm1hcCgoc3RhY2s6IGFueSkgPT5cbiAgICAgICAgICBKU09OLnBhcnNlKHN0YWNrLmNvbnRlbnQpW1widGVycmFmb3JtXCJdXG4gICAgICAgICAgICA/IEpTT04ucGFyc2Uoc3RhY2suY29udGVudClbXCJ0ZXJyYWZvcm1cIl0ucmVxdWlyZWRfcHJvdmlkZXJzXG4gICAgICAgICAgICA6IHt9LFxuICAgICAgICApLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiRmFpbGVkIHRvIHNlbmQgdGVsZW1ldHJ5XCIsIGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZShcbiAgICBtZXRob2Q6IFwiZGVwbG95XCIgfCBcImRlc3Ryb3lcIixcbiAgICBuZXh0OiAoKSA9PiBQcm9taXNlPENka3RmU3RhY2sgfCB1bmRlZmluZWQ+LFxuICAgIG9wdHM6IE11dGF0aW9uT3B0aW9ucyxcbiAgKSB7XG4gICAgLy8gV2Ugb25seSBzdXBwb3J0IHJlZnJlc2ggb25seSBvbiBkZXBsb3ksIGEgYml0IG9mIGEgbGVha3kgYWJzdHJhY3Rpb24gaGVyZVxuICAgIGlmIChvcHRzLnJlZnJlc2hPbmx5ICYmIG1ldGhvZCAhPT0gXCJkZXBsb3lcIikge1xuICAgICAgdGhyb3cgRXJyb3JzLkludGVybmFsKGBSZWZyZXNoIG9ubHkgaXMgb25seSBzdXBwb3J0ZWQgb24gZGVwbG95YCk7XG4gICAgfVxuICAgIGNvbnN0IG1heFBhcmFsbGVsUnVucyA9XG4gICAgICAhb3B0cy5wYXJhbGxlbGlzbSB8fCBvcHRzLnBhcmFsbGVsaXNtIDwgMCA/IEluZmluaXR5IDogb3B0cy5wYXJhbGxlbGlzbTtcbiAgICBjb25zdCBhbGxFeGVjdXRpb25zID0gW107XG5cbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemVTdGFja3NUb1J1bkluU2VyaWFsKFxuICAgICAgb3B0cy5ub0NvbG9yLFxuICAgICAgb3B0cy5za2lwUHJvdmlkZXJMb2NrLFxuICAgICAgb3B0cy5taWdyYXRlU3RhdGUsXG4gICAgKTtcbiAgICB3aGlsZSAodGhpcy5zdGFja3NUb1J1bi5maWx0ZXIoKHN0YWNrKSA9PiBzdGFjay5pc1BlbmRpbmcpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHJ1bm5pbmdTdGFja3MgPSB0aGlzLnN0YWNrc1RvUnVuLmZpbHRlcigoc3RhY2spID0+IHN0YWNrLmlzUnVubmluZyk7XG4gICAgICBpZiAocnVubmluZ1N0YWNrcy5sZW5ndGggPj0gbWF4UGFyYWxsZWxSdW5zKSB7XG4gICAgICAgIGF3YWl0IFByb21pc2UucmFjZShydW5uaW5nU3RhY2tzLm1hcCgocykgPT4gcy5jdXJyZW50V29ya1Byb21pc2UpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBuZXh0UnVubmluZ0V4ZWN1dG9yID0gYXdhaXQgbmV4dCgpO1xuICAgICAgICBpZiAoIW5leHRSdW5uaW5nRXhlY3V0b3IpIHtcbiAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgaGF2ZSBubyBwZW5kaW5nIHN0YWNrcywgYnV0IHdlIGFsc28gY2FuIG5vdCBmaW5kIGEgbmV3IGV4ZWN1dG9yXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvbWlzZSA9XG4gICAgICAgICAgbWV0aG9kID09PSBcImRlcGxveVwiXG4gICAgICAgICAgICA/IG5leHRSdW5uaW5nRXhlY3V0b3IuZGVwbG95KG9wdHMpXG4gICAgICAgICAgICA6IG5leHRSdW5uaW5nRXhlY3V0b3IuZGVzdHJveShvcHRzKTtcblxuICAgICAgICBhbGxFeGVjdXRpb25zLnB1c2gocHJvbWlzZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGF3YWl0IG5leHQoKSB0aHJldyBhbiBlcnJvciBiZWNhdXNlIGEgc3RhY2sgZmFpbGVkIHRvIGFwcGx5L2Rlc3Ryb3lcbiAgICAgICAgLy8gd2FpdCBmb3IgYWxsIG90aGVyIGN1cnJlbnRseSBydW5uaW5nIHN0YWNrcyB0byBjb21wbGV0ZSBiZWZvcmUgcHJvcGFnYXRpbmcgdGhhdCBlcnJvclxuICAgICAgICBsb2dnZXIuZGVidWcoXCJFbmNvdW50ZXJlZCBhbiBlcnJvciB3aGlsZSBhd2FpdGluZyBzdGFjayB0byBmaW5pc2hcIiwgZSk7XG4gICAgICAgIGNvbnN0IG9wZW5TdGFja3MgPSB0aGlzLnN0YWNrc1RvUnVuLmZpbHRlcihcbiAgICAgICAgICAoZXgpID0+IGV4LmN1cnJlbnRXb3JrUHJvbWlzZSxcbiAgICAgICAgKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiV2FpdGluZyBmb3Igc3RpbGwgcnVubmluZyBzdGFja3MgdG8gZmluaXNoOlwiLCBvcGVuU3RhY2tzKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKG9wZW5TdGFja3MubWFwKChleCkgPT4gZXguY3VycmVudFdvcmtQcm9taXNlKSk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBcIkRvbmUgd2FpdGluZyBmb3Igc3RpbGwgcnVubmluZyBzdGFja3MuIEFsbCBwZW5kaW5nIHdvcmsgZmluaXNoZWRcIixcbiAgICAgICAgKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gV2UgZW5kIHRoZSBsb29wIHdoZW4gYWxsIHN0YWNrcyBhcmUgc3RhcnRlZCwgbm93IHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlbSB0byBiZSBkb25lXG4gICAgLy8gV2Ugd2FpdCBmb3IgYWxsIHdvcmsgdG8gZmluaXNoIGV2ZW4gaWYgb25lIG9mIHRoZSBwcm9taXNlcyB0aHJldyBhbiBlcnJvci5cbiAgICBhd2FpdCBlbnN1cmVBbGxTZXR0bGVkQmVmb3JlVGhyb3dpbmcoXG4gICAgICBQcm9taXNlLmFsbChhbGxFeGVjdXRpb25zKSxcbiAgICAgIGFsbEV4ZWN1dGlvbnMsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZXBsb3kob3B0czogTXV0YXRpb25PcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBzdGFja3MgPSBvcHRzLnNraXBTeW50aFxuICAgICAgPyBhd2FpdCB0aGlzLnJlYWRTeW50aGVzaXplZFN0YWNrcygpXG4gICAgICA6IGF3YWl0IHRoaXMuc3ludGgob3B0cy5ub0NvbG9yKTtcbiAgICBjb25zdCBzdGFja3NUb1J1biA9IGdldE11bHRpcGxlU3RhY2tzKHN0YWNrcywgb3B0cy5zdGFja05hbWVzLCBcImRlcGxveVwiKTtcbiAgICBpZiAoIW9wdHMuaWdub3JlTWlzc2luZ1N0YWNrRGVwZW5kZW5jaWVzKSB7XG4gICAgICBjaGVja0lmQWxsRGVwZW5kZW5jaWVzQXJlSW5jbHVkZWQoc3RhY2tzVG9SdW4pO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcEFsbFN0YWNrc1RoYXRDYW5Ob3RSdW5XaXRob3V0ID0gKHN0YWNrTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBmaW5kQWxsTmVzdGVkRGVwZW5kYW50U3RhY2tzKHRoaXMuc3RhY2tzVG9SdW4sIHN0YWNrTmFtZSkuZm9yRWFjaChcbiAgICAgICAgKHN0YWNrKSA9PiBzdGFjay5zdG9wKCksXG4gICAgICApO1xuICAgIH07XG5cbiAgICB0aGlzLnN0YWNrc1RvUnVuID0gc3RhY2tzVG9SdW4ubWFwKChzdGFjaykgPT5cbiAgICAgIHRoaXMuZ2V0U3RhY2tFeGVjdXRvcihzdGFjaywgb3B0cyksXG4gICAgKTtcblxuICAgIGNvbnN0IG5leHQgPSBvcHRzLmlnbm9yZU1pc3NpbmdTdGFja0RlcGVuZGVuY2llc1xuICAgICAgPyAoKSA9PlxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICAgIHRoaXMuc3RhY2tzVG9SdW4uZmlsdGVyKChzdGFjaykgPT4gc3RhY2suaXNQZW5kaW5nKVswXSxcbiAgICAgICAgICApXG4gICAgICA6ICgpID0+IGdldFN0YWNrV2l0aE5vVW5tZXREZXBlbmRlbmNpZXModGhpcy5zdGFja3NUb1J1bik7XG5cbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGUoXCJkZXBsb3lcIiwgbmV4dCwgb3B0cyk7XG5cbiAgICBjb25zdCB1bnByb2Nlc3NlZFN0YWNrcyA9IHRoaXMuc3RhY2tzVG9SdW4uZmlsdGVyKFxuICAgICAgKGV4ZWN1dG9yKSA9PiBleGVjdXRvci5pc1BlbmRpbmcsXG4gICAgKTtcbiAgICBpZiAodW5wcm9jZXNzZWRTdGFja3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgRXJyb3JzLkV4dGVybmFsKFxuICAgICAgICBgU29tZSBzdGFja3MgZmFpbGVkIHRvIGRlcGxveTogJHt1bnByb2Nlc3NlZFN0YWNrc1xuICAgICAgICAgIC5tYXAoKHMpID0+IHMuc3RhY2submFtZSlcbiAgICAgICAgICAuam9pbihcIiwgXCIpfS4gUGxlYXNlIGNoZWNrIHRoZSBsb2dzIGZvciBtb3JlIGluZm9ybWF0aW9uLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnByb2plY3RUZWxlbWV0cnkoXCJkZXBsb3lcIiwge1xuICAgICAgICBzdGFja01ldGFkYXRhOiBzdGFja3NUb1J1bi5tYXAoKHN0YWNrKSA9PlxuICAgICAgICAgIEpTT04ucGFyc2Uoc3RhY2suY29udGVudClbXCIvL1wiXVxuICAgICAgICAgICAgPyBKU09OLnBhcnNlKHN0YWNrLmNvbnRlbnQpW1wiLy9cIl0ubWV0YWRhdGFcbiAgICAgICAgICAgIDoge30sXG4gICAgICAgICksXG4gICAgICAgIGZhaWxlZFN0YWNrczogdW5wcm9jZXNzZWRTdGFja3MubWFwKChzdGFjaykgPT4gc3RhY2suZXJyb3IpLFxuICAgICAgICByZXF1aXJlZFByb3ZpZGVyczogc3RhY2tzVG9SdW4ubWFwKChzdGFjazogYW55KSA9PlxuICAgICAgICAgIEpTT04ucGFyc2Uoc3RhY2suY29udGVudClbXCJ0ZXJyYWZvcm1cIl1cbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShzdGFjay5jb250ZW50KVtcInRlcnJhZm9ybVwiXS5yZXF1aXJlZF9wcm92aWRlcnNcbiAgICAgICAgICAgIDoge30sXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZGVidWcoXCJGYWlsZWQgdG8gc2VuZCB0ZWxlbWV0cnlcIiwgZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3kob3B0czogTXV0YXRpb25PcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBzdGFja3MgPSBvcHRzLnNraXBTeW50aFxuICAgICAgPyBhd2FpdCB0aGlzLnJlYWRTeW50aGVzaXplZFN0YWNrcygpXG4gICAgICA6IGF3YWl0IHRoaXMuc3ludGgob3B0cy5ub0NvbG9yKTtcbiAgICBjb25zdCBzdGFja3NUb1J1biA9IGdldE11bHRpcGxlU3RhY2tzKHN0YWNrcywgb3B0cy5zdGFja05hbWVzLCBcImRlc3Ryb3lcIik7XG5cbiAgICBpZiAoIW9wdHMuaWdub3JlTWlzc2luZ1N0YWNrRGVwZW5kZW5jaWVzKSB7XG4gICAgICBjaGVja0lmQWxsRGVwZW5kYW50c0FyZUluY2x1ZGVkKHN0YWNrc1RvUnVuLCBzdGFja3MpO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcEFsbFN0YWNrc1RoYXRDYW5Ob3RSdW5XaXRob3V0ID0gKHN0YWNrTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzdGFja0V4ZWN1dG9yID0gdGhpcy5zdGFja3NUb1J1bi5maW5kKFxuICAgICAgICAocykgPT4gcy5zdGFjay5uYW1lID09PSBzdGFja05hbWUsXG4gICAgICApO1xuICAgICAgaWYgKCFzdGFja0V4ZWN1dG9yKSB7XG4gICAgICAgIHRocm93IEVycm9ycy5JbnRlcm5hbChcbiAgICAgICAgICBgQ291bGQgbm90IGZpbmQgc3RhY2sgXCIke3N0YWNrTmFtZX1cIiB0aGF0IHdhcyBzdG9wcGVkYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgc3RhY2tFeGVjdXRvci5zdGFjay5kZXBlbmRlbmNpZXMuZm9yRWFjaCgoZGVwZW5kYW50KSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcEFsbFN0YWNrc1RoYXRDYW5Ob3RSdW5XaXRob3V0KGRlcGVuZGFudCk7XG5cbiAgICAgICAgY29uc3QgZGVwZW5kYW50U3RhY2sgPSB0aGlzLnN0YWNrc1RvUnVuLmZpbmQoXG4gICAgICAgICAgKHMpID0+IHMuc3RhY2submFtZSA9PT0gZGVwZW5kYW50LFxuICAgICAgICApO1xuICAgICAgICBpZiAoIWRlcGVuZGFudFN0YWNrKSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3JzLkludGVybmFsKFxuICAgICAgICAgICAgYENvdWxkIG5vdCBmaW5kIHN0YWNrIFwiJHtkZXBlbmRhbnR9XCIgdGhhdCB3YXMgc3RvcHBlZGAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlcGVuZGFudFN0YWNrLnN0b3AoKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgdGhpcy5zdGFja3NUb1J1biA9IHN0YWNrc1RvUnVuLm1hcCgoc3RhY2spID0+XG4gICAgICB0aGlzLmdldFN0YWNrRXhlY3V0b3Ioc3RhY2ssIG9wdHMpLFxuICAgICk7XG4gICAgY29uc3QgbmV4dCA9IG9wdHMuaWdub3JlTWlzc2luZ1N0YWNrRGVwZW5kZW5jaWVzXG4gICAgICA/ICgpID0+XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgdGhpcy5zdGFja3NUb1J1bi5maWx0ZXIoXG4gICAgICAgICAgICAgIChzdGFjaykgPT4gc3RhY2suY3VycmVudFN0YXRlICE9PSBcImRvbmVcIixcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgKVxuICAgICAgOiAoKSA9PiBnZXRTdGFja1dpdGhOb1VubWV0RGVwZW5kYW50cyh0aGlzLnN0YWNrc1RvUnVuKTtcblxuICAgIGF3YWl0IHRoaXMuZXhlY3V0ZShcImRlc3Ryb3lcIiwgbmV4dCwgb3B0cyk7XG5cbiAgICBjb25zdCB1bnByb2Nlc3NlZFN0YWNrcyA9IHRoaXMuc3RhY2tzVG9SdW4uZmlsdGVyKFxuICAgICAgKGV4ZWN1dG9yKSA9PiBleGVjdXRvci5pc1BlbmRpbmcsXG4gICAgKTtcbiAgICBpZiAodW5wcm9jZXNzZWRTdGFja3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgRXJyb3JzLkV4dGVybmFsKFxuICAgICAgICBgU29tZSBzdGFja3MgZmFpbGVkIHRvIGRlc3Ryb3k6ICR7dW5wcm9jZXNzZWRTdGFja3NcbiAgICAgICAgICAubWFwKChzKSA9PiBzLnN0YWNrLm5hbWUpXG4gICAgICAgICAgLmpvaW4oXCIsIFwiKX0uIFBsZWFzZSBjaGVjayB0aGUgbG9ncyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5wcm9qZWN0VGVsZW1ldHJ5KFwiZGVzdHJveVwiLCB7XG4gICAgICAgIHN0YWNrTWV0YWRhdGE6IHN0YWNrc1RvUnVuLm1hcCgoc3RhY2spID0+XG4gICAgICAgICAgSlNPTi5wYXJzZShzdGFjay5jb250ZW50KVtcIi8vXCJdXG4gICAgICAgICAgICA/IEpTT04ucGFyc2Uoc3RhY2suY29udGVudClbXCIvL1wiXS5tZXRhZGF0YVxuICAgICAgICAgICAgOiB7fSxcbiAgICAgICAgKSxcbiAgICAgICAgZmFpbGVkU3RhY2tzOiB1bnByb2Nlc3NlZFN0YWNrcy5tYXAoKHN0YWNrKSA9PiBzdGFjay5lcnJvciksXG4gICAgICAgIHJlcXVpcmVkUHJvdmlkZXJzOiBzdGFja3NUb1J1bi5tYXAoKHN0YWNrOiBhbnkpID0+XG4gICAgICAgICAgSlNPTi5wYXJzZShzdGFjay5jb250ZW50KVtcInRlcnJhZm9ybVwiXVxuICAgICAgICAgICAgPyBKU09OLnBhcnNlKHN0YWNrLmNvbnRlbnQpW1widGVycmFmb3JtXCJdLnJlcXVpcmVkX3Byb3ZpZGVyc1xuICAgICAgICAgICAgOiB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcIkZhaWxlZCB0byBzZW5kIHRlbGVtZXRyeVwiLCBlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJvamVjdFRlbGVtZXRyeShjb21tYW5kOiBzdHJpbmcsIHBheWxvYWQ6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlYWRDb25maWdTeW5jKCk7XG4gICAgYXdhaXQgc2VuZFRlbGVtZXRyeShjb21tYW5kLCB7XG4gICAgICAuLi5wYXlsb2FkLFxuICAgICAgbGFuZ3VhZ2U6IGNvbmZpZy5sYW5ndWFnZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmZXRjaE91dHB1dHMob3B0czogRmV0Y2hPdXRwdXRPcHRpb25zKSB7XG4gICAgY29uc3Qgc3RhY2tzID0gb3B0cy5za2lwU3ludGhcbiAgICAgID8gYXdhaXQgdGhpcy5yZWFkU3ludGhlc2l6ZWRTdGFja3MoKVxuICAgICAgOiBhd2FpdCB0aGlzLnN5bnRoKCk7XG5cbiAgICBjb25zdCBzdGFja3NUb1J1biA9IGdldE11bHRpcGxlU3RhY2tzKFxuICAgICAgc3RhY2tzLFxuICAgICAgb3B0cy5zdGFja05hbWVzIHx8IFtdLFxuICAgICAgXCJkZXBsb3lcIixcbiAgICApO1xuXG4gICAgaWYgKHN0YWNrc1RvUnVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc3RhY2tzIHRvIGZldGNoIG91dHB1dHMgZm9yIHNwZWNpZmllZFwiKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YWNrc1RvUnVuID0gc3RhY2tzVG9SdW4ubWFwKChzdGFjaykgPT5cbiAgICAgIC8vIE9wdGlvbnMgYXJlIGVtcHR5LCBiZWNhdXNlIE11bHRpcGxlU3RhY2tPcHRpb25zIGRvZXNuJ3QgaGF2ZSBhbnkgcmVsZXZhbnRcbiAgICAgIC8vIG9wdGlvbnMgZm9yIGBnZXRTdGFja0V4ZWN1dG9yYCwgaGVuY2UgZGVmYXVsdHMgYXJlIGZpbmVcbiAgICAgIHRoaXMuZ2V0U3RhY2tFeGVjdXRvcihzdGFjaywge30pLFxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemVTdGFja3NUb1J1bkluU2VyaWFsKHVuZGVmaW5lZCwgb3B0cy5za2lwUHJvdmlkZXJMb2NrKTtcbiAgICBjb25zdCBvdXRwdXRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0aGlzLnN0YWNrc1RvUnVuLm1hcChhc3luYyAocykgPT4ge1xuICAgICAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBzLmZldGNoT3V0cHV0cygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFtzLnN0YWNrLm5hbWVdOiBvdXRwdXQsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgcmV0dXJuIG91dHB1dHMucmVkdWNlKFxuICAgICAgKGFjYywgY3VycikgPT4gKHsgLi4uYWNjLCAuLi5jdXJyIH0pLFxuICAgICAge30sXG4gICAgKSBhcyBOZXN0ZWRUZXJyYWZvcm1PdXRwdXRzO1xuICB9XG5cbiAgLy8gU2VyaWFsbHkgcnVuIHRlcnJhZm9ybSBpbml0IHRvIHByb2hpYml0IHRleHQgZmlsZSBidXN5IGVycm9ycyBmb3IgdGhlIGNhY2hlIGZpbGVzXG4gIHByaXZhdGUgYXN5bmMgaW5pdGlhbGl6ZVN0YWNrc1RvUnVuSW5TZXJpYWwoXG4gICAgbm9Db2xvcj86IGJvb2xlYW4sXG4gICAgc2tpcFByb3ZpZGVyTG9jaz86IGJvb2xlYW4sXG4gICAgbWlncmF0ZVN0YXRlPzogYm9vbGVhbixcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBzdGFjayBvZiB0aGlzLnN0YWNrc1RvUnVuKSB7XG4gICAgICBhd2FpdCBzdGFjay5pbml0YWxpemVUZXJyYWZvcm0obm9Db2xvciwgc2tpcFByb3ZpZGVyTG9jaywgbWlncmF0ZVN0YXRlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,GAChB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,GAChB,MAAM,oBAAoB,CAAC"}
package/src/lib/index.js CHANGED
@@ -4,7 +4,6 @@
4
4
  // This is the programmatic entrypoint that the CLI uses.
5
5
  // While this is the closest we have to a programmatic API, please understand that the interfaces in this file are not stable.
6
6
  // Convert is not included here since it's published independently as @cdktn/hcl2cdk.
7
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
8
7
  Object.defineProperty(exports, "__esModule", { value: true });
9
8
  exports.PlannedResourceAction = exports.isTerraformOutput = exports.DeployingResourceApplyState = exports.normalizeOutputPath = exports.saveOutputs = exports.watch = exports.CdktfProject = exports.runGetInDir = exports.GetStatus = exports.get = exports.templatesDir = exports.templates = exports.init = exports.CdktfStack = exports.initializErrorReporting = exports.CdktfConfig = exports.TerraformCli = exports.providerAdd = exports.getAllPrebuiltProviders = exports.ProviderConstraint = exports.DependencyManager = void 0;
10
9
  var dependency_manager_1 = require("./dependencies/dependency-manager");
@@ -41,4 +40,4 @@ var terraform_1 = require("./models/terraform");
41
40
  Object.defineProperty(exports, "DeployingResourceApplyState", { enumerable: true, get: function () { return terraform_1.DeployingResourceApplyState; } });
42
41
  Object.defineProperty(exports, "isTerraformOutput", { enumerable: true, get: function () { return terraform_1.isTerraformOutput; } });
43
42
  Object.defineProperty(exports, "PlannedResourceAction", { enumerable: true, get: function () { return terraform_1.PlannedResourceAction; } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsOEhBQThIO0FBQzlILHFGQUFxRjtBQUNyRiw2REFBNkQ7OztBQUU3RCx3RUFHMkM7QUFGekMsdUhBQUEsaUJBQWlCLE9BQUE7QUFDakIsd0hBQUEsa0JBQWtCLE9BQUE7QUFFcEIsd0VBQTRFO0FBQW5FLDZIQUFBLHVCQUF1QixPQUFBO0FBQ2hDLCtDQUE2QztBQUFwQywyR0FBQSxXQUFXLE9BQUE7QUFDcEIsd0RBQXNEO0FBQTdDLDZHQUFBLFlBQVksT0FBQTtBQUNyQiwrQ0FBNkM7QUFBcEMsMkdBQUEsV0FBVyxPQUFBO0FBQ3BCLHFEQUE0RDtBQUFuRCwwSEFBQSx1QkFBdUIsT0FBQTtBQUNoQyw2Q0FBMkM7QUFBbEMseUdBQUEsVUFBVSxPQUFBO0FBQ25CLCtCQUEwRTtBQUFqRSw0RkFBQSxJQUFJLE9BQUE7QUFBcUIsaUdBQUEsU0FBUyxPQUFBO0FBQUUsb0dBQUEsWUFBWSxPQUFBO0FBQ3pELDZCQUFvRDtBQUEzQywwRkFBQSxHQUFHLE9BQUE7QUFBRSxnR0FBQSxTQUFTLE9BQUE7QUFBRSxrR0FBQSxXQUFXLE9BQUE7QUFFcEMsaURBQThEO0FBQXJELDZHQUFBLFlBQVksT0FBQTtBQUNyQixpQ0FBcUQ7QUFBNUMsOEZBQUEsS0FBSyxPQUFBO0FBQ2QsbUNBSWtCO0FBRmhCLHFHQUFBLFdBQVcsT0FBQTtBQUNYLDZHQUFBLG1CQUFtQixPQUFBO0FBRXJCLGdEQU00QjtBQUoxQix3SEFBQSwyQkFBMkIsT0FBQTtBQUMzQiw4R0FBQSxpQkFBaUIsT0FBQTtBQUNqQixrSEFBQSxxQkFBcUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4vLyBUaGlzIGlzIHRoZSBwcm9ncmFtbWF0aWMgZW50cnlwb2ludCB0aGF0IHRoZSBDTEkgdXNlcy5cbi8vIFdoaWxlIHRoaXMgaXMgdGhlIGNsb3Nlc3Qgd2UgaGF2ZSB0byBhIHByb2dyYW1tYXRpYyBBUEksIHBsZWFzZSB1bmRlcnN0YW5kIHRoYXQgdGhlIGludGVyZmFjZXMgaW4gdGhpcyBmaWxlIGFyZSBub3Qgc3RhYmxlLlxuLy8gQ29udmVydCBpcyBub3QgaW5jbHVkZWQgaGVyZSBzaW5jZSBpdCdzIHB1Ymxpc2hlZCBpbmRlcGVuZGVudGx5IGFzIEBjZGt0bi9oY2wyY2RrLlxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAqL1xuXG5leHBvcnQge1xuICBEZXBlbmRlbmN5TWFuYWdlcixcbiAgUHJvdmlkZXJDb25zdHJhaW50LFxufSBmcm9tIFwiLi9kZXBlbmRlbmNpZXMvZGVwZW5kZW5jeS1tYW5hZ2VyXCI7XG5leHBvcnQgeyBnZXRBbGxQcmVidWlsdFByb3ZpZGVycyB9IGZyb20gXCIuL2RlcGVuZGVuY2llcy9wcmVidWlsdC1wcm92aWRlcnNcIjtcbmV4cG9ydCB7IHByb3ZpZGVyQWRkIH0gZnJvbSBcIi4vcHJvdmlkZXItYWRkXCI7XG5leHBvcnQgeyBUZXJyYWZvcm1DbGkgfSBmcm9tIFwiLi9tb2RlbHMvdGVycmFmb3JtLWNsaVwiO1xuZXhwb3J0IHsgQ2RrdGZDb25maWcgfSBmcm9tIFwiLi9jZGt0Zi1jb25maWdcIjtcbmV4cG9ydCB7IGluaXRpYWxpekVycm9yUmVwb3J0aW5nIH0gZnJvbSBcIi4vZXJyb3ItcmVwb3J0aW5nXCI7XG5leHBvcnQgeyBDZGt0ZlN0YWNrIH0gZnJvbSBcIi4vY2RrdGYtc3RhY2tcIjtcbmV4cG9ydCB7IGluaXQsIFByb2plY3QsIEluaXRBcmdzLCB0ZW1wbGF0ZXMsIHRlbXBsYXRlc0RpciB9IGZyb20gXCIuL2luaXRcIjtcbmV4cG9ydCB7IGdldCwgR2V0U3RhdHVzLCBydW5HZXRJbkRpciB9IGZyb20gXCIuL2dldFwiO1xuZXhwb3J0IHsgU3ludGhlc2l6ZWRTdGFjayB9IGZyb20gXCIuL3N5bnRoLXN0YWNrXCI7XG5leHBvcnQgeyBDZGt0ZlByb2plY3QsIFByb2plY3RVcGRhdGUgfSBmcm9tIFwiLi9jZGt0Zi1wcm9qZWN0XCI7XG5leHBvcnQgeyB3YXRjaCwgU3RhdGUgYXMgV2F0Y2hTdGF0ZSB9IGZyb20gXCIuL3dhdGNoXCI7XG5leHBvcnQge1xuICBOZXN0ZWRUZXJyYWZvcm1PdXRwdXRzLFxuICBzYXZlT3V0cHV0cyxcbiAgbm9ybWFsaXplT3V0cHV0UGF0aCxcbn0gZnJvbSBcIi4vb3V0cHV0XCI7XG5leHBvcnQge1xuICBEZXBsb3lpbmdSZXNvdXJjZSxcbiAgRGVwbG95aW5nUmVzb3VyY2VBcHBseVN0YXRlLFxuICBpc1RlcnJhZm9ybU91dHB1dCxcbiAgUGxhbm5lZFJlc291cmNlQWN0aW9uLFxuICBUZXJyYWZvcm1PdXRwdXQsXG59IGZyb20gXCIuL21vZGVscy90ZXJyYWZvcm1cIjtcbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsOEhBQThIO0FBQzlILHFGQUFxRjs7O0FBRXJGLHdFQUcyQztBQUZ6Qyx1SEFBQSxpQkFBaUIsT0FBQTtBQUNqQix3SEFBQSxrQkFBa0IsT0FBQTtBQUVwQix3RUFBNEU7QUFBbkUsNkhBQUEsdUJBQXVCLE9BQUE7QUFDaEMsK0NBQTZDO0FBQXBDLDJHQUFBLFdBQVcsT0FBQTtBQUNwQix3REFBc0Q7QUFBN0MsNkdBQUEsWUFBWSxPQUFBO0FBQ3JCLCtDQUE2QztBQUFwQywyR0FBQSxXQUFXLE9BQUE7QUFDcEIscURBQTREO0FBQW5ELDBIQUFBLHVCQUF1QixPQUFBO0FBQ2hDLDZDQUEyQztBQUFsQyx5R0FBQSxVQUFVLE9BQUE7QUFDbkIsK0JBQTBFO0FBQWpFLDRGQUFBLElBQUksT0FBQTtBQUFxQixpR0FBQSxTQUFTLE9BQUE7QUFBRSxvR0FBQSxZQUFZLE9BQUE7QUFDekQsNkJBQW9EO0FBQTNDLDBGQUFBLEdBQUcsT0FBQTtBQUFFLGdHQUFBLFNBQVMsT0FBQTtBQUFFLGtHQUFBLFdBQVcsT0FBQTtBQUVwQyxpREFBOEQ7QUFBckQsNkdBQUEsWUFBWSxPQUFBO0FBQ3JCLGlDQUFxRDtBQUE1Qyw4RkFBQSxLQUFLLE9BQUE7QUFDZCxtQ0FJa0I7QUFGaEIscUdBQUEsV0FBVyxPQUFBO0FBQ1gsNkdBQUEsbUJBQW1CLE9BQUE7QUFFckIsZ0RBTTRCO0FBSjFCLHdIQUFBLDJCQUEyQixPQUFBO0FBQzNCLDhHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLGtIQUFBLHFCQUFxQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbi8vIFRoaXMgaXMgdGhlIHByb2dyYW1tYXRpYyBlbnRyeXBvaW50IHRoYXQgdGhlIENMSSB1c2VzLlxuLy8gV2hpbGUgdGhpcyBpcyB0aGUgY2xvc2VzdCB3ZSBoYXZlIHRvIGEgcHJvZ3JhbW1hdGljIEFQSSwgcGxlYXNlIHVuZGVyc3RhbmQgdGhhdCB0aGUgaW50ZXJmYWNlcyBpbiB0aGlzIGZpbGUgYXJlIG5vdCBzdGFibGUuXG4vLyBDb252ZXJ0IGlzIG5vdCBpbmNsdWRlZCBoZXJlIHNpbmNlIGl0J3MgcHVibGlzaGVkIGluZGVwZW5kZW50bHkgYXMgQGNka3RuL2hjbDJjZGsuXG5cbmV4cG9ydCB7XG4gIERlcGVuZGVuY3lNYW5hZ2VyLFxuICBQcm92aWRlckNvbnN0cmFpbnQsXG59IGZyb20gXCIuL2RlcGVuZGVuY2llcy9kZXBlbmRlbmN5LW1hbmFnZXJcIjtcbmV4cG9ydCB7IGdldEFsbFByZWJ1aWx0UHJvdmlkZXJzIH0gZnJvbSBcIi4vZGVwZW5kZW5jaWVzL3ByZWJ1aWx0LXByb3ZpZGVyc1wiO1xuZXhwb3J0IHsgcHJvdmlkZXJBZGQgfSBmcm9tIFwiLi9wcm92aWRlci1hZGRcIjtcbmV4cG9ydCB7IFRlcnJhZm9ybUNsaSB9IGZyb20gXCIuL21vZGVscy90ZXJyYWZvcm0tY2xpXCI7XG5leHBvcnQgeyBDZGt0ZkNvbmZpZyB9IGZyb20gXCIuL2Nka3RmLWNvbmZpZ1wiO1xuZXhwb3J0IHsgaW5pdGlhbGl6RXJyb3JSZXBvcnRpbmcgfSBmcm9tIFwiLi9lcnJvci1yZXBvcnRpbmdcIjtcbmV4cG9ydCB7IENka3RmU3RhY2sgfSBmcm9tIFwiLi9jZGt0Zi1zdGFja1wiO1xuZXhwb3J0IHsgaW5pdCwgUHJvamVjdCwgSW5pdEFyZ3MsIHRlbXBsYXRlcywgdGVtcGxhdGVzRGlyIH0gZnJvbSBcIi4vaW5pdFwiO1xuZXhwb3J0IHsgZ2V0LCBHZXRTdGF0dXMsIHJ1bkdldEluRGlyIH0gZnJvbSBcIi4vZ2V0XCI7XG5leHBvcnQgeyBTeW50aGVzaXplZFN0YWNrIH0gZnJvbSBcIi4vc3ludGgtc3RhY2tcIjtcbmV4cG9ydCB7IENka3RmUHJvamVjdCwgUHJvamVjdFVwZGF0ZSB9IGZyb20gXCIuL2Nka3RmLXByb2plY3RcIjtcbmV4cG9ydCB7IHdhdGNoLCBTdGF0ZSBhcyBXYXRjaFN0YXRlIH0gZnJvbSBcIi4vd2F0Y2hcIjtcbmV4cG9ydCB7XG4gIE5lc3RlZFRlcnJhZm9ybU91dHB1dHMsXG4gIHNhdmVPdXRwdXRzLFxuICBub3JtYWxpemVPdXRwdXRQYXRoLFxufSBmcm9tIFwiLi9vdXRwdXRcIjtcbmV4cG9ydCB7XG4gIERlcGxveWluZ1Jlc291cmNlLFxuICBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGUsXG4gIGlzVGVycmFmb3JtT3V0cHV0LFxuICBQbGFubmVkUmVzb3VyY2VBY3Rpb24sXG4gIFRlcnJhZm9ybU91dHB1dCxcbn0gZnJvbSBcIi4vbW9kZWxzL3RlcnJhZm9ybVwiO1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"terraform-cli.d.ts","sourceRoot":"","sources":["terraform-cli.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAgBlD,qBAAa,gBACX,SAAQ,qBACR,YAAW,aAAa;aAGN,QAAQ,EAAE,MAAM;aAChB,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;gBAD5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;CAI/C;AAED,uBAAe,oBAAoB;IACjC,OAAc,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,OAAc,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACnD;AACD,MAAM,MAAM,YAAY,GAAG,OAAO,oBAAoB,CAAC;AAkCvD,qBAAa,YAAa,YAAW,SAAS;IAY1C,OAAO,CAAC,QAAQ,CAAC,WAAW;aACZ,KAAK,EAAE,gBAAgB;IAZzC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGc;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGkB;gBAGxB,WAAW,EAAE,WAAW,EACzB,KAAK,EAAE,gBAAgB,EACvC,yBAAyB,YAAY,MAAM,YAAY,YAAY,EAAE,eACzD,MAAM,2BAAuB;IAe9B,IAAI,CAAC,IAAI,EAAE;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,YAAY,EAAE,OAAO,CAAC;QACtB,mBAAmB,EAAE,OAAO,CAAC;KAC9B,GAAG,OAAO,CAAC,IAAI,CAAC;IAmFjB,OAAO,KAAK,YAAY,GAQvB;IAED,OAAO,KAAK,UAAU,GAMrB;IAEY,IAAI,CAAC,IAAI,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DJ,MAAM,CACjB,EACE,WAAmB,EACnB,WAAmB,EACnB,OAAe,EACf,WAAgB,EAChB,YAAiB,EACjB,IAAS,EACT,QAAa,GACd;;;;;;;;KAAA,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAC9C,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAgBrB,OAAO,CAClB,EACE,WAAmB,EACnB,WAAgB,EAChB,OAAe,EACf,YAAiB,EACjB,IAAS,EACT,QAAa,GACd;;;;;;;KAAA,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAC9C,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;YAepB,aAAa;IA+Fd,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAqB1B,MAAM,IAAI,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;KAAE,CAAC;IAwBrD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAa7B,KAAK;CAGnB;AAED,wBAAsB,iCAAiC,CACrD,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB;AAED,wBAAsB,mCAAmC,CAAC,UAAU,EAAE,MAAM,iBAK3E"}
1
+ {"version":3,"file":"terraform-cli.d.ts","sourceRoot":"","sources":["terraform-cli.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAgBlD,qBAAa,gBACX,SAAQ,qBACR,YAAW,aAAa;aAGN,QAAQ,EAAE,MAAM;aAChB,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;gBAD5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;CAI/C;AAED,uBAAe,oBAAoB;IACjC,OAAc,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,OAAc,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACnD;AACD,MAAM,MAAM,YAAY,GAAG,OAAO,oBAAoB,CAAC;AAkCvD,qBAAa,YAAa,YAAW,SAAS;IAY1C,OAAO,CAAC,QAAQ,CAAC,WAAW;aACZ,KAAK,EAAE,gBAAgB;IAZzC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGc;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGkB;gBAGxB,WAAW,EAAE,WAAW,EACzB,KAAK,EAAE,gBAAgB,EACvC,yBAAyB,YAAY,MAAM,YAAY,YAAY,EAAE,eACzD,MAAM,2BAAuB;IAe9B,IAAI,CAAC,IAAI,EAAE;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,YAAY,EAAE,OAAO,CAAC;QACtB,mBAAmB,EAAE,OAAO,CAAC;KAC9B,GAAG,OAAO,CAAC,IAAI,CAAC;IAkFjB,OAAO,KAAK,YAAY,GAQvB;IAED,OAAO,KAAK,UAAU,GAMrB;IAEY,IAAI,CAAC,IAAI,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DJ,MAAM,CACjB,EACE,WAAmB,EACnB,WAAmB,EACnB,OAAe,EACf,WAAgB,EAChB,YAAiB,EACjB,IAAS,EACT,QAAa,GACd;;;;;;;;KAAA,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAC9C,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAgBrB,OAAO,CAClB,EACE,WAAmB,EACnB,WAAgB,EAChB,OAAe,EACf,YAAiB,EACjB,IAAS,EACT,QAAa,GACd;;;;;;;KAAA,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAC9C,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;YAepB,aAAa;IA+Fd,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAqB1B,MAAM,IAAI,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;KAAE,CAAC;IAwBrD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAa7B,KAAK;CAGnB;AAED,wBAAsB,iCAAiC,CACrD,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB;AAED,wBAAsB,mCAAmC,CAAC,UAAU,EAAE,MAAM,iBAK3E"}
@@ -96,7 +96,6 @@ class TerraformCli {
96
96
  if (opts.migrateState) {
97
97
  args.push("-migrate-state");
98
98
  }
99
- // eslint-disable-next-line @typescript-eslint/no-empty-function
100
99
  let initCanNotContinue = (_err) => { };
101
100
  const rejectsIfInitCanNotContinue = new Promise((_resolve, reject) => {
102
101
  initCanNotContinue = reject;
@@ -313,8 +312,7 @@ class TerraformCli {
313
312
  noColor: true,
314
313
  },
315
314
  // We don't need to log the output here since we use it later on
316
- () => { }, // eslint-disable-line @typescript-eslint/no-empty-function
317
- this.onStderr("output"));
315
+ () => { }, this.onStderr("output"));
318
316
  try {
319
317
  return JSON.parse(output);
320
318
  }
@@ -354,4 +352,4 @@ async function tryRemoveGeneratedConfigurationFile(workingDir) {
354
352
  }
355
353
  }
356
354
  exports.tryRemoveGeneratedConfigurationFile = tryRemoveGeneratedConfigurationFile;
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLWNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlcnJhZm9ybS1jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDREQUFtQztBQUNuQyw0Q0FNd0I7QUFDeEIsMkNBTXFCO0FBRXJCLHFEQUswQjtBQUMxQixnREFBNkM7QUFDN0Msc0NBQTRDO0FBQzVDLHNEQUF3RDtBQUN4RCwrREFBeUQ7QUFDekQsZ0RBQXdCO0FBQ3hCLDZDQUErQjtBQUUvQixNQUFNLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO0FBRTFELE1BQWEsZ0JBQ1gsU0FBUSxpQ0FBcUI7SUFHN0IsWUFDa0IsUUFBZ0IsRUFDaEIsSUFBNEI7UUFFNUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsZ0JBQWdCLEVBQUUsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLGNBQWMsQ0FBQyxDQUFDO1FBSDlDLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBd0I7SUFHOUMsQ0FBQztDQUNGO0FBVkQsNENBVUM7QUFFRCxNQUFlLG9CQUFvQjtDQUdsQztBQUdELDRGQUE0RjtBQUM1RixnR0FBZ0c7QUFDaEcsTUFBTSxzQkFBdUIsU0FBUSxvQkFBb0I7SUFDdkQscURBQXFEO0lBQ3JELElBQUk7SUFDSiwwQ0FBMEM7SUFDMUMsSUFBSTtJQUNKLDJDQUEyQztJQUMzQywrQkFBK0I7SUFDL0IsSUFBSTtJQUNKLGdGQUFnRjtJQUNoRixnRkFBZ0Y7SUFDaEYsa0JBQWtCO0lBQ1gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFhO1FBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUEsb0JBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixPQUFPLENBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1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Q0FBaUMsQ0FDckQsVUFBa0I7SUFFbEIsTUFBTSxtQkFBbUIsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQVJELDhFQVFDO0FBRU0sS0FBSyxVQUFVLG1DQUFtQyxDQUFDLFVBQWtCO0lBQzFFLE1BQU0sbUJBQW1CLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztJQUM1RSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLEVBQUUsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNyQyxDQUFDO0FBQ0gsQ0FBQztBQUxELGtGQUtDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCBzdHJpcEFuc2kgZnJvbSBcInN0cmlwLWFuc2lcIjtcbmltcG9ydCB7XG4gIEVycm9ycyxcbiAgZXhlYyxcbiAgbG9nZ2VyLFxuICByZWFkQ0RLVEZWZXJzaW9uLFxuICB0ZXJyYWZvcm1CaW5hcnlOYW1lLFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7XG4gIFRlcnJhZm9ybSxcbiAgVGVycmFmb3JtUGxhbixcbiAgVGVycmFmb3JtT3V0cHV0LFxuICBBYnN0cmFjdFRlcnJhZm9ybVBsYW4sXG4gIFRlcnJhZm9ybURlcGxveVN0YXRlLFxufSBmcm9tIFwiLi90ZXJyYWZvcm1cIjtcbmltcG9ydCB7IFN5bnRoZXNpemVkU3RhY2sgfSBmcm9tIFwiLi4vc3ludGgtc3RhY2tcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUFuZFN0YXJ0RGVwbG95U2VydmljZSxcbiAgY3JlYXRlQW5kU3RhcnREZXN0cm95U2VydmljZSxcbiAgRGVwbG95U3RhdGUsXG4gIGlzRGVwbG95RXZlbnQsXG59IGZyb20gXCIuL2RlcGxveS1tYWNoaW5lXCI7XG5pbXBvcnQgeyB3YWl0Rm9yIH0gZnJvbSBcInhzdGF0ZS9saWIvd2FpdEZvclwiO1xuaW1wb3J0IHsgbWlzc2luZ1ZhcmlhYmxlIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuaW1wb3J0IHsgdGVycmFmb3JtSnNvblNjaGVtYSB9IGZyb20gXCIuLi90ZXJyYWZvcm0tanNvblwiO1xuaW1wb3J0IHsgc3Bhd25JbnRlcmFjdGl2ZSB9IGZyb20gXCIuL2ludGVyYWN0aXZlLXByb2Nlc3NcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcblxuY29uc3QgR0VORVJBVEVfQ09ORklHX09VVF9GSUxFID0gXCJnZW5lcmF0ZWRfcmVzb3VyY2VzLnRmXCI7XG5cbmV4cG9ydCBjbGFzcyBUZXJyYWZvcm1DbGlQbGFuXG4gIGV4dGVuZHMgQWJzdHJhY3RUZXJyYWZvcm1QbGFuXG4gIGltcGxlbWVudHMgVGVycmFmb3JtUGxhblxue1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGxhbkZpbGU6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGxhbjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgKSB7XG4gICAgc3VwZXIocGxhbkZpbGUsIHBsYW4/LnJlc291cmNlX2NoYW5nZXMsIHBsYW4/Lm91dHB1dF9jaGFuZ2VzKTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE91dHB1dEZpbHRlciB7XG4gIHB1YmxpYyBzdGF0aWMgY29uZGl0aW9uOiAobGluZTogc3RyaW5nKSA9PiBib29sZWFuO1xuICBwdWJsaWMgc3RhdGljIHRyYW5zZm9ybTogKGxpbmU6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgT3V0cHV0RmlsdGVyID0gdHlwZW9mIEFic3RyYWN0T3V0cHV0RmlsdGVyO1xuXG4vLyBUaGUgcGxhbiBtaWdodCBlcnJvciBpZiB0aGVyZSBpcyBhIHZhcmlhYmxlIG1pc3NpbmcsIGJ1dCB0aGUgZXJyb3IgbWVzc2FnZSBoaW50cyB0aGUgdXNlclxuLy8gaW4gYSB3cm9uZyBkaXJlY3Rpb24uIFdlIHRoZXJlZm9yZSBjYXRjaCB0aGUgZXJyb3IgYW5kIHJldGhyb3cgaXQgd2l0aCBhIG1vcmUgaGVscGZ1bCBtZXNzYWdlXG5jbGFzcyBWYXJpYWJsZVJlcXVpcmVkRmlsdGVyIGV4dGVuZHMgQWJzdHJhY3RPdXRwdXRGaWx0ZXIge1xuICAvLyBFeGFtcGxlIGZvciBcIk5vIHZhbHVlIGZvciByZXF1aXJlZCB2YXJpYWJsZVwiIGVycm9yXG4gIC8vIOKVt1xuICAvLyDilIIgRXJyb3I6IE5vIHZhbHVlIGZvciByZXF1aXJlZCB2YXJpYWJsZVxuICAvLyDilIJcbiAgLy8g4pSCICAgb24gY2RrLnRmLmpzb24gbGluZSAzMSwgaW4gdmFyaWFibGU6XG4gIC8vIOKUgiAgIDMxOiAgICAgXCJ3aXRoLWRhc2hlc1wiOiB7XG4gIC8vIOKUglxuICAvLyDilIIgVGhlIHJvb3QgbW9kdWxlIGlucHV0IHZhcmlhYmxlIFwid2l0aC1kYXNoZXNcIiBpcyBub3Qgc2V0LCBhbmQgaGFzIG5vIGRlZmF1bHRcbiAgLy8g4pSCIHZhbHVlLiBVc2UgYSAtdmFyIG9yIC12YXItZmlsZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgdG8gcHJvdmlkZSBhIHZhbHVlIGZvclxuICAvLyDilIIgdGhpcyB2YXJpYWJsZVxuICBwdWJsaWMgc3RhdGljIGNvbmRpdGlvbihpbnB1dDogc3RyaW5nKSB7XG4gICAgY29uc3QgbGluZSA9IHN0cmlwQW5zaShpbnB1dCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgbGluZS5pbmNsdWRlcyhcIkVycm9yOiBObyB2YWx1ZSBmb3IgcmVxdWlyZWQgdmFyaWFibGVcIikgJiZcbiAgICAgIGxpbmUuaW5jbHVkZXMoXCJUaGUgcm9vdCBtb2R1bGUgaW5wdXQgdmFyaWFibGVcIilcbiAgICApO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgdHJhbnNmb3JtKGxpbmU6IHN0cmluZykge1xuICAgIGNvbnN0IHN0YXJ0TWFya2VyID0gJ1RoZSByb290IG1vZHVsZSBpbnB1dCB2YXJpYWJsZSBcIic7XG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gbGluZS5zdWJzdHJpbmcoXG4gICAgICBsaW5lLmluZGV4T2Yoc3RhcnRNYXJrZXIpICsgc3RhcnRNYXJrZXIubGVuZ3RoLFxuICAgICAgbGluZS5pbmRleE9mKCdcIiBpcyBub3Qgc2V0JyksXG4gICAgKTtcblxuICAgIHJldHVybiBtaXNzaW5nVmFyaWFibGUodmFyaWFibGVOYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVycmFmb3JtQ2xpIGltcGxlbWVudHMgVGVycmFmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHdvcmtkaXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBvblN0ZG91dDogKFxuICAgIHN0YXRlTmFtZTogc3RyaW5nLFxuICAgIGZpbHRlcj86IE91dHB1dEZpbHRlcltdLFxuICApID0+IChzdGRvdXQ6IEJ1ZmZlciB8IHN0cmluZykgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBvblN0ZGVycjogKFxuICAgIHN0YXRlTmFtZTogc3RyaW5nLFxuICAgIGZpbHRlcj86IE91dHB1dEZpbHRlcltdLFxuICApID0+IChzdGRlcnI6IHN0cmluZyB8IFVpbnQ4QXJyYXkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwsXG4gICAgcHVibGljIHJlYWRvbmx5IHN0YWNrOiBTeW50aGVzaXplZFN0YWNrLFxuICAgIGNyZWF0ZVRlcnJhZm9ybUxvZ0hhbmRsZXIgPSAoX3BoYXNlOiBzdHJpbmcsIF9maWx0ZXI/OiBPdXRwdXRGaWx0ZXJbXSkgPT5cbiAgICAgIChfc3Rkb3V0OiBzdHJpbmcsIF9pc0VyciA9IGZhbHNlKSA9PiB7fSwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgKSB7XG4gICAgdGhpcy53b3JrZGlyID0gc3RhY2sud29ya2luZ0RpcmVjdG9yeTtcbiAgICB0aGlzLm9uU3Rkb3V0ID1cbiAgICAgIChwaGFzZTogc3RyaW5nLCBmaWx0ZXI/OiBPdXRwdXRGaWx0ZXJbXSkgPT4gKHN0ZG91dDogQnVmZmVyIHwgc3RyaW5nKSA9PlxuICAgICAgICBjcmVhdGVUZXJyYWZvcm1Mb2dIYW5kbGVyKFxuICAgICAgICAgIHBoYXNlLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgKShCdWZmZXIuaXNCdWZmZXIoc3Rkb3V0KSA/IHN0ZG91dC50b1N0cmluZygpIDogc3Rkb3V0KTtcbiAgICB0aGlzLm9uU3RkZXJyID1cbiAgICAgIChwaGFzZTogc3RyaW5nLCBmaWx0ZXI/OiBPdXRwdXRGaWx0ZXJbXSkgPT5cbiAgICAgIChzdGRlcnI6IHN0cmluZyB8IFVpbnQ4QXJyYXkpID0+XG4gICAgICAgIGNyZWF0ZVRlcnJhZm9ybUxvZ0hhbmRsZXIocGhhc2UsIGZpbHRlcikoc3RkZXJyLnRvU3RyaW5nKCksIHRydWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXQob3B0czoge1xuICAgIG5lZWRzVXBncmFkZTogYm9vbGVhbjtcbiAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgICBtaWdyYXRlU3RhdGU6IGJvb2xlYW47XG4gICAgbmVlZHNMb2NrZmlsZVVwZGF0ZTogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2V0VXNlckFnZW50KCk7XG5cbiAgICBjb25zdCBhcmdzID0gW1wiaW5pdFwiXTtcbiAgICBpZiAob3B0cy5uZWVkc1VwZ3JhZGUpIHtcbiAgICAgIGFyZ3MucHVzaChcIi11cGdyYWRlXCIpO1xuICAgIH1cbiAgICBpZiAob3B0cy5ub0NvbG9yKSB7XG4gICAgICBhcmdzLnB1c2goXCItbm8tY29sb3JcIik7XG4gICAgfVxuICAgIGlmIChvcHRzLm1pZ3JhdGVTdGF0ZSkge1xuICAgICAgYXJncy5wdXNoKFwiLW1pZ3JhdGUtc3RhdGVcIik7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIGxldCBpbml0Q2FuTm90Q29udGludWUgPSAoX2VycjogYW55KSA9PiB7fTtcbiAgICBjb25zdCByZWplY3RzSWZJbml0Q2FuTm90Q29udGludWUgPSBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaW5pdENhbk5vdENvbnRpbnVlID0gcmVqZWN0O1xuICAgIH0pO1xuXG4gICAgY29uc3Qgc3Rkb3V0ID0gdGhpcy5vblN0ZG91dChcImluaXRcIik7XG4gICAgY29uc3QgeyBhY3Rpb25zLCBleGl0Q29kZSB9ID0gc3Bhd25JbnRlcmFjdGl2ZShcbiAgICAgIHtcbiAgICAgICAgZmlsZTogdGVycmFmb3JtQmluYXJ5TmFtZSxcbiAgICAgICAgYXJncyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGN3ZDogdGhpcy53b3JrZGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYgYXMgYW55LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgIHN0ZG91dChkYXRhKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRhdGEuaW5jbHVkZXMoXCJTaG91bGQgVGVycmFmb3JtIG1pZ3JhdGUgeW91ciBleGlzdGluZyBzdGF0ZT9cIikgfHxcbiAgICAgICAgICBkYXRhLmluY2x1ZGVzKFwiRG8geW91IHdhbnQgdG8gY29weSBleGlzdGluZyBzdGF0ZSB0byB0aGUgbmV3IGJhY2tlbmRcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gVE9ETzogVGhpcyBvbmx5IGhhcHBlbnMgd2hlbiB0ZXJyYWZvcm0gaXMgcGFzc2VkIHRoZSAtbWlncmF0ZS1zdGF0ZSBhbnl3YXksIHNvIHRoaXMgY2hlY2sgaXMgcmVkdW5kYW50XG4gICAgICAgICAgaWYgKG9wdHMubWlncmF0ZVN0YXRlKSB7XG4gICAgICAgICAgICBhY3Rpb25zLndyaXRlTGluZShcInllc1wiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWN0aW9ucy5zdG9wKCk7XG4gICAgICAgICAgICBpbml0Q2FuTm90Q29udGludWUoXG4gICAgICAgICAgICAgIFwiUGxlYXNlIHBhc3MgdGhlIC0tbWlncmF0ZS1zdGF0ZSBmbGFnIHRvIG1pZ3JhdGUgeW91ciBzdGF0ZVwiLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLmFib3J0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoKSA9PiB7XG4gICAgICBhY3Rpb25zLnN0b3AoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHByb2dyZXNzID0gZXhpdENvZGUudGhlbigoY29kZSkgPT4ge1xuICAgICAgaWYgKGNvZGUgIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB0ZXJyYWZvcm0gaW5pdCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJHtjb2RlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGF3YWl0IFByb21pc2UucmFjZShbcHJvZ3Jlc3MsIHJlamVjdHNJZkluaXRDYW5Ob3RDb250aW51ZV0pO1xuXG4gICAgLy8gVE9ETzogdGhpcyBtaWdodCBoYXZlIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBiZWNhdXNlIHdlIGRvbid0IGtub3cgaWYgd2UncmVcbiAgICAvLyBydW5uaW5nIGEgcmVtb3RlIHBsYW4gb3IgYSBsb2NhbCBvbmUgKHNvIHdlIHJ1biBpdCBhbHdheXMgZm9yIGFsbCBwbGF0Zm9ybXMpXG4gICAgLy8gd2hpbGUgd2UnZCBvbmx5IG5lZWQgaXQgZm9yIHJlbW90ZSBwbGFuc1xuICAgIGlmIChvcHRzLm5lZWRzTG9ja2ZpbGVVcGRhdGUpIHtcbiAgICAgIGF3YWl0IGV4ZWMoXG4gICAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICAgIFtcbiAgICAgICAgICBcInByb3ZpZGVyc1wiLFxuICAgICAgICAgIFwibG9ja1wiLFxuICAgICAgICAgIFwiLXBsYXRmb3JtPWxpbnV4X2FtZDY0XCIsXG4gICAgICAgICAgLi4uKG9wdHMubm9Db2xvciA/IFtcIi1uby1jb2xvclwiXSA6IFtdKSxcbiAgICAgICAgXSxcbiAgICAgICAge1xuICAgICAgICAgIGN3ZDogdGhpcy53b3JrZGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgc2lnbmFsOiB0aGlzLmFib3J0U2lnbmFsLFxuICAgICAgICAgIG5vQ29sb3I6IG9wdHMubm9Db2xvcixcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5vblN0ZG91dChcImluaXRcIiksXG4gICAgICAgIHRoaXMub25TdGRlcnIoXCJpbml0XCIpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBpc0Nsb3VkU3RhY2soKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGFyc2VkU3RhY2sgPSB0ZXJyYWZvcm1Kc29uU2NoZW1hLnBhcnNlKFxuICAgICAgSlNPTi5wYXJzZSh0aGlzLnN0YWNrLmNvbnRlbnQpLFxuICAgICk7XG5cbiAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgIHBhcnNlZFN0YWNrLnRlcnJhZm9ybT8uYmFja2VuZD8ucmVtb3RlIHx8IHBhcnNlZFN0YWNrLnRlcnJhZm9ybT8uY2xvdWQsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc0ltcG9ydHMoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGFyc2VkU3RhY2sgPSB0ZXJyYWZvcm1Kc29uU2NoZW1hLnBhcnNlKFxuICAgICAgSlNPTi5wYXJzZSh0aGlzLnN0YWNrLmNvbnRlbnQpLFxuICAgICk7XG5cbiAgICByZXR1cm4gQm9vbGVhbihwYXJzZWRTdGFjay5pbXBvcnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBsYW4ob3B0czoge1xuICAgIGRlc3Ryb3k6IGJvb2xlYW47XG4gICAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICAgIHBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qge1xuICAgICAgZGVzdHJveSA9IGZhbHNlLFxuICAgICAgcmVmcmVzaE9ubHkgPSBmYWxzZSxcbiAgICAgIHBhcmFsbGVsaXNtID0gLTEsXG4gICAgICB2YXJzID0gW10sXG4gICAgICB2YXJGaWxlcyA9IFtdLFxuICAgICAgbm9Db2xvciA9IGZhbHNlLFxuICAgIH0gPSBvcHRzO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBbXCJwbGFuXCIsIFwiLWlucHV0PWZhbHNlXCJdO1xuXG4gICAgY29uc3QgZ2VuZXJhdGVkQ29uZmlnRmlsZSA9IHBhdGguam9pbihcbiAgICAgIHRoaXMud29ya2RpcixcbiAgICAgIEdFTkVSQVRFX0NPTkZJR19PVVRfRklMRSxcbiAgICApO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGdlbmVyYXRlZENvbmZpZ0ZpbGUpKSB7XG4gICAgICBmcy5yZW1vdmUoZ2VuZXJhdGVkQ29uZmlnRmlsZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0ltcG9ydHMpIHtcbiAgICAgIG9wdGlvbnMucHVzaChgLWdlbmVyYXRlLWNvbmZpZy1vdXQ9JHtHRU5FUkFURV9DT05GSUdfT1VUX0ZJTEV9YCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc0Nsb3VkU3RhY2spIHtcbiAgICAgIGNvbnN0IHBsYW5GaWxlID0gXCJwbGFuXCI7XG4gICAgICBvcHRpb25zLnB1c2goXCItb3V0XCIsIHBsYW5GaWxlKTtcbiAgICB9XG5cbiAgICBpZiAoZGVzdHJveSkge1xuICAgICAgb3B0aW9ucy5wdXNoKFwiLWRlc3Ryb3lcIik7XG4gICAgfVxuICAgIGlmIChyZWZyZXNoT25seSkge1xuICAgICAgb3B0aW9ucy5wdXNoKFwiLXJlZnJlc2gtb25seVwiKTtcbiAgICB9XG4gICAgaWYgKHBhcmFsbGVsaXNtID4gLTEpIHtcbiAgICAgIG9wdGlvbnMucHVzaChgLXBhcmFsbGVsaXNtPSR7cGFyYWxsZWxpc219YCk7XG4gICAgfVxuICAgIGlmIChub0NvbG9yKSB7XG4gICAgICBvcHRpb25zLnB1c2goXCItbm8tY29sb3JcIik7XG4gICAgfVxuXG4gICAgdmFycy5mb3JFYWNoKCh2KSA9PiBvcHRpb25zLnB1c2goYC12YXI9JHt2fWApKTtcbiAgICB2YXJGaWxlcy5mb3JFYWNoKCh2KSA9PiBvcHRpb25zLnB1c2goYC12YXItZmlsZT0ke3Z9YCkpO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYEV4ZWN1dGluZyAke3RlcnJhZm9ybUJpbmFyeU5hbWV9ICR7b3B0aW9ucy5qb2luKFwiIFwiKX0gaW4gJHt0aGlzLndvcmtkaXJ9YCxcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5zZXRVc2VyQWdlbnQoKTtcblxuICAgIGF3YWl0IGV4ZWMoXG4gICAgICB0ZXJyYWZvcm1CaW5hcnlOYW1lLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHtcbiAgICAgICAgY3dkOiB0aGlzLndvcmtkaXIsXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIHNpZ25hbDogdGhpcy5hYm9ydFNpZ25hbCxcbiAgICAgICAgbm9Db2xvcixcbiAgICAgIH0sXG4gICAgICB0aGlzLm9uU3Rkb3V0KFwicGxhblwiLCBbVmFyaWFibGVSZXF1aXJlZEZpbHRlcl0pLFxuICAgICAgdGhpcy5vblN0ZGVycihcInBsYW5cIiwgW1ZhcmlhYmxlUmVxdWlyZWRGaWx0ZXJdKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlcGxveShcbiAgICB7XG4gICAgICBhdXRvQXBwcm92ZSA9IGZhbHNlLFxuICAgICAgcmVmcmVzaE9ubHkgPSBmYWxzZSxcbiAgICAgIG5vQ29sb3IgPSBmYWxzZSxcbiAgICAgIHBhcmFsbGVsaXNtID0gLTEsXG4gICAgICBleHRyYU9wdGlvbnMgPSBbXSxcbiAgICAgIHZhcnMgPSBbXSxcbiAgICAgIHZhckZpbGVzID0gW10sXG4gICAgfSxcbiAgICBjYWxsYmFjazogKHN0YXRlOiBUZXJyYWZvcm1EZXBsb3lTdGF0ZSkgPT4gdm9pZCxcbiAgKTogUHJvbWlzZTx7IGNhbmNlbGxlZDogYm9vbGVhbiB9PiB7XG4gICAgYXdhaXQgdGhpcy5zZXRVc2VyQWdlbnQoKTtcbiAgICBjb25zdCBzZXJ2aWNlID0gY3JlYXRlQW5kU3RhcnREZXBsb3lTZXJ2aWNlKHtcbiAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICB3b3JrZGlyOiB0aGlzLndvcmtkaXIsXG4gICAgICByZWZyZXNoT25seSxcbiAgICAgIG5vQ29sb3IsXG4gICAgICBhdXRvQXBwcm92ZSxcbiAgICAgIHBhcmFsbGVsaXNtLFxuICAgICAgZXh0cmFPcHRpb25zLFxuICAgICAgdmFycyxcbiAgICAgIHZhckZpbGVzLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmhhbmRsZVNlcnZpY2UoXCJkZXBsb3lcIiwgc2VydmljZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3koXG4gICAge1xuICAgICAgYXV0b0FwcHJvdmUgPSBmYWxzZSxcbiAgICAgIHBhcmFsbGVsaXNtID0gLTEsXG4gICAgICBub0NvbG9yID0gZmFsc2UsXG4gICAgICBleHRyYU9wdGlvbnMgPSBbXSxcbiAgICAgIHZhcnMgPSBbXSxcbiAgICAgIHZhckZpbGVzID0gW10sXG4gICAgfSxcbiAgICBjYWxsYmFjazogKHN0YXRlOiBUZXJyYWZvcm1EZXBsb3lTdGF0ZSkgPT4gdm9pZCxcbiAgKTogUHJvbWlzZTx7IGNhbmNlbGxlZDogYm9vbGVhbiB9PiB7XG4gICAgYXdhaXQgdGhpcy5zZXRVc2VyQWdlbnQoKTtcbiAgICBjb25zdCBzZXJ2aWNlID0gY3JlYXRlQW5kU3RhcnREZXN0cm95U2VydmljZSh7XG4gICAgICB0ZXJyYWZvcm1CaW5hcnlOYW1lLFxuICAgICAgd29ya2RpcjogdGhpcy53b3JrZGlyLFxuICAgICAgYXV0b0FwcHJvdmUsXG4gICAgICBwYXJhbGxlbGlzbSxcbiAgICAgIG5vQ29sb3IsXG4gICAgICBleHRyYU9wdGlvbnMsXG4gICAgICB2YXJzLFxuICAgICAgdmFyRmlsZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlU2VydmljZShcImRlc3Ryb3lcIiwgc2VydmljZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTZXJ2aWNlKFxuICAgIHR5cGU6IFwiZGVwbG95XCIgfCBcImRlc3Ryb3lcIixcbiAgICBzZXJ2aWNlOlxuICAgICAgfCBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBbmRTdGFydERlcGxveVNlcnZpY2U+XG4gICAgICB8IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUFuZFN0YXJ0RGVzdHJveVNlcnZpY2U+LFxuICAgIGNhbGxiYWNrOiAoc3RhdGU6IFRlcnJhZm9ybURlcGxveVN0YXRlKSA9PiB2b2lkLFxuICApOiBQcm9taXNlPHsgY2FuY2VsbGVkOiBib29sZWFuIH0+IHtcbiAgICAvLyBzdG9wIHRlcnJhZm9ybSBhcHBseSBpZiBzaWduYWxlZCBhcyBzdWNoIGZyb20gdGhlIG91dHNpZGUgKGUuZy4gdmlhIGN0cmwrYylcbiAgICB0aGlzLmFib3J0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImFib3J0XCIsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHNlcnZpY2Uuc2VuZChcIlNUT1BcIik7XG4gICAgICB9LFxuICAgICAgeyBvbmNlOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIC8vIHJlbGF5IGxvZ3MgdG8gc3Rkb3V0XG4gICAgc2VydmljZS5vbkV2ZW50KChldmVudCkgPT4ge1xuICAgICAgbG9nZ2VyLnRyYWNlKFxuICAgICAgICBgVGVycmFmb3JtIENMSSBzdGF0ZSBtYWNoaW5lIGV2ZW50OiAke0pTT04uc3RyaW5naWZ5KGV2ZW50KX1gLFxuICAgICAgKTtcbiAgICAgIGlmIChpc0RlcGxveUV2ZW50KGV2ZW50LCBcIk9VVFBVVF9SRUNFSVZFRFwiKSlcbiAgICAgICAgdGhpcy5vblN0ZG91dCh0eXBlKShldmVudC5vdXRwdXQpO1xuICAgICAgZWxzZSBpZiAoaXNEZXBsb3lFdmVudChldmVudCwgXCJBUFBST1ZFRF9FWFRFUk5BTExZXCIpKVxuICAgICAgICBjYWxsYmFjayh7IHR5cGU6IFwiZXh0ZXJuYWwgYXBwcm92YWwgcmVwbHlcIiwgYXBwcm92ZWQ6IHRydWUgfSk7XG4gICAgICBlbHNlIGlmIChpc0RlcGxveUV2ZW50KGV2ZW50LCBcIlJFSkVDVEVEX0VYVEVSTkFMTFlcIikpXG4gICAgICAgIGNhbGxiYWNrKHsgdHlwZTogXCJleHRlcm5hbCBhcHByb3ZhbCByZXBseVwiLCBhcHByb3ZlZDogZmFsc2UgfSk7XG4gICAgICBlbHNlIGlmIChpc0RlcGxveUV2ZW50KGV2ZW50LCBcIk9WRVJSSURERU5fRVhURVJOQUxMWVwiKSlcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIixcbiAgICAgICAgICBvdmVycmlkZGVuOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIGVsc2UgaWYgKGlzRGVwbG95RXZlbnQoZXZlbnQsIFwiT1ZFUlJJREVfUkVKRUNURURfRVhURVJOQUxMWVwiKSlcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIixcbiAgICAgICAgICBvdmVycmlkZGVuOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBsZXQgcHJldmlvdXNTdGF0ZTogRGVwbG95U3RhdGVbXCJ2YWx1ZVwiXSA9IFwiaWRsZVwiO1xuXG4gICAgc2VydmljZS5vblRyYW5zaXRpb24oKHN0YXRlKSA9PiB7XG4gICAgICAvLyBvbmx5IHNlbmQgdXBkYXRlcyBvbiBhY3R1YWwgc3RhdGUgY2hhbmdlXG4gICAgICAvLyBvblRyYW5zaXRpb24gaXMgY2FsbGVkIGV2ZW4gaWYgdGhlIHN0YXRlIGRpZG4ndCBjaGFuZ2UgYnV0IG9ubHkgYW4gZXZlbnQgaGFwcGVuZWRcbiAgICAgIGlmIChzdGF0ZS5tYXRjaGVzKHByZXZpb3VzU3RhdGUgYXMgRGVwbG95U3RhdGVbXCJ2YWx1ZVwiXSkpIHJldHVybjtcblxuICAgICAgbG9nZ2VyLnRyYWNlKFxuICAgICAgICBgVGVycmFmb3JtIENMSSBzdGF0ZSBtYWNoaW5lIHN0YXRlIHRyYW5zaXRpb246ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcHJldmlvdXNTdGF0ZSxcbiAgICAgICAgKX0gPT4gJHtKU09OLnN0cmluZ2lmeShzdGF0ZS52YWx1ZSl9YCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzdGF0ZS5tYXRjaGVzKHsgcnVubmluZzogXCJhd2FpdGluZ19hcHByb3ZhbFwiIH0pKSB7XG4gICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICB0eXBlOiBcIndhaXRpbmcgZm9yIGFwcHJvdmFsXCIsXG4gICAgICAgICAgYXBwcm92ZTogKCkgPT4gc2VydmljZS5zZW5kKFwiQVBQUk9WRVwiKSxcbiAgICAgICAgICByZWplY3Q6ICgpID0+IHNlcnZpY2Uuc2VuZChcIlJFSkVDVFwiKSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLm1hdGNoZXMoeyBydW5uaW5nOiBcImF3YWl0aW5nX3NlbnRpbmVsX292ZXJyaWRlXCIgfSkpIHtcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIHR5cGU6IFwid2FpdGluZyBmb3Igc2VudGluZWwgb3ZlcnJpZGVcIixcbiAgICAgICAgICBvdmVycmlkZTogKCkgPT4gc2VydmljZS5zZW5kKFwiT1ZFUlJJREVcIiksXG4gICAgICAgICAgcmVqZWN0OiAoKSA9PiBzZXJ2aWNlLnNlbmQoXCJSRUpFQ1RfT1ZFUlJJREVcIiksXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5tYXRjaGVzKHsgcnVubmluZzogXCJwcm9jZXNzaW5nXCIgfSkpIHtcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIHR5cGU6IFwicnVubmluZ1wiLFxuICAgICAgICAgIGNhbmNlbGxlZDogQm9vbGVhbihzdGF0ZS5jb250ZXh0LmNhbmNlbGxlZCksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcHJldmlvdXNTdGF0ZSA9IHN0YXRlLnZhbHVlIGFzIERlcGxveVN0YXRlW1widmFsdWVcIl07XG4gICAgfSk7XG4gICAgc2VydmljZS5zdGFydCgpO1xuICAgIGNvbnN0IHN0YXRlID0gYXdhaXQgd2FpdEZvcihzZXJ2aWNlLCAoc3RhdGUpID0+ICEhc3RhdGUuZG9uZSwge1xuICAgICAgdGltZW91dDogSW5maW5pdHksXG4gICAgfSk7XG5cbiAgICBsb2dnZXIudHJhY2UoXG4gICAgICBgSW52b2tpbmcgVGVycmFmb3JtIENMSSBmb3IgJHt0eXBlfSBkb25lIChzdGF0ZSBtYWNoaW5lIHJlYWNoZWQgZmluYWwgc3RhdGUpLiBMYXN0IGV2ZW50OiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBzdGF0ZS5ldmVudCxcbiAgICAgICl9LiBDb250ZXh0OiAke0pTT04uc3RyaW5naWZ5KHN0YXRlLmNvbnRleHQpfWAsXG4gICAgKTtcblxuICAgIC8vIGV4YW1wbGUgZXZlbnRzOiB7IHR5cGU6ICdFWElURUQnLCBleGl0Q29kZTogMCB9LCB7IHR5cGU6ICdFWFRFUk5BTF9SRUpFQ1QnIH1cbiAgICBpZiAoXG4gICAgICBzdGF0ZS5ldmVudC50eXBlID09PSBcIkVYSVRFRFwiICYmXG4gICAgICBzdGF0ZS5ldmVudC5leGl0Q29kZSAhPT0gMCAmJlxuICAgICAgIXN0YXRlLmNvbnRleHQuY2FuY2VsbGVkIC8vIGRvbid0IGZhaWwgaWYgd2UgY2FuY2VsbGVkIHRoZSBydW5cbiAgICApIHtcbiAgICAgIHRocm93IGBJbnZva2luZyBUZXJyYWZvcm0gQ0xJIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke3N0YXRlLmV2ZW50LmV4aXRDb2RlfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2FuY2VsbGVkOiBCb29sZWFuKHN0YXRlLmNvbnRleHQuY2FuY2VsbGVkKSB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHZlcnNpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGV4ZWMoXG4gICAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICAgIFtcIi12XCJdLFxuICAgICAgICB7XG4gICAgICAgICAgY3dkOiB0aGlzLndvcmtkaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBzaWduYWw6IHRoaXMuYWJvcnRTaWduYWwsXG4gICAgICAgICAgbm9Db2xvcjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5vblN0ZG91dChcInZlcnNpb25cIiksXG4gICAgICAgIHRoaXMub25TdGRlcnIoXCJ2ZXJzaW9uXCIpLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUZXJyYWZvcm0gQ0xJIG5vdCBwcmVzZW50IC0gUGxlYXNlIGluc3RhbGwgYSBjdXJyZW50IHZlcnNpb24gaHR0cHM6Ly9sZWFybi5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9nZXR0aW5nLXN0YXJ0ZWQvaW5zdGFsbC5odG1sXCIsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBvdXRwdXQoKTogUHJvbWlzZTx7IFtrZXk6IHN0cmluZ106IFRlcnJhZm9ybU91dHB1dCB9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgZXhlYyhcbiAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICBbXCJvdXRwdXRcIiwgXCItanNvblwiXSxcbiAgICAgIHtcbiAgICAgICAgY3dkOiB0aGlzLndvcmtkaXIsXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIHNpZ25hbDogdGhpcy5hYm9ydFNpZ25hbCxcbiAgICAgICAgbm9Db2xvcjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgb3V0cHV0IGhlcmUgc2luY2Ugd2UgdXNlIGl0IGxhdGVyIG9uXG4gICAgICAoKSA9PiB7fSwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICAgIHRoaXMub25TdGRlcnIoXCJvdXRwdXRcIiksXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShvdXRwdXQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IEVycm9ycy5FeHRlcm5hbChcbiAgICAgICAgYEZhaWxlZCB0byBwYXJzZSB0ZXJyYWZvcm0gb3V0cHV0OiAke2V9LiBUaGUgb3V0cHV0IHdhcyAnJHtvdXRwdXR9J2AsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRVc2VyQWdlbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gUmVhZCB0aGUgY2RrdGYgdmVyc2lvbiBmcm9tIHRoZSAnY2RrLnRmLmpzb24nIGZpbGVcbiAgICAvLyBhbmQgc2V0IHRoZSB1c2VyIGFnZW50LlxuICAgIGNvbnN0IHZlcnNpb24gPSBhd2FpdCByZWFkQ0RLVEZWZXJzaW9uKHRoaXMud29ya2Rpcik7XG4gICAgaWYgKHZlcnNpb24gIT0gXCJcIikge1xuICAgICAgcHJvY2Vzcy5lbnYuVEZfQVBQRU5EX1VTRVJfQUdFTlQgPVxuICAgICAgICBcImNka3RuL1wiICtcbiAgICAgICAgdmVyc2lvbiArXG4gICAgICAgIFwiICgraHR0cHM6Ly9naXRodWIuY29tL29wZW4tY29uc3RydWN0cy9jZGstdGVycmFpbilcIjtcbiAgICB9XG4gIH1cblxuICAvLyBXZSBkb24ndCBuZWVkIHRvIGNsZWFuIGFueXRoaW5nIHVwIGZvciBhIHJ1bm5pbmcgZXhlY3V0aW9uIGluIHRoZSBDTEkgc2luY2UgdGhlcmUgaXMgbm8gbGVmdC1vdmVyIHN0YXRlIGluIGNvbnRyYXN0IHRvIGFuIG9wZW4gVGVycmFmb3JtIENsb3VkIHJ1blxuICBwdWJsaWMgYXN5bmMgYWJvcnQoKSB7XG4gICAgcmV0dXJuO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlSZWFkR2VuZXJhdGVkQ29uZmlndXJhdGlvbkZpbGUoXG4gIHdvcmtpbmdEaXI6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICBjb25zdCBnZW5lcmF0ZWRDb25maWdQYXRoID0gcGF0aC5qb2luKHdvcmtpbmdEaXIsIEdFTkVSQVRFX0NPTkZJR19PVVRfRklMRSk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhnZW5lcmF0ZWRDb25maWdQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoZ2VuZXJhdGVkQ29uZmlnUGF0aCwgXCJ1dGYtOFwiKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyeVJlbW92ZUdlbmVyYXRlZENvbmZpZ3VyYXRpb25GaWxlKHdvcmtpbmdEaXI6IHN0cmluZykge1xuICBjb25zdCBnZW5lcmF0ZWRDb25maWdQYXRoID0gcGF0aC5qb2luKHdvcmtpbmdEaXIsIEdFTkVSQVRFX0NPTkZJR19PVVRfRklMRSk7XG4gIGlmIChmcy5leGlzdHNTeW5jKGdlbmVyYXRlZENvbmZpZ1BhdGgpKSB7XG4gICAgZnMudW5saW5rU3luYyhnZW5lcmF0ZWRDb25maWdQYXRoKTtcbiAgfVxufVxuIl19
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLWNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlcnJhZm9ybS1jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDREQUFtQztBQUNuQyw0Q0FNd0I7QUFDeEIsMkNBTXFCO0FBRXJCLHFEQUswQjtBQUMxQixnREFBNkM7QUFDN0Msc0NBQTRDO0FBQzVDLHNEQUF3RDtBQUN4RCwrREFBeUQ7QUFDekQsZ0RBQXdCO0FBQ3hCLDZDQUErQjtBQUUvQixNQUFNLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO0FBRTFELE1BQWEsZ0JBQ1gsU0FBUSxpQ0FBcUI7SUFHN0IsWUFDa0IsUUFBZ0IsRUFDaEIsSUFBNEI7UUFFNUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsZ0JBQWdCLEVBQUUsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLGNBQWMsQ0FBQyxDQUFDO1FBSDlDLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBd0I7SUFHOUMsQ0FBQztDQUNGO0FBVkQsNENBVUM7QUFFRCxNQUFlLG9CQUFvQjtDQUdsQztBQUdELDRGQUE0RjtBQUM1RixnR0FBZ0c7QUFDaEcsTUFBTSxzQkFBdUIsU0FBUSxvQkFBb0I7SUFDdkQscURBQXFEO0lBQ3JELElBQUk7SUFDSiwwQ0FBMEM7SUFDMUMsSUFBSTtJQUNKLDJDQUEyQztJQUMzQywrQkFBK0I7SUFDL0IsSUFBSTtJQUNKLGdGQUFnRjtJQUNoRixnRkFBZ0Y7SUFDaEYsa0JBQWtCO0lBQ1gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFhO1FBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUEsb0JBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixPQUFPLENBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1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QU0sbUJBQW1CLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztJQUM1RSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFSRCw4RUFRQztBQUVNLEtBQUssVUFBVSxtQ0FBbUMsQ0FBQyxVQUFrQjtJQUMxRSxNQUFNLG1CQUFtQixHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLHdCQUF3QixDQUFDLENBQUM7SUFDNUUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUN2QyxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDckMsQ0FBQztBQUNILENBQUM7QUFMRCxrRkFLQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgc3RyaXBBbnNpIGZyb20gXCJzdHJpcC1hbnNpXCI7XG5pbXBvcnQge1xuICBFcnJvcnMsXG4gIGV4ZWMsXG4gIGxvZ2dlcixcbiAgcmVhZENES1RGVmVyc2lvbixcbiAgdGVycmFmb3JtQmluYXJ5TmFtZSxcbn0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQge1xuICBUZXJyYWZvcm0sXG4gIFRlcnJhZm9ybVBsYW4sXG4gIFRlcnJhZm9ybU91dHB1dCxcbiAgQWJzdHJhY3RUZXJyYWZvcm1QbGFuLFxuICBUZXJyYWZvcm1EZXBsb3lTdGF0ZSxcbn0gZnJvbSBcIi4vdGVycmFmb3JtXCI7XG5pbXBvcnQgeyBTeW50aGVzaXplZFN0YWNrIH0gZnJvbSBcIi4uL3N5bnRoLXN0YWNrXCI7XG5pbXBvcnQge1xuICBjcmVhdGVBbmRTdGFydERlcGxveVNlcnZpY2UsXG4gIGNyZWF0ZUFuZFN0YXJ0RGVzdHJveVNlcnZpY2UsXG4gIERlcGxveVN0YXRlLFxuICBpc0RlcGxveUV2ZW50LFxufSBmcm9tIFwiLi9kZXBsb3ktbWFjaGluZVwiO1xuaW1wb3J0IHsgd2FpdEZvciB9IGZyb20gXCJ4c3RhdGUvbGliL3dhaXRGb3JcIjtcbmltcG9ydCB7IG1pc3NpbmdWYXJpYWJsZSB9IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCB7IHRlcnJhZm9ybUpzb25TY2hlbWEgfSBmcm9tIFwiLi4vdGVycmFmb3JtLWpzb25cIjtcbmltcG9ydCB7IHNwYXduSW50ZXJhY3RpdmUgfSBmcm9tIFwiLi9pbnRlcmFjdGl2ZS1wcm9jZXNzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5cbmNvbnN0IEdFTkVSQVRFX0NPTkZJR19PVVRfRklMRSA9IFwiZ2VuZXJhdGVkX3Jlc291cmNlcy50ZlwiO1xuXG5leHBvcnQgY2xhc3MgVGVycmFmb3JtQ2xpUGxhblxuICBleHRlbmRzIEFic3RyYWN0VGVycmFmb3JtUGxhblxuICBpbXBsZW1lbnRzIFRlcnJhZm9ybVBsYW5cbntcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHBsYW5GaWxlOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHBsYW46IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICkge1xuICAgIHN1cGVyKHBsYW5GaWxlLCBwbGFuPy5yZXNvdXJjZV9jaGFuZ2VzLCBwbGFuPy5vdXRwdXRfY2hhbmdlcyk7XG4gIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RPdXRwdXRGaWx0ZXIge1xuICBwdWJsaWMgc3RhdGljIGNvbmRpdGlvbjogKGxpbmU6IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgcHVibGljIHN0YXRpYyB0cmFuc2Zvcm06IChsaW5lOiBzdHJpbmcpID0+IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIE91dHB1dEZpbHRlciA9IHR5cGVvZiBBYnN0cmFjdE91dHB1dEZpbHRlcjtcblxuLy8gVGhlIHBsYW4gbWlnaHQgZXJyb3IgaWYgdGhlcmUgaXMgYSB2YXJpYWJsZSBtaXNzaW5nLCBidXQgdGhlIGVycm9yIG1lc3NhZ2UgaGludHMgdGhlIHVzZXJcbi8vIGluIGEgd3JvbmcgZGlyZWN0aW9uLiBXZSB0aGVyZWZvcmUgY2F0Y2ggdGhlIGVycm9yIGFuZCByZXRocm93IGl0IHdpdGggYSBtb3JlIGhlbHBmdWwgbWVzc2FnZVxuY2xhc3MgVmFyaWFibGVSZXF1aXJlZEZpbHRlciBleHRlbmRzIEFic3RyYWN0T3V0cHV0RmlsdGVyIHtcbiAgLy8gRXhhbXBsZSBmb3IgXCJObyB2YWx1ZSBmb3IgcmVxdWlyZWQgdmFyaWFibGVcIiBlcnJvclxuICAvLyDilbdcbiAgLy8g4pSCIEVycm9yOiBObyB2YWx1ZSBmb3IgcmVxdWlyZWQgdmFyaWFibGVcbiAgLy8g4pSCXG4gIC8vIOKUgiAgIG9uIGNkay50Zi5qc29uIGxpbmUgMzEsIGluIHZhcmlhYmxlOlxuICAvLyDilIIgICAzMTogICAgIFwid2l0aC1kYXNoZXNcIjoge1xuICAvLyDilIJcbiAgLy8g4pSCIFRoZSByb290IG1vZHVsZSBpbnB1dCB2YXJpYWJsZSBcIndpdGgtZGFzaGVzXCIgaXMgbm90IHNldCwgYW5kIGhhcyBubyBkZWZhdWx0XG4gIC8vIOKUgiB2YWx1ZS4gVXNlIGEgLXZhciBvciAtdmFyLWZpbGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50IHRvIHByb3ZpZGUgYSB2YWx1ZSBmb3JcbiAgLy8g4pSCIHRoaXMgdmFyaWFibGVcbiAgcHVibGljIHN0YXRpYyBjb25kaXRpb24oaW5wdXQ6IHN0cmluZykge1xuICAgIGNvbnN0IGxpbmUgPSBzdHJpcEFuc2koaW5wdXQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIGxpbmUuaW5jbHVkZXMoXCJFcnJvcjogTm8gdmFsdWUgZm9yIHJlcXVpcmVkIHZhcmlhYmxlXCIpICYmXG4gICAgICBsaW5lLmluY2x1ZGVzKFwiVGhlIHJvb3QgbW9kdWxlIGlucHV0IHZhcmlhYmxlXCIpXG4gICAgKTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIHRyYW5zZm9ybShsaW5lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdGFydE1hcmtlciA9ICdUaGUgcm9vdCBtb2R1bGUgaW5wdXQgdmFyaWFibGUgXCInO1xuICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IGxpbmUuc3Vic3RyaW5nKFxuICAgICAgbGluZS5pbmRleE9mKHN0YXJ0TWFya2VyKSArIHN0YXJ0TWFya2VyLmxlbmd0aCxcbiAgICAgIGxpbmUuaW5kZXhPZignXCIgaXMgbm90IHNldCcpLFxuICAgICk7XG5cbiAgICByZXR1cm4gbWlzc2luZ1ZhcmlhYmxlKHZhcmlhYmxlTmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybUNsaSBpbXBsZW1lbnRzIFRlcnJhZm9ybSB7XG4gIHB1YmxpYyByZWFkb25seSB3b3JrZGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25TdGRvdXQ6IChcbiAgICBzdGF0ZU5hbWU6IHN0cmluZyxcbiAgICBmaWx0ZXI/OiBPdXRwdXRGaWx0ZXJbXSxcbiAgKSA9PiAoc3Rkb3V0OiBCdWZmZXIgfCBzdHJpbmcpID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25TdGRlcnI6IChcbiAgICBzdGF0ZU5hbWU6IHN0cmluZyxcbiAgICBmaWx0ZXI/OiBPdXRwdXRGaWx0ZXJbXSxcbiAgKSA9PiAoc3RkZXJyOiBzdHJpbmcgfCBVaW50OEFycmF5KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLFxuICAgIHB1YmxpYyByZWFkb25seSBzdGFjazogU3ludGhlc2l6ZWRTdGFjayxcbiAgICBjcmVhdGVUZXJyYWZvcm1Mb2dIYW5kbGVyID0gKF9waGFzZTogc3RyaW5nLCBfZmlsdGVyPzogT3V0cHV0RmlsdGVyW10pID0+XG4gICAgICAoX3N0ZG91dDogc3RyaW5nLCBfaXNFcnIgPSBmYWxzZSkgPT4ge30sXG4gICkge1xuICAgIHRoaXMud29ya2RpciA9IHN0YWNrLndvcmtpbmdEaXJlY3Rvcnk7XG4gICAgdGhpcy5vblN0ZG91dCA9XG4gICAgICAocGhhc2U6IHN0cmluZywgZmlsdGVyPzogT3V0cHV0RmlsdGVyW10pID0+IChzdGRvdXQ6IEJ1ZmZlciB8IHN0cmluZykgPT5cbiAgICAgICAgY3JlYXRlVGVycmFmb3JtTG9nSGFuZGxlcihcbiAgICAgICAgICBwaGFzZSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICkoQnVmZmVyLmlzQnVmZmVyKHN0ZG91dCkgPyBzdGRvdXQudG9TdHJpbmcoKSA6IHN0ZG91dCk7XG4gICAgdGhpcy5vblN0ZGVyciA9XG4gICAgICAocGhhc2U6IHN0cmluZywgZmlsdGVyPzogT3V0cHV0RmlsdGVyW10pID0+XG4gICAgICAoc3RkZXJyOiBzdHJpbmcgfCBVaW50OEFycmF5KSA9PlxuICAgICAgICBjcmVhdGVUZXJyYWZvcm1Mb2dIYW5kbGVyKHBoYXNlLCBmaWx0ZXIpKHN0ZGVyci50b1N0cmluZygpLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0KG9wdHM6IHtcbiAgICBuZWVkc1VwZ3JhZGU6IGJvb2xlYW47XG4gICAgbm9Db2xvcj86IGJvb2xlYW47XG4gICAgbWlncmF0ZVN0YXRlOiBib29sZWFuO1xuICAgIG5lZWRzTG9ja2ZpbGVVcGRhdGU6IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNldFVzZXJBZ2VudCgpO1xuXG4gICAgY29uc3QgYXJncyA9IFtcImluaXRcIl07XG4gICAgaWYgKG9wdHMubmVlZHNVcGdyYWRlKSB7XG4gICAgICBhcmdzLnB1c2goXCItdXBncmFkZVwiKTtcbiAgICB9XG4gICAgaWYgKG9wdHMubm9Db2xvcikge1xuICAgICAgYXJncy5wdXNoKFwiLW5vLWNvbG9yXCIpO1xuICAgIH1cbiAgICBpZiAob3B0cy5taWdyYXRlU3RhdGUpIHtcbiAgICAgIGFyZ3MucHVzaChcIi1taWdyYXRlLXN0YXRlXCIpO1xuICAgIH1cblxuICAgIGxldCBpbml0Q2FuTm90Q29udGludWUgPSAoX2VycjogYW55KSA9PiB7fTtcbiAgICBjb25zdCByZWplY3RzSWZJbml0Q2FuTm90Q29udGludWUgPSBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaW5pdENhbk5vdENvbnRpbnVlID0gcmVqZWN0O1xuICAgIH0pO1xuXG4gICAgY29uc3Qgc3Rkb3V0ID0gdGhpcy5vblN0ZG91dChcImluaXRcIik7XG4gICAgY29uc3QgeyBhY3Rpb25zLCBleGl0Q29kZSB9ID0gc3Bhd25JbnRlcmFjdGl2ZShcbiAgICAgIHtcbiAgICAgICAgZmlsZTogdGVycmFmb3JtQmluYXJ5TmFtZSxcbiAgICAgICAgYXJncyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGN3ZDogdGhpcy53b3JrZGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYgYXMgYW55LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgIHN0ZG91dChkYXRhKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRhdGEuaW5jbHVkZXMoXCJTaG91bGQgVGVycmFmb3JtIG1pZ3JhdGUgeW91ciBleGlzdGluZyBzdGF0ZT9cIikgfHxcbiAgICAgICAgICBkYXRhLmluY2x1ZGVzKFwiRG8geW91IHdhbnQgdG8gY29weSBleGlzdGluZyBzdGF0ZSB0byB0aGUgbmV3IGJhY2tlbmRcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gVE9ETzogVGhpcyBvbmx5IGhhcHBlbnMgd2hlbiB0ZXJyYWZvcm0gaXMgcGFzc2VkIHRoZSAtbWlncmF0ZS1zdGF0ZSBhbnl3YXksIHNvIHRoaXMgY2hlY2sgaXMgcmVkdW5kYW50XG4gICAgICAgICAgaWYgKG9wdHMubWlncmF0ZVN0YXRlKSB7XG4gICAgICAgICAgICBhY3Rpb25zLndyaXRlTGluZShcInllc1wiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWN0aW9ucy5zdG9wKCk7XG4gICAgICAgICAgICBpbml0Q2FuTm90Q29udGludWUoXG4gICAgICAgICAgICAgIFwiUGxlYXNlIHBhc3MgdGhlIC0tbWlncmF0ZS1zdGF0ZSBmbGFnIHRvIG1pZ3JhdGUgeW91ciBzdGF0ZVwiLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLmFib3J0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoKSA9PiB7XG4gICAgICBhY3Rpb25zLnN0b3AoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHByb2dyZXNzID0gZXhpdENvZGUudGhlbigoY29kZSkgPT4ge1xuICAgICAgaWYgKGNvZGUgIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB0ZXJyYWZvcm0gaW5pdCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJHtjb2RlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGF3YWl0IFByb21pc2UucmFjZShbcHJvZ3Jlc3MsIHJlamVjdHNJZkluaXRDYW5Ob3RDb250aW51ZV0pO1xuXG4gICAgLy8gVE9ETzogdGhpcyBtaWdodCBoYXZlIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBiZWNhdXNlIHdlIGRvbid0IGtub3cgaWYgd2UncmVcbiAgICAvLyBydW5uaW5nIGEgcmVtb3RlIHBsYW4gb3IgYSBsb2NhbCBvbmUgKHNvIHdlIHJ1biBpdCBhbHdheXMgZm9yIGFsbCBwbGF0Zm9ybXMpXG4gICAgLy8gd2hpbGUgd2UnZCBvbmx5IG5lZWQgaXQgZm9yIHJlbW90ZSBwbGFuc1xuICAgIGlmIChvcHRzLm5lZWRzTG9ja2ZpbGVVcGRhdGUpIHtcbiAgICAgIGF3YWl0IGV4ZWMoXG4gICAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICAgIFtcbiAgICAgICAgICBcInByb3ZpZGVyc1wiLFxuICAgICAgICAgIFwibG9ja1wiLFxuICAgICAgICAgIFwiLXBsYXRmb3JtPWxpbnV4X2FtZDY0XCIsXG4gICAgICAgICAgLi4uKG9wdHMubm9Db2xvciA/IFtcIi1uby1jb2xvclwiXSA6IFtdKSxcbiAgICAgICAgXSxcbiAgICAgICAge1xuICAgICAgICAgIGN3ZDogdGhpcy53b3JrZGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgc2lnbmFsOiB0aGlzLmFib3J0U2lnbmFsLFxuICAgICAgICAgIG5vQ29sb3I6IG9wdHMubm9Db2xvcixcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5vblN0ZG91dChcImluaXRcIiksXG4gICAgICAgIHRoaXMub25TdGRlcnIoXCJpbml0XCIpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBpc0Nsb3VkU3RhY2soKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGFyc2VkU3RhY2sgPSB0ZXJyYWZvcm1Kc29uU2NoZW1hLnBhcnNlKFxuICAgICAgSlNPTi5wYXJzZSh0aGlzLnN0YWNrLmNvbnRlbnQpLFxuICAgICk7XG5cbiAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgIHBhcnNlZFN0YWNrLnRlcnJhZm9ybT8uYmFja2VuZD8ucmVtb3RlIHx8IHBhcnNlZFN0YWNrLnRlcnJhZm9ybT8uY2xvdWQsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc0ltcG9ydHMoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGFyc2VkU3RhY2sgPSB0ZXJyYWZvcm1Kc29uU2NoZW1hLnBhcnNlKFxuICAgICAgSlNPTi5wYXJzZSh0aGlzLnN0YWNrLmNvbnRlbnQpLFxuICAgICk7XG5cbiAgICByZXR1cm4gQm9vbGVhbihwYXJzZWRTdGFjay5pbXBvcnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBsYW4ob3B0czoge1xuICAgIGRlc3Ryb3k6IGJvb2xlYW47XG4gICAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICAgIHBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qge1xuICAgICAgZGVzdHJveSA9IGZhbHNlLFxuICAgICAgcmVmcmVzaE9ubHkgPSBmYWxzZSxcbiAgICAgIHBhcmFsbGVsaXNtID0gLTEsXG4gICAgICB2YXJzID0gW10sXG4gICAgICB2YXJGaWxlcyA9IFtdLFxuICAgICAgbm9Db2xvciA9IGZhbHNlLFxuICAgIH0gPSBvcHRzO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBbXCJwbGFuXCIsIFwiLWlucHV0PWZhbHNlXCJdO1xuXG4gICAgY29uc3QgZ2VuZXJhdGVkQ29uZmlnRmlsZSA9IHBhdGguam9pbihcbiAgICAgIHRoaXMud29ya2RpcixcbiAgICAgIEdFTkVSQVRFX0NPTkZJR19PVVRfRklMRSxcbiAgICApO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGdlbmVyYXRlZENvbmZpZ0ZpbGUpKSB7XG4gICAgICBmcy5yZW1vdmUoZ2VuZXJhdGVkQ29uZmlnRmlsZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0ltcG9ydHMpIHtcbiAgICAgIG9wdGlvbnMucHVzaChgLWdlbmVyYXRlLWNvbmZpZy1vdXQ9JHtHRU5FUkFURV9DT05GSUdfT1VUX0ZJTEV9YCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc0Nsb3VkU3RhY2spIHtcbiAgICAgIGNvbnN0IHBsYW5GaWxlID0gXCJwbGFuXCI7XG4gICAgICBvcHRpb25zLnB1c2goXCItb3V0XCIsIHBsYW5GaWxlKTtcbiAgICB9XG5cbiAgICBpZiAoZGVzdHJveSkge1xuICAgICAgb3B0aW9ucy5wdXNoKFwiLWRlc3Ryb3lcIik7XG4gICAgfVxuICAgIGlmIChyZWZyZXNoT25seSkge1xuICAgICAgb3B0aW9ucy5wdXNoKFwiLXJlZnJlc2gtb25seVwiKTtcbiAgICB9XG4gICAgaWYgKHBhcmFsbGVsaXNtID4gLTEpIHtcbiAgICAgIG9wdGlvbnMucHVzaChgLXBhcmFsbGVsaXNtPSR7cGFyYWxsZWxpc219YCk7XG4gICAgfVxuICAgIGlmIChub0NvbG9yKSB7XG4gICAgICBvcHRpb25zLnB1c2goXCItbm8tY29sb3JcIik7XG4gICAgfVxuXG4gICAgdmFycy5mb3JFYWNoKCh2KSA9PiBvcHRpb25zLnB1c2goYC12YXI9JHt2fWApKTtcbiAgICB2YXJGaWxlcy5mb3JFYWNoKCh2KSA9PiBvcHRpb25zLnB1c2goYC12YXItZmlsZT0ke3Z9YCkpO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYEV4ZWN1dGluZyAke3RlcnJhZm9ybUJpbmFyeU5hbWV9ICR7b3B0aW9ucy5qb2luKFwiIFwiKX0gaW4gJHt0aGlzLndvcmtkaXJ9YCxcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5zZXRVc2VyQWdlbnQoKTtcblxuICAgIGF3YWl0IGV4ZWMoXG4gICAgICB0ZXJyYWZvcm1CaW5hcnlOYW1lLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHtcbiAgICAgICAgY3dkOiB0aGlzLndvcmtkaXIsXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIHNpZ25hbDogdGhpcy5hYm9ydFNpZ25hbCxcbiAgICAgICAgbm9Db2xvcixcbiAgICAgIH0sXG4gICAgICB0aGlzLm9uU3Rkb3V0KFwicGxhblwiLCBbVmFyaWFibGVSZXF1aXJlZEZpbHRlcl0pLFxuICAgICAgdGhpcy5vblN0ZGVycihcInBsYW5cIiwgW1ZhcmlhYmxlUmVxdWlyZWRGaWx0ZXJdKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlcGxveShcbiAgICB7XG4gICAgICBhdXRvQXBwcm92ZSA9IGZhbHNlLFxuICAgICAgcmVmcmVzaE9ubHkgPSBmYWxzZSxcbiAgICAgIG5vQ29sb3IgPSBmYWxzZSxcbiAgICAgIHBhcmFsbGVsaXNtID0gLTEsXG4gICAgICBleHRyYU9wdGlvbnMgPSBbXSxcbiAgICAgIHZhcnMgPSBbXSxcbiAgICAgIHZhckZpbGVzID0gW10sXG4gICAgfSxcbiAgICBjYWxsYmFjazogKHN0YXRlOiBUZXJyYWZvcm1EZXBsb3lTdGF0ZSkgPT4gdm9pZCxcbiAgKTogUHJvbWlzZTx7IGNhbmNlbGxlZDogYm9vbGVhbiB9PiB7XG4gICAgYXdhaXQgdGhpcy5zZXRVc2VyQWdlbnQoKTtcbiAgICBjb25zdCBzZXJ2aWNlID0gY3JlYXRlQW5kU3RhcnREZXBsb3lTZXJ2aWNlKHtcbiAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICB3b3JrZGlyOiB0aGlzLndvcmtkaXIsXG4gICAgICByZWZyZXNoT25seSxcbiAgICAgIG5vQ29sb3IsXG4gICAgICBhdXRvQXBwcm92ZSxcbiAgICAgIHBhcmFsbGVsaXNtLFxuICAgICAgZXh0cmFPcHRpb25zLFxuICAgICAgdmFycyxcbiAgICAgIHZhckZpbGVzLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmhhbmRsZVNlcnZpY2UoXCJkZXBsb3lcIiwgc2VydmljZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3koXG4gICAge1xuICAgICAgYXV0b0FwcHJvdmUgPSBmYWxzZSxcbiAgICAgIHBhcmFsbGVsaXNtID0gLTEsXG4gICAgICBub0NvbG9yID0gZmFsc2UsXG4gICAgICBleHRyYU9wdGlvbnMgPSBbXSxcbiAgICAgIHZhcnMgPSBbXSxcbiAgICAgIHZhckZpbGVzID0gW10sXG4gICAgfSxcbiAgICBjYWxsYmFjazogKHN0YXRlOiBUZXJyYWZvcm1EZXBsb3lTdGF0ZSkgPT4gdm9pZCxcbiAgKTogUHJvbWlzZTx7IGNhbmNlbGxlZDogYm9vbGVhbiB9PiB7XG4gICAgYXdhaXQgdGhpcy5zZXRVc2VyQWdlbnQoKTtcbiAgICBjb25zdCBzZXJ2aWNlID0gY3JlYXRlQW5kU3RhcnREZXN0cm95U2VydmljZSh7XG4gICAgICB0ZXJyYWZvcm1CaW5hcnlOYW1lLFxuICAgICAgd29ya2RpcjogdGhpcy53b3JrZGlyLFxuICAgICAgYXV0b0FwcHJvdmUsXG4gICAgICBwYXJhbGxlbGlzbSxcbiAgICAgIG5vQ29sb3IsXG4gICAgICBleHRyYU9wdGlvbnMsXG4gICAgICB2YXJzLFxuICAgICAgdmFyRmlsZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlU2VydmljZShcImRlc3Ryb3lcIiwgc2VydmljZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTZXJ2aWNlKFxuICAgIHR5cGU6IFwiZGVwbG95XCIgfCBcImRlc3Ryb3lcIixcbiAgICBzZXJ2aWNlOlxuICAgICAgfCBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBbmRTdGFydERlcGxveVNlcnZpY2U+XG4gICAgICB8IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUFuZFN0YXJ0RGVzdHJveVNlcnZpY2U+LFxuICAgIGNhbGxiYWNrOiAoc3RhdGU6IFRlcnJhZm9ybURlcGxveVN0YXRlKSA9PiB2b2lkLFxuICApOiBQcm9taXNlPHsgY2FuY2VsbGVkOiBib29sZWFuIH0+IHtcbiAgICAvLyBzdG9wIHRlcnJhZm9ybSBhcHBseSBpZiBzaWduYWxlZCBhcyBzdWNoIGZyb20gdGhlIG91dHNpZGUgKGUuZy4gdmlhIGN0cmwrYylcbiAgICB0aGlzLmFib3J0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImFib3J0XCIsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHNlcnZpY2Uuc2VuZChcIlNUT1BcIik7XG4gICAgICB9LFxuICAgICAgeyBvbmNlOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIC8vIHJlbGF5IGxvZ3MgdG8gc3Rkb3V0XG4gICAgc2VydmljZS5vbkV2ZW50KChldmVudCkgPT4ge1xuICAgICAgbG9nZ2VyLnRyYWNlKFxuICAgICAgICBgVGVycmFmb3JtIENMSSBzdGF0ZSBtYWNoaW5lIGV2ZW50OiAke0pTT04uc3RyaW5naWZ5KGV2ZW50KX1gLFxuICAgICAgKTtcbiAgICAgIGlmIChpc0RlcGxveUV2ZW50KGV2ZW50LCBcIk9VVFBVVF9SRUNFSVZFRFwiKSlcbiAgICAgICAgdGhpcy5vblN0ZG91dCh0eXBlKShldmVudC5vdXRwdXQpO1xuICAgICAgZWxzZSBpZiAoaXNEZXBsb3lFdmVudChldmVudCwgXCJBUFBST1ZFRF9FWFRFUk5BTExZXCIpKVxuICAgICAgICBjYWxsYmFjayh7IHR5cGU6IFwiZXh0ZXJuYWwgYXBwcm92YWwgcmVwbHlcIiwgYXBwcm92ZWQ6IHRydWUgfSk7XG4gICAgICBlbHNlIGlmIChpc0RlcGxveUV2ZW50KGV2ZW50LCBcIlJFSkVDVEVEX0VYVEVSTkFMTFlcIikpXG4gICAgICAgIGNhbGxiYWNrKHsgdHlwZTogXCJleHRlcm5hbCBhcHByb3ZhbCByZXBseVwiLCBhcHByb3ZlZDogZmFsc2UgfSk7XG4gICAgICBlbHNlIGlmIChpc0RlcGxveUV2ZW50KGV2ZW50LCBcIk9WRVJSSURERU5fRVhURVJOQUxMWVwiKSlcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIixcbiAgICAgICAgICBvdmVycmlkZGVuOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIGVsc2UgaWYgKGlzRGVwbG95RXZlbnQoZXZlbnQsIFwiT1ZFUlJJREVfUkVKRUNURURfRVhURVJOQUxMWVwiKSlcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIixcbiAgICAgICAgICBvdmVycmlkZGVuOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBsZXQgcHJldmlvdXNTdGF0ZTogRGVwbG95U3RhdGVbXCJ2YWx1ZVwiXSA9IFwiaWRsZVwiO1xuXG4gICAgc2VydmljZS5vblRyYW5zaXRpb24oKHN0YXRlKSA9PiB7XG4gICAgICAvLyBvbmx5IHNlbmQgdXBkYXRlcyBvbiBhY3R1YWwgc3RhdGUgY2hhbmdlXG4gICAgICAvLyBvblRyYW5zaXRpb24gaXMgY2FsbGVkIGV2ZW4gaWYgdGhlIHN0YXRlIGRpZG4ndCBjaGFuZ2UgYnV0IG9ubHkgYW4gZXZlbnQgaGFwcGVuZWRcbiAgICAgIGlmIChzdGF0ZS5tYXRjaGVzKHByZXZpb3VzU3RhdGUgYXMgRGVwbG95U3RhdGVbXCJ2YWx1ZVwiXSkpIHJldHVybjtcblxuICAgICAgbG9nZ2VyLnRyYWNlKFxuICAgICAgICBgVGVycmFmb3JtIENMSSBzdGF0ZSBtYWNoaW5lIHN0YXRlIHRyYW5zaXRpb246ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcHJldmlvdXNTdGF0ZSxcbiAgICAgICAgKX0gPT4gJHtKU09OLnN0cmluZ2lmeShzdGF0ZS52YWx1ZSl9YCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzdGF0ZS5tYXRjaGVzKHsgcnVubmluZzogXCJhd2FpdGluZ19hcHByb3ZhbFwiIH0pKSB7XG4gICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICB0eXBlOiBcIndhaXRpbmcgZm9yIGFwcHJvdmFsXCIsXG4gICAgICAgICAgYXBwcm92ZTogKCkgPT4gc2VydmljZS5zZW5kKFwiQVBQUk9WRVwiKSxcbiAgICAgICAgICByZWplY3Q6ICgpID0+IHNlcnZpY2Uuc2VuZChcIlJFSkVDVFwiKSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLm1hdGNoZXMoeyBydW5uaW5nOiBcImF3YWl0aW5nX3NlbnRpbmVsX292ZXJyaWRlXCIgfSkpIHtcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIHR5cGU6IFwid2FpdGluZyBmb3Igc2VudGluZWwgb3ZlcnJpZGVcIixcbiAgICAgICAgICBvdmVycmlkZTogKCkgPT4gc2VydmljZS5zZW5kKFwiT1ZFUlJJREVcIiksXG4gICAgICAgICAgcmVqZWN0OiAoKSA9PiBzZXJ2aWNlLnNlbmQoXCJSRUpFQ1RfT1ZFUlJJREVcIiksXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5tYXRjaGVzKHsgcnVubmluZzogXCJwcm9jZXNzaW5nXCIgfSkpIHtcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIHR5cGU6IFwicnVubmluZ1wiLFxuICAgICAgICAgIGNhbmNlbGxlZDogQm9vbGVhbihzdGF0ZS5jb250ZXh0LmNhbmNlbGxlZCksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcHJldmlvdXNTdGF0ZSA9IHN0YXRlLnZhbHVlIGFzIERlcGxveVN0YXRlW1widmFsdWVcIl07XG4gICAgfSk7XG4gICAgc2VydmljZS5zdGFydCgpO1xuICAgIGNvbnN0IHN0YXRlID0gYXdhaXQgd2FpdEZvcihzZXJ2aWNlLCAoc3RhdGUpID0+ICEhc3RhdGUuZG9uZSwge1xuICAgICAgdGltZW91dDogSW5maW5pdHksXG4gICAgfSk7XG5cbiAgICBsb2dnZXIudHJhY2UoXG4gICAgICBgSW52b2tpbmcgVGVycmFmb3JtIENMSSBmb3IgJHt0eXBlfSBkb25lIChzdGF0ZSBtYWNoaW5lIHJlYWNoZWQgZmluYWwgc3RhdGUpLiBMYXN0IGV2ZW50OiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBzdGF0ZS5ldmVudCxcbiAgICAgICl9LiBDb250ZXh0OiAke0pTT04uc3RyaW5naWZ5KHN0YXRlLmNvbnRleHQpfWAsXG4gICAgKTtcblxuICAgIC8vIGV4YW1wbGUgZXZlbnRzOiB7IHR5cGU6ICdFWElURUQnLCBleGl0Q29kZTogMCB9LCB7IHR5cGU6ICdFWFRFUk5BTF9SRUpFQ1QnIH1cbiAgICBpZiAoXG4gICAgICBzdGF0ZS5ldmVudC50eXBlID09PSBcIkVYSVRFRFwiICYmXG4gICAgICBzdGF0ZS5ldmVudC5leGl0Q29kZSAhPT0gMCAmJlxuICAgICAgIXN0YXRlLmNvbnRleHQuY2FuY2VsbGVkIC8vIGRvbid0IGZhaWwgaWYgd2UgY2FuY2VsbGVkIHRoZSBydW5cbiAgICApIHtcbiAgICAgIHRocm93IGBJbnZva2luZyBUZXJyYWZvcm0gQ0xJIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke3N0YXRlLmV2ZW50LmV4aXRDb2RlfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2FuY2VsbGVkOiBCb29sZWFuKHN0YXRlLmNvbnRleHQuY2FuY2VsbGVkKSB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHZlcnNpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGV4ZWMoXG4gICAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICAgIFtcIi12XCJdLFxuICAgICAgICB7XG4gICAgICAgICAgY3dkOiB0aGlzLndvcmtkaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBzaWduYWw6IHRoaXMuYWJvcnRTaWduYWwsXG4gICAgICAgICAgbm9Db2xvcjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5vblN0ZG91dChcInZlcnNpb25cIiksXG4gICAgICAgIHRoaXMub25TdGRlcnIoXCJ2ZXJzaW9uXCIpLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUZXJyYWZvcm0gQ0xJIG5vdCBwcmVzZW50IC0gUGxlYXNlIGluc3RhbGwgYSBjdXJyZW50IHZlcnNpb24gaHR0cHM6Ly9sZWFybi5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9nZXR0aW5nLXN0YXJ0ZWQvaW5zdGFsbC5odG1sXCIsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBvdXRwdXQoKTogUHJvbWlzZTx7IFtrZXk6IHN0cmluZ106IFRlcnJhZm9ybU91dHB1dCB9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgZXhlYyhcbiAgICAgIHRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgICBbXCJvdXRwdXRcIiwgXCItanNvblwiXSxcbiAgICAgIHtcbiAgICAgICAgY3dkOiB0aGlzLndvcmtkaXIsXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIHNpZ25hbDogdGhpcy5hYm9ydFNpZ25hbCxcbiAgICAgICAgbm9Db2xvcjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgb3V0cHV0IGhlcmUgc2luY2Ugd2UgdXNlIGl0IGxhdGVyIG9uXG4gICAgICAoKSA9PiB7fSxcbiAgICAgIHRoaXMub25TdGRlcnIoXCJvdXRwdXRcIiksXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShvdXRwdXQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IEVycm9ycy5FeHRlcm5hbChcbiAgICAgICAgYEZhaWxlZCB0byBwYXJzZSB0ZXJyYWZvcm0gb3V0cHV0OiAke2V9LiBUaGUgb3V0cHV0IHdhcyAnJHtvdXRwdXR9J2AsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRVc2VyQWdlbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gUmVhZCB0aGUgY2RrdGYgdmVyc2lvbiBmcm9tIHRoZSAnY2RrLnRmLmpzb24nIGZpbGVcbiAgICAvLyBhbmQgc2V0IHRoZSB1c2VyIGFnZW50LlxuICAgIGNvbnN0IHZlcnNpb24gPSBhd2FpdCByZWFkQ0RLVEZWZXJzaW9uKHRoaXMud29ya2Rpcik7XG4gICAgaWYgKHZlcnNpb24gIT0gXCJcIikge1xuICAgICAgcHJvY2Vzcy5lbnYuVEZfQVBQRU5EX1VTRVJfQUdFTlQgPVxuICAgICAgICBcImNka3RuL1wiICtcbiAgICAgICAgdmVyc2lvbiArXG4gICAgICAgIFwiICgraHR0cHM6Ly9naXRodWIuY29tL29wZW4tY29uc3RydWN0cy9jZGstdGVycmFpbilcIjtcbiAgICB9XG4gIH1cblxuICAvLyBXZSBkb24ndCBuZWVkIHRvIGNsZWFuIGFueXRoaW5nIHVwIGZvciBhIHJ1bm5pbmcgZXhlY3V0aW9uIGluIHRoZSBDTEkgc2luY2UgdGhlcmUgaXMgbm8gbGVmdC1vdmVyIHN0YXRlIGluIGNvbnRyYXN0IHRvIGFuIG9wZW4gVGVycmFmb3JtIENsb3VkIHJ1blxuICBwdWJsaWMgYXN5bmMgYWJvcnQoKSB7XG4gICAgcmV0dXJuO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlSZWFkR2VuZXJhdGVkQ29uZmlndXJhdGlvbkZpbGUoXG4gIHdvcmtpbmdEaXI6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICBjb25zdCBnZW5lcmF0ZWRDb25maWdQYXRoID0gcGF0aC5qb2luKHdvcmtpbmdEaXIsIEdFTkVSQVRFX0NPTkZJR19PVVRfRklMRSk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhnZW5lcmF0ZWRDb25maWdQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoZ2VuZXJhdGVkQ29uZmlnUGF0aCwgXCJ1dGYtOFwiKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyeVJlbW92ZUdlbmVyYXRlZENvbmZpZ3VyYXRpb25GaWxlKHdvcmtpbmdEaXI6IHN0cmluZykge1xuICBjb25zdCBnZW5lcmF0ZWRDb25maWdQYXRoID0gcGF0aC5qb2luKHdvcmtpbmdEaXIsIEdFTkVSQVRFX0NPTkZJR19PVVRfRklMRSk7XG4gIGlmIChmcy5leGlzdHNTeW5jKGdlbmVyYXRlZENvbmZpZ1BhdGgpKSB7XG4gICAgZnMudW5saW5rU3luYyhnZW5lcmF0ZWRDb25maWdQYXRoKTtcbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  module cdk.tf/go/stack
2
2
 
3
- go 1.18
3
+ go 1.25.0
4
4
 
5
5
  require github.com/aws/constructs-go/constructs/v10 v{{ constructs_version }}
6
6
 
@@ -4,4 +4,4 @@ url = "https://pypi.org/simple"
4
4
  verify_ssl = true
5
5
 
6
6
  [requires]
7
- python_version = "3"
7
+ python_version = "3.11"