@cdktn/cli-core 0.24.0-pre.58 → 0.24.0-pre.59
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/build/lib/cdktf-stack.d.ts +6 -0
- package/build/lib/cdktf-stack.d.ts.map +1 -1
- package/build/lib/cdktf-stack.js +18 -1
- package/build/lib/installed-binary-check.d.ts +12 -0
- package/build/lib/installed-binary-check.d.ts.map +1 -0
- package/build/lib/installed-binary-check.js +62 -0
- package/build/lib/models/terraform.d.ts +1 -0
- package/build/lib/models/terraform.d.ts.map +1 -1
- package/build/lib/models/terraform.js +1 -1
- package/package.json +7 -7
- package/templates/csharp/cdktf.json +4 -0
- package/templates/go/cdktf.json +4 -0
- package/templates/java/cdktf.json +4 -0
- package/templates/python/cdktf.json +4 -0
- package/templates/python-pip/cdktf.json +4 -0
- package/templates/typescript/cdktf.json +4 -0
|
@@ -102,6 +102,12 @@ export declare class CdktfStack {
|
|
|
102
102
|
private updateState;
|
|
103
103
|
private createTerraformLogHandler;
|
|
104
104
|
private terraformClient;
|
|
105
|
+
/**
|
|
106
|
+
* When the project opts in via `validateInstalledBinary: true` in
|
|
107
|
+
* cdktf.json, verifies the installed Terraform-compatible binary against
|
|
108
|
+
* the project's declared `targetVersions` before executing it.
|
|
109
|
+
*/
|
|
110
|
+
private validateInstalledBinaryIfConfigured;
|
|
105
111
|
initalizeTerraform(noColor?: boolean, skipProviderLock?: boolean, migrateState?: boolean): Promise<Terraform>;
|
|
106
112
|
private requiredProviders;
|
|
107
113
|
private checkNeedsLockfileUpdate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdktf-stack.d.ts","sourceRoot":"","sources":["../../src/lib/cdktf-stack.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAA6B,sBAAsB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"cdktf-stack.d.ts","sourceRoot":"","sources":["../../src/lib/cdktf-stack.ts"],"names":[],"mappings":"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"}
|
package/build/lib/cdktf-stack.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CdktfStack = void 0;
|
|
4
4
|
const output_1 = require("./output");
|
|
5
5
|
const commons_1 = require("@cdktn/commons");
|
|
6
|
+
const installed_binary_check_1 = require("./installed-binary-check");
|
|
6
7
|
const terraform_logs_1 = require("./server/terraform-logs");
|
|
7
8
|
const terraform_cli_1 = require("./models/terraform-cli");
|
|
8
9
|
const dependency_manager_1 = require("./dependencies/dependency-manager");
|
|
@@ -76,8 +77,24 @@ class CdktfStack {
|
|
|
76
77
|
async terraformClient() {
|
|
77
78
|
return await getTerraformClient(this.options.abortSignal, this.options.stack, this.createTerraformLogHandler.bind(this));
|
|
78
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* When the project opts in via `validateInstalledBinary: true` in
|
|
82
|
+
* cdktf.json, verifies the installed Terraform-compatible binary against
|
|
83
|
+
* the project's declared `targetVersions` before executing it.
|
|
84
|
+
*/
|
|
85
|
+
async validateInstalledBinaryIfConfigured(terraform) {
|
|
86
|
+
const config = (0, commons_1.readConfigSync)();
|
|
87
|
+
if (!config.validateInstalledBinary) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const problems = (0, installed_binary_check_1.checkInstalledBinaryAgainstTargets)(await terraform.version(), config.targetVersions, commons_1.terraformBinaryName);
|
|
91
|
+
if (problems.length > 0) {
|
|
92
|
+
throw commons_1.Errors.Usage(problems.join("\n"));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
79
95
|
async initalizeTerraform(noColor, skipProviderLock, migrateState) {
|
|
80
96
|
const terraform = await this.terraformClient();
|
|
97
|
+
await this.validateInstalledBinaryIfConfigured(terraform);
|
|
81
98
|
const needsLockfileUpdate = skipProviderLock
|
|
82
99
|
? false
|
|
83
100
|
: await this.checkNeedsLockfileUpdate();
|
|
@@ -383,4 +400,4 @@ new SomeResource(...).importFrom("some_id")
|
|
|
383
400
|
}
|
|
384
401
|
}
|
|
385
402
|
exports.CdktfStack = CdktfStack;
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrdGYtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2Nka3RmLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFDQUE2RTtBQUM3RSw0Q0FBd0M7QUFDeEMsNERBQWtFO0FBQ2xFLDBEQUtnQztBQUNoQywwRUFBdUU7QUFDdkUscURBQXVFO0FBQ3ZFLHVFQUFrRTtBQUNsRSx1Q0FBcUQ7QUE0RnJELEtBQUssVUFBVSxrQkFBa0IsQ0FDL0IsV0FBd0IsRUFDeEIsS0FBdUIsRUFDdkIseUJBR2lEO0lBRWpELE9BQU8sSUFBSSw0QkFBWSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUseUJBQXlCLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBMkJELE1BQWEsVUFBVTtJQVVyQixZQUFtQixPQUEwQjtRQUExQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQU50QyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRVAsaUJBQVksR0FBcUIsTUFBTSxDQUFDO1FBS3RELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLG9DQUFtQixDQUFDLEtBQUssQ0FDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN2RCxDQUFDO0lBQ0QsSUFBVyxNQUFNO1FBQ2YsT0FBTyxDQUNMLElBQUksQ0FBQyxZQUFZLEtBQUssTUFBTTtZQUM1QixJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsU0FBUztRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFD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ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBTeW50aGVzaXplZFN0YWNrIH0gZnJvbSBcIi4vc3ludGgtc3RhY2tcIjtcbmltcG9ydCB7IFRlcnJhZm9ybSB9IGZyb20gXCIuL21vZGVscy90ZXJyYWZvcm1cIjtcbmltcG9ydCB7IGdldENvbnN0cnVjdElkc0Zvck91dHB1dHMsIE5lc3RlZFRlcnJhZm9ybU91dHB1dHMgfSBmcm9tIFwiLi9vdXRwdXRcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgZXh0cmFjdEpzb25Mb2dJZlByZXNlbnQgfSBmcm9tIFwiLi9zZXJ2ZXIvdGVycmFmb3JtLWxvZ3NcIjtcbmltcG9ydCB7XG4gIFRlcnJhZm9ybUNsaSxcbiAgT3V0cHV0RmlsdGVyLFxuICB0cnlSZWFkR2VuZXJhdGVkQ29uZmlndXJhdGlvbkZpbGUsXG4gIHRyeVJlbW92ZUdlbmVyYXRlZENvbmZpZ3VyYXRpb25GaWxlLFxufSBmcm9tIFwiLi9tb2RlbHMvdGVycmFmb3JtLWNsaVwiO1xuaW1wb3J0IHsgUHJvdmlkZXJDb25zdHJhaW50IH0gZnJvbSBcIi4vZGVwZW5kZW5jaWVzL2RlcGVuZGVuY3ktbWFuYWdlclwiO1xuaW1wb3J0IHsgdGVycmFmb3JtSnNvblNjaGVtYSwgVGVycmFmb3JtU3RhY2sgfSBmcm9tIFwiLi90ZXJyYWZvcm0tanNvblwiO1xuaW1wb3J0IHsgVGVycmFmb3JtUHJvdmlkZXJMb2NrIH0gZnJvbSBcIi4vdGVycmFmb3JtLXByb3ZpZGVyLWxvY2tcIjtcbmltcG9ydCB7IGNvbnZlcnRDb25maWd1cmF0aW9uRmlsZSB9IGZyb20gXCIuL2NvbnZlcnRcIjtcblxuZXhwb3J0IHR5cGUgU3RhY2tVcGRhdGUgPVxuICB8IHtcbiAgICAgIHR5cGU6IFwicGxhbm5pbmdcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcInBsYW5uZWRcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImRlcGxveWluZ1wiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiZGVwbG95IHVwZGF0ZVwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgICBkZXBsb3lPdXRwdXQ6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJkZXBsb3llZFwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgICBvdXRwdXRzQnlDb25zdHJ1Y3RJZDogTmVzdGVkVGVycmFmb3JtT3V0cHV0cztcbiAgICAgIG91dHB1dHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiZGVzdHJveWluZ1wiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiZGVzdHJveSB1cGRhdGVcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgICAgZGVzdHJveU91dHB1dDogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImRlc3Ryb3llZFwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwib3V0cHV0cyBmZXRjaGVkXCI7XG4gICAgICBzdGFja05hbWU6IHN0cmluZztcbiAgICAgIG91dHB1dHNCeUNvbnN0cnVjdElkOiBOZXN0ZWRUZXJyYWZvcm1PdXRwdXRzO1xuICAgICAgb3V0cHV0czogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJlcnJvcmVkXCI7XG4gICAgICBzdGFja05hbWU6IHN0cmluZztcbiAgICAgIGVycm9yOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiZGlzbWlzc2VkXCI7XG4gICAgICBzdGFja05hbWU6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJpbXBvcnQgd2l0aCBjb25maWd1cmF0aW9uIGRldGVjdGVkXCI7XG4gICAgICBzdGFja05hbWU6IHN0cmluZztcbiAgICAgIGNvbmZpZ3VyYXRpb246IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJpbXBvcnQgd2l0aCBjb25maWd1cmF0aW9uIGNvbnZlcnRlZFwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgICBjb25maWd1cmF0aW9uOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgU3RhY2tVc2VySW5wdXRVcGRhdGUgPVxuICB8IFN0YWNrQXBwcm92YWxVcGRhdGVcbiAgfCBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGU7XG5cbmV4cG9ydCB0eXBlIFN0YWNrQXBwcm92YWxVcGRhdGUgPSB7XG4gIHR5cGU6IFwid2FpdGluZyBmb3Igc3RhY2sgYXBwcm92YWxcIjtcbiAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIGFwcHJvdmU6ICgpID0+IHZvaWQ7XG4gIHJlamVjdDogKCkgPT4gdm9pZDtcbn07XG5leHBvcnQgdHlwZSBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGUgPSB7XG4gIHR5cGU6IFwid2FpdGluZyBmb3Igc3RhY2sgc2VudGluZWwgb3ZlcnJpZGVcIjtcbiAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIG92ZXJyaWRlOiAoKSA9PiB2b2lkO1xuICByZWplY3Q6ICgpID0+IHZvaWQ7XG59O1xuZXhwb3J0IHR5cGUgRXh0ZXJuYWxTdGFja0FwcHJvdmFsVXBkYXRlID0ge1xuICB0eXBlOiBcImV4dGVybmFsIHN0YWNrIGFwcHJvdmFsIHJlcGx5XCI7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuICBhcHByb3ZlZDogYm9vbGVhbjsgLy8gZmFsc2UgPSByZWplY3RlZFxufTtcbmV4cG9ydCB0eXBlIEV4dGVybmFsU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlID0ge1xuICB0eXBlOiBcImV4dGVybmFsIHN0YWNrIHNlbnRpbmVsIG92ZXJyaWRlIHJlcGx5XCI7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuICBvdmVycmlkZGVuOiBib29sZWFuOyAvLyBmYWxzZSA9IHJlamVjdGVkXG59O1xuXG5hc3luYyBmdW5jdGlvbiBnZXRUZXJyYWZvcm1DbGllbnQoXG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgc3RhY2s6IFN5bnRoZXNpemVkU3RhY2ssXG4gIGNyZWF0ZVRlcnJhZm9ybUxvZ0hhbmRsZXI6IChcbiAgICBwaGFzZTogc3RyaW5nLFxuICAgIGZpbHRlcj86IE91dHB1dEZpbHRlcltdLFxuICApID0+IChtZXNzYWdlOiBzdHJpbmcsIGlzRXJyb3I/OiBib29sZWFuKSA9PiB2b2lkLFxuKTogUHJvbWlzZTxUZXJyYWZvcm0+IHtcbiAgcmV0dXJuIG5ldyBUZXJyYWZvcm1DbGkoYWJvcnRTaWduYWwsIHN0YWNrLCBjcmVhdGVUZXJyYWZvcm1Mb2dIYW5kbGVyKTtcbn1cblxudHlwZSBDZGt0ZlN0YWNrT3B0aW9ucyA9IHtcbiAgc3RhY2s6IFN5bnRoZXNpemVkU3RhY2s7XG4gIG9uVXBkYXRlOiAoXG4gICAgdXBkYXRlOlxuICAgICAgfCBTdGFja1VwZGF0ZVxuICAgICAgfCBTdGFja0FwcHJvdmFsVXBkYXRlXG4gICAgICB8IEV4dGVybmFsU3RhY2tBcHByb3ZhbFVwZGF0ZVxuICAgICAgfCBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGVcbiAgICAgIHwgRXh0ZXJuYWxTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGUsXG4gICkgPT4gdm9pZDtcbiAgb25Mb2c/OiAobG9nOiB7IG1lc3NhZ2U6IHN0cmluZzsgaXNFcnJvcjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBhdXRvQXBwcm92ZT86IGJvb2xlYW47XG4gIG1pZ3JhdGVTdGF0ZT86IGJvb2xlYW47XG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcbn07XG5cbnR5cGUgQ2RrdGZTdGFja1N0YXRlcyA9XG4gIHwgU3RhY2tVcGRhdGVbXCJ0eXBlXCJdXG4gIHwgU3RhY2tBcHByb3ZhbFVwZGF0ZVtcInR5cGVcIl1cbiAgfCBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGVbXCJ0eXBlXCJdXG4gIHwgRXh0ZXJuYWxTdGFja0FwcHJvdmFsVXBkYXRlW1widHlwZVwiXVxuICB8IEV4dGVybmFsU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlW1widHlwZVwiXVxuICB8IFwiaWRsZVwiXG4gIHwgXCJkb25lXCI7XG5cbmV4cG9ydCBjbGFzcyBDZGt0ZlN0YWNrIHtcbiAgcHVibGljIHN0YWNrOiBTeW50aGVzaXplZFN0YWNrO1xuICBwdWJsaWMgb3V0cHV0cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHB1YmxpYyBvdXRwdXRzQnlDb25zdHJ1Y3RJZD86IE5lc3RlZFRlcnJhZm9ybU91dHB1dHM7XG4gIHB1YmxpYyBzdG9wcGVkID0gZmFsc2U7XG4gIHB1YmxpYyBjdXJyZW50V29ya1Byb21pc2U6IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50U3RhdGU6IENka3RmU3RhY2tTdGF0ZXMgPSBcImlkbGVcIjtcbiAgcHVibGljIGVycm9yPzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHBhcnNlZENvbnRlbnQ6IFRlcnJhZm9ybVN0YWNrO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcHRpb25zOiBDZGt0ZlN0YWNrT3B0aW9ucykge1xuICAgIHRoaXMuc3RhY2sgPSBvcHRpb25zLnN0YWNrO1xuICAgIHRoaXMucGFyc2VkQ29udGVudCA9IHRlcnJhZm9ybUpzb25TY2hlbWEucGFyc2UoXG4gICAgICBKU09OLnBhcnNlKHRoaXMuc3RhY2suY29udGVudCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNQZW5kaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGF0ZSA9PT0gXCJpZGxlXCIgJiYgIXRoaXMuc3RvcHBlZDtcbiAgfVxuICBwdWJsaWMgZ2V0IGlzRG9uZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jdXJyZW50U3RhdGUgPT09IFwiZG9uZVwiIHx8XG4gICAgICB0aGlzLmN1cnJlbnRTdGF0ZSA9PT0gXCJlcnJvcmVkXCIgfHxcbiAgICAgIHRoaXMuc3RvcHBlZFxuICAgICk7XG4gIH1cbiAgcHVibGljIGdldCBpc1J1bm5pbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzUGVuZGluZyAmJiAhdGhpcy5pc0RvbmU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXRlKFxuICAgIHVwZGF0ZTpcbiAgICAgIHwgU3RhY2tVcGRhdGVcbiAgICAgIHwgU3RhY2tBcHByb3ZhbFVwZGF0ZVxuICAgICAgfCBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGVcbiAgICAgIHwgRXh0ZXJuYWxTdGFja0FwcHJvdmFsVXBkYXRlXG4gICAgICB8IEV4dGVybmFsU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlXG4gICAgICB8IHsgdHlwZTogXCJpZGxlXCIgfVxuICAgICAgfCB7IHR5cGU6IFwiZG9uZVwiIH0sXG4gICkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgWyR7dGhpcy5zdGFjay5uYW1lfV06ICR7dXBkYXRlLnR5cGV9YCk7XG4gICAgKHRoaXMuY3VycmVudFN0YXRlIGFzIENka3RmU3RhY2tTdGF0ZXMpID0gdXBkYXRlLnR5cGU7XG4gICAgc3dpdGNoICh1cGRhdGUudHlwZSkge1xuICAgICAgY2FzZSBcImlkbGVcIjpcbiAgICAgIGNhc2UgXCJkb25lXCI6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiZXJyb3JlZFwiOlxuICAgICAgICB0aGlzLmVycm9yID0gdXBkYXRlLmVycm9yO1xuICAgICAgICB0aGlzLm9wdGlvbnMub25VcGRhdGUodXBkYXRlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJvdXRwdXRzIGZldGNoZWRcIjpcbiAgICAgIGNhc2UgXCJkZXBsb3llZFwiOlxuICAgICAgICBsb2dnZXIuZGVidWcoYE91dHB1dHM6ICR7SlNPTi5zdHJpbmdpZnkodXBkYXRlLm91dHB1dHMpfWApO1xuICAgICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgICAgYE91dHB1dHNCeUNvbnN0cnVjdElkOiAke0pTT04uc3RyaW5naWZ5KHVwZGF0ZS5vdXRwdXRzQnlDb25zdHJ1Y3RJZCl9YCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vdXRwdXRzID0gdXBkYXRlLm91dHB1dHM7XG4gICAgICAgIHRoaXMub3V0cHV0c0J5Q29uc3RydWN0SWQgPSB1cGRhdGUub3V0cHV0c0J5Q29uc3RydWN0SWQ7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vblVwZGF0ZSh1cGRhdGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5vcHRpb25zLm9uVXBkYXRlKHVwZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGVycmFmb3JtTG9nSGFuZGxlcihcbiAgICBwaGFzZTogc3RyaW5nLFxuICAgIGZpbHRlcnM/OiBPdXRwdXRGaWx0ZXJbXSxcbiAgKTogKG1lc3NhZ2U6IHN0cmluZywgaXNFcnJvcj86IGJvb2xlYW4pID0+IHZvaWQge1xuICAgIGxvZ2dlci5kZWJ1ZyhcIkNyZWF0aW5nIHRlcnJhZm9ybSBsb2cgaGFuZGxlclwiLCBwaGFzZSk7XG5cbiAgICBjb25zdCBvbkxvZyA9IHRoaXMub3B0aW9ucy5vbkxvZztcbiAgICByZXR1cm4gKG1zZzogc3RyaW5nLCBpc0Vycm9yID0gZmFsc2UpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBleHRyYWN0SnNvbkxvZ0lmUHJlc2VudChtc2cpO1xuICAgICAgbG9nZ2VyLmRlYnVnKGBbJHt0aGlzLm9wdGlvbnMuc3RhY2submFtZX1dKCR7cGhhc2V9KTogJHttc2d9YCk7XG5cbiAgICAgIGNvbnN0IGZpbHRlclRvQXBwbHkgPSBmaWx0ZXJzPy5maW5kKChmaWx0ZXIpID0+XG4gICAgICAgIGZpbHRlci5jb25kaXRpb24obWVzc2FnZSksXG4gICAgICApO1xuICAgICAgY29uc3QgZmlsdGVyZWRNZXNzYWdlID0gZmlsdGVyVG9BcHBseVxuICAgICAgICA/IGZpbHRlclRvQXBwbHkudHJhbnNmb3JtKG1lc3NhZ2UpXG4gICAgICAgIDogbWVzc2FnZTtcblxuICAgICAgaWYgKGZpbHRlcmVkTWVzc2FnZSkge1xuICAgICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgICAgYEZpbHRlciAke2ZpbHRlclRvQXBwbHl9IGFwcGxpZWQgb24gbGluZSAnJHttZXNzYWdlfScgd2l0aCByZXN1bHQgJyR7ZmlsdGVyZWRNZXNzYWdlfSdgLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob25Mb2cpIHtcbiAgICAgICAgb25Mb2coeyBtZXNzYWdlOiBmaWx0ZXJlZE1lc3NhZ2UsIGlzRXJyb3IgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdGVycmFmb3JtQ2xpZW50KCkge1xuICAgIHJldHVybiBhd2FpdCBnZXRUZXJyYWZvcm1DbGllbnQoXG4gICAgICB0aGlzLm9wdGlvbnMuYWJvcnRTaWduYWwsXG4gICAgICB0aGlzLm9wdGlvbnMuc3RhY2ssXG4gICAgICB0aGlzLmNyZWF0ZVRlcnJhZm9ybUxvZ0hhbmRsZXIuYmluZCh0aGlzKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRhbGl6ZVRlcnJhZm9ybShcbiAgICBub0NvbG9yPzogYm9vbGVhbixcbiAgICBza2lwUHJvdmlkZXJMb2NrPzogYm9vbGVhbixcbiAgICBtaWdyYXRlU3RhdGU/OiBib29sZWFuLFxuICApIHtcbiAgICBjb25zdCB0ZXJyYWZvcm0gPSBhd2FpdCB0aGlzLnRlcnJhZm9ybUNsaWVudCgpO1xuICAgIGNvbnN0IG5lZWRzTG9ja2ZpbGVVcGRhdGUgPSBza2lwUHJvdmlkZXJMb2NrXG4gICAgICA/IGZhbHNlXG4gICAgICA6IGF3YWl0IHRoaXMuY2hlY2tOZWVkc0xvY2tmaWxlVXBkYXRlKCk7XG4gICAgY29uc3QgbmVlZHNVcGdyYWRlID0gYXdhaXQgdGhpcy5jaGVja05lZWRzVXBncmFkZSgpO1xuICAgIGF3YWl0IHRlcnJhZm9ybS5pbml0KHtcbiAgICAgIG5lZWRzVXBncmFkZSxcbiAgICAgIG5vQ29sb3I6IG5vQ29sb3IgPz8gZmFsc2UsXG4gICAgICBuZWVkc0xvY2tmaWxlVXBkYXRlLFxuICAgICAgbWlncmF0ZVN0YXRlOiBtaWdyYXRlU3RhdGUgPz8gZmFsc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRlcnJhZm9ybTtcbiAgfVxuXG4gIHByaXZhdGUgcmVxdWlyZWRQcm92aWRlcnMoKSB7XG4gICAgLy8gUmVhZCByZXF1aXJlZCBwcm92aWRlcnMgZnJvbSB0aGUgc3RhY2sgb3V0cHV0XG4gICAgY29uc3QgcmVxdWlyZWRQcm92aWRlcnMgPSB0aGlzLnBhcnNlZENvbnRlbnQudGVycmFmb3JtPy5yZXF1aXJlZF9wcm92aWRlcnM7XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXF1aXJlZFByb3ZpZGVycyB8fCB7fSkucmVkdWNlKFxuICAgICAgKGFjYywgb2JqKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSBuZXcgUHJvdmlkZXJDb25zdHJhaW50KG9iai5zb3VyY2UsIG9iai52ZXJzaW9uKTtcbiAgICAgICAgYWNjW2NvbnN0cmFpbnQuc291cmNlXSA9IGNvbnN0cmFpbnQ7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgUHJvdmlkZXJDb25zdHJhaW50PixcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja05lZWRzTG9ja2ZpbGVVcGRhdGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5taWdyYXRlU3RhdGUpIHtcbiAgICAgIC8vIElmIHdlJ3JlIG1pZ3JhdGluZyBzdGF0ZSwgd2UgbmVlZCB0byBpbml0XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgbG9jayA9IG5ldyBUZXJyYWZvcm1Qcm92aWRlckxvY2sodGhpcy5zdGFjay53b3JraW5nRGlyZWN0b3J5KTtcbiAgICBjb25zdCBsb2NrRmlsZUV4aXN0cyA9IGF3YWl0IGxvY2suaGFzUHJvdmlkZXJMb2NrRmlsZSgpO1xuXG4gICAgaWYgKCFsb2NrRmlsZUV4aXN0cykge1xuICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGxvY2sgZmlsZSwgdGhpcyBpcyBwcm9iYWJseSB0aGUgZmlyc3QgaW5pdFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWlyZWRQcm92aWRlcnMgPSB0aGlzLnJlcXVpcmVkUHJvdmlkZXJzKCk7XG5cbiAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIE9iamVjdC52YWx1ZXMocmVxdWlyZWRQcm92aWRlcnMpKSB7XG4gICAgICBjb25zdCBoYXNQcm92aWRlciA9IGF3YWl0IGxvY2suaGFzTWF0Y2hpbmdQcm92aWRlcihwcm92aWRlcik7XG4gICAgICBpZiAoIWhhc1Byb3ZpZGVyKSB7XG4gICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBwcm92aWRlciBvciB2ZXJzaW9uIGRvZXNuJ3QgbWF0Y2gsIHdlIG5lZWQgdG8gaW5pdFxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNoZWNrTmVlZHNVcGdyYWRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGxvY2sgPSBuZXcgVGVycmFmb3JtUHJvdmlkZXJMb2NrKHRoaXMuc3RhY2sud29ya2luZ0RpcmVjdG9yeSk7XG4gICAgY29uc3QgYWxsUHJvdmlkZXJzID0gdGhpcy5yZXF1aXJlZFByb3ZpZGVycygpO1xuICAgIGNvbnN0IGxvY2tlZFByb3ZpZGVycyA9IE9iamVjdC52YWx1ZXMoYXdhaXQgbG9jay5wcm92aWRlcnMoKSk7XG5cbiAgICAvLyBDaGVjayBpZiBhbnkgcHJvdmlkZXIgY29udGFpbmVkIGluIGBwcm92aWRlcnNgIHZpb2xhdGVzIGNvbnN0cmFpbnRzIGluIGBsb2NrZWRQcm92aWRlcnNgXG4gICAgLy8gVXBncmFkZSBpZiBzb21lIHByb3ZpZGVyIGNvbnN0cmFpbnQgbm90IG1ldFxuICAgIC8vIElmIGEgcHJvdmlkZXIgd2Fzbid0IHByZXNldCBpbiBsb2NrZWRQcm92aWRlcnMsIHRoYXQncyBmaW5lOyBpdCB3aWxsIGp1c3QgZ2V0IGFkZGVkXG4gICAgcmV0dXJuIGxvY2tlZFByb3ZpZGVycy5zb21lKChsb2NrZWRQcm92aWRlcikgPT4ge1xuICAgICAgY29uc3QgbG9ja2VkQ29uc3RyYWludCA9IGxvY2tlZFByb3ZpZGVyLmNvbnN0cmFpbnRzO1xuICAgICAgaWYgKCFsb2NrZWRDb25zdHJhaW50KSB7XG4gICAgICAgIC8vIFByb3ZpZGVyIGxvY2sgZG9lc24ndCBoYXZlIGEgY29uc3RyYWludCBzcGVjaWZpZWQsIHNvIHdlIGNhbid0IGNoZWNrLlxuICAgICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW5cbiAgICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBQcm92aWRlciBsb2NrIGRvZXNuJ3QgaGF2ZSBhIGNvbnN0cmFpbnQgZm9yICR7bG9ja2VkUHJvdmlkZXIubmFtZX1gLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb3ZpZGVyID0gYWxsUHJvdmlkZXJzW2xvY2tlZENvbnN0cmFpbnQuc291cmNlXTtcbiAgICAgIGlmICghcHJvdmlkZXIpIHtcbiAgICAgICAgLy8gZWxzZSBubyBsb25nZXIgdXNpbmcgdGhpcyBwcm92aWRlciwgc28gd29uJ3QgY2F1c2UgcHJvYmxlbXNcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gIWxvY2tlZENvbnN0cmFpbnQubWF0Y2hlc1ZlcnNpb24ocHJvdmlkZXIudmVyc2lvbiA/PyBcIj4wXCIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydW4oY2I6ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICBpZiAodGhpcy5zdG9wcGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuY3VycmVudFdvcmtQcm9taXNlID0gY2IoKTtcbiAgICAgIGF3YWl0IHRoaXMuY3VycmVudFdvcmtQcm9taXNlO1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7IHR5cGU6IFwiZG9uZVwiIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci50cmFjZShcIkVycm9yIGluIGN1cnJlbnRXb3JrUHJvbWlzZVwiLCBlKTtcbiAgICAgIHRoaXMuY3VycmVudFdvcmtQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgIHR5cGU6IFwiZXJyb3JlZFwiLFxuICAgICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICAgICAgZXJyb3I6IFN0cmluZyhlKSxcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5jdXJyZW50V29ya1Byb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGRpZmYoe1xuICAgIHJlZnJlc2hPbmx5LFxuICAgIHRlcnJhZm9ybVBhcmFsbGVsaXNtLFxuICAgIHZhcnMsXG4gICAgdmFyRmlsZXMsXG4gICAgbm9Db2xvcixcbiAgfToge1xuICAgIHJlZnJlc2hPbmx5PzogYm9vbGVhbjtcbiAgICB0ZXJyYWZvcm1QYXJhbGxlbGlzbT86IG51bWJlcjtcbiAgICB2YXJzPzogc3RyaW5nW107XG4gICAgdmFyRmlsZXM/OiBzdHJpbmdbXTtcbiAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgfSkge1xuICAgIGF3YWl0IHRoaXMucnVuKGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoeyB0eXBlOiBcInBsYW5uaW5nXCIsIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lIH0pO1xuICAgICAgY29uc3QgdGVycmFmb3JtID0gYXdhaXQgdGhpcy50ZXJyYWZvcm1DbGllbnQoKTtcblxuICAgICAgYXdhaXQgdGVycmFmb3JtLnBsYW4oe1xuICAgICAgICBkZXN0cm95OiBmYWxzZSxcbiAgICAgICAgcmVmcmVzaE9ubHksXG4gICAgICAgIHBhcmFsbGVsaXNtOiB0ZXJyYWZvcm1QYXJhbGxlbGlzbSxcbiAgICAgICAgdmFycyxcbiAgICAgICAgdmFyRmlsZXMsXG4gICAgICAgIG5vQ29sb3IsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoeyB0eXBlOiBcInBsYW5uZWRcIiwgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUgfSk7XG5cbiAgICAgIC8vIEZpbmQgZ2VuZXJhdGVkIGZpbGVcbiAgICAgIGNvbnN0IGNvbmZpZ0ZpbGUgPSBhd2FpdCB0cnlSZWFkR2VuZXJhdGVkQ29uZmlndXJhdGlvbkZpbGUoXG4gICAgICAgIHRoaXMuc3RhY2sud29ya2luZ0RpcmVjdG9yeSxcbiAgICAgICk7XG4gICAgICBpZiAoY29uZmlnRmlsZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgICB0eXBlOiBcImltcG9ydCB3aXRoIGNvbmZpZ3VyYXRpb24gZGV0ZWN0ZWRcIixcbiAgICAgICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICAgICAgICBjb25maWd1cmF0aW9uOiBjb25maWdGaWxlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjb252ZXJ0ZWRDb2RlID0gYXdhaXQgY29udmVydENvbmZpZ3VyYXRpb25GaWxlKFxuICAgICAgICAgIGNvbmZpZ0ZpbGUsXG4gICAgICAgICAgdGhpcy5zdGFjay53b3JraW5nRGlyZWN0b3J5LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgICB0eXBlOiBcImltcG9ydCB3aXRoIGNvbmZpZ3VyYXRpb24gY29udmVydGVkXCIsXG4gICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgY29uZmlndXJhdGlvbjogY29udmVydGVkQ29kZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG9uTG9nID0gdGhpcy5vcHRpb25zLm9uTG9nO1xuICAgICAgICBpZiAob25Mb2cpIHtcbiAgICAgICAgICBvbkxvZyh7XG4gICAgICAgICAgICBtZXNzYWdlOiBgSW1wb3J0IHdpdGhvdXQgY29uZmlndXJhdGlvbiBkZXRlY3RlZC4gVGVycmFmb3JtIGhhcyBjcmVhdGVkIGNvbmZpZ3VyYXRpb24gZm9yIGl0OlxuJHtjb25maWdGaWxlfVxuXG5DREtUTiBoYXMgdHJhbnNsYXRlZCB0aGUgY29kZSB0byB0aGUgZm9sbG93aW5nOlxuXG4ke2NvbnZlcnRlZENvZGV9XG5cblBsZWFzZSByZXZpZXcgdGhlIGNvZGUgYW5kIG1ha2UgYW55IG5lY2Vzc2FyeSBjaGFuZ2VzIGJlZm9yZSBhZGRpbmcgaXQgdG8geW91ciBjb2RlYmFzZS5cbk1ha2Ugc3VyZSB0byBvbmx5IGNvcHkgdGhlIGNvZGUgd2l0aGluIHRoZSBjb25zdHJ1Y3QncyBjb25zdHJ1Y3Rvci5cblxuTk9URTogWW91ciByZXNvdXJjZSBoYXMgbm90IHlldCBiZWNvbWUgbWFuYWdlZCBieSBDREtUTi4gXG5UbyBmaW5pc2ggdGhlIGltcG9ydCByZW1vdmUgdGhlIGNhbGwgXCJnZW5lcmF0ZUNvbmZpZ0ZvckltcG9ydFwiLCBhZGQgdGhlIGFib3ZlIGNvZGUgd2l0aGluIHRoZSBjb25zdHJ1Y3QncyBjb25zdHJ1Y3RvciwgYW5kIHRoZW4gYXBwZW5kIHRoZSBjYWxsIGltcG9ydEZyb20oPHJlc291cmNlX2lkX3RvX2ltcG9ydF9mcm9tPikgdG8gdGhlIGdlbmVyYXRlZCBjb2RlOiBcblxubmV3IFNvbWVSZXNvdXJjZSguLi4pLmltcG9ydEZyb20oXCJzb21lX2lkXCIpXG5gLFxuICAgICAgICAgICAgaXNFcnJvcjogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdHJ5UmVtb3ZlR2VuZXJhdGVkQ29uZmlndXJhdGlvbkZpbGUodGhpcy5zdGFjay53b3JraW5nRGlyZWN0b3J5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZXBsb3kob3B0czoge1xuICAgIHJlZnJlc2hPbmx5PzogYm9vbGVhbjtcbiAgICB0ZXJyYWZvcm1QYXJhbGxlbGlzbT86IG51bWJlcjtcbiAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgICB2YXJzPzogc3RyaW5nW107XG4gICAgdmFyRmlsZXM/OiBzdHJpbmdbXTtcbiAgfSkge1xuICAgIGNvbnN0IHsgcmVmcmVzaE9ubHksIHRlcnJhZm9ybVBhcmFsbGVsaXNtLCBub0NvbG9yLCB2YXJzLCB2YXJGaWxlcyB9ID0gb3B0cztcbiAgICBhd2FpdCB0aGlzLnJ1bihhc3luYyAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRlKHsgdHlwZTogXCJwbGFubmluZ1wiLCBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSB9KTtcbiAgICAgIGNvbnN0IHRlcnJhZm9ybSA9IGF3YWl0IHRoaXMudGVycmFmb3JtQ2xpZW50KCk7XG5cbiAgICAgIGNvbnN0IHsgY2FuY2VsbGVkIH0gPSBhd2FpdCB0ZXJyYWZvcm0uZGVwbG95KFxuICAgICAgICB7XG4gICAgICAgICAgYXV0b0FwcHJvdmU6IHRoaXMub3B0aW9ucy5hdXRvQXBwcm92ZSxcbiAgICAgICAgICByZWZyZXNoT25seSxcbiAgICAgICAgICBwYXJhbGxlbGlzbTogdGVycmFmb3JtUGFyYWxsZWxpc20sXG4gICAgICAgICAgdmFycyxcbiAgICAgICAgICB2YXJGaWxlcyxcbiAgICAgICAgICBub0NvbG9yLFxuICAgICAgICB9LFxuICAgICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgICAvLyBzdGF0ZSB1cGRhdGVzIHdoaWxlIGFwcGx5IHJ1bnMgdGhhdCBhZmZlY3QgdGhlIFVJXG4gICAgICAgICAgaWYgKHN0YXRlLnR5cGUgPT09IFwicnVubmluZ1wiICYmICFzdGF0ZS5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICB0eXBlOiBcImRlcGxveWluZ1wiLFxuICAgICAgICAgICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUudHlwZSA9PT0gXCJ3YWl0aW5nIGZvciBhcHByb3ZhbFwiKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ3YWl0aW5nIGZvciBzdGFjayBhcHByb3ZhbFwiLFxuICAgICAgICAgICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICAgICAgICAgICAgYXBwcm92ZTogc3RhdGUuYXBwcm92ZSxcbiAgICAgICAgICAgICAgcmVqZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RhdGUucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImRpc21pc3NlZFwiLFxuICAgICAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwid2FpdGluZyBmb3Igc2VudGluZWwgb3ZlcnJpZGVcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwid2FpdGluZyBmb3Igc3RhY2sgc2VudGluZWwgb3ZlcnJpZGVcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIG92ZXJyaWRlOiBzdGF0ZS5vdmVycmlkZSxcbiAgICAgICAgICAgICAgcmVqZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RhdGUucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImRpc21pc3NlZFwiLFxuICAgICAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwiZXh0ZXJuYWwgYXBwcm92YWwgcmVwbHlcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc3RhY2sgYXBwcm92YWwgcmVwbHlcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIGFwcHJvdmVkOiBzdGF0ZS5hcHByb3ZlZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUudHlwZSA9PT0gXCJleHRlcm5hbCBzZW50aW5lbCBvdmVycmlkZSByZXBseVwiKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJleHRlcm5hbCBzdGFjayBzZW50aW5lbCBvdmVycmlkZSByZXBseVwiLFxuICAgICAgICAgICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICAgICAgICAgICAgb3ZlcnJpZGRlbjogc3RhdGUub3ZlcnJpZGRlbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dHMgPSBhd2FpdCB0ZXJyYWZvcm0ub3V0cHV0KCk7XG4gICAgICAgIGNvbnN0IG91dHB1dHNCeUNvbnN0cnVjdElkID0gZ2V0Q29uc3RydWN0SWRzRm9yT3V0cHV0cyhcbiAgICAgICAgICBKU09OLnBhcnNlKHRoaXMuc3RhY2suY29udGVudCksXG4gICAgICAgICAgb3V0cHV0cyxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgICB0eXBlOiBcImRlcGxveWVkXCIsXG4gICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgb3V0cHV0cyxcbiAgICAgICAgICBvdXRwdXRzQnlDb25zdHJ1Y3RJZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzdHJveShvcHRzOiB7XG4gICAgdGVycmFmb3JtUGFyYWxsZWxpc20/OiBudW1iZXI7XG4gICAgdmFycz86IHN0cmluZ1tdO1xuICAgIHZhckZpbGVzPzogc3RyaW5nW107XG4gICAgbm9Db2xvcj86IGJvb2xlYW47XG4gIH0pIHtcbiAgICBjb25zdCB7IHRlcnJhZm9ybVBhcmFsbGVsaXNtLCBub0NvbG9yLCB2YXJzLCB2YXJGaWxlcyB9ID0gb3B0cztcbiAgICBhd2FpdCB0aGlzLnJ1bihhc3luYyAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRlKHsgdHlwZTogXCJwbGFubmluZ1wiLCBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSB9KTtcbiAgICAgIGNvbnN0IHRlcnJhZm9ybSA9IGF3YWl0IHRoaXMudGVycmFmb3JtQ2xpZW50KCk7XG4gICAgICBjb25zdCB7IGNhbmNlbGxlZCB9ID0gYXdhaXQgdGVycmFmb3JtLmRlc3Ryb3koXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRvQXBwcm92ZTogdGhpcy5vcHRpb25zLmF1dG9BcHByb3ZlLFxuICAgICAgICAgIHBhcmFsbGVsaXNtOiB0ZXJyYWZvcm1QYXJhbGxlbGlzbSxcbiAgICAgICAgICB2YXJzLFxuICAgICAgICAgIHZhckZpbGVzLFxuICAgICAgICAgIG5vQ29sb3IsXG4gICAgICAgIH0sXG4gICAgICAgIChzdGF0ZSkgPT4ge1xuICAgICAgICAgIC8vIHN0YXRlIHVwZGF0ZXMgd2hpbGUgYXBwbHkgcnVucyB0aGF0IGFmZmVjdCB0aGUgVUlcbiAgICAgICAgICBpZiAoc3RhdGUudHlwZSA9PT0gXCJydW5uaW5nXCIgJiYgIXN0YXRlLmNhbmNlbGxlZCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZGVzdHJveWluZ1wiLFxuICAgICAgICAgICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUudHlwZSA9PT0gXCJ3YWl0aW5nIGZvciBhcHByb3ZhbFwiKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ3YWl0aW5nIGZvciBzdGFjayBhcHByb3ZhbFwiLFxuICAgICAgICAgICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICAgICAgICAgICAgYXBwcm92ZTogc3RhdGUuYXBwcm92ZSxcbiAgICAgICAgICAgICAgcmVqZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RhdGUucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImRpc21pc3NlZFwiLFxuICAgICAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwid2FpdGluZyBmb3Igc2VudGluZWwgb3ZlcnJpZGVcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwid2FpdGluZyBmb3Igc3RhY2sgc2VudGluZWwgb3ZlcnJpZGVcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIG92ZXJyaWRlOiBzdGF0ZS5vdmVycmlkZSxcbiAgICAgICAgICAgICAgcmVqZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RhdGUucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImRpc21pc3NlZFwiLFxuICAgICAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwiZXh0ZXJuYWwgYXBwcm92YWwgcmVwbHlcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc3RhY2sgYXBwcm92YWwgcmVwbHlcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIGFwcHJvdmVkOiBzdGF0ZS5hcHByb3ZlZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUudHlwZSA9PT0gXCJleHRlcm5hbCBzZW50aW5lbCBvdmVycmlkZSByZXBseVwiKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJleHRlcm5hbCBzdGFjayBzZW50aW5lbCBvdmVycmlkZSByZXBseVwiLFxuICAgICAgICAgICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICAgICAgICAgICAgb3ZlcnJpZGRlbjogc3RhdGUub3ZlcnJpZGRlbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghY2FuY2VsbGVkKVxuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgICB0eXBlOiBcImRlc3Ryb3llZFwiLFxuICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmZXRjaE91dHB1dHMoKSB7XG4gICAgYXdhaXQgdGhpcy5ydW4oYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGVycmFmb3JtID0gYXdhaXQgdGhpcy50ZXJyYWZvcm1DbGllbnQoKTtcblxuICAgICAgY29uc3Qgb3V0cHV0cyA9IGF3YWl0IHRlcnJhZm9ybS5vdXRwdXQoKTtcbiAgICAgIGNvbnN0IG91dHB1dHNCeUNvbnN0cnVjdElkID0gZ2V0Q29uc3RydWN0SWRzRm9yT3V0cHV0cyhcbiAgICAgICAgSlNPTi5wYXJzZSh0aGlzLnN0YWNrLmNvbnRlbnQpLFxuICAgICAgICBvdXRwdXRzLFxuICAgICAgKTtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICB0eXBlOiBcIm91dHB1dHMgZmV0Y2hlZFwiLFxuICAgICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICAgICAgb3V0cHV0cyxcbiAgICAgICAgb3V0cHV0c0J5Q29uc3RydWN0SWQsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLm91dHB1dHM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RvcCgpIHtcbiAgICB0aGlzLnN0b3BwZWQgPSB0cnVlO1xuICB9XG59XG4iXX0=
|
|
403
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrdGYtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2Nka3RmLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFDQUE2RTtBQUM3RSw0Q0FLd0I7QUFDeEIscUVBQThFO0FBQzlFLDREQUFrRTtBQUNsRSwwREFLZ0M7QUFDaEMsMEVBQXVFO0FBQ3ZFLHFEQUF1RTtBQUN2RSx1RUFBa0U7QUFDbEUsdUNBQXFEO0FBNEZyRCxLQUFLLFVBQVUsa0JBQWtCLENBQy9CLFdBQXdCLEVBQ3hCLEtBQXVCLEVBQ3ZCLHlCQUdpRDtJQUVqRCxPQUFPLElBQUksNEJBQVksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixDQUFDLENBQUM7QUFDekUsQ0FBQztBQTJCRCxNQUFhLFVBQVU7SUFVckIsWUFBbUIsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFOdEMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVQLGlCQUFZLEdBQXFCLE1BQU0sQ0FBQztRQUt0RCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxvQ0FBbUIsQ0FBQyxLQUFLLENBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkQsQ0FBQztJQUNELElBQVcsTUFBTTtRQUNmLE9BQU8sQ0FDTCxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU07WUFDNUIsSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxD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RSxDQUFDO1lBRS9DLE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pDLE1BQU0sb0JBQW9CLEdBQUcsSUFBQSxrQ0FBeUIsRUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUM5QixPQUFPLENBQ1IsQ0FBQztZQUNGLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtnQkFDMUIsT0FBTztnQkFDUCxvQkFBb0I7YUFDckIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBbmZELGdDQW1mQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBTeW50aGVzaXplZFN0YWNrIH0gZnJvbSBcIi4vc3ludGgtc3RhY2tcIjtcbmltcG9ydCB7IFRlcnJhZm9ybSB9IGZyb20gXCIuL21vZGVscy90ZXJyYWZvcm1cIjtcbmltcG9ydCB7IGdldENvbnN0cnVjdElkc0Zvck91dHB1dHMsIE5lc3RlZFRlcnJhZm9ybU91dHB1dHMgfSBmcm9tIFwiLi9vdXRwdXRcIjtcbmltcG9ydCB7XG4gIEVycm9ycyxcbiAgbG9nZ2VyLFxuICByZWFkQ29uZmlnU3luYyxcbiAgdGVycmFmb3JtQmluYXJ5TmFtZSxcbn0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgeyBjaGVja0luc3RhbGxlZEJpbmFyeUFnYWluc3RUYXJnZXRzIH0gZnJvbSBcIi4vaW5zdGFsbGVkLWJpbmFyeS1jaGVja1wiO1xuaW1wb3J0IHsgZXh0cmFjdEpzb25Mb2dJZlByZXNlbnQgfSBmcm9tIFwiLi9zZXJ2ZXIvdGVycmFmb3JtLWxvZ3NcIjtcbmltcG9ydCB7XG4gIFRlcnJhZm9ybUNsaSxcbiAgT3V0cHV0RmlsdGVyLFxuICB0cnlSZWFkR2VuZXJhdGVkQ29uZmlndXJhdGlvbkZpbGUsXG4gIHRyeVJlbW92ZUdlbmVyYXRlZENvbmZpZ3VyYXRpb25GaWxlLFxufSBmcm9tIFwiLi9tb2RlbHMvdGVycmFmb3JtLWNsaVwiO1xuaW1wb3J0IHsgUHJvdmlkZXJDb25zdHJhaW50IH0gZnJvbSBcIi4vZGVwZW5kZW5jaWVzL2RlcGVuZGVuY3ktbWFuYWdlclwiO1xuaW1wb3J0IHsgdGVycmFmb3JtSnNvblNjaGVtYSwgVGVycmFmb3JtU3RhY2sgfSBmcm9tIFwiLi90ZXJyYWZvcm0tanNvblwiO1xuaW1wb3J0IHsgVGVycmFmb3JtUHJvdmlkZXJMb2NrIH0gZnJvbSBcIi4vdGVycmFmb3JtLXByb3ZpZGVyLWxvY2tcIjtcbmltcG9ydCB7IGNvbnZlcnRDb25maWd1cmF0aW9uRmlsZSB9IGZyb20gXCIuL2NvbnZlcnRcIjtcblxuZXhwb3J0IHR5cGUgU3RhY2tVcGRhdGUgPVxuICB8IHtcbiAgICAgIHR5cGU6IFwicGxhbm5pbmdcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcInBsYW5uZWRcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImRlcGxveWluZ1wiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiZGVwbG95IHVwZGF0ZVwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgICBkZXBsb3lPdXRwdXQ6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJkZXBsb3llZFwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgICBvdXRwdXRzQnlDb25zdHJ1Y3RJZDogTmVzdGVkVGVycmFmb3JtT3V0cHV0cztcbiAgICAgIG91dHB1dHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiZGVzdHJveWluZ1wiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiZGVzdHJveSB1cGRhdGVcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgICAgZGVzdHJveU91dHB1dDogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImRlc3Ryb3llZFwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwib3V0cHV0cyBmZXRjaGVkXCI7XG4gICAgICBzdGFja05hbWU6IHN0cmluZztcbiAgICAgIG91dHB1dHNCeUNvbnN0cnVjdElkOiBOZXN0ZWRUZXJyYWZvcm1PdXRwdXRzO1xuICAgICAgb3V0cHV0czogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJlcnJvcmVkXCI7XG4gICAgICBzdGFja05hbWU6IHN0cmluZztcbiAgICAgIGVycm9yOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiZGlzbWlzc2VkXCI7XG4gICAgICBzdGFja05hbWU6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJpbXBvcnQgd2l0aCBjb25maWd1cmF0aW9uIGRldGVjdGVkXCI7XG4gICAgICBzdGFja05hbWU6IHN0cmluZztcbiAgICAgIGNvbmZpZ3VyYXRpb246IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJpbXBvcnQgd2l0aCBjb25maWd1cmF0aW9uIGNvbnZlcnRlZFwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgICBjb25maWd1cmF0aW9uOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgU3RhY2tVc2VySW5wdXRVcGRhdGUgPVxuICB8IFN0YWNrQXBwcm92YWxVcGRhdGVcbiAgfCBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGU7XG5cbmV4cG9ydCB0eXBlIFN0YWNrQXBwcm92YWxVcGRhdGUgPSB7XG4gIHR5cGU6IFwid2FpdGluZyBmb3Igc3RhY2sgYXBwcm92YWxcIjtcbiAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIGFwcHJvdmU6ICgpID0+IHZvaWQ7XG4gIHJlamVjdDogKCkgPT4gdm9pZDtcbn07XG5leHBvcnQgdHlwZSBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGUgPSB7XG4gIHR5cGU6IFwid2FpdGluZyBmb3Igc3RhY2sgc2VudGluZWwgb3ZlcnJpZGVcIjtcbiAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIG92ZXJyaWRlOiAoKSA9PiB2b2lkO1xuICByZWplY3Q6ICgpID0+IHZvaWQ7XG59O1xuZXhwb3J0IHR5cGUgRXh0ZXJuYWxTdGFja0FwcHJvdmFsVXBkYXRlID0ge1xuICB0eXBlOiBcImV4dGVybmFsIHN0YWNrIGFwcHJvdmFsIHJlcGx5XCI7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuICBhcHByb3ZlZDogYm9vbGVhbjsgLy8gZmFsc2UgPSByZWplY3RlZFxufTtcbmV4cG9ydCB0eXBlIEV4dGVybmFsU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlID0ge1xuICB0eXBlOiBcImV4dGVybmFsIHN0YWNrIHNlbnRpbmVsIG92ZXJyaWRlIHJlcGx5XCI7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuICBvdmVycmlkZGVuOiBib29sZWFuOyAvLyBmYWxzZSA9IHJlamVjdGVkXG59O1xuXG5hc3luYyBmdW5jdGlvbiBnZXRUZXJyYWZvcm1DbGllbnQoXG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgc3RhY2s6IFN5bnRoZXNpemVkU3RhY2ssXG4gIGNyZWF0ZVRlcnJhZm9ybUxvZ0hhbmRsZXI6IChcbiAgICBwaGFzZTogc3RyaW5nLFxuICAgIGZpbHRlcj86IE91dHB1dEZpbHRlcltdLFxuICApID0+IChtZXNzYWdlOiBzdHJpbmcsIGlzRXJyb3I/OiBib29sZWFuKSA9PiB2b2lkLFxuKTogUHJvbWlzZTxUZXJyYWZvcm0+IHtcbiAgcmV0dXJuIG5ldyBUZXJyYWZvcm1DbGkoYWJvcnRTaWduYWwsIHN0YWNrLCBjcmVhdGVUZXJyYWZvcm1Mb2dIYW5kbGVyKTtcbn1cblxudHlwZSBDZGt0ZlN0YWNrT3B0aW9ucyA9IHtcbiAgc3RhY2s6IFN5bnRoZXNpemVkU3RhY2s7XG4gIG9uVXBkYXRlOiAoXG4gICAgdXBkYXRlOlxuICAgICAgfCBTdGFja1VwZGF0ZVxuICAgICAgfCBTdGFja0FwcHJvdmFsVXBkYXRlXG4gICAgICB8IEV4dGVybmFsU3RhY2tBcHByb3ZhbFVwZGF0ZVxuICAgICAgfCBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGVcbiAgICAgIHwgRXh0ZXJuYWxTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGUsXG4gICkgPT4gdm9pZDtcbiAgb25Mb2c/OiAobG9nOiB7IG1lc3NhZ2U6IHN0cmluZzsgaXNFcnJvcjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBhdXRvQXBwcm92ZT86IGJvb2xlYW47XG4gIG1pZ3JhdGVTdGF0ZT86IGJvb2xlYW47XG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcbn07XG5cbnR5cGUgQ2RrdGZTdGFja1N0YXRlcyA9XG4gIHwgU3RhY2tVcGRhdGVbXCJ0eXBlXCJdXG4gIHwgU3RhY2tBcHByb3ZhbFVwZGF0ZVtcInR5cGVcIl1cbiAgfCBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGVbXCJ0eXBlXCJdXG4gIHwgRXh0ZXJuYWxTdGFja0FwcHJvdmFsVXBkYXRlW1widHlwZVwiXVxuICB8IEV4dGVybmFsU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlW1widHlwZVwiXVxuICB8IFwiaWRsZVwiXG4gIHwgXCJkb25lXCI7XG5cbmV4cG9ydCBjbGFzcyBDZGt0ZlN0YWNrIHtcbiAgcHVibGljIHN0YWNrOiBTeW50aGVzaXplZFN0YWNrO1xuICBwdWJsaWMgb3V0cHV0cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHB1YmxpYyBvdXRwdXRzQnlDb25zdHJ1Y3RJZD86IE5lc3RlZFRlcnJhZm9ybU91dHB1dHM7XG4gIHB1YmxpYyBzdG9wcGVkID0gZmFsc2U7XG4gIHB1YmxpYyBjdXJyZW50V29ya1Byb21pc2U6IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50U3RhdGU6IENka3RmU3RhY2tTdGF0ZXMgPSBcImlkbGVcIjtcbiAgcHVibGljIGVycm9yPzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHBhcnNlZENvbnRlbnQ6IFRlcnJhZm9ybVN0YWNrO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcHRpb25zOiBDZGt0ZlN0YWNrT3B0aW9ucykge1xuICAgIHRoaXMuc3RhY2sgPSBvcHRpb25zLnN0YWNrO1xuICAgIHRoaXMucGFyc2VkQ29udGVudCA9IHRlcnJhZm9ybUpzb25TY2hlbWEucGFyc2UoXG4gICAgICBKU09OLnBhcnNlKHRoaXMuc3RhY2suY29udGVudCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNQZW5kaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGF0ZSA9PT0gXCJpZGxlXCIgJiYgIXRoaXMuc3RvcHBlZDtcbiAgfVxuICBwdWJsaWMgZ2V0IGlzRG9uZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jdXJyZW50U3RhdGUgPT09IFwiZG9uZVwiIHx8XG4gICAgICB0aGlzLmN1cnJlbnRTdGF0ZSA9PT0gXCJlcnJvcmVkXCIgfHxcbiAgICAgIHRoaXMuc3RvcHBlZFxuICAgICk7XG4gIH1cbiAgcHVibGljIGdldCBpc1J1bm5pbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzUGVuZGluZyAmJiAhdGhpcy5pc0RvbmU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXRlKFxuICAgIHVwZGF0ZTpcbiAgICAgIHwgU3RhY2tVcGRhdGVcbiAgICAgIHwgU3RhY2tBcHByb3ZhbFVwZGF0ZVxuICAgICAgfCBTdGFja1NlbnRpbmVsT3ZlcnJpZGVVcGRhdGVcbiAgICAgIHwgRXh0ZXJuYWxTdGFja0FwcHJvdmFsVXBkYXRlXG4gICAgICB8IEV4dGVybmFsU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlXG4gICAgICB8IHsgdHlwZTogXCJpZGxlXCIgfVxuICAgICAgfCB7IHR5cGU6IFwiZG9uZVwiIH0sXG4gICkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgWyR7dGhpcy5zdGFjay5uYW1lfV06ICR7dXBkYXRlLnR5cGV9YCk7XG4gICAgKHRoaXMuY3VycmVudFN0YXRlIGFzIENka3RmU3RhY2tTdGF0ZXMpID0gdXBkYXRlLnR5cGU7XG4gICAgc3dpdGNoICh1cGRhdGUudHlwZSkge1xuICAgICAgY2FzZSBcImlkbGVcIjpcbiAgICAgIGNhc2UgXCJkb25lXCI6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiZXJyb3JlZFwiOlxuICAgICAgICB0aGlzLmVycm9yID0gdXBkYXRlLmVycm9yO1xuICAgICAgICB0aGlzLm9wdGlvbnMub25VcGRhdGUodXBkYXRlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJvdXRwdXRzIGZldGNoZWRcIjpcbiAgICAgIGNhc2UgXCJkZXBsb3llZFwiOlxuICAgICAgICBsb2dnZXIuZGVidWcoYE91dHB1dHM6ICR7SlNPTi5zdHJpbmdpZnkodXBkYXRlLm91dHB1dHMpfWApO1xuICAgICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgICAgYE91dHB1dHNCeUNvbnN0cnVjdElkOiAke0pTT04uc3RyaW5naWZ5KHVwZGF0ZS5vdXRwdXRzQnlDb25zdHJ1Y3RJZCl9YCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vdXRwdXRzID0gdXBkYXRlLm91dHB1dHM7XG4gICAgICAgIHRoaXMub3V0cHV0c0J5Q29uc3RydWN0SWQgPSB1cGRhdGUub3V0cHV0c0J5Q29uc3RydWN0SWQ7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vblVwZGF0ZSh1cGRhdGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5vcHRpb25zLm9uVXBkYXRlKHVwZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGVycmFmb3JtTG9nSGFuZGxlcihcbiAgICBwaGFzZTogc3RyaW5nLFxuICAgIGZpbHRlcnM/OiBPdXRwdXRGaWx0ZXJbXSxcbiAgKTogKG1lc3NhZ2U6IHN0cmluZywgaXNFcnJvcj86IGJvb2xlYW4pID0+IHZvaWQge1xuICAgIGxvZ2dlci5kZWJ1ZyhcIkNyZWF0aW5nIHRlcnJhZm9ybSBsb2cgaGFuZGxlclwiLCBwaGFzZSk7XG5cbiAgICBjb25zdCBvbkxvZyA9IHRoaXMub3B0aW9ucy5vbkxvZztcbiAgICByZXR1cm4gKG1zZzogc3RyaW5nLCBpc0Vycm9yID0gZmFsc2UpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBleHRyYWN0SnNvbkxvZ0lmUHJlc2VudChtc2cpO1xuICAgICAgbG9nZ2VyLmRlYnVnKGBbJHt0aGlzLm9wdGlvbnMuc3RhY2submFtZX1dKCR7cGhhc2V9KTogJHttc2d9YCk7XG5cbiAgICAgIGNvbnN0IGZpbHRlclRvQXBwbHkgPSBmaWx0ZXJzPy5maW5kKChmaWx0ZXIpID0+XG4gICAgICAgIGZpbHRlci5jb25kaXRpb24obWVzc2FnZSksXG4gICAgICApO1xuICAgICAgY29uc3QgZmlsdGVyZWRNZXNzYWdlID0gZmlsdGVyVG9BcHBseVxuICAgICAgICA/IGZpbHRlclRvQXBwbHkudHJhbnNmb3JtKG1lc3NhZ2UpXG4gICAgICAgIDogbWVzc2FnZTtcblxuICAgICAgaWYgKGZpbHRlcmVkTWVzc2FnZSkge1xuICAgICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgICAgYEZpbHRlciAke2ZpbHRlclRvQXBwbHl9IGFwcGxpZWQgb24gbGluZSAnJHttZXNzYWdlfScgd2l0aCByZXN1bHQgJyR7ZmlsdGVyZWRNZXNzYWdlfSdgLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob25Mb2cpIHtcbiAgICAgICAgb25Mb2coeyBtZXNzYWdlOiBmaWx0ZXJlZE1lc3NhZ2UsIGlzRXJyb3IgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdGVycmFmb3JtQ2xpZW50KCkge1xuICAgIHJldHVybiBhd2FpdCBnZXRUZXJyYWZvcm1DbGllbnQoXG4gICAgICB0aGlzLm9wdGlvbnMuYWJvcnRTaWduYWwsXG4gICAgICB0aGlzLm9wdGlvbnMuc3RhY2ssXG4gICAgICB0aGlzLmNyZWF0ZVRlcnJhZm9ybUxvZ0hhbmRsZXIuYmluZCh0aGlzKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhlIHByb2plY3Qgb3B0cyBpbiB2aWEgYHZhbGlkYXRlSW5zdGFsbGVkQmluYXJ5OiB0cnVlYCBpblxuICAgKiBjZGt0Zi5qc29uLCB2ZXJpZmllcyB0aGUgaW5zdGFsbGVkIFRlcnJhZm9ybS1jb21wYXRpYmxlIGJpbmFyeSBhZ2FpbnN0XG4gICAqIHRoZSBwcm9qZWN0J3MgZGVjbGFyZWQgYHRhcmdldFZlcnNpb25zYCBiZWZvcmUgZXhlY3V0aW5nIGl0LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUluc3RhbGxlZEJpbmFyeUlmQ29uZmlndXJlZCh0ZXJyYWZvcm06IFRlcnJhZm9ybSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlYWRDb25maWdTeW5jKCk7XG4gICAgaWYgKCFjb25maWcudmFsaWRhdGVJbnN0YWxsZWRCaW5hcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9ibGVtcyA9IGNoZWNrSW5zdGFsbGVkQmluYXJ5QWdhaW5zdFRhcmdldHMoXG4gICAgICBhd2FpdCB0ZXJyYWZvcm0udmVyc2lvbigpLFxuICAgICAgY29uZmlnLnRhcmdldFZlcnNpb25zLFxuICAgICAgdGVycmFmb3JtQmluYXJ5TmFtZSxcbiAgICApO1xuICAgIGlmIChwcm9ibGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBFcnJvcnMuVXNhZ2UocHJvYmxlbXMuam9pbihcIlxcblwiKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRhbGl6ZVRlcnJhZm9ybShcbiAgICBub0NvbG9yPzogYm9vbGVhbixcbiAgICBza2lwUHJvdmlkZXJMb2NrPzogYm9vbGVhbixcbiAgICBtaWdyYXRlU3RhdGU/OiBib29sZWFuLFxuICApIHtcbiAgICBjb25zdCB0ZXJyYWZvcm0gPSBhd2FpdCB0aGlzLnRlcnJhZm9ybUNsaWVudCgpO1xuICAgIGF3YWl0IHRoaXMudmFsaWRhdGVJbnN0YWxsZWRCaW5hcnlJZkNvbmZpZ3VyZWQodGVycmFmb3JtKTtcbiAgICBjb25zdCBuZWVkc0xvY2tmaWxlVXBkYXRlID0gc2tpcFByb3ZpZGVyTG9ja1xuICAgICAgPyBmYWxzZVxuICAgICAgOiBhd2FpdCB0aGlzLmNoZWNrTmVlZHNMb2NrZmlsZVVwZGF0ZSgpO1xuICAgIGNvbnN0IG5lZWRzVXBncmFkZSA9IGF3YWl0IHRoaXMuY2hlY2tOZWVkc1VwZ3JhZGUoKTtcbiAgICBhd2FpdCB0ZXJyYWZvcm0uaW5pdCh7XG4gICAgICBuZWVkc1VwZ3JhZGUsXG4gICAgICBub0NvbG9yOiBub0NvbG9yID8/IGZhbHNlLFxuICAgICAgbmVlZHNMb2NrZmlsZVVwZGF0ZSxcbiAgICAgIG1pZ3JhdGVTdGF0ZTogbWlncmF0ZVN0YXRlID8/IGZhbHNlLFxuICAgIH0pO1xuICAgIHJldHVybiB0ZXJyYWZvcm07XG4gIH1cblxuICBwcml2YXRlIHJlcXVpcmVkUHJvdmlkZXJzKCkge1xuICAgIC8vIFJlYWQgcmVxdWlyZWQgcHJvdmlkZXJzIGZyb20gdGhlIHN0YWNrIG91dHB1dFxuICAgIGNvbnN0IHJlcXVpcmVkUHJvdmlkZXJzID0gdGhpcy5wYXJzZWRDb250ZW50LnRlcnJhZm9ybT8ucmVxdWlyZWRfcHJvdmlkZXJzO1xuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVxdWlyZWRQcm92aWRlcnMgfHwge30pLnJlZHVjZShcbiAgICAgIChhY2MsIG9iaikgPT4ge1xuICAgICAgICBjb25zdCBjb25zdHJhaW50ID0gbmV3IFByb3ZpZGVyQ29uc3RyYWludChvYmouc291cmNlLCBvYmoudmVyc2lvbik7XG4gICAgICAgIGFjY1tjb25zdHJhaW50LnNvdXJjZV0gPSBjb25zdHJhaW50O1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIFByb3ZpZGVyQ29uc3RyYWludD4sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tOZWVkc0xvY2tmaWxlVXBkYXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubWlncmF0ZVN0YXRlKSB7XG4gICAgICAvLyBJZiB3ZSdyZSBtaWdyYXRpbmcgc3RhdGUsIHdlIG5lZWQgdG8gaW5pdFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGxvY2sgPSBuZXcgVGVycmFmb3JtUHJvdmlkZXJMb2NrKHRoaXMuc3RhY2sud29ya2luZ0RpcmVjdG9yeSk7XG4gICAgY29uc3QgbG9ja0ZpbGVFeGlzdHMgPSBhd2FpdCBsb2NrLmhhc1Byb3ZpZGVyTG9ja0ZpbGUoKTtcblxuICAgIGlmICghbG9ja0ZpbGVFeGlzdHMpIHtcbiAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBsb2NrIGZpbGUsIHRoaXMgaXMgcHJvYmFibHkgdGhlIGZpcnN0IGluaXRcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVkUHJvdmlkZXJzID0gdGhpcy5yZXF1aXJlZFByb3ZpZGVycygpO1xuXG4gICAgZm9yIChjb25zdCBwcm92aWRlciBvZiBPYmplY3QudmFsdWVzKHJlcXVpcmVkUHJvdmlkZXJzKSkge1xuICAgICAgY29uc3QgaGFzUHJvdmlkZXIgPSBhd2FpdCBsb2NrLmhhc01hdGNoaW5nUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgaWYgKCFoYXNQcm92aWRlcikge1xuICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgcHJvdmlkZXIgb3IgdmVyc2lvbiBkb2Vzbid0IG1hdGNoLCB3ZSBuZWVkIHRvIGluaXRcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja05lZWRzVXBncmFkZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBsb2NrID0gbmV3IFRlcnJhZm9ybVByb3ZpZGVyTG9jayh0aGlzLnN0YWNrLndvcmtpbmdEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGFsbFByb3ZpZGVycyA9IHRoaXMucmVxdWlyZWRQcm92aWRlcnMoKTtcbiAgICBjb25zdCBsb2NrZWRQcm92aWRlcnMgPSBPYmplY3QudmFsdWVzKGF3YWl0IGxvY2sucHJvdmlkZXJzKCkpO1xuXG4gICAgLy8gQ2hlY2sgaWYgYW55IHByb3ZpZGVyIGNvbnRhaW5lZCBpbiBgcHJvdmlkZXJzYCB2aW9sYXRlcyBjb25zdHJhaW50cyBpbiBgbG9ja2VkUHJvdmlkZXJzYFxuICAgIC8vIFVwZ3JhZGUgaWYgc29tZSBwcm92aWRlciBjb25zdHJhaW50IG5vdCBtZXRcbiAgICAvLyBJZiBhIHByb3ZpZGVyIHdhc24ndCBwcmVzZXQgaW4gbG9ja2VkUHJvdmlkZXJzLCB0aGF0J3MgZmluZTsgaXQgd2lsbCBqdXN0IGdldCBhZGRlZFxuICAgIHJldHVybiBsb2NrZWRQcm92aWRlcnMuc29tZSgobG9ja2VkUHJvdmlkZXIpID0+IHtcbiAgICAgIGNvbnN0IGxvY2tlZENvbnN0cmFpbnQgPSBsb2NrZWRQcm92aWRlci5jb25zdHJhaW50cztcbiAgICAgIGlmICghbG9ja2VkQ29uc3RyYWludCkge1xuICAgICAgICAvLyBQcm92aWRlciBsb2NrIGRvZXNuJ3QgaGF2ZSBhIGNvbnN0cmFpbnQgc3BlY2lmaWVkLCBzbyB3ZSBjYW4ndCBjaGVjay5cbiAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgUHJvdmlkZXIgbG9jayBkb2Vzbid0IGhhdmUgYSBjb25zdHJhaW50IGZvciAke2xvY2tlZFByb3ZpZGVyLm5hbWV9YCxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm92aWRlciA9IGFsbFByb3ZpZGVyc1tsb2NrZWRDb25zdHJhaW50LnNvdXJjZV07XG4gICAgICBpZiAoIXByb3ZpZGVyKSB7XG4gICAgICAgIC8vIGVsc2Ugbm8gbG9uZ2VyIHVzaW5nIHRoaXMgcHJvdmlkZXIsIHNvIHdvbid0IGNhdXNlIHByb2JsZW1zXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFsb2NrZWRDb25zdHJhaW50Lm1hdGNoZXNWZXJzaW9uKHByb3ZpZGVyLnZlcnNpb24gPz8gXCI+MFwiKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuKGNiOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgaWYgKHRoaXMuc3RvcHBlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmN1cnJlbnRXb3JrUHJvbWlzZSA9IGNiKCk7XG4gICAgICBhd2FpdCB0aGlzLmN1cnJlbnRXb3JrUHJvbWlzZTtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoeyB0eXBlOiBcImRvbmVcIiB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIudHJhY2UoXCJFcnJvciBpbiBjdXJyZW50V29ya1Byb21pc2VcIiwgZSk7XG4gICAgICB0aGlzLmN1cnJlbnRXb3JrUHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICB0eXBlOiBcImVycm9yZWRcIixcbiAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgIGVycm9yOiBTdHJpbmcoZSksXG4gICAgICB9KTtcbiAgICAgIHRocm93IGU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuY3VycmVudFdvcmtQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkaWZmKHtcbiAgICByZWZyZXNoT25seSxcbiAgICB0ZXJyYWZvcm1QYXJhbGxlbGlzbSxcbiAgICB2YXJzLFxuICAgIHZhckZpbGVzLFxuICAgIG5vQ29sb3IsXG4gIH06IHtcbiAgICByZWZyZXNoT25seT86IGJvb2xlYW47XG4gICAgdGVycmFmb3JtUGFyYWxsZWxpc20/OiBudW1iZXI7XG4gICAgdmFycz86IHN0cmluZ1tdO1xuICAgIHZhckZpbGVzPzogc3RyaW5nW107XG4gICAgbm9Db2xvcj86IGJvb2xlYW47XG4gIH0pIHtcbiAgICBhd2FpdCB0aGlzLnJ1bihhc3luYyAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRlKHsgdHlwZTogXCJwbGFubmluZ1wiLCBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSB9KTtcbiAgICAgIGNvbnN0IHRlcnJhZm9ybSA9IGF3YWl0IHRoaXMudGVycmFmb3JtQ2xpZW50KCk7XG5cbiAgICAgIGF3YWl0IHRlcnJhZm9ybS5wbGFuKHtcbiAgICAgICAgZGVzdHJveTogZmFsc2UsXG4gICAgICAgIHJlZnJlc2hPbmx5LFxuICAgICAgICBwYXJhbGxlbGlzbTogdGVycmFmb3JtUGFyYWxsZWxpc20sXG4gICAgICAgIHZhcnMsXG4gICAgICAgIHZhckZpbGVzLFxuICAgICAgICBub0NvbG9yLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRlKHsgdHlwZTogXCJwbGFubmVkXCIsIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lIH0pO1xuXG4gICAgICAvLyBGaW5kIGdlbmVyYXRlZCBmaWxlXG4gICAgICBjb25zdCBjb25maWdGaWxlID0gYXdhaXQgdHJ5UmVhZEdlbmVyYXRlZENvbmZpZ3VyYXRpb25GaWxlKFxuICAgICAgICB0aGlzLnN0YWNrLndvcmtpbmdEaXJlY3RvcnksXG4gICAgICApO1xuICAgICAgaWYgKGNvbmZpZ0ZpbGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgdHlwZTogXCJpbXBvcnQgd2l0aCBjb25maWd1cmF0aW9uIGRldGVjdGVkXCIsXG4gICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgY29uZmlndXJhdGlvbjogY29uZmlnRmlsZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY29udmVydGVkQ29kZSA9IGF3YWl0IGNvbnZlcnRDb25maWd1cmF0aW9uRmlsZShcbiAgICAgICAgICBjb25maWdGaWxlLFxuICAgICAgICAgIHRoaXMuc3RhY2sud29ya2luZ0RpcmVjdG9yeSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgdHlwZTogXCJpbXBvcnQgd2l0aCBjb25maWd1cmF0aW9uIGNvbnZlcnRlZFwiLFxuICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgIGNvbmZpZ3VyYXRpb246IGNvbnZlcnRlZENvZGUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBvbkxvZyA9IHRoaXMub3B0aW9ucy5vbkxvZztcbiAgICAgICAgaWYgKG9uTG9nKSB7XG4gICAgICAgICAgb25Mb2coe1xuICAgICAgICAgICAgbWVzc2FnZTogYEltcG9ydCB3aXRob3V0IGNvbmZpZ3VyYXRpb24gZGV0ZWN0ZWQuIFRlcnJhZm9ybSBoYXMgY3JlYXRlZCBjb25maWd1cmF0aW9uIGZvciBpdDpcbiR7Y29uZmlnRmlsZX1cblxuQ0RLVE4gaGFzIHRyYW5zbGF0ZWQgdGhlIGNvZGUgdG8gdGhlIGZvbGxvd2luZzpcblxuJHtjb252ZXJ0ZWRDb2RlfVxuXG5QbGVhc2UgcmV2aWV3IHRoZSBjb2RlIGFuZCBtYWtlIGFueSBuZWNlc3NhcnkgY2hhbmdlcyBiZWZvcmUgYWRkaW5nIGl0IHRvIHlvdXIgY29kZWJhc2UuXG5NYWtlIHN1cmUgdG8gb25seSBjb3B5IHRoZSBjb2RlIHdpdGhpbiB0aGUgY29uc3RydWN0J3MgY29uc3RydWN0b3IuXG5cbk5PVEU6IFlvdXIgcmVzb3VyY2UgaGFzIG5vdCB5ZXQgYmVjb21lIG1hbmFnZWQgYnkgQ0RLVE4uIFxuVG8gZmluaXNoIHRoZSBpbXBvcnQgcmVtb3ZlIHRoZSBjYWxsIFwiZ2VuZXJhdGVDb25maWdGb3JJbXBvcnRcIiwgYWRkIHRoZSBhYm92ZSBjb2RlIHdpdGhpbiB0aGUgY29uc3RydWN0J3MgY29uc3RydWN0b3IsIGFuZCB0aGVuIGFwcGVuZCB0aGUgY2FsbCBpbXBvcnRGcm9tKDxyZXNvdXJjZV9pZF90b19pbXBvcnRfZnJvbT4pIHRvIHRoZSBnZW5lcmF0ZWQgY29kZTogXG5cbm5ldyBTb21lUmVzb3VyY2UoLi4uKS5pbXBvcnRGcm9tKFwic29tZV9pZFwiKVxuYCxcbiAgICAgICAgICAgIGlzRXJyb3I6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRyeVJlbW92ZUdlbmVyYXRlZENvbmZpZ3VyYXRpb25GaWxlKHRoaXMuc3RhY2sud29ya2luZ0RpcmVjdG9yeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVwbG95KG9wdHM6IHtcbiAgICByZWZyZXNoT25seT86IGJvb2xlYW47XG4gICAgdGVycmFmb3JtUGFyYWxsZWxpc20/OiBudW1iZXI7XG4gICAgbm9Db2xvcj86IGJvb2xlYW47XG4gICAgdmFycz86IHN0cmluZ1tdO1xuICAgIHZhckZpbGVzPzogc3RyaW5nW107XG4gIH0pIHtcbiAgICBjb25zdCB7IHJlZnJlc2hPbmx5LCB0ZXJyYWZvcm1QYXJhbGxlbGlzbSwgbm9Db2xvciwgdmFycywgdmFyRmlsZXMgfSA9IG9wdHM7XG4gICAgYXdhaXQgdGhpcy5ydW4oYXN5bmMgKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7IHR5cGU6IFwicGxhbm5pbmdcIiwgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUgfSk7XG4gICAgICBjb25zdCB0ZXJyYWZvcm0gPSBhd2FpdCB0aGlzLnRlcnJhZm9ybUNsaWVudCgpO1xuXG4gICAgICBjb25zdCB7IGNhbmNlbGxlZCB9ID0gYXdhaXQgdGVycmFmb3JtLmRlcGxveShcbiAgICAgICAge1xuICAgICAgICAgIGF1dG9BcHByb3ZlOiB0aGlzLm9wdGlvbnMuYXV0b0FwcHJvdmUsXG4gICAgICAgICAgcmVmcmVzaE9ubHksXG4gICAgICAgICAgcGFyYWxsZWxpc206IHRlcnJhZm9ybVBhcmFsbGVsaXNtLFxuICAgICAgICAgIHZhcnMsXG4gICAgICAgICAgdmFyRmlsZXMsXG4gICAgICAgICAgbm9Db2xvcixcbiAgICAgICAgfSxcbiAgICAgICAgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgLy8gc3RhdGUgdXBkYXRlcyB3aGlsZSBhcHBseSBydW5zIHRoYXQgYWZmZWN0IHRoZSBVSVxuICAgICAgICAgIGlmIChzdGF0ZS50eXBlID09PSBcInJ1bm5pbmdcIiAmJiAhc3RhdGUuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJkZXBsb3lpbmdcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwid2FpdGluZyBmb3IgYXBwcm92YWxcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwid2FpdGluZyBmb3Igc3RhY2sgYXBwcm92YWxcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIGFwcHJvdmU6IHN0YXRlLmFwcHJvdmUsXG4gICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLnJlamVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJkaXNtaXNzZWRcIixcbiAgICAgICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09PSBcIndhaXRpbmcgZm9yIHNlbnRpbmVsIG92ZXJyaWRlXCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICB0eXBlOiBcIndhaXRpbmcgZm9yIHN0YWNrIHNlbnRpbmVsIG92ZXJyaWRlXCIsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICBvdmVycmlkZTogc3RhdGUub3ZlcnJpZGUsXG4gICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLnJlamVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJkaXNtaXNzZWRcIixcbiAgICAgICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09PSBcImV4dGVybmFsIGFwcHJvdmFsIHJlcGx5XCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICB0eXBlOiBcImV4dGVybmFsIHN0YWNrIGFwcHJvdmFsIHJlcGx5XCIsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICBhcHByb3ZlZDogc3RhdGUuYXBwcm92ZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwiZXh0ZXJuYWwgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc3RhY2sgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIG92ZXJyaWRkZW46IHN0YXRlLm92ZXJyaWRkZW4sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICBjb25zdCBvdXRwdXRzID0gYXdhaXQgdGVycmFmb3JtLm91dHB1dCgpO1xuICAgICAgICBjb25zdCBvdXRwdXRzQnlDb25zdHJ1Y3RJZCA9IGdldENvbnN0cnVjdElkc0Zvck91dHB1dHMoXG4gICAgICAgICAgSlNPTi5wYXJzZSh0aGlzLnN0YWNrLmNvbnRlbnQpLFxuICAgICAgICAgIG91dHB1dHMsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgdHlwZTogXCJkZXBsb3llZFwiLFxuICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgIG91dHB1dHMsXG4gICAgICAgICAgb3V0cHV0c0J5Q29uc3RydWN0SWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3kob3B0czoge1xuICAgIHRlcnJhZm9ybVBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICB9KSB7XG4gICAgY29uc3QgeyB0ZXJyYWZvcm1QYXJhbGxlbGlzbSwgbm9Db2xvciwgdmFycywgdmFyRmlsZXMgfSA9IG9wdHM7XG4gICAgYXdhaXQgdGhpcy5ydW4oYXN5bmMgKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7IHR5cGU6IFwicGxhbm5pbmdcIiwgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUgfSk7XG4gICAgICBjb25zdCB0ZXJyYWZvcm0gPSBhd2FpdCB0aGlzLnRlcnJhZm9ybUNsaWVudCgpO1xuICAgICAgY29uc3QgeyBjYW5jZWxsZWQgfSA9IGF3YWl0IHRlcnJhZm9ybS5kZXN0cm95KFxuICAgICAgICB7XG4gICAgICAgICAgYXV0b0FwcHJvdmU6IHRoaXMub3B0aW9ucy5hdXRvQXBwcm92ZSxcbiAgICAgICAgICBwYXJhbGxlbGlzbTogdGVycmFmb3JtUGFyYWxsZWxpc20sXG4gICAgICAgICAgdmFycyxcbiAgICAgICAgICB2YXJGaWxlcyxcbiAgICAgICAgICBub0NvbG9yLFxuICAgICAgICB9LFxuICAgICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgICAvLyBzdGF0ZSB1cGRhdGVzIHdoaWxlIGFwcGx5IHJ1bnMgdGhhdCBhZmZlY3QgdGhlIFVJXG4gICAgICAgICAgaWYgKHN0YXRlLnR5cGUgPT09IFwicnVubmluZ1wiICYmICFzdGF0ZS5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICB0eXBlOiBcImRlc3Ryb3lpbmdcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwid2FpdGluZyBmb3IgYXBwcm92YWxcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwid2FpdGluZyBmb3Igc3RhY2sgYXBwcm92YWxcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIGFwcHJvdmU6IHN0YXRlLmFwcHJvdmUsXG4gICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLnJlamVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJkaXNtaXNzZWRcIixcbiAgICAgICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09PSBcIndhaXRpbmcgZm9yIHNlbnRpbmVsIG92ZXJyaWRlXCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICB0eXBlOiBcIndhaXRpbmcgZm9yIHN0YWNrIHNlbnRpbmVsIG92ZXJyaWRlXCIsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICBvdmVycmlkZTogc3RhdGUub3ZlcnJpZGUsXG4gICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLnJlamVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJkaXNtaXNzZWRcIixcbiAgICAgICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09PSBcImV4dGVybmFsIGFwcHJvdmFsIHJlcGx5XCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICB0eXBlOiBcImV4dGVybmFsIHN0YWNrIGFwcHJvdmFsIHJlcGx5XCIsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICBhcHByb3ZlZDogc3RhdGUuYXBwcm92ZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwiZXh0ZXJuYWwgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc3RhY2sgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIG92ZXJyaWRkZW46IHN0YXRlLm92ZXJyaWRkZW4sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoIWNhbmNlbGxlZClcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgdHlwZTogXCJkZXN0cm95ZWRcIixcbiAgICAgICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmV0Y2hPdXRwdXRzKCkge1xuICAgIGF3YWl0IHRoaXMucnVuKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlcnJhZm9ybSA9IGF3YWl0IHRoaXMudGVycmFmb3JtQ2xpZW50KCk7XG5cbiAgICAgIGNvbnN0IG91dHB1dHMgPSBhd2FpdCB0ZXJyYWZvcm0ub3V0cHV0KCk7XG4gICAgICBjb25zdCBvdXRwdXRzQnlDb25zdHJ1Y3RJZCA9IGdldENvbnN0cnVjdElkc0Zvck91dHB1dHMoXG4gICAgICAgIEpTT04ucGFyc2UodGhpcy5zdGFjay5jb250ZW50KSxcbiAgICAgICAgb3V0cHV0cyxcbiAgICAgICk7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgdHlwZTogXCJvdXRwdXRzIGZldGNoZWRcIixcbiAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgIG91dHB1dHMsXG4gICAgICAgIG91dHB1dHNCeUNvbnN0cnVjdElkLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5vdXRwdXRzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0b3AoKSB7XG4gICAgdGhpcy5zdG9wcGVkID0gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TerraformTargetVersions } from "@cdktn/commons";
|
|
2
|
+
/**
|
|
3
|
+
* Verifies that the installed Terraform-compatible binary satisfies the
|
|
4
|
+
* project's declared `targetVersions` (cdktf.json). Only invoked when the
|
|
5
|
+
* project opts in via `validateInstalledBinary: true`, by commands that are
|
|
6
|
+
* about to execute the binary anyway.
|
|
7
|
+
*
|
|
8
|
+
* Declared targets state the project's supported range; this check is the
|
|
9
|
+
* explicit step that proves the local binary actually falls inside it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function checkInstalledBinaryAgainstTargets(versionOutput: string, declaredTargets: TerraformTargetVersions | undefined, binaryName: string): string[];
|
|
12
|
+
//# sourceMappingURL=installed-binary-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installed-binary-check.d.ts","sourceRoot":"","sources":["../../src/lib/installed-binary-check.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,uBAAuB,GAAG,SAAS,EACpD,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CA0BV"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.checkInstalledBinaryAgainstTargets = void 0;
|
|
27
|
+
// Copyright (c) HashiCorp, Inc
|
|
28
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
29
|
+
const semver = __importStar(require("semver"));
|
|
30
|
+
const commons_1 = require("@cdktn/commons");
|
|
31
|
+
/**
|
|
32
|
+
* Verifies that the installed Terraform-compatible binary satisfies the
|
|
33
|
+
* project's declared `targetVersions` (cdktf.json). Only invoked when the
|
|
34
|
+
* project opts in via `validateInstalledBinary: true`, by commands that are
|
|
35
|
+
* about to execute the binary anyway.
|
|
36
|
+
*
|
|
37
|
+
* Declared targets state the project's supported range; this check is the
|
|
38
|
+
* explicit step that proves the local binary actually falls inside it.
|
|
39
|
+
*/
|
|
40
|
+
function checkInstalledBinaryAgainstTargets(versionOutput, declaredTargets, binaryName) {
|
|
41
|
+
const targets = declaredTargets !== null && declaredTargets !== void 0 ? declaredTargets : commons_1.DEFAULT_TARGET_VERSIONS;
|
|
42
|
+
const cli = (0, commons_1.parseTerraformCliVersion)(versionOutput);
|
|
43
|
+
if (cli.name === "unknown" || !cli.version) {
|
|
44
|
+
return [
|
|
45
|
+
`Could not determine whether ${binaryName} is Terraform or OpenTofu from its version output, unable to verify it against the declared targetVersions`,
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
const declaredRange = targets[cli.name];
|
|
49
|
+
if (!declaredRange) {
|
|
50
|
+
return [
|
|
51
|
+
`The installed binary "${binaryName}" is ${cli.name} ${cli.version}, but the project's targetVersions does not declare ${cli.name} (declared: ${JSON.stringify(targets)})`,
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
if (!semver.satisfies(cli.version, declaredRange)) {
|
|
55
|
+
return [
|
|
56
|
+
`The installed binary "${binaryName}" is ${cli.name} ${cli.version}, which is outside the project's declared targetVersions.${cli.name} range "${declaredRange}"`,
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
exports.checkInstalledBinaryAgainstTargets = checkInstalledBinaryAgainstTargets;
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVkLWJpbmFyeS1jaGVjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvaW5zdGFsbGVkLWJpbmFyeS1jaGVjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsK0NBQWlDO0FBQ2pDLDRDQUl3QjtBQUV4Qjs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLGtDQUFrQyxDQUNoRCxhQUFxQixFQUNyQixlQUFvRCxFQUNwRCxVQUFrQjtJQUVsQixNQUFNLE9BQU8sR0FBRyxlQUFlLGFBQWYsZUFBZSxjQUFmLGVBQWUsR0FBSSxpQ0FBdUIsQ0FBQztJQUMzRCxNQUFNLEdBQUcsR0FBRyxJQUFBLGtDQUF3QixFQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXBELElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0MsT0FBTztZQUNMLCtCQUErQixVQUFVLDRHQUE0RztTQUN0SixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLE9BQU87WUFDTCx5QkFBeUIsVUFBVSxRQUFRLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLE9BQU8sdURBQXVELEdBQUcsQ0FBQyxJQUFJLGVBQWUsSUFBSSxDQUFDLFNBQVMsQ0FDNUosT0FBTyxDQUNSLEdBQUc7U0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNsRCxPQUFPO1lBQ0wseUJBQXlCLFVBQVUsUUFBUSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxPQUFPLDREQUE0RCxHQUFHLENBQUMsSUFBSSxXQUFXLGFBQWEsR0FBRztTQUNsSyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQTlCRCxnRkE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfVEFSR0VUX1ZFUlNJT05TLFxuICBwYXJzZVRlcnJhZm9ybUNsaVZlcnNpb24sXG4gIFRlcnJhZm9ybVRhcmdldFZlcnNpb25zLFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcblxuLyoqXG4gKiBWZXJpZmllcyB0aGF0IHRoZSBpbnN0YWxsZWQgVGVycmFmb3JtLWNvbXBhdGlibGUgYmluYXJ5IHNhdGlzZmllcyB0aGVcbiAqIHByb2plY3QncyBkZWNsYXJlZCBgdGFyZ2V0VmVyc2lvbnNgIChjZGt0Zi5qc29uKS4gT25seSBpbnZva2VkIHdoZW4gdGhlXG4gKiBwcm9qZWN0IG9wdHMgaW4gdmlhIGB2YWxpZGF0ZUluc3RhbGxlZEJpbmFyeTogdHJ1ZWAsIGJ5IGNvbW1hbmRzIHRoYXQgYXJlXG4gKiBhYm91dCB0byBleGVjdXRlIHRoZSBiaW5hcnkgYW55d2F5LlxuICpcbiAqIERlY2xhcmVkIHRhcmdldHMgc3RhdGUgdGhlIHByb2plY3QncyBzdXBwb3J0ZWQgcmFuZ2U7IHRoaXMgY2hlY2sgaXMgdGhlXG4gKiBleHBsaWNpdCBzdGVwIHRoYXQgcHJvdmVzIHRoZSBsb2NhbCBiaW5hcnkgYWN0dWFsbHkgZmFsbHMgaW5zaWRlIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJbnN0YWxsZWRCaW5hcnlBZ2FpbnN0VGFyZ2V0cyhcbiAgdmVyc2lvbk91dHB1dDogc3RyaW5nLFxuICBkZWNsYXJlZFRhcmdldHM6IFRlcnJhZm9ybVRhcmdldFZlcnNpb25zIHwgdW5kZWZpbmVkLFxuICBiaW5hcnlOYW1lOiBzdHJpbmcsXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHRhcmdldHMgPSBkZWNsYXJlZFRhcmdldHMgPz8gREVGQVVMVF9UQVJHRVRfVkVSU0lPTlM7XG4gIGNvbnN0IGNsaSA9IHBhcnNlVGVycmFmb3JtQ2xpVmVyc2lvbih2ZXJzaW9uT3V0cHV0KTtcblxuICBpZiAoY2xpLm5hbWUgPT09IFwidW5rbm93blwiIHx8ICFjbGkudmVyc2lvbikge1xuICAgIHJldHVybiBbXG4gICAgICBgQ291bGQgbm90IGRldGVybWluZSB3aGV0aGVyICR7YmluYXJ5TmFtZX0gaXMgVGVycmFmb3JtIG9yIE9wZW5Ub2Z1IGZyb20gaXRzIHZlcnNpb24gb3V0cHV0LCB1bmFibGUgdG8gdmVyaWZ5IGl0IGFnYWluc3QgdGhlIGRlY2xhcmVkIHRhcmdldFZlcnNpb25zYCxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgZGVjbGFyZWRSYW5nZSA9IHRhcmdldHNbY2xpLm5hbWVdO1xuICBpZiAoIWRlY2xhcmVkUmFuZ2UpIHtcbiAgICByZXR1cm4gW1xuICAgICAgYFRoZSBpbnN0YWxsZWQgYmluYXJ5IFwiJHtiaW5hcnlOYW1lfVwiIGlzICR7Y2xpLm5hbWV9ICR7Y2xpLnZlcnNpb259LCBidXQgdGhlIHByb2plY3QncyB0YXJnZXRWZXJzaW9ucyBkb2VzIG5vdCBkZWNsYXJlICR7Y2xpLm5hbWV9IChkZWNsYXJlZDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgdGFyZ2V0cyxcbiAgICAgICl9KWAsXG4gICAgXTtcbiAgfVxuXG4gIGlmICghc2VtdmVyLnNhdGlzZmllcyhjbGkudmVyc2lvbiwgZGVjbGFyZWRSYW5nZSkpIHtcbiAgICByZXR1cm4gW1xuICAgICAgYFRoZSBpbnN0YWxsZWQgYmluYXJ5IFwiJHtiaW5hcnlOYW1lfVwiIGlzICR7Y2xpLm5hbWV9ICR7Y2xpLnZlcnNpb259LCB3aGljaCBpcyBvdXRzaWRlIHRoZSBwcm9qZWN0J3MgZGVjbGFyZWQgdGFyZ2V0VmVyc2lvbnMuJHtjbGkubmFtZX0gcmFuZ2UgXCIke2RlY2xhcmVkUmFuZ2V9XCJgLFxuICAgIF07XG4gIH1cblxuICByZXR1cm4gW107XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terraform.d.ts","sourceRoot":"","sources":["../../../src/lib/models/terraform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"terraform.d.ts","sourceRoot":"","sources":["../../../src/lib/models/terraform.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,4 +69,4 @@ class AbstractTerraformPlan {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
exports.AbstractTerraformPlan = AbstractTerraformPlan;
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvdGVycmFmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsSUFBWSxxQkFNWDtBQU5ELFdBQVkscUJBQXFCO0lBQy9CLDBDQUFpQixDQUFBO0lBQ2pCLDBDQUFpQixDQUFBO0lBQ2pCLDBDQUFpQixDQUFBO0lBQ2pCLHNDQUFhLENBQUE7SUFDYix3Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFOVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQU1oQztBQUVELElBQVksMkJBVVg7QUFWRCxXQUFZLDJCQUEyQjtJQUNyQyxrREFBbUIsQ0FBQTtJQUNuQixvREFBcUIsQ0FBQTtJQUNyQixrREFBbUIsQ0FBQTtJQUNuQixvREFBcUIsQ0FBQTtJQUNyQixrREFBbUIsQ0FBQTtJQUNuQix3REFBeUIsQ0FBQTtJQUN6QixzREFBdUIsQ0FBQTtJQUN2QixrREFBbUIsQ0FBQTtJQUNuQiw4Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFWVywyQkFBMkIsMkNBQTNCLDJCQUEyQixRQVV0QztBQWlDRCxTQUFnQixpQkFBaUIsQ0FBQyxNQUFXO0lBQzNDLE9BQU8sQ0FDTCxPQUFPLE1BQU0sS0FBSyxRQUFRO1FBQzFCLE9BQU8sTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTO1FBQ3JDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNoRSxDQUFDO0FBQ0osQ0FBQztBQU5ELDhDQU1DO0FBU0QsU0FBUyx1QkFBdUIsQ0FBQyxTQUE0QjtJQUMzRCxNQUFNLFlBQVksR0FBRztRQUNuQixxQkFBcUIsQ0FBQyxNQUFNO1FBQzVCLHFCQUFxQixDQUFDLE1BQU07UUFDNUIscUJBQXFCLENBQUMsTUFBTTtRQUM1QixxQkFBcUIsQ0FBQyxJQUFJO0tBQzNCLENBQUM7SUFDRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUNELE1BQXNCLHFCQUFxQjtJQUN6QyxZQUNrQixRQUFnQixFQUNmLGVBQWtDLEVBQ2xDLGFBQW9EO1FBRnJELGFBQVEsR0FBUixRQUFRLENBQVE7UUFDZixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQXVDO0lBQ3BFLENBQUM7SUFFSixJQUFXLFNBQVM7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbkQsT0FBTztnQkFDTCxFQUFFLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3BCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDaEIsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLEVBQUUsRUFBRSxVQUFVLEdBQUcsRUFBRTtZQUNuQixNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDekIsQ0FBQyxDQUFzQixDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLENBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUN0RSxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBcENELHNEQW9DQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5leHBvcnQgZW51bSBQbGFubmVkUmVzb3VyY2VBY3Rpb24ge1xuICBDUkVBVEUgPSBcImNyZWF0ZVwiLFxuICBVUERBVEUgPSBcInVwZGF0ZVwiLFxuICBERUxFVEUgPSBcImRlbGV0ZVwiLFxuICBSRUFEID0gXCJyZWFkXCIsXG4gIE5PX09QID0gXCJuby1vcFwiLFxufVxuXG5leHBvcnQgZW51bSBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGUge1xuICBXQUlUSU5HID0gXCJ3YWl0aW5nXCIsXG4gIFVQREFUSU5HID0gXCJ1cGRhdGluZ1wiLFxuICBVUERBVEVEID0gXCJ1cGRhdGVkXCIsXG4gIENSRUFUSU5HID0gXCJjcmVhdGluZ1wiLFxuICBDUkVBVEVEID0gXCJjcmVhdGVkXCIsXG4gIERFU1RST1lJTkcgPSBcImRlc3Ryb3lpbmdcIixcbiAgREVTVFJPWUVEID0gXCJkZXN0cm95ZWRcIixcbiAgU1VDQ0VTUyA9IFwic3VjY2Vzc1wiLFxuICBFUlJPUiA9IFwiZXJyb3JcIixcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGxhbm5lZFJlc291cmNlIHtcbiAgaWQ6IHN0cmluZztcbiAgYWN0aW9uOiBQbGFubmVkUmVzb3VyY2VBY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95aW5nUmVzb3VyY2UgZXh0ZW5kcyBQbGFubmVkUmVzb3VyY2Uge1xuICBhcHBseVN0YXRlOiBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VDaGFuZ2VzQ2hhbmdlIHtcbiAgYWN0aW9uczogc3RyaW5nW107XG4gIGJlZm9yZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgYWZ0ZXI6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VDaGFuZ2VzIHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBtb2R1bGVfYWRkcmVzczogc3RyaW5nO1xuICBtb2RlOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xuICBwcm92aWRlcl9uYW1lOiBzdHJpbmc7XG4gIGNoYW5nZTogUmVzb3VyY2VDaGFuZ2VzQ2hhbmdlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybU91dHB1dCB7XG4gIHNlbnNpdGl2ZTogYm9vbGVhbjtcbiAgdHlwZTogc3RyaW5nIHwgQXJyYXk8YW55PjtcbiAgdmFsdWU6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgQXJyYXk8YW55Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGVycmFmb3JtT3V0cHV0KG91dHB1dDogYW55KTogb3V0cHV0IGlzIFRlcnJhZm9ybU91dHB1dCB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIG91dHB1dCA9PT0gXCJvYmplY3RcIiAmJlxuICAgIHR5cGVvZiBvdXRwdXQuc2Vuc2l0aXZlID09PSBcImJvb2xlYW5cIiAmJlxuICAgICh0eXBlb2Ygb3V0cHV0LnR5cGUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheShvdXRwdXQudHlwZSkpXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtUGxhbiB7XG4gIHJlYWRvbmx5IHJlc291cmNlczogUGxhbm5lZFJlc291cmNlW107XG4gIHJlYWRvbmx5IGFwcGx5YWJsZVJlc291cmNlczogUGxhbm5lZFJlc291cmNlW107XG4gIHJlYWRvbmx5IG5lZWRzQXBwbHk6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHBsYW5GaWxlOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGZpbHRlckNoYW5naW5nUmVzb3VyY2VzKHJlc291cmNlczogUGxhbm5lZFJlc291cmNlW10pIHtcbiAgY29uc3QgYXBwbHlBY3Rpb25zID0gW1xuICAgIFBsYW5uZWRSZXNvdXJjZUFjdGlvbi5VUERBVEUsXG4gICAgUGxhbm5lZFJlc291cmNlQWN0aW9uLkNSRUFURSxcbiAgICBQbGFubmVkUmVzb3VyY2VBY3Rpb24uREVMRVRFLFxuICAgIFBsYW5uZWRSZXNvdXJjZUFjdGlvbi5SRUFELFxuICBdO1xuICByZXR1cm4gcmVzb3VyY2VzLmZpbHRlcigocmVzb3VyY2UpID0+IGFwcGx5QWN0aW9ucy5pbmNsdWRlcyhyZXNvdXJjZS5hY3Rpb24pKTtcbn1cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFRlcnJhZm9ybVBsYW4gaW1wbGVtZW50cyBUZXJyYWZvcm1QbGFuIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHBsYW5GaWxlOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlc1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0Q2hhbmdlczogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VDaGFuZ2VzQ2hhbmdlPixcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VzKCk6IFBsYW5uZWRSZXNvdXJjZVtdIHtcbiAgICByZXR1cm4gKHRoaXMucmVzb3VyY2VDaGFuZ2VzIHx8IFtdKS5tYXAoKHJlc291cmNlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcmVzb3VyY2UuYWRkcmVzcyxcbiAgICAgICAgYWN0aW9uOiByZXNvdXJjZS5jaGFuZ2UuYWN0aW9uc1swXSxcbiAgICAgIH0gYXMgUGxhbm5lZFJlc291cmNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBhcHBseWFibGVSZXNvdXJjZXMoKTogUGxhbm5lZFJlc291cmNlW10ge1xuICAgIHJldHVybiBmaWx0ZXJDaGFuZ2luZ1Jlc291cmNlcyh0aGlzLnJlc291cmNlcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUGxhbm5lZFJlc291cmNlW10ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLm91dHB1dENoYW5nZXMgfHwge30pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgaWQ6IGBvdXRwdXQuJHtrZXl9YCxcbiAgICAgIGFjdGlvbjogdmFsdWUuYWN0aW9uc1swXSxcbiAgICB9KSkgYXMgUGxhbm5lZFJlc291cmNlW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYW5naW5nT3V0cHV0cygpOiBQbGFubmVkUmVzb3VyY2VbXSB7XG4gICAgcmV0dXJuIGZpbHRlckNoYW5naW5nUmVzb3VyY2VzKHRoaXMub3V0cHV0cyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5lZWRzQXBwbHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYXBwbHlhYmxlUmVzb3VyY2VzLmxlbmd0aCA+IDAgfHwgdGhpcy5jaGFuZ2luZ091dHB1dHMubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVGVycmFmb3JtRGVwbG95U3RhdGUgPVxuICB8IHsgdHlwZTogXCJydW5uaW5nXCI7IGNhbmNlbGxlZDogYm9vbGVhbiB9XG4gIHwge1xuICAgICAgdHlwZTogXCJ3YWl0aW5nIGZvciBhcHByb3ZhbFwiO1xuICAgICAgYXBwcm92ZTogKCkgPT4gdm9pZDtcbiAgICAgIHJlamVjdDogKCkgPT4gdm9pZDtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJ3YWl0aW5nIGZvciBzZW50aW5lbCBvdmVycmlkZVwiO1xuICAgICAgb3ZlcnJpZGU6ICgpID0+IHZvaWQ7XG4gICAgICByZWplY3Q6ICgpID0+IHZvaWQ7XG4gICAgfVxuICB8IHsgdHlwZTogXCJleHRlcm5hbCBhcHByb3ZhbCByZXBseVwiOyBhcHByb3ZlZDogYm9vbGVhbiB9XG4gIHwgeyB0eXBlOiBcImV4dGVybmFsIHNlbnRpbmVsIG92ZXJyaWRlIHJlcGx5XCI7IG92ZXJyaWRkZW46IGJvb2xlYW4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm0ge1xuICBpbml0OiAob3B0czoge1xuICAgIG5lZWRzVXBncmFkZTogYm9vbGVhbjtcbiAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgICBuZWVkc0xvY2tmaWxlVXBkYXRlOiBib29sZWFuO1xuICAgIG1pZ3JhdGVTdGF0ZTogYm9vbGVhbjtcbiAgfSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBwbGFuOiAob3B0czoge1xuICAgIGRlc3Ryb3k6IGJvb2xlYW47XG4gICAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICAgIHBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICB9KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZXBsb3koXG4gICAgb3B0aW9uczoge1xuICAgICAgYXV0b0FwcHJvdmU/OiBib29sZWFuO1xuICAgICAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICAgICAgcGFyYWxsZWxpc20/OiBudW1iZXI7XG4gICAgICB2YXJzPzogc3RyaW5nW107XG4gICAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgICAgbm9Db2xvcj86IGJvb2xlYW47XG4gICAgfSxcbiAgICBjYWxsYmFjazogKHN0YXRlOiBUZXJyYWZvcm1EZXBsb3lTdGF0ZSkgPT4gdm9pZCxcbiAgKTogUHJvbWlzZTx7IGNhbmNlbGxlZDogYm9vbGVhbiB9PjtcbiAgZGVzdHJveShcbiAgICBvcHRpb25zOiB7XG4gICAgICBhdXRvQXBwcm92ZT86IGJvb2xlYW47XG4gICAgICBwYXJhbGxlbGlzbT86IG51bWJlcjtcbiAgICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICAgIHZhckZpbGVzPzogc3RyaW5nW107XG4gICAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgICB9LFxuICAgIGNhbGxiYWNrOiAoc3RhdGU6IFRlcnJhZm9ybURlcGxveVN0YXRlKSA9PiB2b2lkLFxuICApOiBQcm9taXNlPHsgY2FuY2VsbGVkOiBib29sZWFuIH0+
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvdGVycmFmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsSUFBWSxxQkFNWDtBQU5ELFdBQVkscUJBQXFCO0lBQy9CLDBDQUFpQixDQUFBO0lBQ2pCLDBDQUFpQixDQUFBO0lBQ2pCLDBDQUFpQixDQUFBO0lBQ2pCLHNDQUFhLENBQUE7SUFDYix3Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFOVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQU1oQztBQUVELElBQVksMkJBVVg7QUFWRCxXQUFZLDJCQUEyQjtJQUNyQyxrREFBbUIsQ0FBQTtJQUNuQixvREFBcUIsQ0FBQTtJQUNyQixrREFBbUIsQ0FBQTtJQUNuQixvREFBcUIsQ0FBQTtJQUNyQixrREFBbUIsQ0FBQTtJQUNuQix3REFBeUIsQ0FBQTtJQUN6QixzREFBdUIsQ0FBQTtJQUN2QixrREFBbUIsQ0FBQTtJQUNuQiw4Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFWVywyQkFBMkIsMkNBQTNCLDJCQUEyQixRQVV0QztBQWlDRCxTQUFnQixpQkFBaUIsQ0FBQyxNQUFXO0lBQzNDLE9BQU8sQ0FDTCxPQUFPLE1BQU0sS0FBSyxRQUFRO1FBQzFCLE9BQU8sTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTO1FBQ3JDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNoRSxDQUFDO0FBQ0osQ0FBQztBQU5ELDhDQU1DO0FBU0QsU0FBUyx1QkFBdUIsQ0FBQyxTQUE0QjtJQUMzRCxNQUFNLFlBQVksR0FBRztRQUNuQixxQkFBcUIsQ0FBQyxNQUFNO1FBQzVCLHFCQUFxQixDQUFDLE1BQU07UUFDNUIscUJBQXFCLENBQUMsTUFBTTtRQUM1QixxQkFBcUIsQ0FBQyxJQUFJO0tBQzNCLENBQUM7SUFDRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUNELE1BQXNCLHFCQUFxQjtJQUN6QyxZQUNrQixRQUFnQixFQUNmLGVBQWtDLEVBQ2xDLGFBQW9EO1FBRnJELGFBQVEsR0FBUixRQUFRLENBQVE7UUFDZixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQXVDO0lBQ3BFLENBQUM7SUFFSixJQUFXLFNBQVM7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbkQsT0FBTztnQkFDTCxFQUFFLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3BCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDaEIsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLEVBQUUsRUFBRSxVQUFVLEdBQUcsRUFBRTtZQUNuQixNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDekIsQ0FBQyxDQUFzQixDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLENBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUN0RSxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBcENELHNEQW9DQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5leHBvcnQgZW51bSBQbGFubmVkUmVzb3VyY2VBY3Rpb24ge1xuICBDUkVBVEUgPSBcImNyZWF0ZVwiLFxuICBVUERBVEUgPSBcInVwZGF0ZVwiLFxuICBERUxFVEUgPSBcImRlbGV0ZVwiLFxuICBSRUFEID0gXCJyZWFkXCIsXG4gIE5PX09QID0gXCJuby1vcFwiLFxufVxuXG5leHBvcnQgZW51bSBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGUge1xuICBXQUlUSU5HID0gXCJ3YWl0aW5nXCIsXG4gIFVQREFUSU5HID0gXCJ1cGRhdGluZ1wiLFxuICBVUERBVEVEID0gXCJ1cGRhdGVkXCIsXG4gIENSRUFUSU5HID0gXCJjcmVhdGluZ1wiLFxuICBDUkVBVEVEID0gXCJjcmVhdGVkXCIsXG4gIERFU1RST1lJTkcgPSBcImRlc3Ryb3lpbmdcIixcbiAgREVTVFJPWUVEID0gXCJkZXN0cm95ZWRcIixcbiAgU1VDQ0VTUyA9IFwic3VjY2Vzc1wiLFxuICBFUlJPUiA9IFwiZXJyb3JcIixcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGxhbm5lZFJlc291cmNlIHtcbiAgaWQ6IHN0cmluZztcbiAgYWN0aW9uOiBQbGFubmVkUmVzb3VyY2VBY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95aW5nUmVzb3VyY2UgZXh0ZW5kcyBQbGFubmVkUmVzb3VyY2Uge1xuICBhcHBseVN0YXRlOiBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VDaGFuZ2VzQ2hhbmdlIHtcbiAgYWN0aW9uczogc3RyaW5nW107XG4gIGJlZm9yZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgYWZ0ZXI6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VDaGFuZ2VzIHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBtb2R1bGVfYWRkcmVzczogc3RyaW5nO1xuICBtb2RlOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xuICBwcm92aWRlcl9uYW1lOiBzdHJpbmc7XG4gIGNoYW5nZTogUmVzb3VyY2VDaGFuZ2VzQ2hhbmdlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybU91dHB1dCB7XG4gIHNlbnNpdGl2ZTogYm9vbGVhbjtcbiAgdHlwZTogc3RyaW5nIHwgQXJyYXk8YW55PjtcbiAgdmFsdWU6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgQXJyYXk8YW55Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGVycmFmb3JtT3V0cHV0KG91dHB1dDogYW55KTogb3V0cHV0IGlzIFRlcnJhZm9ybU91dHB1dCB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIG91dHB1dCA9PT0gXCJvYmplY3RcIiAmJlxuICAgIHR5cGVvZiBvdXRwdXQuc2Vuc2l0aXZlID09PSBcImJvb2xlYW5cIiAmJlxuICAgICh0eXBlb2Ygb3V0cHV0LnR5cGUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheShvdXRwdXQudHlwZSkpXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtUGxhbiB7XG4gIHJlYWRvbmx5IHJlc291cmNlczogUGxhbm5lZFJlc291cmNlW107XG4gIHJlYWRvbmx5IGFwcGx5YWJsZVJlc291cmNlczogUGxhbm5lZFJlc291cmNlW107XG4gIHJlYWRvbmx5IG5lZWRzQXBwbHk6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHBsYW5GaWxlOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGZpbHRlckNoYW5naW5nUmVzb3VyY2VzKHJlc291cmNlczogUGxhbm5lZFJlc291cmNlW10pIHtcbiAgY29uc3QgYXBwbHlBY3Rpb25zID0gW1xuICAgIFBsYW5uZWRSZXNvdXJjZUFjdGlvbi5VUERBVEUsXG4gICAgUGxhbm5lZFJlc291cmNlQWN0aW9uLkNSRUFURSxcbiAgICBQbGFubmVkUmVzb3VyY2VBY3Rpb24uREVMRVRFLFxuICAgIFBsYW5uZWRSZXNvdXJjZUFjdGlvbi5SRUFELFxuICBdO1xuICByZXR1cm4gcmVzb3VyY2VzLmZpbHRlcigocmVzb3VyY2UpID0+IGFwcGx5QWN0aW9ucy5pbmNsdWRlcyhyZXNvdXJjZS5hY3Rpb24pKTtcbn1cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFRlcnJhZm9ybVBsYW4gaW1wbGVtZW50cyBUZXJyYWZvcm1QbGFuIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHBsYW5GaWxlOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlc1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0Q2hhbmdlczogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VDaGFuZ2VzQ2hhbmdlPixcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VzKCk6IFBsYW5uZWRSZXNvdXJjZVtdIHtcbiAgICByZXR1cm4gKHRoaXMucmVzb3VyY2VDaGFuZ2VzIHx8IFtdKS5tYXAoKHJlc291cmNlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcmVzb3VyY2UuYWRkcmVzcyxcbiAgICAgICAgYWN0aW9uOiByZXNvdXJjZS5jaGFuZ2UuYWN0aW9uc1swXSxcbiAgICAgIH0gYXMgUGxhbm5lZFJlc291cmNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBhcHBseWFibGVSZXNvdXJjZXMoKTogUGxhbm5lZFJlc291cmNlW10ge1xuICAgIHJldHVybiBmaWx0ZXJDaGFuZ2luZ1Jlc291cmNlcyh0aGlzLnJlc291cmNlcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUGxhbm5lZFJlc291cmNlW10ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLm91dHB1dENoYW5nZXMgfHwge30pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgaWQ6IGBvdXRwdXQuJHtrZXl9YCxcbiAgICAgIGFjdGlvbjogdmFsdWUuYWN0aW9uc1swXSxcbiAgICB9KSkgYXMgUGxhbm5lZFJlc291cmNlW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYW5naW5nT3V0cHV0cygpOiBQbGFubmVkUmVzb3VyY2VbXSB7XG4gICAgcmV0dXJuIGZpbHRlckNoYW5naW5nUmVzb3VyY2VzKHRoaXMub3V0cHV0cyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5lZWRzQXBwbHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYXBwbHlhYmxlUmVzb3VyY2VzLmxlbmd0aCA+IDAgfHwgdGhpcy5jaGFuZ2luZ091dHB1dHMubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVGVycmFmb3JtRGVwbG95U3RhdGUgPVxuICB8IHsgdHlwZTogXCJydW5uaW5nXCI7IGNhbmNlbGxlZDogYm9vbGVhbiB9XG4gIHwge1xuICAgICAgdHlwZTogXCJ3YWl0aW5nIGZvciBhcHByb3ZhbFwiO1xuICAgICAgYXBwcm92ZTogKCkgPT4gdm9pZDtcbiAgICAgIHJlamVjdDogKCkgPT4gdm9pZDtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJ3YWl0aW5nIGZvciBzZW50aW5lbCBvdmVycmlkZVwiO1xuICAgICAgb3ZlcnJpZGU6ICgpID0+IHZvaWQ7XG4gICAgICByZWplY3Q6ICgpID0+IHZvaWQ7XG4gICAgfVxuICB8IHsgdHlwZTogXCJleHRlcm5hbCBhcHByb3ZhbCByZXBseVwiOyBhcHByb3ZlZDogYm9vbGVhbiB9XG4gIHwgeyB0eXBlOiBcImV4dGVybmFsIHNlbnRpbmVsIG92ZXJyaWRlIHJlcGx5XCI7IG92ZXJyaWRkZW46IGJvb2xlYW4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm0ge1xuICBpbml0OiAob3B0czoge1xuICAgIG5lZWRzVXBncmFkZTogYm9vbGVhbjtcbiAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgICBuZWVkc0xvY2tmaWxlVXBkYXRlOiBib29sZWFuO1xuICAgIG1pZ3JhdGVTdGF0ZTogYm9vbGVhbjtcbiAgfSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBwbGFuOiAob3B0czoge1xuICAgIGRlc3Ryb3k6IGJvb2xlYW47XG4gICAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICAgIHBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICB9KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZXBsb3koXG4gICAgb3B0aW9uczoge1xuICAgICAgYXV0b0FwcHJvdmU/OiBib29sZWFuO1xuICAgICAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICAgICAgcGFyYWxsZWxpc20/OiBudW1iZXI7XG4gICAgICB2YXJzPzogc3RyaW5nW107XG4gICAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgICAgbm9Db2xvcj86IGJvb2xlYW47XG4gICAgfSxcbiAgICBjYWxsYmFjazogKHN0YXRlOiBUZXJyYWZvcm1EZXBsb3lTdGF0ZSkgPT4gdm9pZCxcbiAgKTogUHJvbWlzZTx7IGNhbmNlbGxlZDogYm9vbGVhbiB9PjtcbiAgZGVzdHJveShcbiAgICBvcHRpb25zOiB7XG4gICAgICBhdXRvQXBwcm92ZT86IGJvb2xlYW47XG4gICAgICBwYXJhbGxlbGlzbT86IG51bWJlcjtcbiAgICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICAgIHZhckZpbGVzPzogc3RyaW5nW107XG4gICAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgICB9LFxuICAgIGNhbGxiYWNrOiAoc3RhdGU6IFRlcnJhZm9ybURlcGxveVN0YXRlKSA9PiB2b2lkLFxuICApOiBQcm9taXNlPHsgY2FuY2VsbGVkOiBib29sZWFuIH0+O1xuICBvdXRwdXQoKTogUHJvbWlzZTx7IFtrZXk6IHN0cmluZ106IFRlcnJhZm9ybU91dHB1dCB9PjtcbiAgdmVyc2lvbigpOiBQcm9taXNlPHN0cmluZz47XG4gIGFib3J0OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cdktn/cli-core",
|
|
3
|
-
"version": "0.24.0-pre.
|
|
3
|
+
"version": "0.24.0-pre.59",
|
|
4
4
|
"description": "CDK Terrain CLI Core, meant for internal use only",
|
|
5
5
|
"main": "build/lib/index.js",
|
|
6
6
|
"types": "build/lib/index.d.ts",
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
"xml-js": "1.6.11",
|
|
49
49
|
"xstate": "4.38.3",
|
|
50
50
|
"zod": "3.25.76",
|
|
51
|
-
"@cdktn/commons": "0.24.0-pre.
|
|
52
|
-
"@cdktn/
|
|
53
|
-
"@cdktn/
|
|
54
|
-
"@cdktn/
|
|
55
|
-
"cdktn": "0.24.0-pre.
|
|
51
|
+
"@cdktn/commons": "0.24.0-pre.59",
|
|
52
|
+
"@cdktn/hcl-tools": "0.24.0-pre.59",
|
|
53
|
+
"@cdktn/hcl2cdk": "0.24.0-pre.59",
|
|
54
|
+
"@cdktn/provider-schema": "0.24.0-pre.59",
|
|
55
|
+
"cdktn": "0.24.0-pre.59"
|
|
56
56
|
},
|
|
57
57
|
"lint-staged": {
|
|
58
58
|
"src/**/*.{ts,tsx}": "tsc-files ambient.d.ts --noEmit"
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"prettier": "2.8.8",
|
|
69
69
|
"tsc-files": "1.1.4",
|
|
70
70
|
"typescript": "^5.0.0",
|
|
71
|
-
"@cdktn/provider-generator": "0.24.0-pre.
|
|
71
|
+
"@cdktn/provider-generator": "0.24.0-pre.59"
|
|
72
72
|
},
|
|
73
73
|
"scripts": {
|
|
74
74
|
"build": "tsc",
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
"app": "dotnet run -p MyTerraformStack.csproj",
|
|
4
4
|
"projectId": "{{projectId}}",
|
|
5
5
|
"sendCrashReports": "{{sendCrashReports}}",
|
|
6
|
+
"targetVersions": {
|
|
7
|
+
"terraform": ">=1.5.7",
|
|
8
|
+
"opentofu": ">=1.6.0"
|
|
9
|
+
},
|
|
6
10
|
"terraformProviders": [],
|
|
7
11
|
"terraformModules": [],
|
|
8
12
|
"context": {
|
package/templates/go/cdktf.json
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
"app": "pipenv run python main.py",
|
|
4
4
|
"projectId": "{{projectId}}",
|
|
5
5
|
"sendCrashReports": "{{sendCrashReports}}",
|
|
6
|
+
"targetVersions": {
|
|
7
|
+
"terraform": ">=1.5.7",
|
|
8
|
+
"opentofu": ">=1.6.0"
|
|
9
|
+
},
|
|
6
10
|
"terraformProviders": [],
|
|
7
11
|
"terraformModules": [],
|
|
8
12
|
"codeMakerOutput": "imports",
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
"app": "python3 ./main.py",
|
|
4
4
|
"projectId": "{{projectId}}",
|
|
5
5
|
"sendCrashReports": "{{sendCrashReports}}",
|
|
6
|
+
"targetVersions": {
|
|
7
|
+
"terraform": ">=1.5.7",
|
|
8
|
+
"opentofu": ">=1.6.0"
|
|
9
|
+
},
|
|
6
10
|
"terraformProviders": [],
|
|
7
11
|
"terraformModules": [],
|
|
8
12
|
"codeMakerOutput": "imports",
|