@cdktn/provider-project 0.8.0 → 0.8.1
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/.jsii +9 -9
- package/API.md +247 -441
- package/lib/cdktf-config.js +35 -2
- package/lib/customized-license.js +3 -1
- package/lib/force-release.js +2 -1
- package/lib/github-issues.js +2 -1
- package/lib/index.d.ts +5 -2
- package/lib/index.js +26 -14
- package/lib/package-info.d.ts +1 -1
- package/lib/package-info.js +1 -1
- package/lib/readme.js +2 -1
- package/lib/scripts/check-for-upgrades.js +2 -1
- package/lib/scripts/should-release.js +2 -1
- package/package.json +38 -36
package/lib/cdktf-config.js
CHANGED
|
@@ -3,9 +3,42 @@
|
|
|
3
3
|
* Copyright (c) HashiCorp, Inc.
|
|
4
4
|
* SPDX-License-Identifier: MPL-2.0
|
|
5
5
|
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
6
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
40
|
exports.CdktfConfig = void 0;
|
|
8
|
-
const path = require("path");
|
|
41
|
+
const path = __importStar(require("path"));
|
|
9
42
|
const fs_extra_1 = require("fs-extra");
|
|
10
43
|
const projen_1 = require("projen");
|
|
11
44
|
const readme_1 = require("./readme");
|
|
@@ -133,4 +166,4 @@ class CdktfConfig {
|
|
|
133
166
|
}
|
|
134
167
|
}
|
|
135
168
|
exports.CdktfConfig = CdktfConfig;
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrdGYtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nka3RmLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCw2QkFBNkI7QUFDN0IsdUNBQW9EO0FBQ3BELG1DQUF1QztBQUV2QyxxQ0FBc0M7QUFFdEMsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDO0FBMEJyQyxNQUFhLFdBQVc7SUFDdEIsWUFBWSxPQUF3QixFQUFFLE9BQTJCO1FBQy9ELE1BQU0sRUFDSixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsWUFBWSxHQUNiLEdBQUcsT0FBTyxDQUFDO1FBRVosTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUMxQyxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztRQUVwRCxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUM3QyxPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBRXZELE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxVQUFVLENBQUMsY0FBYyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFFdEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxVQUFVLENBQUMsY0FBYyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFP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QUN2QixrQkFBa0IsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2FBQ3hDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxtQkFBVSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUU7WUFDbkMsR0FBRyxPQUFPO1lBQ1YsMEJBQTBCLEVBQUUscUJBQXFCO1NBQ2xELENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNKRCxrQ0EySkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHJlYWRGaWxlU3luYywgZXhpc3RzU3luYyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHsgSnNvbkZpbGUsIGNkayB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IFBhY2thZ2VJbmZvIH0gZnJvbSBcIi4vcGFja2FnZS1pbmZvXCI7XG5pbXBvcnQgeyBSZWFkbWVGaWxlIH0gZnJvbSBcIi4vcmVhZG1lXCI7XG5cbmNvbnN0IENES1RGX0pTT05fRklMRSA9IFwiY2RrdGYuanNvblwiO1xuXG5pbnRlcmZhY2UgQ2RrdGZDb25maWdPcHRpb25zIHtcbiAgdGVycmFmb3JtUHJvdmlkZXI6IHN0cmluZztcbiAgcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG4gIGZxcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG4gIHByb3ZpZGVyVmVyc2lvbjogc3RyaW5nO1xuICBjZGt0blZlcnNpb246IHN0cmluZztcbiAgY29uc3RydWN0c1ZlcnNpb246IHN0cmluZztcbiAgcGFja2FnZUluZm86IFBhY2thZ2VJbmZvO1xuICBnaXRodWJOYW1lc3BhY2U6IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgcHJlYnVpbHQgcHJvdmlkZXIgaXMgZGVwcmVjYXRlZC5cbiAgICogSWYgdHJ1ZSwgbm8gbmV3IHZlcnNpb25zIHdpbGwgYmUgcHVibGlzaGVkLlxuICAgKi9cbiAgaXNEZXByZWNhdGVkOiBib29sZWFuO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZGF0ZSB3aGVuIHRoZSBwcm9qZWN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGRlcHJlY2F0ZWQsXG4gICAqIHRvIGJlIHVzZWQgaW4gdGhlIFJFQURNRSB0ZXh0LiBJZiBubyBkYXRlIGlzIHByb3ZpZGVkLCB0aGVuIHRoZVxuICAgKiBkYXRlIG9mIHRoZSBidWlsZCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGRlcHJlY2F0aW9uRGF0ZT86IHN0cmluZztcbiAganNpaVZlcnNpb24/OiBzdHJpbmc7XG4gIHR5cGVzY3JpcHRWZXJzaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2RrdGZDb25maWcge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBjZGsuSnNpaVByb2plY3QsIG9wdGlvbnM6IENka3RmQ29uZmlnT3B0aW9ucykge1xuICAgIGNvbnN0IHtcbiAgICAgIHRlcnJhZm9ybVByb3ZpZGVyLFxuICAgICAgcHJvdmlkZXJOYW1lLFxuICAgICAganNpaVZlcnNpb24sXG4gICAgICB0eXBlc2NyaXB0VmVyc2lvbixcbiAgICAgIGlzRGVwcmVjYXRlZCxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGNka3RuVmVyc2lvbiA9IG9wdGlvbnMuY2RrdG5WZXJzaW9uO1xuICAgIGNvbnN0IGNvbnN0cnVjdHNWZXJzaW9uID0gb3B0aW9ucy5jb25zdHJ1Y3RzVmVyc2lvbjtcblxuICAgIHByb2plY3QuYWRkUGVlckRlcHMoYGNka3RuQCR7Y2RrdG5WZXJzaW9ufWApO1xuICAgIHByb2plY3QuYWRkUGVlckRlcHMoYGNvbnN0cnVjdHNAJHtjb25zdHJ1Y3RzVmVyc2lvbn1gKTtcblxuICAgIHByb2plY3QuYWRkRGV2RGVwcyhgY2RrdG5AJHtjZGt0blZlcnNpb259YCk7XG4gICAgcHJvamVjdC5hZGREZXZEZXBzKGBjZGt0bi1jbGlAJHtjZGt0blZlcnNpb259YCk7XG4gICAgcHJvamVjdC5hZGREZXZEZXBzKGBjb25zdHJ1Y3RzQCR7Y29uc3RydWN0c1ZlcnNpb259YCk7XG5cbiAgICBpZiAoanNpaVZlcnNpb24pIHtcbiAgICAgIHByb2plY3QuYWRkRGV2RGVwcyhganNpaUAke2pzaWlWZXJzaW9ufWApO1xuICAgIH1cbiAgICBpZiAodHlwZXNjcmlwdFZlcnNpb24pIHtcbiAgICAgIHByb2plY3QuYWRkRGV2RGVwcyhgdHlwZXNjcmlwdEAke3R5cGVzY3JpcHRWZXJzaW9ufWApO1xuICAgIH1cblxuICAgIGNvbnN0IGZldGNoVGFzayA9IHByb2plY3QuYWRkVGFzayhcImZldGNoXCIsIHtcbiAgICAgIGV4ZWM6IGBta2RpciAtcCBzcmMgJiYgcm0gLXJmIC4vc3JjLyogJiYgY2RrdG4gZ2V0ICYmIGNwIC1SIC5nZW4vcHJvdmlkZXJzLyR7cHJvdmlkZXJOYW1lfS8qIC4vc3JjLyAmJiBjcCAuZ2VuL3ZlcnNpb25zLmpzb24gLi9zcmMvdmVyc2lvbi5qc29uYCxcbiAgICAgIGVudjoge1xuICAgICAgICBDSEVDS1BPSU5UX0RJU0FCTEU6IFwiMVwiLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICAvLyBleGVjdXRlIHByb2plbiBhZnRlciBmZXRjaCB0byBlbnN1cmUgdGhhdCB1cGRhdGVzIHRvIHZlcnNpb24uanNvbiBhcmUgcGlja2VkIHVwIGluIHBhY2thZ2UuanNvblxuICAgIGZldGNoVGFzay5zcGF3bihwcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJkZWZhdWx0XCIpISk7XG5cbiAgICBwcm9qZWN0LnNldFNjcmlwdChcbiAgICAgIFwiY29tbWl0XCIsXG4gICAgICAnZ2l0IGFkZCAtQSAmJiBnaXQgY29tbWl0IC1hbSBcIlVwZGF0ZSBwcm92aWRlclwiIHx8IGVjaG8gXCJObyBjaGFuZ2VzIHRvIGNvbW1pdFwiJ1xuICAgICk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHF1b3Rlc1xuICAgIHByb2plY3Quc2V0U2NyaXB0KFxuICAgICAgXCJzaG91bGQtcmVsZWFzZVwiLFxuICAgICAgYCEgZ2l0IGRpZmYgLS1leGl0LWNvZGUgdiQoY2F0IHZlcnNpb24uanNvbiB8IGpxIC1yICcudmVyc2lvbicpIC4vc3JjIC4vcGFja2FnZS5qc29uYFxuICAgICk7XG4gICAgcHJvamVjdC5zZXRTY3JpcHQoXG4gICAgICBcInByZWJ1bXBcIixcbiAgICAgIFwieWFybiBmZXRjaCAmJiB5YXJuIGNvbXBpbGUgJiYgeWFybiBydW4gY29tbWl0ICYmIHlhcm4gcnVuIHNob3VsZC1yZWxlYXNlXCJcbiAgICApO1xuICAgIHByb2plY3Quc2V0U2NyaXB0KFwiY29tcGlsZVwiLCBcImpzaWkgLS1zaWxlbmNlLXdhcm5pbmdzPXJlc2VydmVkLXdvcmRcIik7XG5cbiAgICBwcm9qZWN0LnNldFNjcmlwdChcbiAgICAgIFwiYnVpbGQtcHJvdmlkZXJcIixcbiAgICAgIFwieWFybiBmZXRjaCAmJiB5YXJuIGNvbXBpbGUgJiYgeWFybiBkb2NnZW5cIlxuICAgICk7XG4gICAgcHJvamVjdC5zZXRTY3JpcHQoXCJ0ZXN0XCIsIFwiamVzdCAtLXBhc3NXaXRoTm9UZXN0c1wiKTtcbiAgICBwcm9qZWN0LmFkZEZpZWxkcyh7IHB1Ymxpc2hDb25maWc6IHsgYWNjZXNzOiBcInB1YmxpY1wiIH0gfSk7XG4gICAgcHJvamVjdC5hZGRGaWVsZHMoe1xuICAgICAgXCJzdGFuZGFyZC12ZXJzaW9uXCI6IHtcbiAgICAgICAgdHlwZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImZlYXRcIixcbiAgICAgICAgICAgIHNlY3Rpb246IFwiRmVhdHVyZXNcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiZml4XCIsXG4gICAgICAgICAgICBzZWN0aW9uOiBcIkJ1ZyBGaXhlc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJjaG9yZVwiLFxuICAgICAgICAgICAgc2VjdGlvbjogXCJVcGRhdGVzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImRvY3NcIixcbiAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwic3R5bGVcIixcbiAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwicmVmYWN0b3JcIixcbiAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwicGVyZlwiLFxuICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXN0XCIsXG4gICAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBzZXQgcHJvdmlkZXIgbmFtZSBhbmQgdmVyc2lvbiBmcm9tIHZlcnNpb24uanNvbiAoaWYgaXQgZXhpc3RzIHlldClcbiAgICBjb25zdCB2ZXJzaW9uRmlsZSA9IHBhdGgucmVzb2x2ZShwcm9qZWN0Lm91dGRpciwgXCJzcmMvdmVyc2lvbi5qc29uXCIpO1xuXG4gICAgbGV0IGZ1bGx5UXVhbGlmaWVkUHJvdmlkZXJOYW1lID0gXCI8dW5rbm93bj5cIjtcbiAgICBsZXQgYWN0dWFsUHJvdmlkZXJWZXJzaW9uID0gXCI8dW5rbm93bj5cIjtcbiAgICBpZiAoZXhpc3RzU3luYyh2ZXJzaW9uRmlsZSkpIHtcbiAgICAgIGNvbnN0IG1hcCA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHZlcnNpb25GaWxlLCBcInV0ZjhcIikpO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKG1hcCkubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcInZlcnNpb24uanNvbiBtdXN0IGhhdmUgZXhhY3RseSBvbmUgZW50cnkuIHNwZWNpZnlpbmcgbXVsdGlwbGUgcHJvdmlkZXJzIGlzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgW2ZxcG4sIHZlcnNpb25dID0gT2JqZWN0LmVudHJpZXMobWFwKVswXTtcbiAgICAgIGZ1bGx5UXVhbGlmaWVkUHJvdmlkZXJOYW1lID0gZnFwbjtcbiAgICAgIGFjdHVhbFByb3ZpZGVyVmVyc2lvbiA9IHZlcnNpb24gYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3ZpZGVyTWV0YWRhdGEgPSB7XG4gICAgICBpc0RlcHJlY2F0ZWQsXG4gICAgICBwcm92aWRlcjoge1xuICAgICAgICBuYW1lOiBmdWxseVF1YWxpZmllZFByb3ZpZGVyTmFtZSxcbiAgICAgICAgdmVyc2lvbjogYWN0dWFsUHJvdmlkZXJWZXJzaW9uLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcHJvamVjdC5hZGRGaWVsZHMoe1xuICAgICAgY2RrdGY6IHByb3ZpZGVyTWV0YWRhdGEsXG4gICAgICBjZGt0bjogcHJvdmlkZXJNZXRhZGF0YSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9qZWN0Lm5wbWlnbm9yZSkge1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmUuZXhjbHVkZShDREtURl9KU09OX0ZJTEUpO1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmUuZXhjbHVkZShcIi5nZW5cIik7XG4gICAgICBwcm9qZWN0Lm5wbWlnbm9yZS5leGNsdWRlKFwiLnRlcnJhZm9ybVwiKTtcbiAgICAgIHByb2plY3QubnBtaWdub3JlLmV4Y2x1ZGUoXCJjZGt0Zi5qc29uXCIpO1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmUuZXhjbHVkZShcIkFQSS5tZFwiKTtcbiAgICAgIHByb2plY3QubnBtaWdub3JlLmV4Y2x1ZGUoXCJkb2NzXCIpO1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmUuZXhjbHVkZShcInNjcmlwdHNcIik7XG4gICAgICBwcm9qZWN0Lm5wbWlnbm9yZS5leGNsdWRlKFwiLnByb2plbnJjLmpzXCIpO1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmUuZXhjbHVkZShcIi5jb3B5d3JpdGUuaGNsXCIpO1xuICAgIH1cbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKFwiLmdlblwiKTtcbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKFwiLnRlcnJhZm9ybVwiKTtcbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKFwicGFja2FnZS1sb2NrLmpzb25cIik7XG5cbiAgICBuZXcgSnNvbkZpbGUocHJvamVjdCwgQ0RLVEZfSlNPTl9GSUxFLCB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgbGFuZ3VhZ2U6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBhcHA6IFwiZWNobyBub29wXCIsXG4gICAgICAgIHNlbmRDcmFzaFJlcG9ydHM6IGZhbHNlLFxuICAgICAgICB0ZXJyYWZvcm1Qcm92aWRlcnM6IFt0ZXJyYWZvcm1Qcm92aWRlcl0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgbmV3IFJlYWRtZUZpbGUocHJvamVjdCwgXCJSRUFETUUubWRcIiwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHVuZGVybHlpbmdUZXJyYWZvcm1WZXJzaW9uOiBhY3R1YWxQcm92aWRlclZlcnNpb24sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrdGYtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nka3RmLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwyQ0FBNkI7QUFDN0IsdUNBQW9EO0FBQ3BELG1DQUF1QztBQUV2QyxxQ0FBc0M7QUFFdEMsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDO0FBMEJyQyxNQUFhLFdBQVc7SUFDdEIsWUFBWSxPQUF3QixFQUFFLE9BQTJCO1FBQy9ELE1BQU0sRUFDSixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsWUFBWSxHQUNiLEdBQUcsT0FBTyxDQUFDO1FBRVosTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUMxQyxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztRQUVwRCxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUM3QyxPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBRXZELE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxVQUFVLENBQUMsY0FBYyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFFdEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxVQUFVLENBQUMsY0FBYyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ3pDLElBQUksRUFBRSx1RUFBdUUsWUFBWSx1REFBdUQ7WUFDaEosR0FBRyxFQUFFO2dCQUNILGtCQUFrQixFQUFFLEdBQUc7YUFDeEI7U0FDRixDQUFDLENBQUM7UUFDSCxrR0FBa0c7UUFDbEcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUUsQ0FBQyxDQUFDO1FBRW5ELE9BQU8sQ0FBQyxTQUFTLENBQ2YsUUFBUSxFQUNSLCtFQUErRSxDQUNoRixDQUFDO1FBQ0Ysa0NBQWtDO1FBQ2xDLE9BQU8sQ0FBQyxTQUFTLENBQ2YsZ0JBQWdCLEVBQ2hCLHFGQUFxRixDQUN0RixDQUFDO1FBQ0YsT0FBTyxDQUFDLFNBQVMsQ0FDZixTQUFTLEVBQ1QsMEVBQTBFLENBQzNFLENBQUM7UUFDRixPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDO1FBRXRFLE9BQU8sQ0FBQyxTQUFTLENBQ2YsZ0JBQWdCLEVBQ2hCLDJDQUEyQyxDQUM1QyxDQUFDO1FBQ0YsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRCxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ2hCLGtCQUFrQixFQUFFO2dCQUNsQixLQUFLLEVBQUU7b0JBQ0w7d0JBQ0UsSUFBSSxFQUFFLE1BQU07d0JBQ1osT0FBTyxFQUFFLFVBQVU7cUJBQ3BCO29CQUNEO3dCQUNFLElBQUksRUFBRSxLQUFLO3dCQUNYLE9BQU8sRUFBRSxXQUFXO3FCQUNyQjtvQkFDRDt3QkFDRSxJQUFJLEVBQUUsT0FBTzt3QkFDYixPQUFPLEVBQUUsU0FBUztxQkFDbkI7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLE1BQU07d0JBQ1osTUFBTSxFQUFFLElBQUk7cUJBQ2I7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLE9BQU87d0JBQ2IsTUFBTSxFQUFFLElBQUk7cUJBQ2I7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO29CQUNEO3dCQUNFLElBQUksRUFBRSxNQUFNO3dCQUNaLE1BQU0sRUFBRSxJQUFJO3FCQUNiO29CQUNEO3dCQUNFLElBQUksRUFBRSxNQUFNO3dCQUNaLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxxRUFBcUU7UUFDckUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFckUsSUFBSSwwQkFBMEIsR0FBRyxXQUFXLENBQUM7UUFDN0MsSUFBSSxxQkFBcUIsR0FBRyxXQUFXLENBQUM7UUFDeEMsSUFBSSxJQUFBLHFCQUFVLEVBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsdUJBQVksRUFBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUMxRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLDBGQUEwRixDQUMzRixDQUFDO1lBQ0osQ0FBQztZQUNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7WUFDbEMscUJBQXFCLEdBQUcsT0FBaUIsQ0FBQztRQUM1QyxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRztZQUN2QixZQUFZO1lBQ1osUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSwwQkFBMEI7Z0JBQ2hDLE9BQU8sRUFBRSxxQkFBcUI7YUFDL0I7U0FDRixDQUFDO1FBRUYsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNoQixLQUFLLEVBQUUsZ0JBQWdCO1lBQ3ZCLEtBQUssRUFBRSxnQkFBZ0I7U0FDeEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDM0MsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDeEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDeEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUvQyxJQUFJLGlCQUFRLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRTtZQUNyQyxHQUFHLEVBQUU7Z0JBQ0gsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLEdBQUcsRUFBRSxXQUFXO2dCQUNoQixnQkFBZ0IsRUFBRSxLQUFLO2dCQUN2QixrQkFBa0IsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2FBQ3hDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxtQkFBVSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUU7WUFDbkMsR0FBRyxPQUFPO1lBQ1YsMEJBQTBCLEVBQUUscUJBQXFCO1NBQ2xELENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNKRCxrQ0EySkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHJlYWRGaWxlU3luYywgZXhpc3RzU3luYyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHsgSnNvbkZpbGUsIGNkayB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IFBhY2thZ2VJbmZvIH0gZnJvbSBcIi4vcGFja2FnZS1pbmZvXCI7XG5pbXBvcnQgeyBSZWFkbWVGaWxlIH0gZnJvbSBcIi4vcmVhZG1lXCI7XG5cbmNvbnN0IENES1RGX0pTT05fRklMRSA9IFwiY2RrdGYuanNvblwiO1xuXG5pbnRlcmZhY2UgQ2RrdGZDb25maWdPcHRpb25zIHtcbiAgdGVycmFmb3JtUHJvdmlkZXI6IHN0cmluZztcbiAgcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG4gIGZxcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG4gIHByb3ZpZGVyVmVyc2lvbjogc3RyaW5nO1xuICBjZGt0blZlcnNpb246IHN0cmluZztcbiAgY29uc3RydWN0c1ZlcnNpb246IHN0cmluZztcbiAgcGFja2FnZUluZm86IFBhY2thZ2VJbmZvO1xuICBnaXRodWJOYW1lc3BhY2U6IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgcHJlYnVpbHQgcHJvdmlkZXIgaXMgZGVwcmVjYXRlZC5cbiAgICogSWYgdHJ1ZSwgbm8gbmV3IHZlcnNpb25zIHdpbGwgYmUgcHVibGlzaGVkLlxuICAgKi9cbiAgaXNEZXByZWNhdGVkOiBib29sZWFuO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZGF0ZSB3aGVuIHRoZSBwcm9qZWN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGRlcHJlY2F0ZWQsXG4gICAqIHRvIGJlIHVzZWQgaW4gdGhlIFJFQURNRSB0ZXh0LiBJZiBubyBkYXRlIGlzIHByb3ZpZGVkLCB0aGVuIHRoZVxuICAgKiBkYXRlIG9mIHRoZSBidWlsZCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGRlcHJlY2F0aW9uRGF0ZT86IHN0cmluZztcbiAganNpaVZlcnNpb24/OiBzdHJpbmc7XG4gIHR5cGVzY3JpcHRWZXJzaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2RrdGZDb25maWcge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBjZGsuSnNpaVByb2plY3QsIG9wdGlvbnM6IENka3RmQ29uZmlnT3B0aW9ucykge1xuICAgIGNvbnN0IHtcbiAgICAgIHRlcnJhZm9ybVByb3ZpZGVyLFxuICAgICAgcHJvdmlkZXJOYW1lLFxuICAgICAganNpaVZlcnNpb24sXG4gICAgICB0eXBlc2NyaXB0VmVyc2lvbixcbiAgICAgIGlzRGVwcmVjYXRlZCxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGNka3RuVmVyc2lvbiA9IG9wdGlvbnMuY2RrdG5WZXJzaW9uO1xuICAgIGNvbnN0IGNvbnN0cnVjdHNWZXJzaW9uID0gb3B0aW9ucy5jb25zdHJ1Y3RzVmVyc2lvbjtcblxuICAgIHByb2plY3QuYWRkUGVlckRlcHMoYGNka3RuQCR7Y2RrdG5WZXJzaW9ufWApO1xuICAgIHByb2plY3QuYWRkUGVlckRlcHMoYGNvbnN0cnVjdHNAJHtjb25zdHJ1Y3RzVmVyc2lvbn1gKTtcblxuICAgIHByb2plY3QuYWRkRGV2RGVwcyhgY2RrdG5AJHtjZGt0blZlcnNpb259YCk7XG4gICAgcHJvamVjdC5hZGREZXZEZXBzKGBjZGt0bi1jbGlAJHtjZGt0blZlcnNpb259YCk7XG4gICAgcHJvamVjdC5hZGREZXZEZXBzKGBjb25zdHJ1Y3RzQCR7Y29uc3RydWN0c1ZlcnNpb259YCk7XG5cbiAgICBpZiAoanNpaVZlcnNpb24pIHtcbiAgICAgIHByb2plY3QuYWRkRGV2RGVwcyhganNpaUAke2pzaWlWZXJzaW9ufWApO1xuICAgIH1cbiAgICBpZiAodHlwZXNjcmlwdFZlcnNpb24pIHtcbiAgICAgIHByb2plY3QuYWRkRGV2RGVwcyhgdHlwZXNjcmlwdEAke3R5cGVzY3JpcHRWZXJzaW9ufWApO1xuICAgIH1cblxuICAgIGNvbnN0IGZldGNoVGFzayA9IHByb2plY3QuYWRkVGFzayhcImZldGNoXCIsIHtcbiAgICAgIGV4ZWM6IGBta2RpciAtcCBzcmMgJiYgcm0gLXJmIC4vc3JjLyogJiYgY2RrdG4gZ2V0ICYmIGNwIC1SIC5nZW4vcHJvdmlkZXJzLyR7cHJvdmlkZXJOYW1lfS8qIC4vc3JjLyAmJiBjcCAuZ2VuL3ZlcnNpb25zLmpzb24gLi9zcmMvdmVyc2lvbi5qc29uYCxcbiAgICAgIGVudjoge1xuICAgICAgICBDSEVDS1BPSU5UX0RJU0FCTEU6IFwiMVwiLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICAvLyBleGVjdXRlIHByb2plbiBhZnRlciBmZXRjaCB0byBlbnN1cmUgdGhhdCB1cGRhdGVzIHRvIHZlcnNpb24uanNvbiBhcmUgcGlja2VkIHVwIGluIHBhY2thZ2UuanNvblxuICAgIGZldGNoVGFzay5zcGF3bihwcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJkZWZhdWx0XCIpISk7XG5cbiAgICBwcm9qZWN0LnNldFNjcmlwdChcbiAgICAgIFwiY29tbWl0XCIsXG4gICAgICAnZ2l0IGFkZCAtQSAmJiBnaXQgY29tbWl0IC1hbSBcIlVwZGF0ZSBwcm92aWRlclwiIHx8IGVjaG8gXCJObyBjaGFuZ2VzIHRvIGNvbW1pdFwiJ1xuICAgICk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHF1b3Rlc1xuICAgIHByb2plY3Quc2V0U2NyaXB0KFxuICAgICAgXCJzaG91bGQtcmVsZWFzZVwiLFxuICAgICAgYCEgZ2l0IGRpZmYgLS1leGl0LWNvZGUgdiQoY2F0IHZlcnNpb24uanNvbiB8IGpxIC1yICcudmVyc2lvbicpIC4vc3JjIC4vcGFja2FnZS5qc29uYFxuICAgICk7XG4gICAgcHJvamVjdC5zZXRTY3JpcHQoXG4gICAgICBcInByZWJ1bXBcIixcbiAgICAgIFwieWFybiBmZXRjaCAmJiB5YXJuIGNvbXBpbGUgJiYgeWFybiBydW4gY29tbWl0ICYmIHlhcm4gcnVuIHNob3VsZC1yZWxlYXNlXCJcbiAgICApO1xuICAgIHByb2plY3Quc2V0U2NyaXB0KFwiY29tcGlsZVwiLCBcImpzaWkgLS1zaWxlbmNlLXdhcm5pbmdzPXJlc2VydmVkLXdvcmRcIik7XG5cbiAgICBwcm9qZWN0LnNldFNjcmlwdChcbiAgICAgIFwiYnVpbGQtcHJvdmlkZXJcIixcbiAgICAgIFwieWFybiBmZXRjaCAmJiB5YXJuIGNvbXBpbGUgJiYgeWFybiBkb2NnZW5cIlxuICAgICk7XG4gICAgcHJvamVjdC5zZXRTY3JpcHQoXCJ0ZXN0XCIsIFwiamVzdCAtLXBhc3NXaXRoTm9UZXN0c1wiKTtcbiAgICBwcm9qZWN0LmFkZEZpZWxkcyh7IHB1Ymxpc2hDb25maWc6IHsgYWNjZXNzOiBcInB1YmxpY1wiIH0gfSk7XG4gICAgcHJvamVjdC5hZGRGaWVsZHMoe1xuICAgICAgXCJzdGFuZGFyZC12ZXJzaW9uXCI6IHtcbiAgICAgICAgdHlwZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImZlYXRcIixcbiAgICAgICAgICAgIHNlY3Rpb246IFwiRmVhdHVyZXNcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiZml4XCIsXG4gICAgICAgICAgICBzZWN0aW9uOiBcIkJ1ZyBGaXhlc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJjaG9yZVwiLFxuICAgICAgICAgICAgc2VjdGlvbjogXCJVcGRhdGVzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImRvY3NcIixcbiAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwic3R5bGVcIixcbiAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwicmVmYWN0b3JcIixcbiAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwicGVyZlwiLFxuICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXN0XCIsXG4gICAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBzZXQgcHJvdmlkZXIgbmFtZSBhbmQgdmVyc2lvbiBmcm9tIHZlcnNpb24uanNvbiAoaWYgaXQgZXhpc3RzIHlldClcbiAgICBjb25zdCB2ZXJzaW9uRmlsZSA9IHBhdGgucmVzb2x2ZShwcm9qZWN0Lm91dGRpciwgXCJzcmMvdmVyc2lvbi5qc29uXCIpO1xuXG4gICAgbGV0IGZ1bGx5UXVhbGlmaWVkUHJvdmlkZXJOYW1lID0gXCI8dW5rbm93bj5cIjtcbiAgICBsZXQgYWN0dWFsUHJvdmlkZXJWZXJzaW9uID0gXCI8dW5rbm93bj5cIjtcbiAgICBpZiAoZXhpc3RzU3luYyh2ZXJzaW9uRmlsZSkpIHtcbiAgICAgIGNvbnN0IG1hcCA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHZlcnNpb25GaWxlLCBcInV0ZjhcIikpO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKG1hcCkubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcInZlcnNpb24uanNvbiBtdXN0IGhhdmUgZXhhY3RseSBvbmUgZW50cnkuIHNwZWNpZnlpbmcgbXVsdGlwbGUgcHJvdmlkZXJzIGlzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgW2ZxcG4sIHZlcnNpb25dID0gT2JqZWN0LmVudHJpZXMobWFwKVswXTtcbiAgICAgIGZ1bGx5UXVhbGlmaWVkUHJvdmlkZXJOYW1lID0gZnFwbjtcbiAgICAgIGFjdHVhbFByb3ZpZGVyVmVyc2lvbiA9IHZlcnNpb24gYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3ZpZGVyTWV0YWRhdGEgPSB7XG4gICAgICBpc0RlcHJlY2F0ZWQsXG4gICAgICBwcm92aWRlcjoge1xuICAgICAgICBuYW1lOiBmdWxseVF1YWxpZmllZFByb3ZpZGVyTmFtZSxcbiAgICAgICAgdmVyc2lvbjogYWN0dWFsUHJvdmlkZXJWZXJzaW9uLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcHJvamVjdC5hZGRGaWVsZHMoe1xuICAgICAgY2RrdGY6IHByb3ZpZGVyTWV0YWRhdGEsXG4gICAgICBjZGt0bjogcHJvdmlkZXJNZXRhZGF0YSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9qZWN0Lm5wbWlnbm9yZSkge1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmUuZXhjbHVkZShDREtURl9KU09OX0ZJTEUpO1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmUuZXhjbHVkZShcIi5nZW5cIik7XG4gICAgICBwcm9qZWN0Lm5wbWlnbm9yZS5leGNsdWRlKFwiLnRlcnJhZm9ybVwiKTtcbiAgICAgIHByb2plY3QubnBtaWdub3JlLmV4Y2x1ZGUoXCJjZGt0Zi5qc29uXCIpO1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmUuZXhjbHVkZShcIkFQSS5tZFwiKTtcbiAgICAgIHByb2plY3QubnBtaWdub3JlLmV4Y2x1ZGUoXCJkb2NzXCIpO1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmUuZXhjbHVkZShcInNjcmlwdHNcIik7XG4gICAgICBwcm9qZWN0Lm5wbWlnbm9yZS5leGNsdWRlKFwiLnByb2plbnJjLmpzXCIpO1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmUuZXhjbHVkZShcIi5jb3B5d3JpdGUuaGNsXCIpO1xuICAgIH1cbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKFwiLmdlblwiKTtcbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKFwiLnRlcnJhZm9ybVwiKTtcbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKFwicGFja2FnZS1sb2NrLmpzb25cIik7XG5cbiAgICBuZXcgSnNvbkZpbGUocHJvamVjdCwgQ0RLVEZfSlNPTl9GSUxFLCB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgbGFuZ3VhZ2U6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBhcHA6IFwiZWNobyBub29wXCIsXG4gICAgICAgIHNlbmRDcmFzaFJlcG9ydHM6IGZhbHNlLFxuICAgICAgICB0ZXJyYWZvcm1Qcm92aWRlcnM6IFt0ZXJyYWZvcm1Qcm92aWRlcl0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgbmV3IFJlYWRtZUZpbGUocHJvamVjdCwgXCJSRUFETUUubWRcIiwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHVuZGVybHlpbmdUZXJyYWZvcm1WZXJzaW9uOiBhY3R1YWxQcm92aWRlclZlcnNpb24sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -4,6 +4,8 @@ exports.CustomizedLicense = void 0;
|
|
|
4
4
|
const projen_1 = require("projen");
|
|
5
5
|
const SPDX = "MPL-2.0";
|
|
6
6
|
class CustomizedLicense extends projen_1.License {
|
|
7
|
+
year;
|
|
8
|
+
licensee;
|
|
7
9
|
constructor(project, overrideYear, overrideLicensee) {
|
|
8
10
|
super(project, { spdx: SPDX });
|
|
9
11
|
this.year = overrideYear ?? new Date().getFullYear();
|
|
@@ -16,4 +18,4 @@ class CustomizedLicense extends projen_1.License {
|
|
|
16
18
|
}
|
|
17
19
|
}
|
|
18
20
|
exports.CustomizedLicense = CustomizedLicense;
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXplZC1saWNlbnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2N1c3RvbWl6ZWQtbGljZW5zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBNEM7QUFHNUMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBRXZCLE1BQWEsaUJBQWtCLFNBQVEsZ0JBQU87SUFDcEMsSUFBSSxDQUFTO0lBQ2IsUUFBUSxDQUFTO0lBRXpCLFlBQ0UsT0FBMEIsRUFDMUIsWUFBcUIsRUFDckIsZ0JBQXlCO1FBRXpCLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUvQixJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLElBQUksaUJBQWlCLENBQUM7UUFFdEQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxRQUFtQjtRQUNuQyxPQUFPLENBQ0wsaUJBQWlCLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsTUFBTTtZQUNqRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQ2xDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF2QkQsOENBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlc29sdmVyLCBMaWNlbnNlIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdFByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5cbmNvbnN0IFNQRFggPSBcIk1QTC0yLjBcIjtcblxuZXhwb3J0IGNsYXNzIEN1c3RvbWl6ZWRMaWNlbnNlIGV4dGVuZHMgTGljZW5zZSB7XG4gIHByaXZhdGUgeWVhcjogbnVtYmVyO1xuICBwcml2YXRlIGxpY2Vuc2VlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvamVjdDogVHlwZVNjcmlwdFByb2plY3QsXG4gICAgb3ZlcnJpZGVZZWFyPzogbnVtYmVyLFxuICAgIG92ZXJyaWRlTGljZW5zZWU/OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCwgeyBzcGR4OiBTUERYIH0pO1xuXG4gICAgdGhpcy55ZWFyID0gb3ZlcnJpZGVZZWFyID8/IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICB0aGlzLmxpY2Vuc2VlID0gb3ZlcnJpZGVMaWNlbnNlZSA/PyBcIkhhc2hpQ29ycCwgSW5jLlwiO1xuXG4gICAgcHJvamVjdC5hZGRGaWVsZHMoeyBsaWNlbnNlOiBTUERYIH0pO1xuICB9XG5cbiAgc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXI6IElSZXNvbHZlcikge1xuICAgIHJldHVybiAoXG4gICAgICBgQ29weXJpZ2h0IChjKSAke3RoaXMueWVhcn0gJHt0aGlzLmxpY2Vuc2VlfVxcblxcbmAgK1xuICAgICAgc3VwZXIuc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXIpXG4gICAgKTtcbiAgfVxufVxuIl19
|
package/lib/force-release.js
CHANGED
|
@@ -25,6 +25,7 @@ const projen_1 = require("projen");
|
|
|
25
25
|
* via the `publish_to_*` inputs.
|
|
26
26
|
*/
|
|
27
27
|
class ForceRelease extends projen_1.Component {
|
|
28
|
+
releaseWorkflow;
|
|
28
29
|
constructor(project) {
|
|
29
30
|
super(project);
|
|
30
31
|
const releaseWorkflow = project.github?.tryFindWorkflow("release");
|
|
@@ -169,4 +170,4 @@ class ForceRelease extends projen_1.Component {
|
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
172
|
exports.ForceRelease = ForceRelease;
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yY2UtcmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3JjZS1yZWxlYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILG1DQUF3QztBQUd4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFhLFlBQWEsU0FBUSxrQkFBUztJQUd6QyxZQUFZLE9BQXdCO1FBQ2xDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FFcEQsQ0FBQztRQUNkLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSyxpQkFBaUI7UUFDdkIsTUFBTSxNQUFNLEdBQUksSUFBSSxDQUFDLGVBQXVCLENBQUMsTUFBTSxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRztZQUN4QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDMUIsTUFBTSxFQUFFO2dCQUNOLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQztnQkFDMUMsR0FBRyxFQUFFO29CQUNILElBQUksRUFBRSxRQUFRO29CQUNkLFFBQVEsRUFBRSxJQUFJO29CQUNkLFdBQVcsRUFBRSxrQ0FBa0M7aUJBQ2hEO2dCQUNELGNBQWMsRUFBRTtvQkFDZCxJQUFJLEVBQUUsU0FBUztvQkFDZixPQUFPLEVBQUUsS0FBSztvQkFDZCxXQUFXLEVBQUUsa0NBQWtDO2lCQUNoRDtnQkFDRCxnQkFBZ0IsRUFBRTtvQkFDaEIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsV0FB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QUFDO1FBQzFFLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsV0FBVyxDQUFDLEVBQUU7Z0JBQ1osOERBQThELENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7Q0FDRjtBQW5LRCxvQ0FtS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IGNkaywgQ29tcG9uZW50IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgR2l0aHViV29ya2Zsb3cgfSBmcm9tIFwicHJvamVuL2xpYi9naXRodWJcIjtcblxuLyoqXG4gKiBGb2xkcyB0aGUgZm9ybWVyIHN0YW5kYWxvbmUgYGZvcmNlLXJlbGVhc2VgIHdvcmtmbG93IGludG8gdGhlIHByb2plbi1nZW5lcmF0ZWRcbiAqIGByZWxlYXNlYCB3b3JrZmxvdy5cbiAqXG4gKiBucG0gdHJ1c3RlZCBwdWJsaXNoaW5nIChPSURDKSBvbmx5IGFsbG93cyBhICpzaW5nbGUqIHRydXN0ZWQgcHVibGlzaGVyIHBlclxuICogcGFja2FnZSwgcGlubmVkIHRvIG9uZSByZXBvc2l0b3J5ICsgd29ya2Zsb3cgZmlsZW5hbWUuIEEgc2Vjb25kIHdvcmtmbG93XG4gKiAodGhlIG9sZCBgZm9yY2UtcmVsZWFzZS55bWxgKSB0aGF0IGFsc28gcHVibGlzaGVzIHRvIG5wbSB2aWEgT0lEQyBjYW5cbiAqIHRoZXJlZm9yZSBuZXZlciBiZSB0cnVzdGVkLiBUbyBrZWVwIGEgc2luZ2xlIE9JREMgZW50cnlwb2ludCB3ZSBmb2xkIHRoZVxuICogbWFudWFsIFwiZm9yY2UgcmVsZWFzZVwiIGJlaGF2aW91ciBpbnRvIGByZWxlYXNlLnltbGAgYmVoaW5kIGFcbiAqIGB3b3JrZmxvd19kaXNwYXRjaGAgdHJpZ2dlci4gUHlQSSBPSURDIHRlY2huaWNhbGx5IGFsbG93cyBtdWx0aXBsZSB0cnVzdGVkXG4gKiBwdWJsaXNoZXJzLCBidXQgd2Uga2VlcCBpdCBhbGlnbmVkIHdpdGggbnBtIGZvciBjb25zaXN0ZW5jeS5cbiAqXG4gKiBCZWhhdmlvdXI6XG4gKiAtIE9uIGBwdXNoYDogdW5jaGFuZ2VkLCBhIGNvbmRpdGlvbmFsIHJlbGVhc2UgZ2F0ZWQgYnkgYHNob3VsZC1yZWxlYXNlYC5cbiAqIC0gT24gYHdvcmtmbG93X2Rpc3BhdGNoYDogZm9yY2UtcmVsZWFzZXMgYSBzcGVjaWZpYyBjb21taXQgKGBzaGFgKSBieSBydW5uaW5nXG4gKiAgIGB1bmNvbmRpdGlvbmFsLXJlbGVhc2VgIGFuZCBwdWJsaXNoZXMgb25seSB0byB0aGUgcGFja2FnZSBtYW5hZ2VycyBzZWxlY3RlZFxuICogICB2aWEgdGhlIGBwdWJsaXNoX3RvXypgIGlucHV0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEZvcmNlUmVsZWFzZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVsZWFzZVdvcmtmbG93OiBHaXRodWJXb3JrZmxvdztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBjZGsuSnNpaVByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IHJlbGVhc2VXb3JrZmxvdyA9IHByb2plY3QuZ2l0aHViPy50cnlGaW5kV29ya2Zsb3coXCJyZWxlYXNlXCIpIGFzXG4gICAgICB8IEdpdGh1YldvcmtmbG93XG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIXJlbGVhc2VXb3JrZmxvdykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGZpbmQgcmVsZWFzZSB3b3JrZmxvdywgYWJvcnRpbmdcIik7XG4gICAgfVxuICAgIHRoaXMucmVsZWFzZVdvcmtmbG93ID0gcmVsZWFzZVdvcmtmbG93O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIG1hbnVhbCBmb3JjZS1yZWxlYXNlIGlucHV0cyB0byB0aGUgd29ya2Zsb3cncyBleGlzdGluZ1xuICAgKiBgd29ya2Zsb3dfZGlzcGF0Y2hgIHRyaWdnZXIuXG4gICAqXG4gICAqIElucHV0cyBhcmUgKm1lcmdlZCogcmF0aGVyIHRoYW4gcmVwbGFjZWQ6IGRlcGVuZGluZyBvbiB0aGUgcmVzb2x2ZWQgcHJvamVuXG4gICAqIHZlcnNpb24sIHRoZSB0cnVzdGVkLXB1Ymxpc2hpbmcgcmVsZWFzZSB3b3JrZmxvdyBhbHJlYWR5IGRlZmluZXMgYSBgZHJ5X3J1bmBcbiAgICogaW5wdXQgKHVzZWQgYnkgYHJ1bi1uYW1lYCwgdGhlIEdpdEh1Yi1yZWxlYXNlIHN0ZXAsIGFuZCBgUFVCTElCX0RSWVJVTmAgb25cbiAgICogdGhlIHB1Ymxpc2ggam9icykuIFJlcGxhY2luZyB0aGUgdHJpZ2dlciB3b3VsZCBkcm9wIHRob3NlIHdoaWxlIGxlYXZpbmcgdGhlXG4gICAqIHJlZmVyZW5jZXMgYmVoaW5kLCBzbyB3ZSBwcmVzZXJ2ZSB3aGF0ZXZlciBwcm9qZW4gYWxyZWFkeSBkZWNsYXJlZC5cbiAgICovXG4gIHByaXZhdGUgYWRkRGlzcGF0Y2hJbnB1dHMoKSB7XG4gICAgY29uc3QgZXZlbnRzID0gKHRoaXMucmVsZWFzZVdvcmtmbG93IGFzIGFueSkuZXZlbnRzO1xuICAgIGV2ZW50cy53b3JrZmxvd0Rpc3BhdGNoID0ge1xuICAgICAgLi4uZXZlbnRzLndvcmtmbG93RGlzcGF0Y2gsXG4gICAgICBpbnB1dHM6IHtcbiAgICAgICAgLi4uKGV2ZW50cy53b3JrZmxvd0Rpc3BhdGNoPy5pbnB1dHMgPz8ge30pLFxuICAgICAgICBzaGE6IHtcbiAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBzaGEgb2YgdGhlIGNvbW1pdCB0byByZWxlYXNlXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHB1Ymxpc2hfdG9fbnBtOiB7XG4gICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiV2hldGhlciBvciBub3QgdG8gcHVibGlzaCB0byBOUE1cIixcbiAgICAgICAgfSxcbiAgICAgICAgcHVibGlzaF90b19tYXZlbjoge1xuICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIldoZXRoZXIgb3Igbm90IHRvIHB1Ymxpc2ggdG8gTWF2ZW5cIixcbiAgICAgICAgfSxcbiAgICAgICAgcHVibGlzaF90b19weXBpOiB7XG4gICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiV2hldGhlciBvciBub3QgdG8gcHVibGlzaCB0byBQeVBpXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHB1Ymxpc2hfdG9fbnVnZXQ6IHtcbiAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJXaGV0aGVyIG9yIG5vdCB0byBwdWJsaXNoIHRvIE51R2V0XCIsXG4gICAgICAgIH0sXG4gICAgICAgIHB1Ymxpc2hfdG9fZ286IHtcbiAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJXaGV0aGVyIG9yIG5vdCB0byBwdWJsaXNoIHRvIEdvXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIHB1Ymxpc2ggam9icyAoYHJlbGVhc2VfbnBtYCwgYHJlbGVhc2VfcHlwaWAsIC4uLikgYXJlIG9ubHkgYWRkZWQgdG8gdGhlXG4gICAqIHdvcmtmbG93IGR1cmluZyBgUmVsZWFzZS5wcmVTeW50aGVzaXplKClgLiBCZWNhdXNlIHRoaXMgY29tcG9uZW50IGlzXG4gICAqIGNvbnN0cnVjdGVkIGxhc3QsIHJ1bm5pbmcgb3VyIG11dGF0aW9ucyBoZXJlIChhZnRlciB0aGF0KSBsZXRzIHVzIHBhdGNoXG4gICAqIGV2ZXJ5IGpvYiBpbi1tZW1vcnkgYnkgc3RlcCAqbmFtZSogaW5zdGVhZCBvZiByZWx5aW5nIG9uIGJyaXR0bGUgYXJyYXlcbiAgICogaW5kaWNlcy5cbiAgICovXG4gIHByZVN5bnRoZXNpemUoKSB7XG4gICAgdGhpcy5hZGREaXNwYXRjaElucHV0cygpO1xuXG4gICAgY29uc3Qgd2YgPSB0aGlzLnJlbGVhc2VXb3JrZmxvdyBhcyBhbnk7XG5cbiAgICBjb25zdCBESVNQQVRDSCA9IFwiZ2l0aHViLmV2ZW50X25hbWUgPT0gJ3dvcmtmbG93X2Rpc3BhdGNoJ1wiO1xuICAgIGNvbnN0IE5PVF9ESVNQQVRDSCA9IFwiZ2l0aHViLmV2ZW50X25hbWUgIT0gJ3dvcmtmbG93X2Rpc3BhdGNoJ1wiO1xuICAgIC8vIE9uIHB1c2gsIG9ubHkgcHVibGlzaCBmb3IgYSBicmFuZC1uZXcsIHN0aWxsLWN1cnJlbnQgcmVsZWFzZS5cbiAgICBjb25zdCBQVVNIX1BVQkxJU0ggPVxuICAgICAgXCJuZWVkcy5yZWxlYXNlLm91dHB1dHMudGFnX2V4aXN0cyAhPSAndHJ1ZScgJiYgbmVlZHMucmVsZWFzZS5vdXRwdXRzLmxhdGVzdF9jb21taXQgPT0gZ2l0aHViLnNoYVwiO1xuXG4gICAgLy8gLS0tIHJlbGVhc2Ugam9iOiBicmFuY2ggYmVoYXZpb3VyIGJ5IHRyaWdnZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHJlbGVhc2VTdGVwczogYW55W10gPSB3Zi5nZXRKb2IoXCJyZWxlYXNlXCIpLnN0ZXBzO1xuXG4gICAgY29uc3QgY2hlY2tvdXQgPSByZWxlYXNlU3RlcHMuZmluZCgocykgPT4gcy5uYW1lID09PSBcIkNoZWNrb3V0XCIpO1xuICAgIGNoZWNrb3V0LndpdGggPSB7XG4gICAgICAuLi5jaGVja291dC53aXRoLFxuICAgICAgLy8gRm9yY2UtcmVsZWFzZSBjaGVja3Mgb3V0IHRoZSByZXF1ZXN0ZWQgY29tbWl0OyBwdXNoIHVzZXMgdGhlIGRlZmF1bHQgcmVmLlxuICAgICAgcmVmOiBgXFwke3sgJHtESVNQQVRDSH0gJiYgaW5wdXRzLnNoYSB8fCAnJyB9fWAsXG4gICAgfTtcblxuICAgIGNvbnN0IHJlbGVhc2VTdGVwID0gcmVsZWFzZVN0ZXBzLmZpbmQoKHMpID0+IHMubmFtZSA9PT0gXCJyZWxlYXNlXCIpO1xuICAgIHJlbGVhc2VTdGVwLnJ1biA9IFtcbiAgICAgIGBpZiBbIFwiXFwke3sgZ2l0aHViLmV2ZW50X25hbWUgfX1cIiA9IFwid29ya2Zsb3dfZGlzcGF0Y2hcIiBdOyB0aGVuYCxcbiAgICAgIFwiICBucHggcHJvamVuIHVuY29uZGl0aW9uYWwtcmVsZWFzZVwiLFxuICAgICAgXCJlbHNlXCIsXG4gICAgICBcIiAgbnB4IHByb2plbiByZWxlYXNlXCIsXG4gICAgICBcImZpXCIsXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuXG4gICAgLy8gYHNob3VsZC1yZWxlYXNlYCBvbmx5IG1ha2VzIHNlbnNlIGZvciBhdXRvbWF0aWMgKHB1c2gpIHJlbGVhc2VzLlxuICAgIHJlbGVhc2VTdGVwcy5maW5kKChzKSA9PiBzLmlkID09PSBcImdpdF9yZW1vdGVcIikuaWYgPSBOT1RfRElTUEFUQ0g7XG5cbiAgICAvLyBUaGUgcHVibGlzaCBqb2JzIGRvd25sb2FkIHRoaXMgYXJ0aWZhY3QsIHNvIGl0IG11c3QgYWxzbyBiZSB1cGxvYWRlZCBvbiBhXG4gICAgLy8gbWFudWFsIGRpc3BhdGNoICh3aGVyZSBsYXRlc3RfY29tbWl0IGlzIG5ldmVyIGNvbXB1dGVkKS5cbiAgICBjb25zdCBhcnRpZmFjdEd1YXJkID0gYFxcJHt7ICR7RElTUEFUQ0h9IHx8IHN0ZXBzLmdpdF9yZW1vdGUub3V0cHV0cy5sYXRlc3RfY29tbWl0ID09IGdpdGh1Yi5zaGEgfX1gO1xuICAgIHJlbGVhc2VTdGVwcy5maW5kKChzKSA9PiBzLm5hbWUgPT09IFwiQmFja3VwIGFydGlmYWN0IHBlcm1pc3Npb25zXCIpLmlmID1cbiAgICAgIGFydGlmYWN0R3VhcmQ7XG4gICAgcmVsZWFzZVN0ZXBzLmZpbmQoKHMpID0+IHMubmFtZSA9PT0gXCJVcGxvYWQgYXJ0aWZhY3RcIikuaWYgPSBhcnRpZmFjdEd1YXJkO1xuXG4gICAgLy8gLS0tIGRlcHJlY2F0ZSBqb2I6IHNraXAgb24gbWFudWFsIGRpc3BhdGNoIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGRlcHJlY2F0ZSA9IHdmLmdldEpvYihcImRlcHJlY2F0ZVwiKTtcbiAgICBpZiAoZGVwcmVjYXRlKSB7XG4gICAgICBkZXByZWNhdGUuaWYgPSBOT1RfRElTUEFUQ0g7XG4gICAgfVxuXG4gICAgLy8gLS0tIEdpdEh1YiByZWxlYXNlIGpvYiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgZ2l0aHViSm9iID0gd2YuZ2V0Sm9iKFwicmVsZWFzZV9naXRodWJcIik7XG4gICAgaWYgKGdpdGh1YkpvYikge1xuICAgICAgLy8gKFJlKWNyZWF0ZSB0aGUgR2l0SHViIHJlbGVhc2Ugd2hlbmV2ZXIgdGhlIHRhZyBpcyBuZXc7IG9uIHB1c2ggYWxzb1xuICAgICAgLy8gcmVxdWlyZSB0aGUgY29tbWl0IHRvIHN0aWxsIGJlIHRoZSBsYXRlc3QuXG4gICAgICBnaXRodWJKb2IuaWYgPSBgbmVlZHMucmVsZWFzZS5vdXRwdXRzLnRhZ19leGlzdHMgIT0gJ3RydWUnICYmICgke0RJU1BBVENIfSB8fCBuZWVkcy5yZWxlYXNlLm91dHB1dHMubGF0ZXN0X2NvbW1pdCA9PSBnaXRodWIuc2hhKWA7XG4gICAgICBjb25zdCBnaFJlbGVhc2VTdGVwID0gZ2l0aHViSm9iLnN0ZXBzLmZpbmQoXG4gICAgICAgIChzOiBhbnkpID0+IHMubmFtZSA9PT0gXCJSZWxlYXNlXCJcbiAgICAgICk7XG4gICAgICBnaFJlbGVhc2VTdGVwLmVudiA9IHtcbiAgICAgICAgLi4uZ2hSZWxlYXNlU3RlcC5lbnYsXG4gICAgICAgIC8vIFRhcmdldCB0aGUgZGlzcGF0Y2hlZCBjb21taXQgaW5zdGVhZCBvZiB0aGUgd29ya2Zsb3cncyBvd24gc2hhLlxuICAgICAgICBHSVRIVUJfUkVGOiBgXFwke3sgJHtESVNQQVRDSH0gJiYgaW5wdXRzLnNoYSB8fCBnaXRodWIucmVmIH19YCxcbiAgICAgICAgR0lUSFVCX1NIQTogYFxcJHt7ICR7RElTUEFUQ0h9ICYmIGlucHV0cy5zaGEgfHwgZ2l0aHViLnNoYSB9fWAsXG4gICAgICB9O1xuICAgICAgdGhpcy5zdXBwcmVzc01hbnVhbEZhaWx1cmVJc3N1ZShnaXRodWJKb2IpO1xuICAgIH1cblxuICAgIC8vIC0tLSBwZXItcGFja2FnZSBwdWJsaXNoIGpvYnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHB1Ymxpc2hKb2JzOiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtcbiAgICAgIFtcInJlbGVhc2VfbnBtXCIsIFwicHVibGlzaF90b19ucG1cIl0sXG4gICAgICBbXCJyZWxlYXNlX21hdmVuXCIsIFwicHVibGlzaF90b19tYXZlblwiXSxcbiAgICAgIFtcInJlbGVhc2VfcHlwaVwiLCBcInB1Ymxpc2hfdG9fcHlwaVwiXSxcbiAgICAgIFtcInJlbGVhc2VfbnVnZXRcIiwgXCJwdWJsaXNoX3RvX251Z2V0XCJdLFxuICAgICAgW1wicmVsZWFzZV9nb2xhbmdcIiwgXCJwdWJsaXNoX3RvX2dvXCJdLFxuICAgIF07XG4gICAgZm9yIChjb25zdCBbam9iTmFtZSwgdG9nZ2xlXSBvZiBwdWJsaXNoSm9icykge1xuICAgICAgY29uc3Qgam9iID0gd2YuZ2V0Sm9iKGpvYk5hbWUpO1xuICAgICAgaWYgKCFqb2IpIGNvbnRpbnVlO1xuICAgICAgam9iLmlmID0gYCgke05PVF9ESVNQQVRDSH0gJiYgJHtQVVNIX1BVQkxJU0h9KSB8fCAoJHtESVNQQVRDSH0gJiYgaW5wdXRzLiR7dG9nZ2xlfSlgO1xuICAgICAgdGhpcy5zdXBwcmVzc01hbnVhbEZhaWx1cmVJc3N1ZShqb2IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYW51YWwgZm9yY2UtcmVsZWFzZXMgc2hvdWxkIG5vdCBvcGVuIFwiZmFpbGVkLXJlbGVhc2VcIiBpc3N1ZXMsIG1hdGNoaW5nIHRoZVxuICAgKiBiZWhhdmlvdXIgb2YgdGhlIHByZXZpb3VzIHN0YW5kYWxvbmUgZm9yY2UtcmVsZWFzZSB3b3JrZmxvdy5cbiAgICovXG4gIHByaXZhdGUgc3VwcHJlc3NNYW51YWxGYWlsdXJlSXNzdWUoam9iOiBhbnkpIHtcbiAgICBjb25zdCBjcmVhdGVJc3N1ZSA9IGpvYi5zdGVwcy5maW5kKChzOiBhbnkpID0+IHMubmFtZSA9PT0gXCJDcmVhdGUgSXNzdWVcIik7XG4gICAgaWYgKGNyZWF0ZUlzc3VlKSB7XG4gICAgICBjcmVhdGVJc3N1ZS5pZiA9XG4gICAgICAgIFwiJHt7IGZhaWx1cmUoKSAmJiBnaXRodWIuZXZlbnRfbmFtZSAhPSAnd29ya2Zsb3dfZGlzcGF0Y2gnIH19XCI7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yY2UtcmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3JjZS1yZWxlYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILG1DQUF3QztBQUd4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFhLFlBQWEsU0FBUSxrQkFBUztJQUN4QixlQUFlLENBQWlCO0lBRWpELFlBQVksT0FBd0I7UUFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsU0FBUyxDQUVwRCxDQUFDO1FBQ2QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNLLGlCQUFpQjtRQUN2QixNQUFNLE1BQU0sR0FBSSxJQUFJLENBQUMsZUFBdUIsQ0FBQyxNQUFNLENBQUM7UUFDcEQsTUFBTSxDQUFDLGdCQUFnQixHQUFHO1lBQ3hCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQjtZQUMxQixNQUFNLEVBQUU7Z0JBQ04sR0FBRyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO2dCQUMxQyxHQUFHLEVBQUU7b0JBQ0gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsUUFBUSxFQUFFLElBQUk7b0JBQ2QsV0FBVyxFQUFFLGtDQUFrQztpQkFDaEQ7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLElBQUksRUFBRSxTQUFTO29CQUNmLE9BQU8sRUFBRSxLQUFLO29CQUNkLFdBQVcsRUFBRSxrQ0FBa0M7aUJBQ2hEO2dCQUNELGdCQUFnQixFQUFFO29CQUNoQixJQUFJLEVBQUUsU0FBUztvQkFDZixPQUFPLEVB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LEtBQUssY0FBYyxDQUFDLENBQUM7UUFDMUUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixXQUFXLENBQUMsRUFBRTtnQkFDWiw4REFBOEQsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBbktELG9DQW1LQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHsgY2RrLCBDb21wb25lbnQgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBHaXRodWJXb3JrZmxvdyB9IGZyb20gXCJwcm9qZW4vbGliL2dpdGh1YlwiO1xuXG4vKipcbiAqIEZvbGRzIHRoZSBmb3JtZXIgc3RhbmRhbG9uZSBgZm9yY2UtcmVsZWFzZWAgd29ya2Zsb3cgaW50byB0aGUgcHJvamVuLWdlbmVyYXRlZFxuICogYHJlbGVhc2VgIHdvcmtmbG93LlxuICpcbiAqIG5wbSB0cnVzdGVkIHB1Ymxpc2hpbmcgKE9JREMpIG9ubHkgYWxsb3dzIGEgKnNpbmdsZSogdHJ1c3RlZCBwdWJsaXNoZXIgcGVyXG4gKiBwYWNrYWdlLCBwaW5uZWQgdG8gb25lIHJlcG9zaXRvcnkgKyB3b3JrZmxvdyBmaWxlbmFtZS4gQSBzZWNvbmQgd29ya2Zsb3dcbiAqICh0aGUgb2xkIGBmb3JjZS1yZWxlYXNlLnltbGApIHRoYXQgYWxzbyBwdWJsaXNoZXMgdG8gbnBtIHZpYSBPSURDIGNhblxuICogdGhlcmVmb3JlIG5ldmVyIGJlIHRydXN0ZWQuIFRvIGtlZXAgYSBzaW5nbGUgT0lEQyBlbnRyeXBvaW50IHdlIGZvbGQgdGhlXG4gKiBtYW51YWwgXCJmb3JjZSByZWxlYXNlXCIgYmVoYXZpb3VyIGludG8gYHJlbGVhc2UueW1sYCBiZWhpbmQgYVxuICogYHdvcmtmbG93X2Rpc3BhdGNoYCB0cmlnZ2VyLiBQeVBJIE9JREMgdGVjaG5pY2FsbHkgYWxsb3dzIG11bHRpcGxlIHRydXN0ZWRcbiAqIHB1Ymxpc2hlcnMsIGJ1dCB3ZSBrZWVwIGl0IGFsaWduZWQgd2l0aCBucG0gZm9yIGNvbnNpc3RlbmN5LlxuICpcbiAqIEJlaGF2aW91cjpcbiAqIC0gT24gYHB1c2hgOiB1bmNoYW5nZWQsIGEgY29uZGl0aW9uYWwgcmVsZWFzZSBnYXRlZCBieSBgc2hvdWxkLXJlbGVhc2VgLlxuICogLSBPbiBgd29ya2Zsb3dfZGlzcGF0Y2hgOiBmb3JjZS1yZWxlYXNlcyBhIHNwZWNpZmljIGNvbW1pdCAoYHNoYWApIGJ5IHJ1bm5pbmdcbiAqICAgYHVuY29uZGl0aW9uYWwtcmVsZWFzZWAgYW5kIHB1Ymxpc2hlcyBvbmx5IHRvIHRoZSBwYWNrYWdlIG1hbmFnZXJzIHNlbGVjdGVkXG4gKiAgIHZpYSB0aGUgYHB1Ymxpc2hfdG9fKmAgaW5wdXRzLlxuICovXG5leHBvcnQgY2xhc3MgRm9yY2VSZWxlYXNlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSByZWxlYXNlV29ya2Zsb3c6IEdpdGh1YldvcmtmbG93O1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IGNkay5Kc2lpUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgcmVsZWFzZVdvcmtmbG93ID0gcHJvamVjdC5naXRodWI/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIikgYXNcbiAgICAgIHwgR2l0aHViV29ya2Zsb3dcbiAgICAgIHwgdW5kZWZpbmVkO1xuICAgIGlmICghcmVsZWFzZVdvcmtmbG93KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZmluZCByZWxlYXNlIHdvcmtmbG93LCBhYm9ydGluZ1wiKTtcbiAgICB9XG4gICAgdGhpcy5yZWxlYXNlV29ya2Zsb3cgPSByZWxlYXNlV29ya2Zsb3c7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGUgbWFudWFsIGZvcmNlLXJlbGVhc2UgaW5wdXRzIHRvIHRoZSB3b3JrZmxvdydzIGV4aXN0aW5nXG4gICAqIGB3b3JrZmxvd19kaXNwYXRjaGAgdHJpZ2dlci5cbiAgICpcbiAgICogSW5wdXRzIGFyZSAqbWVyZ2VkKiByYXRoZXIgdGhhbiByZXBsYWNlZDogZGVwZW5kaW5nIG9uIHRoZSByZXNvbHZlZCBwcm9qZW5cbiAgICogdmVyc2lvbiwgdGhlIHRydXN0ZWQtcHVibGlzaGluZyByZWxlYXNlIHdvcmtmbG93IGFscmVhZHkgZGVmaW5lcyBhIGBkcnlfcnVuYFxuICAgKiBpbnB1dCAodXNlZCBieSBgcnVuLW5hbWVgLCB0aGUgR2l0SHViLXJlbGVhc2Ugc3RlcCwgYW5kIGBQVUJMSUJfRFJZUlVOYCBvblxuICAgKiB0aGUgcHVibGlzaCBqb2JzKS4gUmVwbGFjaW5nIHRoZSB0cmlnZ2VyIHdvdWxkIGRyb3AgdGhvc2Ugd2hpbGUgbGVhdmluZyB0aGVcbiAgICogcmVmZXJlbmNlcyBiZWhpbmQsIHNvIHdlIHByZXNlcnZlIHdoYXRldmVyIHByb2plbiBhbHJlYWR5IGRlY2xhcmVkLlxuICAgKi9cbiAgcHJpdmF0ZSBhZGREaXNwYXRjaElucHV0cygpIHtcbiAgICBjb25zdCBldmVudHMgPSAodGhpcy5yZWxlYXNlV29ya2Zsb3cgYXMgYW55KS5ldmVudHM7XG4gICAgZXZlbnRzLndvcmtmbG93RGlzcGF0Y2ggPSB7XG4gICAgICAuLi5ldmVudHMud29ya2Zsb3dEaXNwYXRjaCxcbiAgICAgIGlucHV0czoge1xuICAgICAgICAuLi4oZXZlbnRzLndvcmtmbG93RGlzcGF0Y2g/LmlucHV0cyA/PyB7fSksXG4gICAgICAgIHNoYToge1xuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHNoYSBvZiB0aGUgY29tbWl0IHRvIHJlbGVhc2VcIixcbiAgICAgICAgfSxcbiAgICAgICAgcHVibGlzaF90b19ucG06IHtcbiAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJXaGV0aGVyIG9yIG5vdCB0byBwdWJsaXNoIHRvIE5QTVwiLFxuICAgICAgICB9LFxuICAgICAgICBwdWJsaXNoX3RvX21hdmVuOiB7XG4gICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiV2hldGhlciBvciBub3QgdG8gcHVibGlzaCB0byBNYXZlblwiLFxuICAgICAgICB9LFxuICAgICAgICBwdWJsaXNoX3RvX3B5cGk6IHtcbiAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJXaGV0aGVyIG9yIG5vdCB0byBwdWJsaXNoIHRvIFB5UGlcIixcbiAgICAgICAgfSxcbiAgICAgICAgcHVibGlzaF90b19udWdldDoge1xuICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIldoZXRoZXIgb3Igbm90IHRvIHB1Ymxpc2ggdG8gTnVHZXRcIixcbiAgICAgICAgfSxcbiAgICAgICAgcHVibGlzaF90b19nbzoge1xuICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIldoZXRoZXIgb3Igbm90IHRvIHB1Ymxpc2ggdG8gR29cIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcHVibGlzaCBqb2JzIChgcmVsZWFzZV9ucG1gLCBgcmVsZWFzZV9weXBpYCwgLi4uKSBhcmUgb25seSBhZGRlZCB0byB0aGVcbiAgICogd29ya2Zsb3cgZHVyaW5nIGBSZWxlYXNlLnByZVN5bnRoZXNpemUoKWAuIEJlY2F1c2UgdGhpcyBjb21wb25lbnQgaXNcbiAgICogY29uc3RydWN0ZWQgbGFzdCwgcnVubmluZyBvdXIgbXV0YXRpb25zIGhlcmUgKGFmdGVyIHRoYXQpIGxldHMgdXMgcGF0Y2hcbiAgICogZXZlcnkgam9iIGluLW1lbW9yeSBieSBzdGVwICpuYW1lKiBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gYnJpdHRsZSBhcnJheVxuICAgKiBpbmRpY2VzLlxuICAgKi9cbiAgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICB0aGlzLmFkZERpc3BhdGNoSW5wdXRzKCk7XG5cbiAgICBjb25zdCB3ZiA9IHRoaXMucmVsZWFzZVdvcmtmbG93IGFzIGFueTtcblxuICAgIGNvbnN0IERJU1BBVENIID0gXCJnaXRodWIuZXZlbnRfbmFtZSA9PSAnd29ya2Zsb3dfZGlzcGF0Y2gnXCI7XG4gICAgY29uc3QgTk9UX0RJU1BBVENIID0gXCJnaXRodWIuZXZlbnRfbmFtZSAhPSAnd29ya2Zsb3dfZGlzcGF0Y2gnXCI7XG4gICAgLy8gT24gcHVzaCwgb25seSBwdWJsaXNoIGZvciBhIGJyYW5kLW5ldywgc3RpbGwtY3VycmVudCByZWxlYXNlLlxuICAgIGNvbnN0IFBVU0hfUFVCTElTSCA9XG4gICAgICBcIm5lZWRzLnJlbGVhc2Uub3V0cHV0cy50YWdfZXhpc3RzICE9ICd0cnVlJyAmJiBuZWVkcy5yZWxlYXNlLm91dHB1dHMubGF0ZXN0X2NvbW1pdCA9PSBnaXRodWIuc2hhXCI7XG5cbiAgICAvLyAtLS0gcmVsZWFzZSBqb2I6IGJyYW5jaCBiZWhhdmlvdXIgYnkgdHJpZ2dlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgcmVsZWFzZVN0ZXBzOiBhbnlbXSA9IHdmLmdldEpvYihcInJlbGVhc2VcIikuc3RlcHM7XG5cbiAgICBjb25zdCBjaGVja291dCA9IHJlbGVhc2VTdGVwcy5maW5kKChzKSA9PiBzLm5hbWUgPT09IFwiQ2hlY2tvdXRcIik7XG4gICAgY2hlY2tvdXQud2l0aCA9IHtcbiAgICAgIC4uLmNoZWNrb3V0LndpdGgsXG4gICAgICAvLyBGb3JjZS1yZWxlYXNlIGNoZWNrcyBvdXQgdGhlIHJlcXVlc3RlZCBjb21taXQ7IHB1c2ggdXNlcyB0aGUgZGVmYXVsdCByZWYuXG4gICAgICByZWY6IGBcXCR7eyAke0RJU1BBVENIfSAmJiBpbnB1dHMuc2hhIHx8ICcnIH19YCxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVsZWFzZVN0ZXAgPSByZWxlYXNlU3RlcHMuZmluZCgocykgPT4gcy5uYW1lID09PSBcInJlbGVhc2VcIik7XG4gICAgcmVsZWFzZVN0ZXAucnVuID0gW1xuICAgICAgYGlmIFsgXCJcXCR7eyBnaXRodWIuZXZlbnRfbmFtZSB9fVwiID0gXCJ3b3JrZmxvd19kaXNwYXRjaFwiIF07IHRoZW5gLFxuICAgICAgXCIgIG5weCBwcm9qZW4gdW5jb25kaXRpb25hbC1yZWxlYXNlXCIsXG4gICAgICBcImVsc2VcIixcbiAgICAgIFwiICBucHggcHJvamVuIHJlbGVhc2VcIixcbiAgICAgIFwiZmlcIixcbiAgICBdLmpvaW4oXCJcXG5cIik7XG5cbiAgICAvLyBgc2hvdWxkLXJlbGVhc2VgIG9ubHkgbWFrZXMgc2Vuc2UgZm9yIGF1dG9tYXRpYyAocHVzaCkgcmVsZWFzZXMuXG4gICAgcmVsZWFzZVN0ZXBzLmZpbmQoKHMpID0+IHMuaWQgPT09IFwiZ2l0X3JlbW90ZVwiKS5pZiA9IE5PVF9ESVNQQVRDSDtcblxuICAgIC8vIFRoZSBwdWJsaXNoIGpvYnMgZG93bmxvYWQgdGhpcyBhcnRpZmFjdCwgc28gaXQgbXVzdCBhbHNvIGJlIHVwbG9hZGVkIG9uIGFcbiAgICAvLyBtYW51YWwgZGlzcGF0Y2ggKHdoZXJlIGxhdGVzdF9jb21taXQgaXMgbmV2ZXIgY29tcHV0ZWQpLlxuICAgIGNvbnN0IGFydGlmYWN0R3VhcmQgPSBgXFwke3sgJHtESVNQQVRDSH0gfHwgc3RlcHMuZ2l0X3JlbW90ZS5vdXRwdXRzLmxhdGVzdF9jb21taXQgPT0gZ2l0aHViLnNoYSB9fWA7XG4gICAgcmVsZWFzZVN0ZXBzLmZpbmQoKHMpID0+IHMubmFtZSA9PT0gXCJCYWNrdXAgYXJ0aWZhY3QgcGVybWlzc2lvbnNcIikuaWYgPVxuICAgICAgYXJ0aWZhY3RHdWFyZDtcbiAgICByZWxlYXNlU3RlcHMuZmluZCgocykgPT4gcy5uYW1lID09PSBcIlVwbG9hZCBhcnRpZmFjdFwiKS5pZiA9IGFydGlmYWN0R3VhcmQ7XG5cbiAgICAvLyAtLS0gZGVwcmVjYXRlIGpvYjogc2tpcCBvbiBtYW51YWwgZGlzcGF0Y2ggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgZGVwcmVjYXRlID0gd2YuZ2V0Sm9iKFwiZGVwcmVjYXRlXCIpO1xuICAgIGlmIChkZXByZWNhdGUpIHtcbiAgICAgIGRlcHJlY2F0ZS5pZiA9IE5PVF9ESVNQQVRDSDtcbiAgICB9XG5cbiAgICAvLyAtLS0gR2l0SHViIHJlbGVhc2Ugam9iIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBnaXRodWJKb2IgPSB3Zi5nZXRKb2IoXCJyZWxlYXNlX2dpdGh1YlwiKTtcbiAgICBpZiAoZ2l0aHViSm9iKSB7XG4gICAgICAvLyAoUmUpY3JlYXRlIHRoZSBHaXRIdWIgcmVsZWFzZSB3aGVuZXZlciB0aGUgdGFnIGlzIG5ldzsgb24gcHVzaCBhbHNvXG4gICAgICAvLyByZXF1aXJlIHRoZSBjb21taXQgdG8gc3RpbGwgYmUgdGhlIGxhdGVzdC5cbiAgICAgIGdpdGh1YkpvYi5pZiA9IGBuZWVkcy5yZWxlYXNlLm91dHB1dHMudGFnX2V4aXN0cyAhPSAndHJ1ZScgJiYgKCR7RElTUEFUQ0h9IHx8IG5lZWRzLnJlbGVhc2Uub3V0cHV0cy5sYXRlc3RfY29tbWl0ID09IGdpdGh1Yi5zaGEpYDtcbiAgICAgIGNvbnN0IGdoUmVsZWFzZVN0ZXAgPSBnaXRodWJKb2Iuc3RlcHMuZmluZChcbiAgICAgICAgKHM6IGFueSkgPT4gcy5uYW1lID09PSBcIlJlbGVhc2VcIlxuICAgICAgKTtcbiAgICAgIGdoUmVsZWFzZVN0ZXAuZW52ID0ge1xuICAgICAgICAuLi5naFJlbGVhc2VTdGVwLmVudixcbiAgICAgICAgLy8gVGFyZ2V0IHRoZSBkaXNwYXRjaGVkIGNvbW1pdCBpbnN0ZWFkIG9mIHRoZSB3b3JrZmxvdydzIG93biBzaGEuXG4gICAgICAgIEdJVEhVQl9SRUY6IGBcXCR7eyAke0RJU1BBVENIfSAmJiBpbnB1dHMuc2hhIHx8IGdpdGh1Yi5yZWYgfX1gLFxuICAgICAgICBHSVRIVUJfU0hBOiBgXFwke3sgJHtESVNQQVRDSH0gJiYgaW5wdXRzLnNoYSB8fCBnaXRodWIuc2hhIH19YCxcbiAgICAgIH07XG4gICAgICB0aGlzLnN1cHByZXNzTWFudWFsRmFpbHVyZUlzc3VlKGdpdGh1YkpvYik7XG4gICAgfVxuXG4gICAgLy8gLS0tIHBlci1wYWNrYWdlIHB1Ymxpc2ggam9icyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgcHVibGlzaEpvYnM6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1xuICAgICAgW1wicmVsZWFzZV9ucG1cIiwgXCJwdWJsaXNoX3RvX25wbVwiXSxcbiAgICAgIFtcInJlbGVhc2VfbWF2ZW5cIiwgXCJwdWJsaXNoX3RvX21hdmVuXCJdLFxuICAgICAgW1wicmVsZWFzZV9weXBpXCIsIFwicHVibGlzaF90b19weXBpXCJdLFxuICAgICAgW1wicmVsZWFzZV9udWdldFwiLCBcInB1Ymxpc2hfdG9fbnVnZXRcIl0sXG4gICAgICBbXCJyZWxlYXNlX2dvbGFuZ1wiLCBcInB1Ymxpc2hfdG9fZ29cIl0sXG4gICAgXTtcbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCB0b2dnbGVdIG9mIHB1Ymxpc2hKb2JzKSB7XG4gICAgICBjb25zdCBqb2IgPSB3Zi5nZXRKb2Ioam9iTmFtZSk7XG4gICAgICBpZiAoIWpvYikgY29udGludWU7XG4gICAgICBqb2IuaWYgPSBgKCR7Tk9UX0RJU1BBVENIfSAmJiAke1BVU0hfUFVCTElTSH0pIHx8ICgke0RJU1BBVENIfSAmJiBpbnB1dHMuJHt0b2dnbGV9KWA7XG4gICAgICB0aGlzLnN1cHByZXNzTWFudWFsRmFpbHVyZUlzc3VlKGpvYik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbCBmb3JjZS1yZWxlYXNlcyBzaG91bGQgbm90IG9wZW4gXCJmYWlsZWQtcmVsZWFzZVwiIGlzc3VlcywgbWF0Y2hpbmcgdGhlXG4gICAqIGJlaGF2aW91ciBvZiB0aGUgcHJldmlvdXMgc3RhbmRhbG9uZSBmb3JjZS1yZWxlYXNlIHdvcmtmbG93LlxuICAgKi9cbiAgcHJpdmF0ZSBzdXBwcmVzc01hbnVhbEZhaWx1cmVJc3N1ZShqb2I6IGFueSkge1xuICAgIGNvbnN0IGNyZWF0ZUlzc3VlID0gam9iLnN0ZXBzLmZpbmQoKHM6IGFueSkgPT4gcy5uYW1lID09PSBcIkNyZWF0ZSBJc3N1ZVwiKTtcbiAgICBpZiAoY3JlYXRlSXNzdWUpIHtcbiAgICAgIGNyZWF0ZUlzc3VlLmlmID1cbiAgICAgICAgXCIke3sgZmFpbHVyZSgpICYmIGdpdGh1Yi5ldmVudF9uYW1lICE9ICd3b3JrZmxvd19kaXNwYXRjaCcgfX1cIjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/lib/github-issues.js
CHANGED
|
@@ -16,6 +16,7 @@ class GithubIssues {
|
|
|
16
16
|
}
|
|
17
17
|
exports.GithubIssues = GithubIssues;
|
|
18
18
|
class IssueConfigFile extends projen_1.FileBase {
|
|
19
|
+
options;
|
|
19
20
|
constructor(project, filePath, options) {
|
|
20
21
|
super(project, filePath, options);
|
|
21
22
|
this.options = options;
|
|
@@ -30,4 +31,4 @@ contact_links:
|
|
|
30
31
|
`;
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLWlzc3Vlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9naXRodWItaXNzdWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILG1DQUE0RTtBQU01RTs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUN2QixZQUFZLE9BQXdCLEVBQUUsTUFBMEI7UUFDOUQsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDRjtBQUpELG9DQUlDO0FBTUQsTUFBTSxlQUFnQixTQUFRLGlCQUFRO0lBQ2pCLE9BQU8sQ0FBeUI7SUFFbkQsWUFDRSxPQUFnQixFQUNoQixRQUFnQixFQUNoQixPQUErQjtRQUUvQixLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRVMsaUJBQWlCLENBQUMsUUFBbUI7UUFDN0MsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQ2EsQ0FBQztRQUU1QixPQUFPOzs7aUtBR3NKLFlBQVk7O0NBRTVLLENBQUM7SUFDQSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IGNkaywgRmlsZUJhc2UsIEZpbGVCYXNlT3B0aW9ucywgSVJlc29sdmVyLCBQcm9qZWN0IH0gZnJvbSBcInByb2plblwiO1xuXG5pbnRlcmZhY2UgR2l0aHViSXNzdWVzQ29uZmlnIHtcbiAgcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogY3JlYXRlcyBmaWxlcyBpbiAuZ2l0aHViL0lTU1VFX1RFTVBMQVRFIHRvIGNvbmZpZ3VyZSB1c2VyIGd1aWRhbmNlIHRvIGNyZWF0ZSBpc3N1ZXNcbiAqL1xuZXhwb3J0IGNsYXNzIEdpdGh1Yklzc3VlcyB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IGNkay5Kc2lpUHJvamVjdCwgY29uZmlnOiBHaXRodWJJc3N1ZXNDb25maWcpIHtcbiAgICBuZXcgSXNzdWVDb25maWdGaWxlKHByb2plY3QsIFwiLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9jb25maWcueW1sXCIsIGNvbmZpZyk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIElzc3VlQ29uZmlnRmlsZU9wdGlvbnMgZXh0ZW5kcyBGaWxlQmFzZU9wdGlvbnMge1xuICBwcm92aWRlck5hbWU6IHN0cmluZztcbn1cblxuY2xhc3MgSXNzdWVDb25maWdGaWxlIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9uczogSXNzdWVDb25maWdGaWxlT3B0aW9ucztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBQcm9qZWN0LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogSXNzdWVDb25maWdGaWxlT3B0aW9uc1xuICApIHtcbiAgICBzdXBlcihwcm9qZWN0LCBmaWxlUGF0aCwgb3B0aW9ucyk7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQ29udGVudChyZXNvbHZlcjogSVJlc29sdmVyKSB7XG4gICAgY29uc3QgeyBwcm92aWRlck5hbWUgfSA9IHJlc29sdmVyLnJlc29sdmUoXG4gICAgICB0aGlzLm9wdGlvbnNcbiAgICApIGFzIElzc3VlQ29uZmlnRmlsZU9wdGlvbnM7XG5cbiAgICByZXR1cm4gYGJsYW5rX2lzc3Vlc19lbmFibGVkOiBmYWxzZVxuY29udGFjdF9saW5rczpcbiAgLSBuYW1lOiBGaWxlIGFuIGlzc3VlXG4gICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLWNvbnN0cnVjdHMvY2RrLXRlcnJhaW4vaXNzdWVzL25ldz9sYWJlbHM9YnVnJTJDK25ldyUyQytwcmUtYnVpbHQrcHJvdmlkZXJzJnRlbXBsYXRlPWJ1Zy1yZXBvcnQtcHJlYnVpbHQtcHJvdmlkZXJzLm1kJnRpdGxlPVxcYCR7cHJvdmlkZXJOYW1lfVxcYCtwcm92aWRlcjorXCJcbiAgICBhYm91dDogUGxlYXNlIGZpbGUgaXNzdWVzIHdpdGggcHJlLWJ1aWx0IHByb3ZpZGVycyBpbiBvdXIgbWFpbiByZXBvc2l0b3J5LlxuYDtcbiAgfVxufVxuIl19
|
package/lib/index.d.ts
CHANGED
|
@@ -53,8 +53,11 @@ export interface CdktnProviderProjectOptions extends cdk.JsiiProjectOptions {
|
|
|
53
53
|
* Use trusted publishing for publishing to pypi.org
|
|
54
54
|
* Needs to be pre-configured on PyPI to work.
|
|
55
55
|
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
56
|
+
* The `release_pypi` job keeps whatever runner the project is configured for.
|
|
57
|
+
* PyPI, unlike npm, does not restrict trusted publishing to GitHub-hosted
|
|
58
|
+
* runners -- trust is bound to the workflow ref, and the OIDC token is minted
|
|
59
|
+
* from ACTIONS_ID_TOKEN_REQUEST_URL, which is available on any runner with
|
|
60
|
+
* `id-token: write`.
|
|
58
61
|
*
|
|
59
62
|
* @see https://docs.pypi.org/trusted-publishers/
|
|
60
63
|
*
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.CdktnProviderProject = void 0;
|
|
5
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
@@ -52,6 +51,7 @@ const githubActionPinnedVersions = {
|
|
|
52
51
|
"actions/create-github-app-token": "29824e69f54612133e76f7eaac726eef6c875baf", // v2.2.1
|
|
53
52
|
};
|
|
54
53
|
class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
54
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@cdktn/provider-project.CdktnProviderProject", version: "0.8.1" };
|
|
55
55
|
constructor(options) {
|
|
56
56
|
const cdktnVersion = options.cdktnVersion ?? options.cdktfVersion;
|
|
57
57
|
assert(cdktnVersion, "Either cdktnVersion or cdktfVersion must be provided");
|
|
@@ -194,7 +194,6 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
194
194
|
authorOrganization: true,
|
|
195
195
|
defaultReleaseBranch: "main",
|
|
196
196
|
repository: `https://github.com/${repository}.git`,
|
|
197
|
-
mergify: false,
|
|
198
197
|
eslint: false,
|
|
199
198
|
depsUpgrade: !isDeprecated,
|
|
200
199
|
depsUpgradeOptions: {
|
|
@@ -203,7 +202,7 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
203
202
|
schedule: javascript_1.UpgradeDependenciesSchedule.WEEKLY,
|
|
204
203
|
},
|
|
205
204
|
},
|
|
206
|
-
|
|
205
|
+
publishToPypi: packageInfo.python,
|
|
207
206
|
publishToNuget: packageInfo.publishToNuget,
|
|
208
207
|
publishToMaven: packageInfo.publishToMaven,
|
|
209
208
|
publishToGo: packageInfo.publishToGo,
|
|
@@ -238,6 +237,8 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
238
237
|
docgen: false,
|
|
239
238
|
githubOptions: {
|
|
240
239
|
projenCredentials: projen_1.github.GithubCredentials.fromApp(),
|
|
240
|
+
// projen >=0.100 moved the `mergify` project option under githubOptions
|
|
241
|
+
mergify: false,
|
|
241
242
|
},
|
|
242
243
|
});
|
|
243
244
|
this.addDevDeps("dot-prop@^5.2.0", "@actions/core@^1.1.0", "@action-validator/core", "@action-validator/cli");
|
|
@@ -274,12 +275,15 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
274
275
|
?.tryFindWorkflow("release")
|
|
275
276
|
?.file?.patch(projen_1.JsonPatch.replace("/jobs/release_npm/runs-on", "ubuntu-latest"));
|
|
276
277
|
}
|
|
277
|
-
//
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
278
|
+
// NOTE: release_pypi deliberately stays on whatever runner the project is
|
|
279
|
+
// configured for. Unlike npm, PyPI places no restriction on the runner
|
|
280
|
+
// environment: publib-pypi mints its token with `python3 -m id pypi` against
|
|
281
|
+
// ACTIONS_ID_TOKEN_REQUEST_URL, which GitHub injects on any runner given
|
|
282
|
+
// `id-token: write`, and PyPI's trust is bound to the workflow ref, not the
|
|
283
|
+
// runner. Forcing this job onto a hosted runner would also strand it with the
|
|
284
|
+
// 31GB NODE_OPTIONS heap ceiling that useCustomGithubRunner writes into
|
|
285
|
+
// .projen/tasks.json, on a box with far less RAM than that -- and unlike
|
|
286
|
+
// package:js, package:python is a real jsii-pacmak transpile.
|
|
283
287
|
// ensure we don't fail if the release file is not present
|
|
284
288
|
const checkExistingTagStep = this.release.defaultBranch.workflow.jobs.release.steps.find((s) => "id" in s && s.id === "check_tag_exists");
|
|
285
289
|
const oldExistingTagRun = checkExistingTagStep.run;
|
|
@@ -383,8 +387,18 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
383
387
|
});
|
|
384
388
|
const releaseJobSteps = (this.github?.tryFindWorkflow("release")).jobs.release.steps;
|
|
385
389
|
const gitRemoteJob = releaseJobSteps.find((it) => it.id === "git_remote");
|
|
386
|
-
|
|
387
|
-
|
|
390
|
+
assert(gitRemoteJob, "git_remote step not found in release workflow, please check if the workaround still works!");
|
|
391
|
+
// We wrap whatever projen generated in a should-release guard rather than
|
|
392
|
+
// rewriting it, so assert only the two properties the wrapping actually
|
|
393
|
+
// depends on. Pinning to projen's exact wording broke the whole fleet
|
|
394
|
+
// once already: projen 0.101 changed `${{ github.ref }}` to `"$GITHUB_REF"`
|
|
395
|
+
// and every provider repo's upgrade-main started failing at synth.
|
|
396
|
+
assert(typeof gitRemoteJob.run === "string" &&
|
|
397
|
+
gitRemoteJob.run.includes("git ls-remote") &&
|
|
398
|
+
gitRemoteJob.run.includes("latest_commit="), `git_remote step no longer sets latest_commit from git ls-remote, please check if the workaround still works! Got: ${JSON.stringify(gitRemoteJob.run)}`);
|
|
399
|
+
// Fold *every* line: projen emits two today, but String#replace with a
|
|
400
|
+
// string pattern only folds the first if that ever grows.
|
|
401
|
+
const previousCommand = gitRemoteJob.run.split("\n").join(" && ");
|
|
388
402
|
const cancelCommand = 'echo "latest_commit=release_cancelled" >> $GITHUB_OUTPUT'; // this cancels the release via a non-matching SHA;
|
|
389
403
|
gitRemoteJob.run = `node ./scripts/should-release.js && (${previousCommand}) || ${cancelCommand}`;
|
|
390
404
|
gitRemoteJob.name +=
|
|
@@ -486,11 +500,9 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
486
500
|
}
|
|
487
501
|
}
|
|
488
502
|
exports.CdktnProviderProject = CdktnProviderProject;
|
|
489
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
490
|
-
CdktnProviderProject[_a] = { fqn: "@cdktn/provider-project.CdktnProviderProject", version: "0.8.0" };
|
|
491
503
|
function prettyAssertEqual(subject, expected, message) {
|
|
492
504
|
if (subject !== expected) {
|
|
493
505
|
throw new Error(`${message ?? "Assertion failed"}: expected ${JSON.stringify(expected)} but got ${JSON.stringify(subject)}`);
|
|
494
506
|
}
|
|
495
507
|
}
|
|
496
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBMEQ7QUFDMUQsaUNBQWtDO0FBQ2xDLDZDQUF5QztBQUN6QyxtQ0FBc0U7QUFFdEUsc0RBQW9FO0FBQ3BFLHFEQUFnRDtBQUNoRCxpREFBNkM7QUFDN0MsK0VBQXlFO0FBQ3pFLDJDQUF3QztBQUN4QyxpREFBNkM7QUFDN0MsMkRBQXVEO0FBQ3ZELDZEQUF5RDtBQUN6RCw2Q0FBMEM7QUFDMUMsNkRBQXlEO0FBQ3pELG1EQUErQztBQUMvQyxtREFBK0M7QUFDL0MsK0NBQTJDO0FBRTNDLHlEQUFxRDtBQUNyRCxxRUFBMEU7QUFDMUUsNkRBQW1FO0FBQ25FLG9EQUFrRTtBQUVsRSxtSEFBbUg7QUFDbkgsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUFrRTVCLE1BQU0sWUFBWSxHQUFHLENBQUMsWUFBb0IsRUFBVSxFQUFFO0lBQ3BELE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUM5QyxDQUFDLENBQUMsR0FBRyxZQUFZLFdBQVc7UUFDNUIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQUc7SUFDakMsa0JBQWtCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUN6RSwyQkFBMkIsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ2xGLHVCQUF1QixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDOUUsc0JBQXNCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUM3RSxrQkFBa0IsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ3pFLG9CQUFvQixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDM0Usb0JBQW9CLEVBQUUsMENBQTBDLEVBQUUsU0FB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QUNULFlBQVksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUN2QyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzICovXG5pbXBvcnQgYXNzZXJ0ID0gcmVxdWlyZShcImFzc2VydFwiKTtcbmltcG9ydCB7IHBhc2NhbENhc2UgfSBmcm9tIFwiY2hhbmdlLWNhc2VcIjtcbmltcG9ydCB7IE9iamVjdEZpbGUsIFRleHRGaWxlLCBjZGssIGdpdGh1YiwgSnNvblBhdGNoIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgSm9iU3RlcCB9IGZyb20gXCJwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZSB9IGZyb20gXCJwcm9qZW4vbGliL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IEFsZXJ0T3BlblBycyB9IGZyb20gXCIuL2FsZXJ0LW9wZW4tcHJzXCI7XG5pbXBvcnQgeyBBdXRvQXBwcm92ZSB9IGZyb20gXCIuL2F1dG8tYXBwcm92ZVwiO1xuaW1wb3J0IHsgQXV0b0Nsb3NlQ29tbXVuaXR5SXNzdWVzIH0gZnJvbSBcIi4vYXV0by1jbG9zZS1jb21tdW5pdHktaXNzdWVzXCI7XG5pbXBvcnQgeyBBdXRvbWVyZ2UgfSBmcm9tIFwiLi9hdXRvbWVyZ2VcIjtcbmltcG9ydCB7IENka3RmQ29uZmlnIH0gZnJvbSBcIi4vY2RrdGYtY29uZmlnXCI7XG5pbXBvcnQgeyBDb3B5cmlnaHRIZWFkZXJzIH0gZnJvbSBcIi4vY29weXJpZ2h0LWhlYWRlcnNcIjtcbmltcG9ydCB7IEN1c3RvbWl6ZWRMaWNlbnNlIH0gZnJvbSBcIi4vY3VzdG9taXplZC1saWNlbnNlXCI7XG5pbXBvcnQgeyBEZXBlbmRhYm90IH0gZnJvbSBcIi4vZGVwZW5kYWJvdFwiO1xuaW1wb3J0IHsgRGVwcmVjYXRlUGFja2FnZXMgfSBmcm9tIFwiLi9kZXByZWNhdGUtcGFja2FnZXNcIjtcbmltcG9ydCB7IEZvcmNlUmVsZWFzZSB9IGZyb20gXCIuL2ZvcmNlLXJlbGVhc2VcIjtcbmltcG9ydCB7IEdpdGh1Yklzc3VlcyB9IGZyb20gXCIuL2dpdGh1Yi1pc3N1ZXNcIjtcbmltcG9ydCB7IExvY2tJc3N1ZXMgfSBmcm9tIFwiLi9sb2NrLWlzc3Vlc1wiO1xuaW1wb3J0IHsgUGFja2FnZUluZm8gfSBmcm9tIFwiLi9wYWNrYWdlLWluZm9cIjtcbmltcG9ydCB7IFByb3ZpZGVyVXBncmFkZSB9IGZyb20gXCIuL3Byb3ZpZGVyLXVwZ3JhZGVcIjtcbmltcG9ydCB7IENoZWNrRm9yVXBncmFkZXNTY3JpcHRGaWxlIH0gZnJvbSBcIi4vc2NyaXB0cy9jaGVjay1mb3ItdXBncmFkZXNcIjtcbmltcG9ydCB7IFNob3VsZFJlbGVhc2VTY3JpcHRGaWxlIH0gZnJvbSBcIi4vc2NyaXB0cy9zaG91bGQtcmVsZWFzZVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVSYW5kb21Dcm9uLCBTY2hlZHVsZSB9IGZyb20gXCIuL3V0aWwvcmFuZG9tLWNyb25cIjtcblxuLy8gZW5zdXJlIG5ldyBwcm9qZWN0cyBzdGFydCB3aXRoIDEuMC4wIHNvIHRoYXQgZXZlcnkgZm9sbG93aW5nIGJyZWFraW5nIGNoYW5nZSBsZWFkcyB0byBhbiBpbmNyZWFzZWQgbWFqb3IgdmVyc2lvblxuY29uc3QgTUlOX01BSk9SX1ZFUlNJT04gPSAxO1xuXG5leHBvcnQgaW50ZXJmYWNlIENka3RuUHJvdmlkZXJQcm9qZWN0T3B0aW9ucyBleHRlbmRzIGNkay5Kc2lpUHJvamVjdE9wdGlvbnMge1xuICByZWFkb25seSB1c2VDdXN0b21HaXRodWJSdW5uZXI/OiBib29sZWFuO1xuICByZWFkb25seSB0ZXJyYWZvcm1Qcm92aWRlcjogc3RyaW5nO1xuICByZWFkb25seSBjZGt0blZlcnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgY2RrdG5WZXJzaW9uYCBpbnN0ZWFkLiBUaGlzIGFsaWFzIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2RrdGZWZXJzaW9uPzogc3RyaW5nO1xuICByZWFkb25seSBjb25zdHJ1Y3RzVmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBmb3JjZU1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiY2RrdG5cIlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlPzogc3RyaW5nO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJjZGt0bi1pb1wiXG4gICAqIHByZXZpb3VzbHkgd2FzIFwiY2RrdGZcIi4gVXNlZCBmb3IgR2l0SHViIG9yZyBuYW1lIGFuZCBwYWNrYWdlIHNjb3BpbmdcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1Yk5hbWVzcGFjZT86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiSW8uQ2RrdG5cIlxuICAgKi9cbiAgcmVhZG9ubHkgbnVnZXRPcmc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcImNka3RuXCJcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuT3JnPzogc3RyaW5nO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJpby4ke21hdmVuT3JnfVwiXG4gICAqL1xuICByZWFkb25seSBtYXZlbkdyb3VwSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgeWVhciBvZiB0aGUgY3JlYXRpb24gb2YgdGhlIHJlcG9zaXRvcnksIGZvciBjb3B5cmlnaHQgcHVycG9zZXMuXG4gICAqIFdpbGwgZmFsbCBiYWNrIHRvIHRoZSBjdXJyZW50IHllYXIgaWYgbm90IHNwZWNpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0aW9uWWVhcj86IG51bWJlcjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgcHJlYnVpbHQgcHJvdmlkZXIgaXMgZGVwcmVjYXRlZC5cbiAgICogSWYgdHJ1ZSwgbm8gbmV3IHZlcnNpb25zIHdpbGwgYmUgcHVibGlzaGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNEZXByZWNhdGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIGRhdGUgd2hlbiB0aGUgcHJvamVjdCBzaG91bGQgYmUgY29uc2lkZXJlZCBkZXByZWNhdGVkLCB0byBiZSB1c2VkIGluIHRoZSBSRUFETUUgdGV4dC5cbiAgICogSWYgbm8gZGF0ZSBpcyBwcm92aWRlZCwgdGhlbiB0aGUgZGF0ZSBvZiB0aGUgYnVpbGQgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICByZWFkb25seSBkZXByZWNhdGlvbkRhdGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcIkhhc2hpQ29ycCwgSW5jLlwiXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFVzZSB0cnVzdGVkIHB1Ymxpc2hpbmcgZm9yIHB1Ymxpc2hpbmcgdG8gcHlwaS5vcmdcbiAgICogTmVlZHMgdG8gYmUgcHJlLWNvbmZpZ3VyZWQgb24gUHlQSSB0byB3b3JrLlxuICAgKlxuICAgKiBXaGVuIGVuYWJsZWQsIHRoZSBgcmVsZWFzZV9weXBpYCBqb2IgaXMgbW92ZWQgdG8gYSBHaXRIdWItaG9zdGVkIHJ1bm5lcixcbiAgICogc2luY2UgUHlQSSBPSURDIHRydXN0IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIHNlbGYtaG9zdGVkL0RlcG90IHJ1bm5lcnMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLnB5cGkub3JnL3RydXN0ZWQtcHVibGlzaGVycy9cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHlwaVRydXN0ZWRQdWJsaXNoaW5nPzogYm9vbGVhbjtcbn1cblxuY29uc3QgZ2V0TWF2ZW5OYW1lID0gKHByb3ZpZGVyTmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIFtcIm51bGxcIiwgXCJyYW5kb21cIl0uaW5jbHVkZXMocHJvdmlkZXJOYW1lKVxuICAgID8gYCR7cHJvdmlkZXJOYW1lfV9wcm92aWRlcmBcbiAgICA6IHByb3ZpZGVyTmFtZS5yZXBsYWNlKC8tL2dpLCBcIl9cIik7XG59O1xuXG5jb25zdCBnaXRodWJBY3Rpb25QaW5uZWRWZXJzaW9ucyA9IHtcbiAgXCJhY3Rpb25zL2NoZWNrb3V0XCI6IFwiZGUwZmFjMmU0NTAwZGFiZTAwMDllNjcyMTRmZjVmNTQ0N2NlODNkZFwiLCAvLyB2Ni4wLjJcbiAgXCJhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0XCI6IFwiM2U1ZjQ1YjJjZmI5MTcyMDU0YjQwODdhNDBlOGUwYjVhNTQ2MWU3Y1wiLCAvLyB2OC4wLjFcbiAgXCJhY3Rpb25zL2dpdGh1Yi1zY3JpcHRcIjogXCJlZDU5NzQxMWQ4ZjkyNDA3M2Y5OGRmYzVjNjVhMjNhMjMyNWYzNGNkXCIsIC8vIHY4LjAuMFxuICBcImFjdGlvbnMvc2V0dXAtZG90bmV0XCI6IFwiYzJmYTA5ZjRiZGU1ZWJiOWQxNzc3Y2YyODI2MmEzZWIzZGIzY2VkN1wiLCAvLyB2NS4yLjBcbiAgXCJhY3Rpb25zL3NldHVwLWdvXCI6IFwiNGEzNjAxMTIxZGQwMWQxNjI2YTFlMjNlMzcyMTFlMzI1NGMxYzA2Y1wiLCAvLyB2Ni40LjBcbiAgXCJhY3Rpb25zL3NldHVwLWphdmFcIjogXCJiZTY2NmMyZmNkMjdlYzgwOTcwM2RlYzUwZTUwOGMyZmRjN2Y2NjU0XCIsIC8vIHY1LjIuMFxuICBcImFjdGlvbnMvc2V0dXAtbm9kZVwiOiBcIjQ4YjU1YTAxMWJkYTlmNWQ2YWViNGMyZDljNzM2MmU4ZGFlNDA0MWVcIiwgLy8gdjYuNC4wXG4gIFwiYWN0aW9ucy9zZXR1cC1weXRob25cIjogXCJhMzA5ZmY4YjQyNmI1OGVjMGUyYTQ1ZjBmODY5ZDQ2ODg5ZDAyNDA1XCIsIC8vIHY2LjIuMFxuICBcImFjdGlvbnMvc3RhbGVcIjogXCJiNWQ0MWQ0ZTFkNWRjZWVhMTBlNzEwNDc4NmI3MzYyNGMxOGExOTBmXCIsIC8vIHYxMC4yLjBcbiAgXCJhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdFwiOiBcIjA0M2ZiNDZkMWE5M2M3N2FhZTY1NmU3YzFjNjRhODc1ZDFmYzZhMGFcIiwgLy8gdjcuMC4xXG4gIFwiYW1hbm5uL2FjdGlvbi1zZW1hbnRpYy1wdWxsLXJlcXVlc3RcIjpcbiAgICBcIjQ4ZjI1NjI4NGJkNDZjZGFhYjEwNDhjMzcyMTM2MGU4MDgzMzVkNTBcIiwgLy8gdjYuMS4xXG4gIFwiZGVzc2FudC9sb2NrLXRocmVhZHNcIjogXCI3MjY2YTdjZTVjMWRmMDFiMWM2ZGI4NWJmOGNkODZjNzM3ZGFkYmU3XCIsIC8vIHY2LjAuMFxuICBcImhhc2hpY29ycC9zZXR1cC1jb3B5d3JpdGVcIjogXCIzMjYzOGRhMmQ0ZTgxZDU2YTA3NjRhYTE1NDc4ODJmYzRkMjA5NjM2XCIsIC8vIHYxLjEuM1xuICBcImhhc2hpY29ycC9zZXR1cC10ZXJyYWZvcm1cIjogXCI1ZThkYmYzYzZkOWRlYWY0MTkzY2E3YThmYjIzZjJhYzgzYmI2Yzg1XCIsIC8vIHY0LjAuMFxuICBcImltam9obmJvL2lzc3VlLWJvdFwiOiBcIjMxODhjNmNlMDYyNDkyMDY3MDlkM2IxZjI3NGQwZDRjNWE1MjE2MDFcIiwgLy8gdjMuNC41XG4gIFwicGV0ZXItZXZhbnMvY3JlYXRlLXB1bGwtcmVxdWVzdFwiOiBcIjVmNjk3OGZhZjA4OWQ0ZDIwYjAwYzc3NjY5ODlkMDc2YmIyZmM3ZjFcIiwgLy8gdjguMS4xXG4gIFwic2xhY2thcGkvc2xhY2stZ2l0aHViLWFjdGlvblwiOiBcIjQ1YTg4Yjk1ODFiZmFiMjU2NmRjODgxZTJjZDY2ZDMzNGU2MjFlMmNcIiwgLy8gdjMuMC4zXG4gIFwiYWN0aW9ucy9jcmVhdGUtZ2l0aHViLWFwcC10b2tlblwiOiBcIjI5ODI0ZTY5ZjU0NjEyMTMzZTc2ZjdlYWFjNzI2ZWVmNmM4NzViYWZcIiwgLy8gdjIuMi4xXG59O1xuXG5leHBvcnQgY2xhc3MgQ2RrdG5Qcm92aWRlclByb2plY3QgZXh0ZW5kcyBjZGsuSnNpaVByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDZGt0blByb3ZpZGVyUHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBjZGt0blZlcnNpb24gPSBvcHRpb25zLmNka3RuVmVyc2lvbiA/PyBvcHRpb25zLmNka3RmVmVyc2lvbjtcbiAgICBhc3NlcnQoXG4gICAgICBjZGt0blZlcnNpb24sXG4gICAgICBcIkVpdGhlciBjZGt0blZlcnNpb24gb3IgY2RrdGZWZXJzaW9uIG11c3QgYmUgcHJvdmlkZWRcIlxuICAgICk7XG5cbiAgICBjb25zdCB7XG4gICAgICB0ZXJyYWZvcm1Qcm92aWRlcixcbiAgICAgIHdvcmtmbG93Q29udGFpbmVySW1hZ2UsXG4gICAgICBjb25zdHJ1Y3RzVmVyc2lvbixcbiAgICAgIG1pbk5vZGVWZXJzaW9uLFxuICAgICAganNpaVZlcnNpb24sXG4gICAgICB0eXBlc2NyaXB0VmVyc2lvbixcbiAgICAgIGlzRGVwcmVjYXRlZCxcbiAgICAgIGRlcHJlY2F0aW9uRGF0ZSxcbiAgICAgIC8vIFRPRE86IENvbmZpcm0gZGVmYXVsdCBBdXRob3IgTmFtZVxuICAgICAgYXV0aG9yTmFtZSA9IFwiQ0RLIFRlcnJhaW4gTWFpbnRhaW5lcnNcIixcbiAgICAgIGF1dGhvckFkZHJlc3MgPSBcImh0dHBzOi8vY2RrdG4uaW9cIixcbiAgICAgIG5hbWVzcGFjZSA9IFwiY2RrdG5cIixcbiAgICAgIGdpdGh1Yk5hbWVzcGFjZSA9IFwiY2RrdG4taW9cIixcbiAgICAgIG51Z2V0T3JnID0gXCJJby5DZGt0blwiLFxuICAgICAgbWF2ZW5PcmcgPSBcImNka3RuXCIsXG4gICAgICBucG1UcnVzdGVkUHVibGlzaGluZyxcbiAgICAgIHB5cGlUcnVzdGVkUHVibGlzaGluZyxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IFtmcXByb3ZpZGVyTmFtZSwgcHJvdmlkZXJWZXJzaW9uXSA9IHRlcnJhZm9ybVByb3ZpZGVyLnNwbGl0KFwiQFwiKTtcbiAgICBjb25zdCBwcm92aWRlck5hbWUgPSBmcXByb3ZpZGVyTmFtZS5zcGxpdChcIi9cIikucG9wKCk7XG4gICAgYXNzZXJ0KHByb3ZpZGVyTmFtZSwgYCR7dGVycmFmb3JtUHJvdmlkZXJ9IGRvZXNuJ3Qgc2VlbSB0byBiZSB2YWxpZGApO1xuICAgIGFzc2VydChcbiAgICAgICFwcm92aWRlck5hbWUuZW5kc1dpdGgoXCItZ29cIiksXG4gICAgICBcInByb3ZpZGVyTmFtZSBtYXkgbm90IGVuZCB3aXRoICctZ28nIGFzIHRoaXMgY2FuIGNvbmZsaWN0IHdpdGggcmVwb3MgZm9yIGdvIHBhY2thZ2VzXCJcbiAgICApO1xuXG4gICAgY29uc3QgbnVnZXROYW1lID0gYCR7bnVnZXRPcmd9LlByb3ZpZGVycy4ke3Bhc2NhbENhc2UocHJvdmlkZXJOYW1lKX1gO1xuICAgIGNvbnN0IG1hdmVuR3JvdXBJZCA9IG9wdGlvbnMubWF2ZW5Hcm91cElkID8/IGBpby4ke21hdmVuT3JnfWA7XG4gICAgY29uc3QgbWF2ZW5OYW1lID0gYCR7bWF2ZW5Hcm91cElkfS5wcm92aWRlcnMuJHtnZXRNYXZlbk5hbWUocHJvdmlkZXJOYW1lKX1gO1xuICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBgJHtnaXRodWJOYW1lc3BhY2V9LyR7bmFtZXNwYWNlfS1wcm92aWRlci0ke3Byb3ZpZGVyTmFtZS5yZXBsYWNlKFxuICAgICAgLy0vZyxcbiAgICAgIFwiXCJcbiAgICApfWA7XG4gICAgY29uc3QgcmVwb3NpdG9yeVVybCA9IGBnaXRodWIuY29tLyR7cmVwb3NpdG9yeX1gO1xuXG4gICAgY29uc3QgcGFja2FnZUluZm86IFBhY2thZ2VJbmZvID0ge1xuICAgICAgbnBtOiB7XG4gICAgICAgIG5hbWU6IGBAJHtuYW1lc3BhY2V9L3Byb3ZpZGVyLSR7cHJvdmlkZXJOYW1lfWAsXG4gICAgICB9LFxuICAgICAgcHl0aG9uOiB7XG4gICAgICAgIC8vIGRpc3ROYW1lOiBgJHtnaXRodWJOYW1lc3BhY2V9LSR7bmFtZXNwYWNlfS1wcm92aWRlci0ke3Byb3ZpZGVyTmFtZS5yZXBsYWNlKFxuICAgICAgICBkaXN0TmFtZTogYCR7bmFtZXNwYWNlfS1wcm92aWRlci0ke3Byb3ZpZGVyTmFtZS5yZXBsYWNlKC8tL2dpLCBcIl9cIil9YCxcbiAgICAgICAgLy8gbW9kdWxlOiBgJHtnaXRodWJOYW1lc3BhY2V9XyR7bmFtZXNwYWNlfV9wcm92aWRlcl8ke3Byb3ZpZGVyTmFtZS5yZXBsYWNlKFxuICAgICAgICBtb2R1bGU6IGAke25hbWVzcGFjZX1fcHJvdmlkZXJfJHtwcm92aWRlck5hbWUucmVwbGFjZSgvLS9naSwgXCJfXCIpfWAsXG4gICAgICAgIHRydXN0ZWRQdWJsaXNoaW5nOiBweXBpVHJ1c3RlZFB1Ymxpc2hpbmcgPz8gZmFsc2UsXG4gICAgICB9LFxuICAgICAgcHVibGlzaFRvTnVnZXQ6IHtcbiAgICAgICAgZG90TmV0TmFtZXNwYWNlOiBudWdldE5hbWUsXG4gICAgICAgIHBhY2thZ2VJZDogbnVnZXROYW1lLFxuICAgICAgfSxcbiAgICAgIHB1Ymxpc2hUb01hdmVuOiB7XG4gICAgICAgIGphdmFQYWNrYWdlOiBtYXZlbk5hbWUsXG4gICAgICAgIG1hdmVuR3JvdXBJZDogbWF2ZW5Hcm91cElkLFxuICAgICAgICBtYXZlbkFydGlmYWN0SWQ6IGAke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWV9YCxcbiAgICAgIH0sXG4gICAgICBwdWJsaXNoVG9Hbzoge1xuICAgICAgICBtb2R1bGVOYW1lOiBgJHtyZXBvc2l0b3J5VXJsfS1nb2AsXG4gICAgICAgIGdpdFVzZXJFbWFpbDogXCJnaXRodWItdGVhbS1jZGstdGVycmFpbkBjZGt0bi5pb1wiLFxuICAgICAgICBnaXRVc2VyTmFtZTogXCJ0ZWFtLWNkay10ZXJyYWluXCIsXG4gICAgICAgIHBhY2thZ2VOYW1lOiBwcm92aWRlck5hbWUucmVwbGFjZSgvLS9nLCBcIlwiKSxcbiAgICAgICAgLy8gSW4gb3JkZXIgdG8gdXNlIHRoZSBjb3B5d3JpdGUgYWN0aW9uLCB3ZSBuZWVkIHRvIHJlYnVpbGQgdGhlIGZ1bGwgcHJlLXB1Ymxpc2ggc3RlcHMgd29ya2Zsb3cgdW5mb3J0dW5hdGVseVxuICAgICAgICAvLyBJZiBzb21lb25lIGtub3dzIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzIG11dGF0aW9uIHdpdGggbWluaW1hbCBjdXN0b20gY29kZSwgcGxlYXNlIGRvIHNvXG4gICAgICAgIHByZVB1Ymxpc2hTdGVwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ2hlY2tvdXRcIixcbiAgICAgICAgICAgIHVzZXM6IFwiYWN0aW9ucy9jaGVja291dFwiLFxuICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICBwYXRoOiBcIi5yZXBvXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJJbnN0YWxsIERlcGVuZGVuY2llc1wiLFxuICAgICAgICAgICAgcnVuOiBcImNkIC5yZXBvICYmIHlhcm4gaW5zdGFsbCAtLWNoZWNrLWZpbGVzIC0tZnJvemVuLWxvY2tmaWxlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkV4dHJhY3QgYnVpbGQgYXJ0aWZhY3RcIixcbiAgICAgICAgICAgIHJ1bjogXCJ0YXIgLS1zdHJpcC1jb21wb25lbnRzPTEgLXh6dmYgZGlzdC9qcy8qLnRneiAtQyAucmVwb1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJNb3ZlIGJ1aWxkIGFydGlmYWN0IG91dCBvZiB0aGUgd2F5XCIsXG4gICAgICAgICAgICBydW46IFwibXYgZGlzdCBkaXN0Lm9sZFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDcmVhdGUgZ28gYXJ0aWZhY3RcIixcbiAgICAgICAgICAgIHJ1bjogXCJjZCAucmVwbyAmJiBucHggcHJvamVuIHBhY2thZ2U6Z29cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiU2V0dXAgQ29weXdyaXRlIHRvb2xcIixcbiAgICAgICAgICAgIHVzZXM6IFwiaGFzaGljb3JwL3NldHVwLWNvcHl3cml0ZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDb3B5IGNvcHl3cml0ZSBoY2wgZmlsZVwiLFxuICAgICAgICAgICAgcnVuOiBcImNwIC5yZXBvLy5jb3B5d3JpdGUuaGNsIC5yZXBvL2Rpc3QvZ28vLmNvcHl3cml0ZS5oY2xcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQWRkIGhlYWRlcnMgdXNpbmcgQ29weXdyaXRlIHRvb2xcIixcbiAgICAgICAgICAgIHJ1bjogXCJjZCAucmVwby9kaXN0L2dvICYmIGNvcHl3cml0ZSBoZWFkZXJzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlJlbW92ZSBjb3B5d3JpdGUgaGNsIGZpbGVcIixcbiAgICAgICAgICAgIHJ1bjogXCJybSAtZiAucmVwby9kaXN0L2dvLy5jb3B5d3JpdGUuaGNsXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlJlbW92ZSBzb21lIHRleHQgZnJvbSB0aGUgUkVBRE1FIHRoYXQgZG9lc24ndCBhcHBseSB0byBHb1wiLFxuICAgICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAgIFwic2VkIC1pICdzLyMgQ0RLVE4gcHJlYnVpbHQgYmluZGluZ3MgZm9yLyMgQ0RLVE4gR28gYmluZGluZ3MgZm9yLycgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZFwiLFxuICAgICAgICAgICAgICAvLyBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80OTUxMTk0OVxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgICAgICAgICAgICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICAgICAgICAgIGBzZWQgLWkgLWUgJy8jIyAke2lzRGVwcmVjYXRlZCA/IFwiRGVwcmVjYXRlZFwiIDogXCJBdmFpbGFibGVcIn0gUGFja2FnZXMvLC8jIyMgR28vIWInIC1lICcvIyMjIEdvLyFkO3A7IHMvIyMjIEdvLyMjIEdvIFBhY2thZ2UvJyAtZSAnZCcgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZGAsXG4gICAgICAgICAgICAgIC8vIHNlZCAtZSBpcyBibGFjayBtYWdpYyBhbmQgZm9yIHdoYXRldmVyIHJlYXNvbiB0aGUgc3RyaW5nIHJlcGxhY2UgZG9lc24ndCB3b3JrIHNvIGxldCdzIHRyeSBpdCBhZ2FpbjpcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgICAgICBgc2VkIC1pICdzLyMjIyBHby8jIyAke2lzRGVwcmVjYXRlZCA/IFwiRGVwcmVjYXRlZFwiIDogXCJHb1wifSBQYWNrYWdlLycgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZGAsXG4gICAgICAgICAgICAgIC8vIEp1c3Qgc3RyYWlnaHQgdXAgZGVsZXRlIHRoZXNlIGZ1bGwgbGluZXMgYW5kIGV2ZXJ5dGhpbmcgaW4gYmV0d2VlbiB0aGVtOlxuICAgICAgICAgICAgICBcInNlZCAtaSAtZSAnL0FQSS50eXBlc2NyaXB0Lm1kLywvWW91IGNhbiBhbHNvIHZpc2l0IGEgaG9zdGVkIHZlcnNpb24vIWInIC1lICdkJyAucmVwby9kaXN0L2dvLyovUkVBRE1FLm1kXCIsXG4gICAgICAgICAgICAgIGBzZWQgLWkgJ3N8RmluZCBhdXRvLWdlbmVyYXRlZCBkb2NzIGZvciB0aGlzIHByb3ZpZGVyIGhlcmU6fEZpbmQgYXV0by1nZW5lcmF0ZWQgZG9jcyBmb3IgdGhpcyBwcm92aWRlciBbaGVyZV0oaHR0cHM6Ly8ke3JlcG9zaXRvcnlVcmx9L2Jsb2IvbWFpbi9kb2NzL0FQSS5nby5tZCkufCcgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZGAsXG4gICAgICAgICAgICAgIC8vIEp1c3Qgc3RyYWlnaHQgdXAgZGVsZXRlIHRoZXNlIGZ1bGwgbGluZXMgYW5kIGV2ZXJ5dGhpbmcgaW4gYmV0d2VlbiB0aGVtOlxuICAgICAgICAgICAgICBcInNlZCAtaSAtZSAnLyMjIyBQcm92aWRlciBWZXJzaW9uLywvVGhlIHByb3ZpZGVyIHZlcnNpb24gY2FuIGJlIGFkanVzdGVkLyFiJyAtZSAnZCcgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZFwiLFxuICAgICAgICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDb3B5IHRoZSBSRUFETUUgZmlsZSB0byB0aGUgcGFyZW50IGRpcmVjdG9yeVwiLFxuICAgICAgICAgICAgcnVuOiBcImNwIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWQgLnJlcG8vZGlzdC9nby9SRUFETUUubWRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29sbGVjdCBnbyBBcnRpZmFjdFwiLFxuICAgICAgICAgICAgcnVuOiBcIm12IC5yZXBvL2Rpc3QgZGlzdFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCB3b3JrZmxvd1J1bnNPbiA9IG9wdGlvbnMudXNlQ3VzdG9tR2l0aHViUnVubmVyXG4gICAgICA/IFtcImRlcG90LXVidW50dS0yNC4wNC04XCJdIC8vIDggY29yZSwgMzIgR0JcbiAgICAgIDogW1widWJ1bnR1LWxhdGVzdFwiXTsgLy8gNyBHQlxuXG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGF1dGhvckFkZHJlc3MsXG4gICAgICBhdXRob3JOYW1lLFxuICAgICAgbWluTm9kZVZlcnNpb24sXG4gICAgICB3b3JrZmxvd0NvbnRhaW5lckltYWdlLFxuICAgICAgd29ya2Zsb3dSdW5zT24sXG4gICAgICBsaWNlbnNlZDogZmFsc2UsIC8vIHdlIGRvIHN1cHBseSBvdXIgb3duIGxpY2Vuc2UgZmlsZSB3aXRoIGEgY3VzdG9tIGhlYWRlclxuICAgICAgcmVsZWFzZVRvTnBtOiB0cnVlLFxuICAgICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmc6IG5wbVRydXN0ZWRQdWJsaXNoaW5nID8/IGZhbHNlLFxuICAgICAgbmFtZTogcGFja2FnZUluZm8ubnBtLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogYFByZWJ1aWx0ICR7cHJvdmlkZXJOYW1lfSBQcm92aWRlciBmb3IgQ0RLIFRlcnJhaW4gKGNka3RuKWAsXG4gICAgICBrZXl3b3JkczogW1xuICAgICAgICBcImNka3RuXCIsXG4gICAgICAgIFwiY2RrLXRlcnJhaW5cIixcbiAgICAgICAgXCJjZGt0ZlwiLFxuICAgICAgICBcInRlcnJhZm9ybVwiLFxuICAgICAgICBcIm9wZW50b2Z1XCIsXG4gICAgICAgIFwiY2RrXCIsXG4gICAgICAgIFwicHJvdmlkZXJcIixcbiAgICAgICAgcHJvdmlkZXJOYW1lLFxuICAgICAgXSxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICBhdXRob3JPcmdhbml6YXRpb246IHRydWUsXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogXCJtYWluXCIsXG4gICAgICByZXBvc2l0b3J5OiBgaHR0cHM6Ly9naXRodWIuY29tLyR7cmVwb3NpdG9yeX0uZ2l0YCxcbiAgICAgIG1lcmdpZnk6IGZhbHNlLFxuICAgICAgZXNsaW50OiBmYWxzZSxcbiAgICAgIGRlcHNVcGdyYWRlOiAhaXNEZXByZWNhdGVkLFxuICAgICAgZGVwc1VwZ3JhZGVPcHRpb25zOiB7XG4gICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsczogW1wiYXV0b21lcmdlXCIsIFwiYXV0by1hcHByb3ZlXCIsIFwiZGVwZW5kZW5jaWVzXCJdLFxuICAgICAgICAgIHNjaGVkdWxlOiBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuV0VFS0xZLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHB5dGhvbjogcGFja2FnZUluZm8ucHl0aG9uLFxuICAgICAgcHVibGlzaFRvTnVnZXQ6IHBhY2thZ2VJbmZvLnB1Ymxpc2hUb051Z2V0LFxuICAgICAgcHVibGlzaFRvTWF2ZW46IHBhY2thZ2VJbmZvLnB1Ymxpc2hUb01hdmVuLFxuICAgICAgcHVibGlzaFRvR286IHBhY2thZ2VJbmZvLnB1Ymxpc2hUb0dvLFxuICAgICAgcmVsZWFzZUZhaWx1cmVJc3N1ZTogdHJ1ZSxcbiAgICAgIHBlZXJEZXBlbmRlbmN5T3B0aW9uczoge1xuICAgICAgICBwaW5uZWREZXZEZXBlbmRlbmN5OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB3b3JrZmxvd0dpdElkZW50aXR5OiB7XG4gICAgICAgIG5hbWU6IFwidGVhbS1jZGstdGVycmFpblwiLFxuICAgICAgICBlbWFpbDogXCJnaXRodWItdGVhbS1jZGstdGVycmFpbkBjZGt0bi5pb1wiLFxuICAgICAgfSxcbiAgICAgIG1pbk1ham9yVmVyc2lvbjogTUlOX01BSk9SX1ZFUlNJT04sXG4gICAgICBzdGFsZTogdHJ1ZSxcbiAgICAgIHN0YWxlT3B0aW9uczoge1xuICAgICAgICBpc3N1ZXM6IHtcbiAgICAgICAgICBzdGFsZUxhYmVsOiBcInN0YWxlXCIsXG4gICAgICAgICAgZGF5c0JlZm9yZVN0YWxlOiA0NSxcbiAgICAgICAgICBzdGFsZU1lc3NhZ2U6XG4gICAgICAgICAgICBcIjQ1IGRheXMgaGF2ZSBwYXNzZWQgc2luY2UgdGhpcyBpc3N1ZSB3YXMgb3BlbmVkLCBhbmQgSSBhc3N1bWUgb3RoZXIgcHVibGlzaGVzIGhhdmUgc3VjY2VlZGVkIGluIHRoZSBtZWFudGltZS4gXCIgK1xuICAgICAgICAgICAgXCJJZiBubyBvbmUgcmVtb3ZlcyB0aGUgYHN0YWxlYCBsYWJlbCBvciBjb21tZW50cywgSSdtIGdvaW5nIHRvIGF1dG8tY2xvc2UgdGhpcyBpc3N1ZSBpbiAxNCBkYXlzLlwiLFxuICAgICAgICAgIGRheXNCZWZvcmVDbG9zZTogMTQsXG4gICAgICAgICAgY2xvc2VNZXNzYWdlOlxuICAgICAgICAgICAgXCIyIG1vbnRocyBoYXZlIHBhc3NlZCwgc28gSSdtIGNsb3NpbmcgdGhpcyBpc3N1ZSB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgb3RoZXIgcHVibGlzaGVzIGhhdmUgc3VjY2VlZGVkIGluIHRoZSBtZWFudGltZS5cIixcbiAgICAgICAgfSxcbiAgICAgICAgcHVsbFJlcXVlc3Q6IHtcbiAgICAgICAgICBzdGFsZUxhYmVsOiBcInN0YWxlXCIsXG4gICAgICAgICAgZGF5c0JlZm9yZVN0YWxlOiAxLFxuICAgICAgICAgIHN0YWxlTWVzc2FnZTogYENsb3NpbmcgdGhpcyBQUiwgaWYgaXQgaGFzIG5vdCBtZXJnZWQgdGhlcmUgaXMgbW9zdCBsaWtlbHkgYSBDSSBvciBDREtUTiBpc3N1ZSBwcmV2ZW50aW5nIGl0IGZyb20gbWVyZ2luZy4gSWYgdGhpcyBoYXMgYmVlbiBhIG1hbnVhbCBQUiwgcGxlYXNlIHJlb3BlbiBpdCBhbmQgYWRkIHRoZSBcXGBuby1hdXRvLWNsb3NlXFxgIGxhYmVsIHRvIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZyBhZ2Fpbi5gLFxuICAgICAgICAgIGRheXNCZWZvcmVDbG9zZTogMCxcbiAgICAgICAgICBleGVtcHRMYWJlbHM6IFtcIm5vLWF1dG8tY2xvc2VcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcHVsbFJlcXVlc3RUZW1wbGF0ZTogZmFsc2UsXG4gICAgICBkb2NnZW46IGZhbHNlLFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21BcHAoKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZERldkRlcHMoXG4gICAgICBcImRvdC1wcm9wQF41LjIuMFwiLFxuICAgICAgXCJAYWN0aW9ucy9jb3JlQF4xLjEuMFwiLFxuICAgICAgXCJAYWN0aW9uLXZhbGlkYXRvci9jb3JlXCIsXG4gICAgICBcIkBhY3Rpb24tdmFsaWRhdG9yL2NsaVwiXG4gICAgKTtcblxuICAgIC8vIERlZmF1bHQgbWVtb3J5IGlzIDdHQjogaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy91c2luZy1naXRodWItaG9zdGVkLXJ1bm5lcnMvYWJvdXQtZ2l0aHViLWhvc3RlZC1ydW5uZXJzI3N1cHBvcnRlZC1ydW5uZXJzLWFuZC1oYXJkd2FyZS1yZXNvdXJjZXNcbiAgICAvLyBDdXN0b20gUnVubmVycyB3ZSB1c2UgaGF2ZSAzMkdCIG9mIG1lbW9yeVxuICAgIC8vIFRoZSBiZWxvdyBudW1iZXJzIHNldCBoZWFwIGxpbWl0cyB0aGF0IGFyZSB+MWdiIGFuZCB+MC41Z2IgbGVzcywgcmVzcGVjdGl2ZWx5LCB0aGFuIHRoZSB0b3RhbCBhdmFpbGFibGUgbWVtb3J5XG4gICAgY29uc3QgbWF4T2xkU3BhY2VTaXplID0gb3B0aW9ucy51c2VDdXN0b21HaXRodWJSdW5uZXIgPyBcIjMxNzQ0XCIgOiBcIjY2NTZcIjtcblxuICAgIC8vIEdvbGFuZyBuZWVkcyBtb3JlIG1lbW9yeSB0byBidWlsZFxuICAgIHRoaXMudGFza3MuYWRkRW52aXJvbm1lbnQoXG4gICAgICBcIk5PREVfT1BUSU9OU1wiLFxuICAgICAgYC0tbWF4LW9sZC1zcGFjZS1zaXplPSR7bWF4T2xkU3BhY2VTaXplfWBcbiAgICApO1xuXG4gICAgdGhpcy50YXNrcy5hZGRFbnZpcm9ubWVudChcIkNIRUNLUE9JTlRfRElTQUJMRVwiLCBcIjFcIik7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVRhc2sgPSB0aGlzLmFkZFRhc2soXCJ2YWxpZGF0ZS13b3JrZmxvd3NcIiwge1xuICAgICAgZXhlYzogYGZpbmQgLi8uZ2l0aHViL3dvcmtmbG93cyAtdHlwZSBmIC1uYW1lIFwiKi55bWxcIiAtcHJpbnQwIHwgeGFyZ3MgLTAgLW4gMSBucHggYWN0aW9uLXZhbGlkYXRvcmAsXG4gICAgfSk7XG4gICAgdmFsaWRhdGVUYXNrLmRlc2NyaXB0aW9uID1cbiAgICAgIFwiTGludCB0aGUgWUFNTCBmaWxlcyBnZW5lcmF0ZWQgYnkgUHJvamVuIHRvIGRlZmluZSBHaXRIdWIgQWN0aW9ucyBhbmQgV29ya2Zsb3dzLCBjaGVja2luZyB0aGVtIGFnYWluc3QgcHVibGlzaGVkIEpTT04gc2NoZW1hc1wiO1xuICAgIHRoaXMucG9zdENvbXBpbGVUYXNrLnNwYXduKHZhbGlkYXRlVGFzayk7XG5cbiAgICB0aGlzLnBhY2thZ2UuYWRkUGFja2FnZVJlc29sdXRpb25zKFwiQHR5cGVzL3lhcmdzQDE3LjAuMTNcIik7XG5cbiAgICBjb25zdCBzZXRTYWZlRGlyZWN0b3J5ID0ge1xuICAgICAgbmFtZTogXCJTZXQgZ2l0IGNvbmZpZyBzYWZlLmRpcmVjdG9yeVwiLFxuICAgICAgcnVuOiBcImdpdCBjb25maWcgLS1nbG9iYWwgLS1hZGQgc2FmZS5kaXJlY3RvcnkgJChwd2QpXCIsXG4gICAgfTtcblxuICAgICgodGhpcy5idWlsZFdvcmtmbG93IGFzIGFueSkucHJlQnVpbGRTdGVwcyBhcyBKb2JTdGVwW10pLnB1c2goXG4gICAgICBzZXRTYWZlRGlyZWN0b3J5XG4gICAgKTtcbiAgICAodGhpcy5yZWxlYXNlIGFzIGFueSkuZGVmYXVsdEJyYW5jaC53b3JrZmxvdy5qb2JzLnJlbGVhc2Uuc3RlcHMuc3BsaWNlKFxuICAgICAgMSxcbiAgICAgIDAsXG4gICAgICBzZXRTYWZlRGlyZWN0b3J5XG4gICAgKTtcblxuICAgIC8vIGFsd2F5cyBwdWJsaXNoIGEgbmV3IEdpdEh1YiByZWxlYXNlLCBldmVuIHdoZW4gcHVibGlzaGluZyB0byBhIHBhcnRpY3VsYXIgcGFja2FnZSBtYW5hZ2VyIGZhaWxzXG4gICAgY29uc3QgcmVsZWFzZVdvcmtmbG93ID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZShcbiAgICAgIFwiLmdpdGh1Yi93b3JrZmxvd3MvcmVsZWFzZS55bWxcIlxuICAgICk7XG4gICAgcmVsZWFzZVdvcmtmbG93Py5hZGRPdmVycmlkZShcImpvYnMucmVsZWFzZV9naXRodWIubmVlZHNcIiwgXCJyZWxlYXNlXCIpO1xuXG4gICAgLy8gVHJ1c3RlZCBwdWJsaXNoaW5nIHJlcXVpcmVzIG5wbSA+PTExLjUuMSB3aGljaCBzaGlwcyB3aXRoIE5vZGUgMjRcbiAgICBpZiAobnBtVHJ1c3RlZFB1Ymxpc2hpbmcpIHtcbiAgICAgIHRoaXMuZ2l0aHViXG4gICAgICAgID8udHJ5RmluZFdvcmtmbG93KFwicmVsZWFzZVwiKVxuICAgICAgICA/LmZpbGU/LnBhdGNoKFxuICAgICAgICAgIEpzb25QYXRjaC5yZXBsYWNlKFxuICAgICAgICAgICAgXCIvam9icy9yZWxlYXNlX25wbS9zdGVwcy8wL3dpdGgvbm9kZS12ZXJzaW9uXCIsXG4gICAgICAgICAgICBcIjI0LnhcIlxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgLy8gTlBNIE9JREMgZG9lc24ndCBzdXBwb3J0IHNlbGYtaG9zdGVkIHJ1bm5lcnMgeWV0XG4gICAgICB0aGlzLmdpdGh1YlxuICAgICAgICA/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIilcbiAgICAgICAgPy5maWxlPy5wYXRjaChcbiAgICAgICAgICBKc29uUGF0Y2gucmVwbGFjZShcIi9qb2JzL3JlbGVhc2VfbnBtL3J1bnMtb25cIiwgXCJ1YnVudHUtbGF0ZXN0XCIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUHlQSSBPSURDICh0cnVzdGVkIHB1Ymxpc2hpbmcpIGRvZXNuJ3Qgc3VwcG9ydCBzZWxmLWhvc3RlZCBydW5uZXJzIHlldFxuICAgIGlmIChweXBpVHJ1c3RlZFB1Ymxpc2hpbmcpIHtcbiAgICAgIHRoaXMuZ2l0aHViXG4gICAgICAgID8udHJ5RmluZFdvcmtmbG93KFwicmVsZWFzZVwiKVxuICAgICAgICA/LmZpbGU/LnBhdGNoKFxuICAgICAgICAgIEpzb25QYXRjaC5yZXBsYWNlKFwiL2pvYnMvcmVsZWFzZV9weXBpL3J1bnMtb25cIiwgXCJ1YnVudHUtbGF0ZXN0XCIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZW5zdXJlIHdlIGRvbid0IGZhaWwgaWYgdGhlIHJlbGVhc2UgZmlsZSBpcyBub3QgcHJlc2VudFxuICAgIGNvbnN0IGNoZWNrRXhpc3RpbmdUYWdTdGVwID0gKFxuICAgICAgdGhpcy5yZWxlYXNlIGFzIGFueVxuICAgICkuZGVmYXVsdEJyYW5jaC53b3JrZmxvdy5qb2JzLnJlbGVhc2Uuc3RlcHMuZmluZChcbiAgICAgIChzOiBvYmplY3QpID0+IFwiaWRcIiBpbiBzICYmIHMuaWQgPT09IFwiY2hlY2tfdGFnX2V4aXN0c1wiXG4gICAgKTtcbiAgICBjb25zdCBvbGRFeGlzdGluZ1RhZ1J1bjogc3RyaW5nID0gY2hlY2tFeGlzdGluZ1RhZ1N0ZXAucnVuO1xuICAgIHByZXR0eUFzc2VydEVxdWFsKFxuICAgICAgb2xkRXhpc3RpbmdUYWdSdW4uc3BsaXQoXCJcXG5cIilbMF0sXG4gICAgICBcIlRBRz0kKGNhdCBkaXN0L3JlbGVhc2V0YWcudHh0KVwiLFxuICAgICAgXCJyZWxlYXNlIHN0ZXAgY2hhbmdlZCwgcGxlYXNlIGNoZWNrIGlmIHRoZSB3b3JrYXJvdW5kIHN0aWxsIHdvcmtzIVwiXG4gICAgKTtcbiAgICBjaGVja0V4aXN0aW5nVGFnU3RlcC5ydW4gPSBgaWYgWyAhIC1mIGRpc3QvcmVsZWFzZXRhZy50eHQgXTsgdGhlbiAoZWNobyBcImV4aXN0cz10cnVlXCIgPj4gJEdJVEhVQl9PVVRQVVQpICYmIGV4aXQgMDsgZmlcXG4ke29sZEV4aXN0aW5nVGFnUnVufWA7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgY29uc3QgeyB1cGdyYWRlLCBwciB9ID0gKHRoaXMudXBncmFkZVdvcmtmbG93IGFzIGFueSkud29ya2Zsb3dzWzBdLmpvYnM7XG4gICAgICB1cGdyYWRlLnN0ZXBzLnNwbGljZSgxLCAwLCBzZXRTYWZlRGlyZWN0b3J5KTtcbiAgICAgIHByLnN0ZXBzLnNwbGljZSgxLCAwLCBzZXRTYWZlRGlyZWN0b3J5KTtcbiAgICB9XG5cbiAgICAvLyByZWxlYXNlOiBHbyDigJQgcGF0Y2ggdGhlIHJlbGVhc2Ugd29ya2Zsb3cncyBHbyBwdWJsaXNoIHRvIHVzZSBhIEdpdEh1YlxuICAgIC8vIEFwcCBpbnN0YWxsYXRpb24gdG9rZW4uXG4gICAgY29uc3QgcGF0Y2hHb1B1Ymxpc2hUb1VzZUFwcFRva2VuID0gKHdvcmtmbG93RmlsZT86IE9iamVjdEZpbGUpID0+IHtcbiAgICAgIGlmICghd29ya2Zsb3dGaWxlKSByZXR1cm47XG4gICAgICBjb25zdCBnb1B1Ymxpc2hUb2tlbiA9IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscy5mcm9tQXBwKHtcbiAgICAgICAgYXBwSWRTZWNyZXQ6IFwiUFJPSkVOX0FQUF9JRFwiLFxuICAgICAgICBwcml2YXRlS2V5U2VjcmV0OiBcIlBST0pFTl9BUFBfUFJJVkFURV9LRVlcIixcbiAgICAgICAgb3duZXI6IFwiJHt7IGdpdGh1Yi5yZXBvc2l0b3J5X293bmVyIH19XCIsXG4gICAgICAgIHJlcG9zaXRvcmllczogW1xuICAgICAgICAgIHBhY2thZ2VJbmZvLnB1Ymxpc2hUb0dvPy5tb2R1bGVOYW1lPy5zcGxpdChcIi9cIikucG9wKCkgPz8gXCJcIixcbiAgICAgICAgXSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHsgY29udGVudHM6IGdpdGh1Yi53b3JrZmxvd3MuQXBwUGVybWlzc2lvbi5XUklURSB9LFxuICAgICAgfSk7XG4gICAgICB3b3JrZmxvd0ZpbGUucGF0Y2goXG4gICAgICAgIEpzb25QYXRjaC5hZGQoXG4gICAgICAgICAgXCIvam9icy9yZWxlYXNlX2dvbGFuZy9zdGVwcy8xNlwiLFxuICAgICAgICAgIGdvUHVibGlzaFRva2VuLnNldHVwU3RlcHNbMF1cbiAgICAgICAgKSxcbiAgICAgICAgSnNvblBhdGNoLmFkZChcbiAgICAgICAgICBcIi9qb2JzL3JlbGVhc2VfZ29sYW5nL3N0ZXBzLzE3L2Vudi9HSVRIVUJfVE9LRU5cIixcbiAgICAgICAgICAvLyBHaXRIdWIgQXBwIGluc3RhbGxhdGlvbiB0b2tlbnMgKGdoc18qKSByZXF1aXJlIHRoZSBgeC1hY2Nlc3MtdG9rZW5gXG4gICAgICAgICAgLy8gdXNlcm5hbWUgd2hlbiB1c2VkIGluIEhUVFBTIGdpdCBVUkxzLiBwdWJsaWIgcmVuZGVycyB0aGlzIGVudiB2YXJcbiAgICAgICAgICAvLyB2ZXJiYXRpbSBpbnRvIGBodHRwczovLyR7R0lUSFVCX1RPS0VOfUBnaXRodWIuY29tLy4uLmAsIHNvIHdpdGhvdXRcbiAgICAgICAgICAvLyB0aGUgcHJlZml4IHRoZSBwdXNoIDQwMXMgYW5kIGZhbGxzIGJhY2sgdG8gYSBUVFkgcGFzc3dvcmQgcHJvbXB0LlxuICAgICAgICAgIGB4LWFjY2Vzcy10b2tlbjoke2dvUHVibGlzaFRva2VuLnRva2VuUmVmfWBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIHBhdGNoR29QdWJsaXNoVG9Vc2VBcHBUb2tlbihyZWxlYXNlV29ya2Zsb3cpO1xuICAgIH1cblxuICAgIC8vIEZpeCBtYXZlbiBpc3N1ZSAoaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvcHVibGliL3B1bGwvNzc3KVxuICAgIGdpdGh1Yi5HaXRIdWIub2YodGhpcyk/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIik/LmZpbGU/LnBhdGNoKFxuICAgICAgSnNvblBhdGNoLmFkZChcbiAgICAgICAgXCIvam9icy9yZWxlYXNlX21hdmVuL3N0ZXBzLzEwL2Vudi9NQVZFTl9PUFRTXCIsXG4gICAgICAgIC8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83MDE1Mzk2Mi9uZXh1cy1zdGFnaW5nLW1hdmVuLXBsdWdpbi1tYXZlbi1kZXBsb3ktZmFpbGVkLWFuLWFwaS1pbmNvbXBhdGliaWxpdHktd2FzLWVuY29cbiAgICAgICAgXCItLWFkZC1vcGVucz1qYXZhLmJhc2UvamF2YS51dGlsPUFMTC1VTk5BTUVEIC0tYWRkLW9wZW5zPWphdmEuYmFzZS9qYXZhLmxhbmcucmVmbGVjdD1BTEwtVU5OQU1FRCAtLWFkZC1vcGVucz1qYXZhLmJhc2UvamF2YS50ZXh0PUFMTC1VTk5BTUVEIC0tYWRkLW9wZW5zPWphdmEuZGVza3RvcC9qYXZhLmF3dC5mb250PUFMTC1VTk5BTUVEXCJcbiAgICAgICksXG4gICAgICBKc29uUGF0Y2gucmVtb3ZlKFxuICAgICAgICAvLyBUaGlzIGlzIG5vIGxvbmdlciB1c2VkLlxuICAgICAgICBcIi9qb2JzL3JlbGVhc2VfbWF2ZW4vc3RlcHMvMTAvZW52L01BVkVOX1NUQUdJTkdfUFJPRklMRV9JRFwiXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMucGluR2l0aHViQWN0aW9uVmVyc2lvbnMoZ2l0aHViQWN0aW9uUGlubmVkVmVyc2lvbnMpO1xuXG4gICAgbmV3IENka3RmQ29uZmlnKHRoaXMsIHtcbiAgICAgIHRlcnJhZm9ybVByb3ZpZGVyLFxuICAgICAgcHJvdmlkZXJOYW1lLFxuICAgICAgZnFwcm92aWRlck5hbWUsXG4gICAgICBwcm92aWRlclZlcnNpb24sXG4gICAgICBjZGt0blZlcnNpb24sXG4gICAgICBjb25zdHJ1Y3RzVmVyc2lvbixcbiAgICAgIGpzaWlWZXJzaW9uLFxuICAgICAgdHlwZXNjcmlwdFZlcnNpb24sXG4gICAgICBwYWNrYWdlSW5mbyxcbiAgICAgIGdpdGh1Yk5hbWVzcGFjZSxcbiAgICAgIGRlcHJlY2F0aW9uRGF0ZSxcbiAgICAgIGlzRGVwcmVjYXRlZDogISFpc0RlcHJlY2F0ZWQsXG4gICAgfSk7XG4gICAgbmV3IEN1c3RvbWl6ZWRMaWNlbnNlKHRoaXMsIG9wdGlvbnMuY3JlYXRpb25ZZWFyLCBvcHRpb25zLmxpY2Vuc2VlKTtcbiAgICBuZXcgR2l0aHViSXNzdWVzKHRoaXMsIHsgcHJvdmlkZXJOYW1lIH0pO1xuICAgIG5ldyBBdXRvQXBwcm92ZSh0aGlzKTtcbiAgICBuZXcgQXV0b0Nsb3NlQ29tbXVuaXR5SXNzdWVzKHRoaXMsIHsgcHJvdmlkZXJOYW1lIH0pO1xuICAgIG5ldyBBdXRvbWVyZ2UodGhpcyk7XG4gICAgbmV3IExvY2tJc3N1ZXModGhpcyk7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgY29uc3QgdXBncmFkZVNjcmlwdCA9IG5ldyBDaGVja0ZvclVwZ3JhZGVzU2NyaXB0RmlsZSh0aGlzLCB7XG4gICAgICAgIHByb3ZpZGVyVmVyc2lvbixcbiAgICAgICAgZnFwcm92aWRlck5hbWUsXG4gICAgICB9KTtcbiAgICAgIG5ldyBQcm92aWRlclVwZ3JhZGUodGhpcywge1xuICAgICAgICBjaGVja0ZvclVwZ3JhZGVzU2NyaXB0UGF0aDogdXBncmFkZVNjcmlwdC5wYXRoLFxuICAgICAgICB3b3JrZmxvd1J1bnNPbixcbiAgICAgICAgbm9kZUhlYXBTaXplOiBtYXhPbGRTcGFjZVNpemUsXG4gICAgICB9KTtcbiAgICAgIG5ldyBBbGVydE9wZW5QcnModGhpcywge1xuICAgICAgICBzbGFja1dlYmhvb2tVcmw6IFwiJHt7IHNlY3JldHMuQUxFUlRfUFJTX1NMQUNLX1dFQkhPT0tfVVJMIH19XCIsXG4gICAgICAgIHJlcG9zaXRvcnksXG4gICAgICB9KTtcbiAgICAgIG5ldyBEZXBlbmRhYm90KHRoaXMpO1xuICAgIH1cblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCBcIi5naXRodWIvQ09ERU9XTkVSU1wiLCB7XG4gICAgICBsaW5lczogW1xuICAgICAgICBcIiMgVGhlc2Ugb3duZXJzIHdpbGwgYmUgdGhlIGRlZmF1bHQgb3duZXJzIGZvciBldmVyeXRoaW5nIGluIFwiLFxuICAgICAgICBcIiMgdGhlIHJlcG8uIFVubGVzcyBhIGxhdGVyIG1hdGNoIHRha2VzIHByZWNlZGVuY2UsIFwiLFxuICAgICAgICBcIiMgdGhleSB3aWxsIGJlIHJlcXVlc3RlZCBmb3IgcmV2aWV3IHdoZW4gc29tZW9uZSBvcGVucyBhIFwiLFxuICAgICAgICBcIiMgcHVsbCByZXF1ZXN0LlwiLFxuICAgICAgICBcIiogICAgICAgQGNka3RuLWlvL3RlYW0tY2RrLXRlcnJhaW5cIixcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgbmV3IFNob3VsZFJlbGVhc2VTY3JpcHRGaWxlKHRoaXMsIHt9KTtcblxuICAgICAgY29uc3QgcmVsZWFzZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoXCJyZWxlYXNlXCIpITtcbiAgICAgIHRoaXMucmVtb3ZlVGFzayhcInJlbGVhc2VcIik7XG4gICAgICB0aGlzLmFkZFRhc2soXCJyZWxlYXNlXCIsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHJlbGVhc2VUYXNrLmRlc2NyaXB0aW9uLFxuICAgICAgICBzdGVwczogcmVsZWFzZVRhc2suc3RlcHMsXG4gICAgICAgIGVudjogKHJlbGVhc2VUYXNrIGFzIGFueSkuX2VudixcbiAgICAgICAgY29uZGl0aW9uOiBcIm5vZGUgLi9zY3JpcHRzL3Nob3VsZC1yZWxlYXNlLmpzXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkVGFzayhcInVuY29uZGl0aW9uYWwtcmVsZWFzZVwiLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiByZWxlYXNlVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgc3RlcHM6IHJlbGVhc2VUYXNrLnN0ZXBzLFxuICAgICAgICBlbnY6IChyZWxlYXNlVGFzayBhcyBhbnkpLl9lbnYsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVsZWFzZUpvYlN0ZXBzOiBhbnlbXSA9IChcbiAgICAgICAgdGhpcy5naXRodWI/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIikgYXMgYW55XG4gICAgICApLmpvYnMucmVsZWFzZS5zdGVwcztcbiAgICAgIGNvbnN0IGdpdFJlbW90ZUpvYiA9IHJlbGVhc2VKb2JTdGVwcy5maW5kKChpdCkgPT4gaXQuaWQgPT09IFwiZ2l0X3JlbW90ZVwiKTtcbiAgICAgIHByZXR0eUFzc2VydEVxdWFsKFxuICAgICAgICBnaXRSZW1vdGVKb2IucnVuLFxuICAgICAgICAnZWNobyBcImxhdGVzdF9jb21taXQ9JChnaXQgbHMtcmVtb3RlIG9yaWdpbiAtaCAke3sgZ2l0aHViLnJlZiB9fSB8IGN1dCAtZjEpXCIgPj4gJEdJVEhVQl9PVVRQVVRcXG5jYXQgJEdJVEhVQl9PVVRQVVQnLFxuICAgICAgICBcImdpdF9yZW1vdGUgc3RlcCBpbiByZWxlYXNlIHdvcmtmbG93IGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgc3RyaW5nLCBwbGVhc2UgY2hlY2sgaWYgdGhlIHdvcmthcm91bmQgc3RpbGwgd29ya3MhXCJcbiAgICAgICk7XG4gICAgICBjb25zdCBwcmV2aW91c0NvbW1hbmQgPSBnaXRSZW1vdGVKb2IucnVuLnJlcGxhY2UoXCJcXG5cIiwgXCIgJiYgXCIpO1xuXG4gICAgICBjb25zdCBjYW5jZWxDb21tYW5kID1cbiAgICAgICAgJ2VjaG8gXCJsYXRlc3RfY29tbWl0PXJlbGVhc2VfY2FuY2VsbGVkXCIgPj4gJEdJVEhVQl9PVVRQVVQnOyAvLyB0aGlzIGNhbmNlbHMgdGhlIHJlbGVhc2UgdmlhIGEgbm9uLW1hdGNoaW5nIFNIQTtcbiAgICAgIGdpdFJlbW90ZUpvYi5ydW4gPSBgbm9kZSAuL3NjcmlwdHMvc2hvdWxkLXJlbGVhc2UuanMgJiYgKCR7cHJldmlvdXNDb21tYW5kfSkgfHwgJHtjYW5jZWxDb21tYW5kfWA7XG4gICAgICBnaXRSZW1vdGVKb2IubmFtZSArPVxuICAgICAgICBcIiBvciBjYW5jZWwgdmlhIGZha2luZyBhIFNIQSBpZiByZWxlYXNlIHdhcyBjYW5jZWxsZWRcIjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFsZVdvcmtmbG93ID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZShcIi5naXRodWIvd29ya2Zsb3dzL3N0YWxlLnltbFwiKTtcbiAgICBzdGFsZVdvcmtmbG93Py5hZGRPdmVycmlkZShcIm9uLnNjaGVkdWxlXCIsIFtcbiAgICAgIHtcbiAgICAgICAgY3JvbjogZ2VuZXJhdGVSYW5kb21Dcm9uKHsgcHJvamVjdDogdGhpcywgbWF4SG91cjogNCwgaG91ck9mZnNldDogMSB9KSxcbiAgICAgIH0sXG4gICAgXSk7XG5cbiAgICBjb25zdCB1cGdyYWRlV29ya2Zsb3cgPSB0aGlzLnRyeUZpbmRPYmplY3RGaWxlKFxuICAgICAgXCIuZ2l0aHViL3dvcmtmbG93cy91cGdyYWRlLW1haW4ueW1sXCJcbiAgICApO1xuICAgIHVwZ3JhZGVXb3JrZmxvdz8uYWRkT3ZlcnJpZGUoXCJvbi5zY2hlZHVsZVwiLCBbXG4gICAgICB7XG4gICAgICAgIGNyb246IGdlbmVyYXRlUmFuZG9tQ3Jvbih7XG4gICAgICAgICAgcHJvamVjdDogdGhpcyxcbiAgICAgICAgICBtYXhIb3VyOiAwLFxuICAgICAgICAgIGhvdXJPZmZzZXQ6IDEsXG4gICAgICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLldlZWtseSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgLy8gU3VibW9kdWxlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvblxuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoXCJBUEkubWRcIik7IC8vIGlnbm9yZSB0aGUgb2xkIGZpbGUsIHdlIG5vdyBnZW5lcmF0ZSBpdCBpbiB0aGUgZG9jcyBmb2xkZXJcbiAgICB0aGlzLmFkZERldkRlcHMoXCJqc2lpLWRvY2dlbkBeMTAuMi4zXCIpO1xuICAgIGlmIChqc2lpVmVyc2lvbikge1xuICAgICAgLy8gTk9URTogdGhlIGJlbG93IGlzIG1ha2luZyBhIGJyb2FkIGFzc3VtcHRpb24gdGhhdCB5b3UncmUgcGFzc2luZyBhIHJhbmdlIGxpa2UgXCJ+NS4zLjBcIiB0byBqc2lpVmVyc2lvblxuICAgICAgLy8gSWYgeW91IHVzZSB0aGF0IGZpZWxkIHRvIHBhc3MgYSB2ZXJ5IHNwZWNpZmljIHZlcnNpb24gKGUuZy4gXCI1LjMuMTFcIikgdGhlbiB0aGlzIG1pZ2h0IGJyZWFrXG4gICAgICB0aGlzLmFkZERldkRlcHMoYGpzaWktcm9zZXR0YUAke2pzaWlWZXJzaW9ufWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZERldkRlcHMoYGpzaWktcm9zZXR0YWApO1xuICAgIH1cblxuICAgIGNvbnN0IGRvY2dlbiA9IHRoaXMuYWRkVGFzayhcImRvY2dlblwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJHZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgcHJvamVjdFwiLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6IFtcbiAgICAgICAgICAgIFwicm0gLXJmIGRvY3NcIixcbiAgICAgICAgICAgIFwicm0gLWYgQVBJLm1kXCIsXG4gICAgICAgICAgICBcIm1rZGlyIGRvY3NcIixcbiAgICAgICAgICAgIFwianNpaS1kb2NnZW4gLS1zcGxpdC1ieS1zdWJtb2R1bGUgLWwgdHlwZXNjcmlwdCAtbCBweXRob24gLWwgamF2YSAtbCBjc2hhcnAgLWwgZ29cIixcbiAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5pY2Ugd2F5IHRvIHRlbGwganNpaS1kb2NnZW4gdG8gZ2VuZXJhdGUgZG9jcyBpbnRvIGEgZm9sZGVyIHNvIEkgd2VudCB0aGlzIHJvdXRlXG4gICAgICAgICAgICBcIm12ICouKi5tZCBkb2NzXCIsXG4gICAgICAgICAgICAvLyBTb21lIHBhcnQgb2YgdGhlIGRvY3VtZW50YXRpb24gYXJlIHRvbyBsb25nLCB3ZSBuZWVkIHRvIHRydW5jYXRlIHRoZW0gdG8gfjEwTUJcbiAgICAgICAgICAgIFwiY2QgZG9jc1wiLFxuICAgICAgICAgICAgXCJscyAuLyB8IHhhcmdzIHNlZCAtaSAnMTUwMDAwLCQgZCcgJDFcIixcbiAgICAgICAgICBdLmpvaW4oXCIgJiYgXCIpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICB0aGlzLnBvc3RDb21waWxlVGFzay5zcGF3bihkb2NnZW4pO1xuICAgIHRoaXMuZ2l0aWdub3JlLmluY2x1ZGUoYC9kb2NzLyoubWRgKTtcbiAgICB0aGlzLmFubm90YXRlR2VuZXJhdGVkKGAvZG9jcy8qLm1kYCk7XG5cbiAgICAvLyBTZXR0aW5nIHRoZSB2ZXJzaW9uIGluIHBhY2thZ2UuanNvbiBzbyB0aGUgZ29sYW5nIGRvY3MgaGF2ZSB0aGUgY29ycmVjdCB2ZXJzaW9uXG4gICAgY29uc3QgdW5jb25kaXRpb25hbEJ1bXAgPSB0aGlzLmFkZFRhc2soXCJ1bmNvbmRpdGlvbmFsLWJ1bXBcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiU2V0IHRoZSB2ZXJzaW9uIGluIHBhY2thZ2UuanNvbiB0byB0aGUgY3VycmVudCB2ZXJzaW9uXCIsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJDbGVhciB0aGUgY2hhbmdlbG9nIHNvIHRoYXQgaXQgZG9lc24ndCBnZXQgcHVibGlzaGVkIHR3aWNlXCIsXG4gICAgICAgICAgZXhlYzogXCJybSAtZiAkQ0hBTkdFTE9HXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHsgYnVpbHRpbjogXCJyZWxlYXNlL2J1bXAtdmVyc2lvblwiIH0sXG4gICAgICBdLFxuICAgICAgZW52OiB7XG4gICAgICAgIE9VVEZJTEU6IFwicGFja2FnZS5qc29uXCIsXG4gICAgICAgIENIQU5HRUxPRzogXCJkaXN0L2NoYW5nZWxvZy5tZFwiLFxuICAgICAgICBCVU1QRklMRTogXCJkaXN0L3ZlcnNpb24udHh0XCIsXG4gICAgICAgIFJFTEVBU0VUQUc6IFwiZGlzdC9yZWxlYXNldGFnLnR4dFwiLFxuICAgICAgICBSRUxFQVNFX1RBR19QUkVGSVg6IFwiXCIsXG4gICAgICAgIE1JTl9NQUpPUjogU3RyaW5nKE1JTl9NQUpPUl9WRVJTSU9OKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5wcmVDb21waWxlVGFzay5zcGF3bih1bmNvbmRpdGlvbmFsQnVtcCk7XG4gICAgLy8gVG8gYnVtcCBjb3JyZWN0bHkgd2UgbmVlZCB0byBoYXZlIHRoZSBjb21wbGV0ZWx5IGNsb25lZCByZXBvXG4gICAgKHRoaXMuYnVpbGRXb3JrZmxvdyBhcyBhbnkpLndvcmtmbG93LmZpbGUuYWRkT3ZlcnJpZGUoXG4gICAgICBcImpvYnMuYnVpbGQuc3RlcHMuMC53aXRoLmZldGNoLWRlcHRoXCIsXG4gICAgICAwXG4gICAgKTtcbiAgICAvLyBVbmRvIHRoZSBjaGFuZ2VzIGFmdGVyIGNvbXBpbGF0aW9uXG4gICAgdGhpcy5idWlsZFdvcmtmbG93Py5hZGRQb3N0QnVpbGRTdGVwcyh7XG4gICAgICBuYW1lOiBcIlJldmVydCBwYWNrYWdlLmpzb24gdmVyc2lvbiBidW1wXCIsXG4gICAgICBydW46IFwiZ2l0IGNoZWNrb3V0IHBhY2thZ2UuanNvblwiLFxuICAgIH0pO1xuXG4gICAgbmV3IENvcHlyaWdodEhlYWRlcnModGhpcyk7XG4gICAgbmV3IERlcHJlY2F0ZVBhY2thZ2VzKHRoaXMsIHtcbiAgICAgIHByb3ZpZGVyTmFtZSxcbiAgICAgIHBhY2thZ2VJbmZvLFxuICAgICAgaXNEZXByZWNhdGVkOiAhIWlzRGVwcmVjYXRlZCxcbiAgICB9KTtcbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgLy8gRm9sZHMgdGhlIG1hbnVhbCBmb3JjZS1yZWxlYXNlIGJlaGF2aW91ciBpbnRvIHJlbGVhc2UueW1sIGJlaGluZCBhXG4gICAgICAvLyB3b3JrZmxvd19kaXNwYXRjaCB0cmlnZ2VyLCBzbyBucG0vUHlQSSBPSURDIHRydXN0cyBhIHNpbmdsZSB3b3JrZmxvdy5cbiAgICAgIG5ldyBGb3JjZVJlbGVhc2UodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwaW5HaXRodWJBY3Rpb25WZXJzaW9ucyhwaW5uZWRWZXJzaW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIC8vIFVzZSBwaW5uZWQgdmVyc2lvbnMgb2YgZ2l0aHViIGFjdGlvbnNcbiAgICBPYmplY3QuZW50cmllcyhwaW5uZWRWZXJzaW9ucykuZm9yRWFjaCgoW25hbWUsIHNoYV0pID0+IHtcbiAgICAgIHRoaXMuZ2l0aHViPy5hY3Rpb25zLnNldChuYW1lLCBgJHtuYW1lfUAke3NoYX1gKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcmV0dHlBc3NlcnRFcXVhbDxUPihzdWJqZWN0OiBULCBleHBlY3RlZDogVCwgbWVzc2FnZT86IHN0cmluZyk6IHZvaWQge1xuICBpZiAoc3ViamVjdCAhPT0gZXhwZWN0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHttZXNzYWdlID8/IFwiQXNzZXJ0aW9uIGZhaWxlZFwifTogZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgZXhwZWN0ZWRcbiAgICAgICl9IGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeShzdWJqZWN0KX1gXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
508
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDBEQUEwRDtBQUMxRCxpQ0FBa0M7QUFDbEMsNkNBQXlDO0FBQ3pDLG1DQUFzRTtBQUV0RSxzREFBb0U7QUFDcEUscURBQWdEO0FBQ2hELGlEQUE2QztBQUM3QywrRUFBeUU7QUFDekUsMkNBQXdDO0FBQ3hDLGlEQUE2QztBQUM3QywyREFBdUQ7QUFDdkQsNkRBQXlEO0FBQ3pELDZDQUEwQztBQUMxQyw2REFBeUQ7QUFDekQsbURBQStDO0FBQy9DLG1EQUErQztBQUMvQywrQ0FBMkM7QUFFM0MseURBQXFEO0FBQ3JELHFFQUEwRTtBQUMxRSw2REFBbUU7QUFDbkUsb0RBQWtFO0FBRWxFLG1IQUFtSDtBQUNuSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQXFFNUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxZQUFvQixFQUFVLEVBQUU7SUFDcEQsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxHQUFHLFlBQVksV0FBVztRQUM1QixDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUYsTUFBTSwwQkFBMEIsR0FBRztJQUNqQyxrQkFBa0IsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ3pFLDJCQUEyQixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDbEYsdUJBQXVCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUM5RSxzQkFBc0IsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQzdFLGtCQUFrQixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDekUsb0JBQW9CLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUMzRSxvQkFBb0IsRUFBRSwwQ0FBMEMsRUFBRSxTQUFT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SSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUExakJILG9EQTJqQkM7QUFFRCxTQUFTLGlCQUFpQixDQUFJLE9BQVUsRUFBRSxRQUFXLEVBQUUsT0FBZ0I7SUFDckUsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLE9BQU8sSUFBSSxrQkFBa0IsY0FBYyxJQUFJLENBQUMsU0FBUyxDQUMxRCxRQUFRLENBQ1QsWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ3ZDLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMgKi9cbmltcG9ydCBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xuaW1wb3J0IHsgcGFzY2FsQ2FzZSB9IGZyb20gXCJjaGFuZ2UtY2FzZVwiO1xuaW1wb3J0IHsgT2JqZWN0RmlsZSwgVGV4dEZpbGUsIGNkaywgZ2l0aHViLCBKc29uUGF0Y2ggfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBKb2JTdGVwIH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlIH0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgQWxlcnRPcGVuUHJzIH0gZnJvbSBcIi4vYWxlcnQtb3Blbi1wcnNcIjtcbmltcG9ydCB7IEF1dG9BcHByb3ZlIH0gZnJvbSBcIi4vYXV0by1hcHByb3ZlXCI7XG5pbXBvcnQgeyBBdXRvQ2xvc2VDb21tdW5pdHlJc3N1ZXMgfSBmcm9tIFwiLi9hdXRvLWNsb3NlLWNvbW11bml0eS1pc3N1ZXNcIjtcbmltcG9ydCB7IEF1dG9tZXJnZSB9IGZyb20gXCIuL2F1dG9tZXJnZVwiO1xuaW1wb3J0IHsgQ2RrdGZDb25maWcgfSBmcm9tIFwiLi9jZGt0Zi1jb25maWdcIjtcbmltcG9ydCB7IENvcHlyaWdodEhlYWRlcnMgfSBmcm9tIFwiLi9jb3B5cmlnaHQtaGVhZGVyc1wiO1xuaW1wb3J0IHsgQ3VzdG9taXplZExpY2Vuc2UgfSBmcm9tIFwiLi9jdXN0b21pemVkLWxpY2Vuc2VcIjtcbmltcG9ydCB7IERlcGVuZGFib3QgfSBmcm9tIFwiLi9kZXBlbmRhYm90XCI7XG5pbXBvcnQgeyBEZXByZWNhdGVQYWNrYWdlcyB9IGZyb20gXCIuL2RlcHJlY2F0ZS1wYWNrYWdlc1wiO1xuaW1wb3J0IHsgRm9yY2VSZWxlYXNlIH0gZnJvbSBcIi4vZm9yY2UtcmVsZWFzZVwiO1xuaW1wb3J0IHsgR2l0aHViSXNzdWVzIH0gZnJvbSBcIi4vZ2l0aHViLWlzc3Vlc1wiO1xuaW1wb3J0IHsgTG9ja0lzc3VlcyB9IGZyb20gXCIuL2xvY2staXNzdWVzXCI7XG5pbXBvcnQgeyBQYWNrYWdlSW5mbyB9IGZyb20gXCIuL3BhY2thZ2UtaW5mb1wiO1xuaW1wb3J0IHsgUHJvdmlkZXJVcGdyYWRlIH0gZnJvbSBcIi4vcHJvdmlkZXItdXBncmFkZVwiO1xuaW1wb3J0IHsgQ2hlY2tGb3JVcGdyYWRlc1NjcmlwdEZpbGUgfSBmcm9tIFwiLi9zY3JpcHRzL2NoZWNrLWZvci11cGdyYWRlc1wiO1xuaW1wb3J0IHsgU2hvdWxkUmVsZWFzZVNjcmlwdEZpbGUgfSBmcm9tIFwiLi9zY3JpcHRzL3Nob3VsZC1yZWxlYXNlXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZVJhbmRvbUNyb24sIFNjaGVkdWxlIH0gZnJvbSBcIi4vdXRpbC9yYW5kb20tY3JvblwiO1xuXG4vLyBlbnN1cmUgbmV3IHByb2plY3RzIHN0YXJ0IHdpdGggMS4wLjAgc28gdGhhdCBldmVyeSBmb2xsb3dpbmcgYnJlYWtpbmcgY2hhbmdlIGxlYWRzIHRvIGFuIGluY3JlYXNlZCBtYWpvciB2ZXJzaW9uXG5jb25zdCBNSU5fTUFKT1JfVkVSU0lPTiA9IDE7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrdG5Qcm92aWRlclByb2plY3RPcHRpb25zIGV4dGVuZHMgY2RrLkpzaWlQcm9qZWN0T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHVzZUN1c3RvbUdpdGh1YlJ1bm5lcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlcnJhZm9ybVByb3ZpZGVyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNka3RuVmVyc2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBjZGt0blZlcnNpb25gIGluc3RlYWQuIFRoaXMgYWxpYXMgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICByZWFkb25seSBjZGt0ZlZlcnNpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbnN0cnVjdHNWZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZvcmNlTWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJjZGt0blwiXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcImNka3RuLWlvXCJcbiAgICogcHJldmlvdXNseSB3YXMgXCJjZGt0ZlwiLiBVc2VkIGZvciBHaXRIdWIgb3JnIG5hbWUgYW5kIHBhY2thZ2Ugc2NvcGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViTmFtZXNwYWNlPzogc3RyaW5nO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJJby5DZGt0blwiXG4gICAqL1xuICByZWFkb25seSBudWdldE9yZz86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiY2RrdG5cIlxuICAgKi9cbiAgcmVhZG9ubHkgbWF2ZW5Pcmc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcImlvLiR7bWF2ZW5Pcmd9XCJcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuR3JvdXBJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB5ZWFyIG9mIHRoZSBjcmVhdGlvbiBvZiB0aGUgcmVwb3NpdG9yeSwgZm9yIGNvcHlyaWdodCBwdXJwb3Nlcy5cbiAgICogV2lsbCBmYWxsIGJhY2sgdG8gdGhlIGN1cnJlbnQgeWVhciBpZiBub3Qgc3BlY2lmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRpb25ZZWFyPzogbnVtYmVyO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBwcmVidWlsdCBwcm92aWRlciBpcyBkZXByZWNhdGVkLlxuICAgKiBJZiB0cnVlLCBubyBuZXcgdmVyc2lvbnMgd2lsbCBiZSBwdWJsaXNoZWQuXG4gICAqL1xuICByZWFkb25seSBpc0RlcHJlY2F0ZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZGF0ZSB3aGVuIHRoZSBwcm9qZWN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGRlcHJlY2F0ZWQsIHRvIGJlIHVzZWQgaW4gdGhlIFJFQURNRSB0ZXh0LlxuICAgKiBJZiBubyBkYXRlIGlzIHByb3ZpZGVkLCB0aGVuIHRoZSBkYXRlIG9mIHRoZSBidWlsZCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IGRlcHJlY2F0aW9uRGF0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiSGFzaGlDb3JwLCBJbmMuXCJcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2VlPzogc3RyaW5nO1xuICAvKipcbiAgICogVXNlIHRydXN0ZWQgcHVibGlzaGluZyBmb3IgcHVibGlzaGluZyB0byBweXBpLm9yZ1xuICAgKiBOZWVkcyB0byBiZSBwcmUtY29uZmlndXJlZCBvbiBQeVBJIHRvIHdvcmsuXG4gICAqXG4gICAqIFRoZSBgcmVsZWFzZV9weXBpYCBqb2Iga2VlcHMgd2hhdGV2ZXIgcnVubmVyIHRoZSBwcm9qZWN0IGlzIGNvbmZpZ3VyZWQgZm9yLlxuICAgKiBQeVBJLCB1bmxpa2UgbnBtLCBkb2VzIG5vdCByZXN0cmljdCB0cnVzdGVkIHB1Ymxpc2hpbmcgdG8gR2l0SHViLWhvc3RlZFxuICAgKiBydW5uZXJzIC0tIHRydXN0IGlzIGJvdW5kIHRvIHRoZSB3b3JrZmxvdyByZWYsIGFuZCB0aGUgT0lEQyB0b2tlbiBpcyBtaW50ZWRcbiAgICogZnJvbSBBQ1RJT05TX0lEX1RPS0VOX1JFUVVFU1RfVVJMLCB3aGljaCBpcyBhdmFpbGFibGUgb24gYW55IHJ1bm5lciB3aXRoXG4gICAqIGBpZC10b2tlbjogd3JpdGVgLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5weXBpLm9yZy90cnVzdGVkLXB1Ymxpc2hlcnMvXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB5cGlUcnVzdGVkUHVibGlzaGluZz86IGJvb2xlYW47XG59XG5cbmNvbnN0IGdldE1hdmVuTmFtZSA9IChwcm92aWRlck5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBbXCJudWxsXCIsIFwicmFuZG9tXCJdLmluY2x1ZGVzKHByb3ZpZGVyTmFtZSlcbiAgICA/IGAke3Byb3ZpZGVyTmFtZX1fcHJvdmlkZXJgXG4gICAgOiBwcm92aWRlck5hbWUucmVwbGFjZSgvLS9naSwgXCJfXCIpO1xufTtcblxuY29uc3QgZ2l0aHViQWN0aW9uUGlubmVkVmVyc2lvbnMgPSB7XG4gIFwiYWN0aW9ucy9jaGVja291dFwiOiBcImRlMGZhYzJlNDUwMGRhYmUwMDA5ZTY3MjE0ZmY1ZjU0NDdjZTgzZGRcIiwgLy8gdjYuMC4yXG4gIFwiYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdFwiOiBcIjNlNWY0NWIyY2ZiOTE3MjA1NGI0MDg3YTQwZThlMGI1YTU0NjFlN2NcIiwgLy8gdjguMC4xXG4gIFwiYWN0aW9ucy9naXRodWItc2NyaXB0XCI6IFwiZWQ1OTc0MTFkOGY5MjQwNzNmOThkZmM1YzY1YTIzYTIzMjVmMzRjZFwiLCAvLyB2OC4wLjBcbiAgXCJhY3Rpb25zL3NldHVwLWRvdG5ldFwiOiBcImMyZmEwOWY0YmRlNWViYjlkMTc3N2NmMjgyNjJhM2ViM2RiM2NlZDdcIiwgLy8gdjUuMi4wXG4gIFwiYWN0aW9ucy9zZXR1cC1nb1wiOiBcIjRhMzYwMTEyMWRkMDFkMTYyNmExZTIzZTM3MjExZTMyNTRjMWMwNmNcIiwgLy8gdjYuNC4wXG4gIFwiYWN0aW9ucy9zZXR1cC1qYXZhXCI6IFwiYmU2NjZjMmZjZDI3ZWM4MDk3MDNkZWM1MGU1MDhjMmZkYzdmNjY1NFwiLCAvLyB2NS4yLjBcbiAgXCJhY3Rpb25zL3NldHVwLW5vZGVcIjogXCI0OGI1NWEwMTFiZGE5ZjVkNmFlYjRjMmQ5YzczNjJlOGRhZTQwNDFlXCIsIC8vIHY2LjQuMFxuICBcImFjdGlvbnMvc2V0dXAtcHl0aG9uXCI6IFwiYTMwOWZmOGI0MjZiNThlYzBlMmE0NWYwZjg2OWQ0Njg4OWQwMjQwNVwiLCAvLyB2Ni4yLjBcbiAgXCJhY3Rpb25zL3N0YWxlXCI6IFwiYjVkNDFkNGUxZDVkY2VlYTEwZTcxMDQ3ODZiNzM2MjRjMThhMTkwZlwiLCAvLyB2MTAuMi4wXG4gIFwiYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RcIjogXCIwNDNmYjQ2ZDFhOTNjNzdhYWU2NTZlN2MxYzY0YTg3NWQxZmM2YTBhXCIsIC8vIHY3LjAuMVxuICBcImFtYW5ubi9hY3Rpb24tc2VtYW50aWMtcHVsbC1yZXF1ZXN0XCI6XG4gICAgXCI0OGYyNTYyODRiZDQ2Y2RhYWIxMDQ4YzM3MjEzNjBlODA4MzM1ZDUwXCIsIC8vIHY2LjEuMVxuICBcImRlc3NhbnQvbG9jay10aHJlYWRzXCI6IFwiNzI2NmE3Y2U1YzFkZjAxYjFjNmRiODViZjhjZDg2YzczN2RhZGJlN1wiLCAvLyB2Ni4wLjBcbiAgXCJoYXNoaWNvcnAvc2V0dXAtY29weXdyaXRlXCI6IFwiMzI2MzhkYTJkNGU4MWQ1NmEwNzY0YWExNTQ3ODgyZmM0ZDIwOTYzNlwiLCAvLyB2MS4xLjNcbiAgXCJoYXNoaWNvcnAvc2V0dXAtdGVycmFmb3JtXCI6IFwiNWU4ZGJmM2M2ZDlkZWFmNDE5M2NhN2E4ZmIyM2YyYWM4M2JiNmM4NVwiLCAvLyB2NC4wLjBcbiAgXCJpbWpvaG5iby9pc3N1ZS1ib3RcIjogXCIzMTg4YzZjZTA2MjQ5MjA2NzA5ZDNiMWYyNzRkMGQ0YzVhNTIxNjAxXCIsIC8vIHYzLjQuNVxuICBcInBldGVyLWV2YW5zL2NyZWF0ZS1wdWxsLXJlcXVlc3RcIjogXCI1ZjY5NzhmYWYwODlkNGQyMGIwMGM3NzY2OTg5ZDA3NmJiMmZjN2YxXCIsIC8vIHY4LjEuMVxuICBcInNsYWNrYXBpL3NsYWNrLWdpdGh1Yi1hY3Rpb25cIjogXCI0NWE4OGI5NTgxYmZhYjI1NjZkYzg4MWUyY2Q2NmQzMzRlNjIxZTJjXCIsIC8vIHYzLjAuM1xuICBcImFjdGlvbnMvY3JlYXRlLWdpdGh1Yi1hcHAtdG9rZW5cIjogXCIyOTgyNGU2OWY1NDYxMjEzM2U3NmY3ZWFhYzcyNmVlZjZjODc1YmFmXCIsIC8vIHYyLjIuMVxufTtcblxuZXhwb3J0IGNsYXNzIENka3RuUHJvdmlkZXJQcm9qZWN0IGV4dGVuZHMgY2RrLkpzaWlQcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2RrdG5Qcm92aWRlclByb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgY2RrdG5WZXJzaW9uID0gb3B0aW9ucy5jZGt0blZlcnNpb24gPz8gb3B0aW9ucy5jZGt0ZlZlcnNpb247XG4gICAgYXNzZXJ0KFxuICAgICAgY2RrdG5WZXJzaW9uLFxuICAgICAgXCJFaXRoZXIgY2RrdG5WZXJzaW9uIG9yIGNka3RmVmVyc2lvbiBtdXN0IGJlIHByb3ZpZGVkXCJcbiAgICApO1xuXG4gICAgY29uc3Qge1xuICAgICAgdGVycmFmb3JtUHJvdmlkZXIsXG4gICAgICB3b3JrZmxvd0NvbnRhaW5lckltYWdlLFxuICAgICAgY29uc3RydWN0c1ZlcnNpb24sXG4gICAgICBtaW5Ob2RlVmVyc2lvbixcbiAgICAgIGpzaWlWZXJzaW9uLFxuICAgICAgdHlwZXNjcmlwdFZlcnNpb24sXG4gICAgICBpc0RlcHJlY2F0ZWQsXG4gICAgICBkZXByZWNhdGlvbkRhdGUsXG4gICAgICAvLyBUT0RPOiBDb25maXJtIGRlZmF1bHQgQXV0aG9yIE5hbWVcbiAgICAgIGF1dGhvck5hbWUgPSBcIkNESyBUZXJyYWluIE1haW50YWluZXJzXCIsXG4gICAgICBhdXRob3JBZGRyZXNzID0gXCJodHRwczovL2Nka3RuLmlvXCIsXG4gICAgICBuYW1lc3BhY2UgPSBcImNka3RuXCIsXG4gICAgICBnaXRodWJOYW1lc3BhY2UgPSBcImNka3RuLWlvXCIsXG4gICAgICBudWdldE9yZyA9IFwiSW8uQ2RrdG5cIixcbiAgICAgIG1hdmVuT3JnID0gXCJjZGt0blwiLFxuICAgICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmcsXG4gICAgICBweXBpVHJ1c3RlZFB1Ymxpc2hpbmcsXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBbZnFwcm92aWRlck5hbWUsIHByb3ZpZGVyVmVyc2lvbl0gPSB0ZXJyYWZvcm1Qcm92aWRlci5zcGxpdChcIkBcIik7XG4gICAgY29uc3QgcHJvdmlkZXJOYW1lID0gZnFwcm92aWRlck5hbWUuc3BsaXQoXCIvXCIpLnBvcCgpO1xuICAgIGFzc2VydChwcm92aWRlck5hbWUsIGAke3RlcnJhZm9ybVByb3ZpZGVyfSBkb2Vzbid0IHNlZW0gdG8gYmUgdmFsaWRgKTtcbiAgICBhc3NlcnQoXG4gICAgICAhcHJvdmlkZXJOYW1lLmVuZHNXaXRoKFwiLWdvXCIpLFxuICAgICAgXCJwcm92aWRlck5hbWUgbWF5IG5vdCBlbmQgd2l0aCAnLWdvJyBhcyB0aGlzIGNhbiBjb25mbGljdCB3aXRoIHJlcG9zIGZvciBnbyBwYWNrYWdlc1wiXG4gICAgKTtcblxuICAgIGNvbnN0IG51Z2V0TmFtZSA9IGAke251Z2V0T3JnfS5Qcm92aWRlcnMuJHtwYXNjYWxDYXNlKHByb3ZpZGVyTmFtZSl9YDtcbiAgICBjb25zdCBtYXZlbkdyb3VwSWQgPSBvcHRpb25zLm1hdmVuR3JvdXBJZCA/PyBgaW8uJHttYXZlbk9yZ31gO1xuICAgIGNvbnN0IG1hdmVuTmFtZSA9IGAke21hdmVuR3JvdXBJZH0ucHJvdmlkZXJzLiR7Z2V0TWF2ZW5OYW1lKHByb3ZpZGVyTmFtZSl9YDtcbiAgICBjb25zdCByZXBvc2l0b3J5ID0gYCR7Z2l0aHViTmFtZXNwYWNlfS8ke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgIC8tL2csXG4gICAgICBcIlwiXG4gICAgKX1gO1xuICAgIGNvbnN0IHJlcG9zaXRvcnlVcmwgPSBgZ2l0aHViLmNvbS8ke3JlcG9zaXRvcnl9YDtcblxuICAgIGNvbnN0IHBhY2thZ2VJbmZvOiBQYWNrYWdlSW5mbyA9IHtcbiAgICAgIG5wbToge1xuICAgICAgICBuYW1lOiBgQCR7bmFtZXNwYWNlfS9wcm92aWRlci0ke3Byb3ZpZGVyTmFtZX1gLFxuICAgICAgfSxcbiAgICAgIHB5dGhvbjoge1xuICAgICAgICAvLyBkaXN0TmFtZTogYCR7Z2l0aHViTmFtZXNwYWNlfS0ke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgICAgZGlzdE5hbWU6IGAke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZSgvLS9naSwgXCJfXCIpfWAsXG4gICAgICAgIC8vIG1vZHVsZTogYCR7Z2l0aHViTmFtZXNwYWNlfV8ke25hbWVzcGFjZX1fcHJvdmlkZXJfJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgICAgbW9kdWxlOiBgJHtuYW1lc3BhY2V9X3Byb3ZpZGVyXyR7cHJvdmlkZXJOYW1lLnJlcGxhY2UoLy0vZ2ksIFwiX1wiKX1gLFxuICAgICAgICB0cnVzdGVkUHVibGlzaGluZzogcHlwaVRydXN0ZWRQdWJsaXNoaW5nID8/IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHB1Ymxpc2hUb051Z2V0OiB7XG4gICAgICAgIGRvdE5ldE5hbWVzcGFjZTogbnVnZXROYW1lLFxuICAgICAgICBwYWNrYWdlSWQ6IG51Z2V0TmFtZSxcbiAgICAgIH0sXG4gICAgICBwdWJsaXNoVG9NYXZlbjoge1xuICAgICAgICBqYXZhUGFja2FnZTogbWF2ZW5OYW1lLFxuICAgICAgICBtYXZlbkdyb3VwSWQ6IG1hdmVuR3JvdXBJZCxcbiAgICAgICAgbWF2ZW5BcnRpZmFjdElkOiBgJHtuYW1lc3BhY2V9LXByb3ZpZGVyLSR7cHJvdmlkZXJOYW1lfWAsXG4gICAgICB9LFxuICAgICAgcHVibGlzaFRvR286IHtcbiAgICAgICAgbW9kdWxlTmFtZTogYCR7cmVwb3NpdG9yeVVybH0tZ29gLFxuICAgICAgICBnaXRVc2VyRW1haWw6IFwiZ2l0aHViLXRlYW0tY2RrLXRlcnJhaW5AY2RrdG4uaW9cIixcbiAgICAgICAgZ2l0VXNlck5hbWU6IFwidGVhbS1jZGstdGVycmFpblwiLFxuICAgICAgICBwYWNrYWdlTmFtZTogcHJvdmlkZXJOYW1lLnJlcGxhY2UoLy0vZywgXCJcIiksXG4gICAgICAgIC8vIEluIG9yZGVyIHRvIHVzZSB0aGUgY29weXdyaXRlIGFjdGlvbiwgd2UgbmVlZCB0byByZWJ1aWxkIHRoZSBmdWxsIHByZS1wdWJsaXNoIHN0ZXBzIHdvcmtmbG93IHVuZm9ydHVuYXRlbHlcbiAgICAgICAgLy8gSWYgc29tZW9uZSBrbm93cyBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyBtdXRhdGlvbiB3aXRoIG1pbmltYWwgY3VzdG9tIGNvZGUsIHBsZWFzZSBkbyBzb1xuICAgICAgICBwcmVQdWJsaXNoU3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNoZWNrb3V0XCIsXG4gICAgICAgICAgICB1c2VzOiBcImFjdGlvbnMvY2hlY2tvdXRcIixcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgcGF0aDogXCIucmVwb1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiSW5zdGFsbCBEZXBlbmRlbmNpZXNcIixcbiAgICAgICAgICAgIHJ1bjogXCJjZCAucmVwbyAmJiB5YXJuIGluc3RhbGwgLS1jaGVjay1maWxlcyAtLWZyb3plbi1sb2NrZmlsZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJFeHRyYWN0IGJ1aWxkIGFydGlmYWN0XCIsXG4gICAgICAgICAgICBydW46IFwidGFyIC0tc3RyaXAtY29tcG9uZW50cz0xIC14enZmIGRpc3QvanMvKi50Z3ogLUMgLnJlcG9cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiTW92ZSBidWlsZCBhcnRpZmFjdCBvdXQgb2YgdGhlIHdheVwiLFxuICAgICAgICAgICAgcnVuOiBcIm12IGRpc3QgZGlzdC5vbGRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ3JlYXRlIGdvIGFydGlmYWN0XCIsXG4gICAgICAgICAgICBydW46IFwiY2QgLnJlcG8gJiYgbnB4IHByb2plbiBwYWNrYWdlOmdvXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlNldHVwIENvcHl3cml0ZSB0b29sXCIsXG4gICAgICAgICAgICB1c2VzOiBcImhhc2hpY29ycC9zZXR1cC1jb3B5d3JpdGVcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29weSBjb3B5d3JpdGUgaGNsIGZpbGVcIixcbiAgICAgICAgICAgIHJ1bjogXCJjcCAucmVwby8uY29weXdyaXRlLmhjbCAucmVwby9kaXN0L2dvLy5jb3B5d3JpdGUuaGNsXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkFkZCBoZWFkZXJzIHVzaW5nIENvcHl3cml0ZSB0b29sXCIsXG4gICAgICAgICAgICBydW46IFwiY2QgLnJlcG8vZGlzdC9nbyAmJiBjb3B5d3JpdGUgaGVhZGVyc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSZW1vdmUgY29weXdyaXRlIGhjbCBmaWxlXCIsXG4gICAgICAgICAgICBydW46IFwicm0gLWYgLnJlcG8vZGlzdC9nby8uY29weXdyaXRlLmhjbFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSZW1vdmUgc29tZSB0ZXh0IGZyb20gdGhlIFJFQURNRSB0aGF0IGRvZXNuJ3QgYXBwbHkgdG8gR29cIixcbiAgICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgICBcInNlZCAtaSAncy8jIENES1ROIHByZWJ1aWx0IGJpbmRpbmdzIGZvci8jIENES1ROIEdvIGJpbmRpbmdzIGZvci8nIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRcIixcbiAgICAgICAgICAgICAgLy8gQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDk1MTE5NDlcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgICAgICBgc2VkIC1pIC1lICcvIyMgJHtpc0RlcHJlY2F0ZWQgPyBcIkRlcHJlY2F0ZWRcIiA6IFwiQXZhaWxhYmxlXCJ9IFBhY2thZ2VzLywvIyMjIEdvLyFiJyAtZSAnLyMjIyBHby8hZDtwOyBzLyMjIyBHby8jIyBHbyBQYWNrYWdlLycgLWUgJ2QnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBzZWQgLWUgaXMgYmxhY2sgbWFnaWMgYW5kIGZvciB3aGF0ZXZlciByZWFzb24gdGhlIHN0cmluZyByZXBsYWNlIGRvZXNuJ3Qgd29yayBzbyBsZXQncyB0cnkgaXQgYWdhaW46XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuICAgICAgICAgICAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICAgICAgICAgICAgYHNlZCAtaSAncy8jIyMgR28vIyMgJHtpc0RlcHJlY2F0ZWQgPyBcIkRlcHJlY2F0ZWRcIiA6IFwiR29cIn0gUGFja2FnZS8nIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBKdXN0IHN0cmFpZ2h0IHVwIGRlbGV0ZSB0aGVzZSBmdWxsIGxpbmVzIGFuZCBldmVyeXRoaW5nIGluIGJldHdlZW4gdGhlbTpcbiAgICAgICAgICAgICAgXCJzZWQgLWkgLWUgJy9BUEkudHlwZXNjcmlwdC5tZC8sL1lvdSBjYW4gYWxzbyB2aXNpdCBhIGhvc3RlZCB2ZXJzaW9uLyFiJyAtZSAnZCcgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZFwiLFxuICAgICAgICAgICAgICBgc2VkIC1pICdzfEZpbmQgYXV0by1nZW5lcmF0ZWQgZG9jcyBmb3IgdGhpcyBwcm92aWRlciBoZXJlOnxGaW5kIGF1dG8tZ2VuZXJhdGVkIGRvY3MgZm9yIHRoaXMgcHJvdmlkZXIgW2hlcmVdKGh0dHBzOi8vJHtyZXBvc2l0b3J5VXJsfS9ibG9iL21haW4vZG9jcy9BUEkuZ28ubWQpLnwnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBKdXN0IHN0cmFpZ2h0IHVwIGRlbGV0ZSB0aGVzZSBmdWxsIGxpbmVzIGFuZCBldmVyeXRoaW5nIGluIGJldHdlZW4gdGhlbTpcbiAgICAgICAgICAgICAgXCJzZWQgLWkgLWUgJy8jIyMgUHJvdmlkZXIgVmVyc2lvbi8sL1RoZSBwcm92aWRlciB2ZXJzaW9uIGNhbiBiZSBhZGp1c3RlZC8hYicgLWUgJ2QnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRcIixcbiAgICAgICAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29weSB0aGUgUkVBRE1FIGZpbGUgdG8gdGhlIHBhcmVudCBkaXJlY3RvcnlcIixcbiAgICAgICAgICAgIHJ1bjogXCJjcCAucmVwby9kaXN0L2dvLyovUkVBRE1FLm1kIC5yZXBvL2Rpc3QvZ28vUkVBRE1FLm1kXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNvbGxlY3QgZ28gQXJ0aWZhY3RcIixcbiAgICAgICAgICAgIHJ1bjogXCJtdiAucmVwby9kaXN0IGRpc3RcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3Qgd29ya2Zsb3dSdW5zT24gPSBvcHRpb25zLnVzZUN1c3RvbUdpdGh1YlJ1bm5lclxuICAgICAgPyBbXCJkZXBvdC11YnVudHUtMjQuMDQtOFwiXSAvLyA4IGNvcmUsIDMyIEdCXG4gICAgICA6IFtcInVidW50dS1sYXRlc3RcIl07IC8vIDcgR0JcblxuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBhdXRob3JBZGRyZXNzLFxuICAgICAgYXV0aG9yTmFtZSxcbiAgICAgIG1pbk5vZGVWZXJzaW9uLFxuICAgICAgd29ya2Zsb3dDb250YWluZXJJbWFnZSxcbiAgICAgIHdvcmtmbG93UnVuc09uLFxuICAgICAgbGljZW5zZWQ6IGZhbHNlLCAvLyB3ZSBkbyBzdXBwbHkgb3VyIG93biBsaWNlbnNlIGZpbGUgd2l0aCBhIGN1c3RvbSBoZWFkZXJcbiAgICAgIHJlbGVhc2VUb05wbTogdHJ1ZSxcbiAgICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nOiBucG1UcnVzdGVkUHVibGlzaGluZyA/PyBmYWxzZSxcbiAgICAgIG5hbWU6IHBhY2thZ2VJbmZvLm5wbS5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGBQcmVidWlsdCAke3Byb3ZpZGVyTmFtZX0gUHJvdmlkZXIgZm9yIENESyBUZXJyYWluIChjZGt0bilgLFxuICAgICAga2V5d29yZHM6IFtcbiAgICAgICAgXCJjZGt0blwiLFxuICAgICAgICBcImNkay10ZXJyYWluXCIsXG4gICAgICAgIFwiY2RrdGZcIixcbiAgICAgICAgXCJ0ZXJyYWZvcm1cIixcbiAgICAgICAgXCJvcGVudG9mdVwiLFxuICAgICAgICBcImNka1wiLFxuICAgICAgICBcInByb3ZpZGVyXCIsXG4gICAgICAgIHByb3ZpZGVyTmFtZSxcbiAgICAgIF0sXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgYXV0aG9yT3JnYW5pemF0aW9uOiB0cnVlLFxuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxuICAgICAgcmVwb3NpdG9yeTogYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3JlcG9zaXRvcnl9LmdpdGAsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgZGVwc1VwZ3JhZGU6ICFpc0RlcHJlY2F0ZWQsXG4gICAgICBkZXBzVXBncmFkZU9wdGlvbnM6IHtcbiAgICAgICAgd29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWxzOiBbXCJhdXRvbWVyZ2VcIiwgXCJhdXRvLWFwcHJvdmVcIiwgXCJkZXBlbmRlbmNpZXNcIl0sXG4gICAgICAgICAgc2NoZWR1bGU6IFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZS5XRUVLTFksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcHVibGlzaFRvUHlwaTogcGFja2FnZUluZm8ucHl0aG9uLFxuICAgICAgcHVibGlzaFRvTnVnZXQ6IHBhY2thZ2VJbmZvLnB1Ymxpc2hUb051Z2V0LFxuICAgICAgcHVibGlzaFRvTWF2ZW46IHBhY2thZ2VJbmZvLnB1Ymxpc2hUb01hdmVuLFxuICAgICAgcHVibGlzaFRvR286IHBhY2thZ2VJbmZvLnB1Ymxpc2hUb0dvLFxuICAgICAgcmVsZWFzZUZhaWx1cmVJc3N1ZTogdHJ1ZSxcbiAgICAgIHBlZXJEZXBlbmRlbmN5T3B0aW9uczoge1xuICAgICAgICBwaW5uZWREZXZEZXBlbmRlbmN5OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB3b3JrZmxvd0dpdElkZW50aXR5OiB7XG4gICAgICAgIG5hbWU6IFwidGVhbS1jZGstdGVycmFpblwiLFxuICAgICAgICBlbWFpbDogXCJnaXRodWItdGVhbS1jZGstdGVycmFpbkBjZGt0bi5pb1wiLFxuICAgICAgfSxcbiAgICAgIG1pbk1ham9yVmVyc2lvbjogTUlOX01BSk9SX1ZFUlNJT04sXG4gICAgICBzdGFsZTogdHJ1ZSxcbiAgICAgIHN0YWxlT3B0aW9uczoge1xuICAgICAgICBpc3N1ZXM6IHtcbiAgICAgICAgICBzdGFsZUxhYmVsOiBcInN0YWxlXCIsXG4gICAgICAgICAgZGF5c0JlZm9yZVN0YWxlOiA0NSxcbiAgICAgICAgICBzdGFsZU1lc3NhZ2U6XG4gICAgICAgICAgICBcIjQ1IGRheXMgaGF2ZSBwYXNzZWQgc2luY2UgdGhpcyBpc3N1ZSB3YXMgb3BlbmVkLCBhbmQgSSBhc3N1bWUgb3RoZXIgcHVibGlzaGVzIGhhdmUgc3VjY2VlZGVkIGluIHRoZSBtZWFudGltZS4gXCIgK1xuICAgICAgICAgICAgXCJJZiBubyBvbmUgcmVtb3ZlcyB0aGUgYHN0YWxlYCBsYWJlbCBvciBjb21tZW50cywgSSdtIGdvaW5nIHRvIGF1dG8tY2xvc2UgdGhpcyBpc3N1ZSBpbiAxNCBkYXlzLlwiLFxuICAgICAgICAgIGRheXNCZWZvcmVDbG9zZTogMTQsXG4gICAgICAgICAgY2xvc2VNZXNzYWdlOlxuICAgICAgICAgICAgXCIyIG1vbnRocyBoYXZlIHBhc3NlZCwgc28gSSdtIGNsb3NpbmcgdGhpcyBpc3N1ZSB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgb3RoZXIgcHVibGlzaGVzIGhhdmUgc3VjY2VlZGVkIGluIHRoZSBtZWFudGltZS5cIixcbiAgICAgICAgfSxcbiAgICAgICAgcHVsbFJlcXVlc3Q6IHtcbiAgICAgICAgICBzdGFsZUxhYmVsOiBcInN0YWxlXCIsXG4gICAgICAgICAgZGF5c0JlZm9yZVN0YWxlOiAxLFxuICAgICAgICAgIHN0YWxlTWVzc2FnZTogYENsb3NpbmcgdGhpcyBQUiwgaWYgaXQgaGFzIG5vdCBtZXJnZWQgdGhlcmUgaXMgbW9zdCBsaWtlbHkgYSBDSSBvciBDREtUTiBpc3N1ZSBwcmV2ZW50aW5nIGl0IGZyb20gbWVyZ2luZy4gSWYgdGhpcyBoYXMgYmVlbiBhIG1hbnVhbCBQUiwgcGxlYXNlIHJlb3BlbiBpdCBhbmQgYWRkIHRoZSBcXGBuby1hdXRvLWNsb3NlXFxgIGxhYmVsIHRvIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZyBhZ2Fpbi5gLFxuICAgICAgICAgIGRheXNCZWZvcmVDbG9zZTogMCxcbiAgICAgICAgICBleGVtcHRMYWJlbHM6IFtcIm5vLWF1dG8tY2xvc2VcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcHVsbFJlcXVlc3RUZW1wbGF0ZTogZmFsc2UsXG4gICAgICBkb2NnZW46IGZhbHNlLFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21BcHAoKSxcbiAgICAgICAgLy8gcHJvamVuID49MC4xMDAgbW92ZWQgdGhlIGBtZXJnaWZ5YCBwcm9qZWN0IG9wdGlvbiB1bmRlciBnaXRodWJPcHRpb25zXG4gICAgICAgIG1lcmdpZnk6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRGV2RGVwcyhcbiAgICAgIFwiZG90LXByb3BAXjUuMi4wXCIsXG4gICAgICBcIkBhY3Rpb25zL2NvcmVAXjEuMS4wXCIsXG4gICAgICBcIkBhY3Rpb24tdmFsaWRhdG9yL2NvcmVcIixcbiAgICAgIFwiQGFjdGlvbi12YWxpZGF0b3IvY2xpXCJcbiAgICApO1xuXG4gICAgLy8gRGVmYXVsdCBtZW1vcnkgaXMgN0dCOiBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3VzaW5nLWdpdGh1Yi1ob3N0ZWQtcnVubmVycy9hYm91dC1naXRodWItaG9zdGVkLXJ1bm5lcnMjc3VwcG9ydGVkLXJ1bm5lcnMtYW5kLWhhcmR3YXJlLXJlc291cmNlc1xuICAgIC8vIEN1c3RvbSBSdW5uZXJzIHdlIHVzZSBoYXZlIDMyR0Igb2YgbWVtb3J5XG4gICAgLy8gVGhlIGJlbG93IG51bWJlcnMgc2V0IGhlYXAgbGltaXRzIHRoYXQgYXJlIH4xZ2IgYW5kIH4wLjVnYiBsZXNzLCByZXNwZWN0aXZlbHksIHRoYW4gdGhlIHRvdGFsIGF2YWlsYWJsZSBtZW1vcnlcbiAgICBjb25zdCBtYXhPbGRTcGFjZVNpemUgPSBvcHRpb25zLnVzZUN1c3RvbUdpdGh1YlJ1bm5lciA/IFwiMzE3NDRcIiA6IFwiNjY1NlwiO1xuXG4gICAgLy8gR29sYW5nIG5lZWRzIG1vcmUgbWVtb3J5IHRvIGJ1aWxkXG4gICAgdGhpcy50YXNrcy5hZGRFbnZpcm9ubWVudChcbiAgICAgIFwiTk9ERV9PUFRJT05TXCIsXG4gICAgICBgLS1tYXgtb2xkLXNwYWNlLXNpemU9JHttYXhPbGRTcGFjZVNpemV9YFxuICAgICk7XG5cbiAgICB0aGlzLnRhc2tzLmFkZEVudmlyb25tZW50KFwiQ0hFQ0tQT0lOVF9ESVNBQkxFXCIsIFwiMVwiKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlVGFzayA9IHRoaXMuYWRkVGFzayhcInZhbGlkYXRlLXdvcmtmbG93c1wiLCB7XG4gICAgICBleGVjOiBgZmluZCAuLy5naXRodWIvd29ya2Zsb3dzIC10eXBlIGYgLW5hbWUgXCIqLnltbFwiIC1wcmludDAgfCB4YXJncyAtMCAtbiAxIG5weCBhY3Rpb24tdmFsaWRhdG9yYCxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVRhc2suZGVzY3JpcHRpb24gPVxuICAgICAgXCJMaW50IHRoZSBZQU1MIGZpbGVzIGdlbmVyYXRlZCBieSBQcm9qZW4gdG8gZGVmaW5lIEdpdEh1YiBBY3Rpb25zIGFuZCBXb3JrZmxvd3MsIGNoZWNraW5nIHRoZW0gYWdhaW5zdCBwdWJsaXNoZWQgSlNPTiBzY2hlbWFzXCI7XG4gICAgdGhpcy5wb3N0Q29tcGlsZVRhc2suc3Bhd24odmFsaWRhdGVUYXNrKTtcblxuICAgIHRoaXMucGFja2FnZS5hZGRQYWNrYWdlUmVzb2x1dGlvbnMoXCJAdHlwZXMveWFyZ3NAMTcuMC4xM1wiKTtcblxuICAgIGNvbnN0IHNldFNhZmVEaXJlY3RvcnkgPSB7XG4gICAgICBuYW1lOiBcIlNldCBnaXQgY29uZmlnIHNhZmUuZGlyZWN0b3J5XCIsXG4gICAgICBydW46IFwiZ2l0IGNvbmZpZyAtLWdsb2JhbCAtLWFkZCBzYWZlLmRpcmVjdG9yeSAkKHB3ZClcIixcbiAgICB9O1xuXG4gICAgKCh0aGlzLmJ1aWxkV29ya2Zsb3cgYXMgYW55KS5wcmVCdWlsZFN0ZXBzIGFzIEpvYlN0ZXBbXSkucHVzaChcbiAgICAgIHNldFNhZmVEaXJlY3RvcnlcbiAgICApO1xuICAgICh0aGlzLnJlbGVhc2UgYXMgYW55KS5kZWZhdWx0QnJhbmNoLndvcmtmbG93LmpvYnMucmVsZWFzZS5zdGVwcy5zcGxpY2UoXG4gICAgICAxLFxuICAgICAgMCxcbiAgICAgIHNldFNhZmVEaXJlY3RvcnlcbiAgICApO1xuXG4gICAgLy8gYWx3YXlzIHB1Ymxpc2ggYSBuZXcgR2l0SHViIHJlbGVhc2UsIGV2ZW4gd2hlbiBwdWJsaXNoaW5nIHRvIGEgcGFydGljdWxhciBwYWNrYWdlIG1hbmFnZXIgZmFpbHNcbiAgICBjb25zdCByZWxlYXNlV29ya2Zsb3cgPSB0aGlzLnRyeUZpbmRPYmplY3RGaWxlKFxuICAgICAgXCIuZ2l0aHViL3dvcmtmbG93cy9yZWxlYXNlLnltbFwiXG4gICAgKTtcbiAgICByZWxlYXNlV29ya2Zsb3c/LmFkZE92ZXJyaWRlKFwiam9icy5yZWxlYXNlX2dpdGh1Yi5uZWVkc1wiLCBcInJlbGVhc2VcIik7XG5cbiAgICAvLyBUcnVzdGVkIHB1Ymxpc2hpbmcgcmVxdWlyZXMgbnBtID49MTEuNS4xIHdoaWNoIHNoaXBzIHdpdGggTm9kZSAyNFxuICAgIGlmIChucG1UcnVzdGVkUHVibGlzaGluZykge1xuICAgICAgdGhpcy5naXRodWJcbiAgICAgICAgPy50cnlGaW5kV29ya2Zsb3coXCJyZWxlYXNlXCIpXG4gICAgICAgID8uZmlsZT8ucGF0Y2goXG4gICAgICAgICAgSnNvblBhdGNoLnJlcGxhY2UoXG4gICAgICAgICAgICBcIi9qb2JzL3JlbGVhc2VfbnBtL3N0ZXBzLzAvd2l0aC9ub2RlLXZlcnNpb25cIixcbiAgICAgICAgICAgIFwiMjQueFwiXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAvLyBOUE0gT0lEQyBkb2Vzbid0IHN1cHBvcnQgc2VsZi1ob3N0ZWQgcnVubmVycyB5ZXRcbiAgICAgIHRoaXMuZ2l0aHViXG4gICAgICAgID8udHJ5RmluZFdvcmtmbG93KFwicmVsZWFzZVwiKVxuICAgICAgICA/LmZpbGU/LnBhdGNoKFxuICAgICAgICAgIEpzb25QYXRjaC5yZXBsYWNlKFwiL2pvYnMvcmVsZWFzZV9ucG0vcnVucy1vblwiLCBcInVidW50dS1sYXRlc3RcIilcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBOT1RFOiByZWxlYXNlX3B5cGkgZGVsaWJlcmF0ZWx5IHN0YXlzIG9uIHdoYXRldmVyIHJ1bm5lciB0aGUgcHJvamVjdCBpc1xuICAgIC8vIGNvbmZpZ3VyZWQgZm9yLiBVbmxpa2UgbnBtLCBQeVBJIHBsYWNlcyBubyByZXN0cmljdGlvbiBvbiB0aGUgcnVubmVyXG4gICAgLy8gZW52aXJvbm1lbnQ6IHB1YmxpYi1weXBpIG1pbnRzIGl0cyB0b2tlbiB3aXRoIGBweXRob24zIC1tIGlkIHB5cGlgIGFnYWluc3RcbiAgICAvLyBBQ1RJT05TX0lEX1RPS0VOX1JFUVVFU1RfVVJMLCB3aGljaCBHaXRIdWIgaW5qZWN0cyBvbiBhbnkgcnVubmVyIGdpdmVuXG4gICAgLy8gYGlkLXRva2VuOiB3cml0ZWAsIGFuZCBQeVBJJ3MgdHJ1c3QgaXMgYm91bmQgdG8gdGhlIHdvcmtmbG93IHJlZiwgbm90IHRoZVxuICAgIC8vIHJ1bm5lci4gRm9yY2luZyB0aGlzIGpvYiBvbnRvIGEgaG9zdGVkIHJ1bm5lciB3b3VsZCBhbHNvIHN0cmFuZCBpdCB3aXRoIHRoZVxuICAgIC8vIDMxR0IgTk9ERV9PUFRJT05TIGhlYXAgY2VpbGluZyB0aGF0IHVzZUN1c3RvbUdpdGh1YlJ1bm5lciB3cml0ZXMgaW50b1xuICAgIC8vIC5wcm9qZW4vdGFza3MuanNvbiwgb24gYSBib3ggd2l0aCBmYXIgbGVzcyBSQU0gdGhhbiB0aGF0IC0tIGFuZCB1bmxpa2VcbiAgICAvLyBwYWNrYWdlOmpzLCBwYWNrYWdlOnB5dGhvbiBpcyBhIHJlYWwganNpaS1wYWNtYWsgdHJhbnNwaWxlLlxuXG4gICAgLy8gZW5zdXJlIHdlIGRvbid0IGZhaWwgaWYgdGhlIHJlbGVhc2UgZmlsZSBpcyBub3QgcHJlc2VudFxuICAgIGNvbnN0IGNoZWNrRXhpc3RpbmdUYWdTdGVwID0gKFxuICAgICAgdGhpcy5yZWxlYXNlIGFzIGFueVxuICAgICkuZGVmYXVsdEJyYW5jaC53b3JrZmxvdy5qb2JzLnJlbGVhc2Uuc3RlcHMuZmluZChcbiAgICAgIChzOiBvYmplY3QpID0+IFwiaWRcIiBpbiBzICYmIHMuaWQgPT09IFwiY2hlY2tfdGFnX2V4aXN0c1wiXG4gICAgKTtcbiAgICBjb25zdCBvbGRFeGlzdGluZ1RhZ1J1bjogc3RyaW5nID0gY2hlY2tFeGlzdGluZ1RhZ1N0ZXAucnVuO1xuICAgIHByZXR0eUFzc2VydEVxdWFsKFxuICAgICAgb2xkRXhpc3RpbmdUYWdSdW4uc3BsaXQoXCJcXG5cIilbMF0sXG4gICAgICBcIlRBRz0kKGNhdCBkaXN0L3JlbGVhc2V0YWcudHh0KVwiLFxuICAgICAgXCJyZWxlYXNlIHN0ZXAgY2hhbmdlZCwgcGxlYXNlIGNoZWNrIGlmIHRoZSB3b3JrYXJvdW5kIHN0aWxsIHdvcmtzIVwiXG4gICAgKTtcbiAgICBjaGVja0V4aXN0aW5nVGFnU3RlcC5ydW4gPSBgaWYgWyAhIC1mIGRpc3QvcmVsZWFzZXRhZy50eHQgXTsgdGhlbiAoZWNobyBcImV4aXN0cz10cnVlXCIgPj4gJEdJVEhVQl9PVVRQVVQpICYmIGV4aXQgMDsgZmlcXG4ke29sZEV4aXN0aW5nVGFnUnVufWA7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgY29uc3QgeyB1cGdyYWRlLCBwciB9ID0gKHRoaXMudXBncmFkZVdvcmtmbG93IGFzIGFueSkud29ya2Zsb3dzWzBdLmpvYnM7XG4gICAgICB1cGdyYWRlLnN0ZXBzLnNwbGljZSgxLCAwLCBzZXRTYWZlRGlyZWN0b3J5KTtcbiAgICAgIHByLnN0ZXBzLnNwbGljZSgxLCAwLCBzZXRTYWZlRGlyZWN0b3J5KTtcbiAgICB9XG5cbiAgICAvLyByZWxlYXNlOiBHbyDigJQgcGF0Y2ggdGhlIHJlbGVhc2Ugd29ya2Zsb3cncyBHbyBwdWJsaXNoIHRvIHVzZSBhIEdpdEh1YlxuICAgIC8vIEFwcCBpbnN0YWxsYXRpb24gdG9rZW4uXG4gICAgY29uc3QgcGF0Y2hHb1B1Ymxpc2hUb1VzZUFwcFRva2VuID0gKHdvcmtmbG93RmlsZT86IE9iamVjdEZpbGUpID0+IHtcbiAgICAgIGlmICghd29ya2Zsb3dGaWxlKSByZXR1cm47XG4gICAgICBjb25zdCBnb1B1Ymxpc2hUb2tlbiA9IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscy5mcm9tQXBwKHtcbiAgICAgICAgYXBwSWRTZWNyZXQ6IFwiUFJPSkVOX0FQUF9JRFwiLFxuICAgICAgICBwcml2YXRlS2V5U2VjcmV0OiBcIlBST0pFTl9BUFBfUFJJVkFURV9LRVlcIixcbiAgICAgICAgb3duZXI6IFwiJHt7IGdpdGh1Yi5yZXBvc2l0b3J5X293bmVyIH19XCIsXG4gICAgICAgIHJlcG9zaXRvcmllczogW1xuICAgICAgICAgIHBhY2thZ2VJbmZvLnB1Ymxpc2hUb0dvPy5tb2R1bGVOYW1lPy5zcGxpdChcIi9cIikucG9wKCkgPz8gXCJcIixcbiAgICAgICAgXSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHsgY29udGVudHM6IGdpdGh1Yi53b3JrZmxvd3MuQXBwUGVybWlzc2lvbi5XUklURSB9LFxuICAgICAgfSk7XG4gICAgICB3b3JrZmxvd0ZpbGUucGF0Y2goXG4gICAgICAgIEpzb25QYXRjaC5hZGQoXG4gICAgICAgICAgXCIvam9icy9yZWxlYXNlX2dvbGFuZy9zdGVwcy8xNlwiLFxuICAgICAgICAgIGdvUHVibGlzaFRva2VuLnNldHVwU3RlcHNbMF1cbiAgICAgICAgKSxcbiAgICAgICAgSnNvblBhdGNoLmFkZChcbiAgICAgICAgICBcIi9qb2JzL3JlbGVhc2VfZ29sYW5nL3N0ZXBzLzE3L2Vudi9HSVRIVUJfVE9LRU5cIixcbiAgICAgICAgICAvLyBHaXRIdWIgQXBwIGluc3RhbGxhdGlvbiB0b2tlbnMgKGdoc18qKSByZXF1aXJlIHRoZSBgeC1hY2Nlc3MtdG9rZW5gXG4gICAgICAgICAgLy8gdXNlcm5hbWUgd2hlbiB1c2VkIGluIEhUVFBTIGdpdCBVUkxzLiBwdWJsaWIgcmVuZGVycyB0aGlzIGVudiB2YXJcbiAgICAgICAgICAvLyB2ZXJiYXRpbSBpbnRvIGBodHRwczovLyR7R0lUSFVCX1RPS0VOfUBnaXRodWIuY29tLy4uLmAsIHNvIHdpdGhvdXRcbiAgICAgICAgICAvLyB0aGUgcHJlZml4IHRoZSBwdXNoIDQwMXMgYW5kIGZhbGxzIGJhY2sgdG8gYSBUVFkgcGFzc3dvcmQgcHJvbXB0LlxuICAgICAgICAgIGB4LWFjY2Vzcy10b2tlbjoke2dvUHVibGlzaFRva2VuLnRva2VuUmVmfWBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIHBhdGNoR29QdWJsaXNoVG9Vc2VBcHBUb2tlbihyZWxlYXNlV29ya2Zsb3cpO1xuICAgIH1cblxuICAgIC8vIEZpeCBtYXZlbiBpc3N1ZSAoaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvcHVibGliL3B1bGwvNzc3KVxuICAgIGdpdGh1Yi5HaXRIdWIub2YodGhpcyk/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIik/LmZpbGU/LnBhdGNoKFxuICAgICAgSnNvblBhdGNoLmFkZChcbiAgICAgICAgXCIvam9icy9yZWxlYXNlX21hdmVuL3N0ZXBzLzEwL2Vudi9NQVZFTl9PUFRTXCIsXG4gICAgICAgIC8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83MDE1Mzk2Mi9uZXh1cy1zdGFnaW5nLW1hdmVuLXBsdWdpbi1tYXZlbi1kZXBsb3ktZmFpbGVkLWFuLWFwaS1pbmNvbXBhdGliaWxpdHktd2FzLWVuY29cbiAgICAgICAgXCItLWFkZC1vcGVucz1qYXZhLmJhc2UvamF2YS51dGlsPUFMTC1VTk5BTUVEIC0tYWRkLW9wZW5zPWphdmEuYmFzZS9qYXZhLmxhbmcucmVmbGVjdD1BTEwtVU5OQU1FRCAtLWFkZC1vcGVucz1qYXZhLmJhc2UvamF2YS50ZXh0PUFMTC1VTk5BTUVEIC0tYWRkLW9wZW5zPWphdmEuZGVza3RvcC9qYXZhLmF3dC5mb250PUFMTC1VTk5BTUVEXCJcbiAgICAgICksXG4gICAgICBKc29uUGF0Y2gucmVtb3ZlKFxuICAgICAgICAvLyBUaGlzIGlzIG5vIGxvbmdlciB1c2VkLlxuICAgICAgICBcIi9qb2JzL3JlbGVhc2VfbWF2ZW4vc3RlcHMvMTAvZW52L01BVkVOX1NUQUdJTkdfUFJPRklMRV9JRFwiXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMucGluR2l0aHViQWN0aW9uVmVyc2lvbnMoZ2l0aHViQWN0aW9uUGlubmVkVmVyc2lvbnMpO1xuXG4gICAgbmV3IENka3RmQ29uZmlnKHRoaXMsIHtcbiAgICAgIHRlcnJhZm9ybVByb3ZpZGVyLFxuICAgICAgcHJvdmlkZXJOYW1lLFxuICAgICAgZnFwcm92aWRlck5hbWUsXG4gICAgICBwcm92aWRlclZlcnNpb24sXG4gICAgICBjZGt0blZlcnNpb24sXG4gICAgICBjb25zdHJ1Y3RzVmVyc2lvbixcbiAgICAgIGpzaWlWZXJzaW9uLFxuICAgICAgdHlwZXNjcmlwdFZlcnNpb24sXG4gICAgICBwYWNrYWdlSW5mbyxcbiAgICAgIGdpdGh1Yk5hbWVzcGFjZSxcbiAgICAgIGRlcHJlY2F0aW9uRGF0ZSxcbiAgICAgIGlzRGVwcmVjYXRlZDogISFpc0RlcHJlY2F0ZWQsXG4gICAgfSk7XG4gICAgbmV3IEN1c3RvbWl6ZWRMaWNlbnNlKHRoaXMsIG9wdGlvbnMuY3JlYXRpb25ZZWFyLCBvcHRpb25zLmxpY2Vuc2VlKTtcbiAgICBuZXcgR2l0aHViSXNzdWVzKHRoaXMsIHsgcHJvdmlkZXJOYW1lIH0pO1xuICAgIG5ldyBBdXRvQXBwcm92ZSh0aGlzKTtcbiAgICBuZXcgQXV0b0Nsb3NlQ29tbXVuaXR5SXNzdWVzKHRoaXMsIHsgcHJvdmlkZXJOYW1lIH0pO1xuICAgIG5ldyBBdXRvbWVyZ2UodGhpcyk7XG4gICAgbmV3IExvY2tJc3N1ZXModGhpcyk7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgY29uc3QgdXBncmFkZVNjcmlwdCA9IG5ldyBDaGVja0ZvclVwZ3JhZGVzU2NyaXB0RmlsZSh0aGlzLCB7XG4gICAgICAgIHByb3ZpZGVyVmVyc2lvbixcbiAgICAgICAgZnFwcm92aWRlck5hbWUsXG4gICAgICB9KTtcbiAgICAgIG5ldyBQcm92aWRlclVwZ3JhZGUodGhpcywge1xuICAgICAgICBjaGVja0ZvclVwZ3JhZGVzU2NyaXB0UGF0aDogdXBncmFkZVNjcmlwdC5wYXRoLFxuICAgICAgICB3b3JrZmxvd1J1bnNPbixcbiAgICAgICAgbm9kZUhlYXBTaXplOiBtYXhPbGRTcGFjZVNpemUsXG4gICAgICB9KTtcbiAgICAgIG5ldyBBbGVydE9wZW5QcnModGhpcywge1xuICAgICAgICBzbGFja1dlYmhvb2tVcmw6IFwiJHt7IHNlY3JldHMuQUxFUlRfUFJTX1NMQUNLX1dFQkhPT0tfVVJMIH19XCIsXG4gICAgICAgIHJlcG9zaXRvcnksXG4gICAgICB9KTtcbiAgICAgIG5ldyBEZXBlbmRhYm90KHRoaXMpO1xuICAgIH1cblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCBcIi5naXRodWIvQ09ERU9XTkVSU1wiLCB7XG4gICAgICBsaW5lczogW1xuICAgICAgICBcIiMgVGhlc2Ugb3duZXJzIHdpbGwgYmUgdGhlIGRlZmF1bHQgb3duZXJzIGZvciBldmVyeXRoaW5nIGluIFwiLFxuICAgICAgICBcIiMgdGhlIHJlcG8uIFVubGVzcyBhIGxhdGVyIG1hdGNoIHRha2VzIHByZWNlZGVuY2UsIFwiLFxuICAgICAgICBcIiMgdGhleSB3aWxsIGJlIHJlcXVlc3RlZCBmb3IgcmV2aWV3IHdoZW4gc29tZW9uZSBvcGVucyBhIFwiLFxuICAgICAgICBcIiMgcHVsbCByZXF1ZXN0LlwiLFxuICAgICAgICBcIiogICAgICAgQGNka3RuLWlvL3RlYW0tY2RrLXRlcnJhaW5cIixcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgbmV3IFNob3VsZFJlbGVhc2VTY3JpcHRGaWxlKHRoaXMsIHt9KTtcblxuICAgICAgY29uc3QgcmVsZWFzZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoXCJyZWxlYXNlXCIpITtcbiAgICAgIHRoaXMucmVtb3ZlVGFzayhcInJlbGVhc2VcIik7XG4gICAgICB0aGlzLmFkZFRhc2soXCJyZWxlYXNlXCIsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHJlbGVhc2VUYXNrLmRlc2NyaXB0aW9uLFxuICAgICAgICBzdGVwczogcmVsZWFzZVRhc2suc3RlcHMsXG4gICAgICAgIGVudjogKHJlbGVhc2VUYXNrIGFzIGFueSkuX2VudixcbiAgICAgICAgY29uZGl0aW9uOiBcIm5vZGUgLi9zY3JpcHRzL3Nob3VsZC1yZWxlYXNlLmpzXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkVGFzayhcInVuY29uZGl0aW9uYWwtcmVsZWFzZVwiLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiByZWxlYXNlVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgc3RlcHM6IHJlbGVhc2VUYXNrLnN0ZXBzLFxuICAgICAgICBlbnY6IChyZWxlYXNlVGFzayBhcyBhbnkpLl9lbnYsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVsZWFzZUpvYlN0ZXBzOiBhbnlbXSA9IChcbiAgICAgICAgdGhpcy5naXRodWI/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIikgYXMgYW55XG4gICAgICApLmpvYnMucmVsZWFzZS5zdGVwcztcbiAgICAgIGNvbnN0IGdpdFJlbW90ZUpvYiA9IHJlbGVhc2VKb2JTdGVwcy5maW5kKChpdCkgPT4gaXQuaWQgPT09IFwiZ2l0X3JlbW90ZVwiKTtcbiAgICAgIGFzc2VydChcbiAgICAgICAgZ2l0UmVtb3RlSm9iLFxuICAgICAgICBcImdpdF9yZW1vdGUgc3RlcCBub3QgZm91bmQgaW4gcmVsZWFzZSB3b3JrZmxvdywgcGxlYXNlIGNoZWNrIGlmIHRoZSB3b3JrYXJvdW5kIHN0aWxsIHdvcmtzIVwiXG4gICAgICApO1xuICAgICAgLy8gV2Ugd3JhcCB3aGF0ZXZlciBwcm9qZW4gZ2VuZXJhdGVkIGluIGEgc2hvdWxkLXJlbGVhc2UgZ3VhcmQgcmF0aGVyIHRoYW5cbiAgICAgIC8vIHJld3JpdGluZyBpdCwgc28gYXNzZXJ0IG9ubHkgdGhlIHR3byBwcm9wZXJ0aWVzIHRoZSB3cmFwcGluZyBhY3R1YWxseVxuICAgICAgLy8gZGVwZW5kcyBvbi4gUGlubmluZyB0byBwcm9qZW4ncyBleGFjdCB3b3JkaW5nIGJyb2tlIHRoZSB3aG9sZSBmbGVldFxuICAgICAgLy8gb25jZSBhbHJlYWR5OiBwcm9qZW4gMC4xMDEgY2hhbmdlZCBgJHt7IGdpdGh1Yi5yZWYgfX1gIHRvIGBcIiRHSVRIVUJfUkVGXCJgXG4gICAgICAvLyBhbmQgZXZlcnkgcHJvdmlkZXIgcmVwbydzIHVwZ3JhZGUtbWFpbiBzdGFydGVkIGZhaWxpbmcgYXQgc3ludGguXG4gICAgICBhc3NlcnQoXG4gICAgICAgIHR5cGVvZiBnaXRSZW1vdGVKb2IucnVuID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgZ2l0UmVtb3RlSm9iLnJ1bi5pbmNsdWRlcyhcImdpdCBscy1yZW1vdGVcIikgJiZcbiAgICAgICAgICBnaXRSZW1vdGVKb2IucnVuLmluY2x1ZGVzKFwibGF0ZXN0X2NvbW1pdD1cIiksXG4gICAgICAgIGBnaXRfcmVtb3RlIHN0ZXAgbm8gbG9uZ2VyIHNldHMgbGF0ZXN0X2NvbW1pdCBmcm9tIGdpdCBscy1yZW1vdGUsIHBsZWFzZSBjaGVjayBpZiB0aGUgd29ya2Fyb3VuZCBzdGlsbCB3b3JrcyEgR290OiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIGdpdFJlbW90ZUpvYi5ydW5cbiAgICAgICAgKX1gXG4gICAgICApO1xuICAgICAgLy8gRm9sZCAqZXZlcnkqIGxpbmU6IHByb2plbiBlbWl0cyB0d28gdG9kYXksIGJ1dCBTdHJpbmcjcmVwbGFjZSB3aXRoIGFcbiAgICAgIC8vIHN0cmluZyBwYXR0ZXJuIG9ubHkgZm9sZHMgdGhlIGZpcnN0IGlmIHRoYXQgZXZlciBncm93cy5cbiAgICAgIGNvbnN0IHByZXZpb3VzQ29tbWFuZCA9IGdpdFJlbW90ZUpvYi5ydW4uc3BsaXQoXCJcXG5cIikuam9pbihcIiAmJiBcIik7XG5cbiAgICAgIGNvbnN0IGNhbmNlbENvbW1hbmQgPVxuICAgICAgICAnZWNobyBcImxhdGVzdF9jb21taXQ9cmVsZWFzZV9jYW5jZWxsZWRcIiA+PiAkR0lUSFVCX09VVFBVVCc7IC8vIHRoaXMgY2FuY2VscyB0aGUgcmVsZWFzZSB2aWEgYSBub24tbWF0Y2hpbmcgU0hBO1xuICAgICAgZ2l0UmVtb3RlSm9iLnJ1biA9IGBub2RlIC4vc2NyaXB0cy9zaG91bGQtcmVsZWFzZS5qcyAmJiAoJHtwcmV2aW91c0NvbW1hbmR9KSB8fCAke2NhbmNlbENvbW1hbmR9YDtcbiAgICAgIGdpdFJlbW90ZUpvYi5uYW1lICs9XG4gICAgICAgIFwiIG9yIGNhbmNlbCB2aWEgZmFraW5nIGEgU0hBIGlmIHJlbGVhc2Ugd2FzIGNhbmNlbGxlZFwiO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YWxlV29ya2Zsb3cgPSB0aGlzLnRyeUZpbmRPYmplY3RGaWxlKFwiLmdpdGh1Yi93b3JrZmxvd3Mvc3RhbGUueW1sXCIpO1xuICAgIHN0YWxlV29ya2Zsb3c/LmFkZE92ZXJyaWRlKFwib24uc2NoZWR1bGVcIiwgW1xuICAgICAge1xuICAgICAgICBjcm9uOiBnZW5lcmF0ZVJhbmRvbUNyb24oeyBwcm9qZWN0OiB0aGlzLCBtYXhIb3VyOiA0LCBob3VyT2Zmc2V0OiAxIH0pLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHVwZ3JhZGVXb3JrZmxvdyA9IHRoaXMudHJ5RmluZE9iamVjdEZpbGUoXG4gICAgICBcIi5naXRodWIvd29ya2Zsb3dzL3VwZ3JhZGUtbWFpbi55bWxcIlxuICAgICk7XG4gICAgdXBncmFkZVdvcmtmbG93Py5hZGRPdmVycmlkZShcIm9uLnNjaGVkdWxlXCIsIFtcbiAgICAgIHtcbiAgICAgICAgY3JvbjogZ2VuZXJhdGVSYW5kb21Dcm9uKHtcbiAgICAgICAgICBwcm9qZWN0OiB0aGlzLFxuICAgICAgICAgIG1heEhvdXI6IDAsXG4gICAgICAgICAgaG91ck9mZnNldDogMSxcbiAgICAgICAgICBzY2hlZHVsZTogU2NoZWR1bGUuV2Vla2x5LFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgXSk7XG5cbiAgICAvLyBTdWJtb2R1bGUgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uXG4gICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShcIkFQSS5tZFwiKTsgLy8gaWdub3JlIHRoZSBvbGQgZmlsZSwgd2Ugbm93IGdlbmVyYXRlIGl0IGluIHRoZSBkb2NzIGZvbGRlclxuICAgIHRoaXMuYWRkRGV2RGVwcyhcImpzaWktZG9jZ2VuQF4xMC4yLjNcIik7XG4gICAgaWYgKGpzaWlWZXJzaW9uKSB7XG4gICAgICAvLyBOT1RFOiB0aGUgYmVsb3cgaXMgbWFraW5nIGEgYnJvYWQgYXNzdW1wdGlvbiB0aGF0IHlvdSdyZSBwYXNzaW5nIGEgcmFuZ2UgbGlrZSBcIn41LjMuMFwiIHRvIGpzaWlWZXJzaW9uXG4gICAgICAvLyBJZiB5b3UgdXNlIHRoYXQgZmllbGQgdG8gcGFzcyBhIHZlcnkgc3BlY2lmaWMgdmVyc2lvbiAoZS5nLiBcIjUuMy4xMVwiKSB0aGVuIHRoaXMgbWlnaHQgYnJlYWtcbiAgICAgIHRoaXMuYWRkRGV2RGVwcyhganNpaS1yb3NldHRhQCR7anNpaVZlcnNpb259YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkRGV2RGVwcyhganNpaS1yb3NldHRhYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZG9jZ2VuID0gdGhpcy5hZGRUYXNrKFwiZG9jZ2VuXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkdlbmVyYXRlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBwcm9qZWN0XCIsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgZXhlYzogW1xuICAgICAgICAgICAgXCJybSAtcmYgZG9jc1wiLFxuICAgICAgICAgICAgXCJybSAtZiBBUEkubWRcIixcbiAgICAgICAgICAgIFwibWtkaXIgZG9jc1wiLFxuICAgICAgICAgICAgXCJqc2lpLWRvY2dlbiAtLXNwbGl0LWJ5LXN1Ym1vZHVsZSAtbCB0eXBlc2NyaXB0IC1sIHB5dGhvbiAtbCBqYXZhIC1sIGNzaGFycCAtbCBnb1wiLFxuICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmljZSB3YXkgdG8gdGVsbCBqc2lpLWRvY2dlbiB0byBnZW5lcmF0ZSBkb2NzIGludG8gYSBmb2xkZXIgc28gSSB3ZW50IHRoaXMgcm91dGVcbiAgICAgICAgICAgIFwibXYgKi4qLm1kIGRvY3NcIixcbiAgICAgICAgICAgIC8vIFNvbWUgcGFydCBvZiB0aGUgZG9jdW1lbnRhdGlvbiBhcmUgdG9vIGxvbmcsIHdlIG5lZWQgdG8gdHJ1bmNhdGUgdGhlbSB0byB+MTBNQlxuICAgICAgICAgICAgXCJjZCBkb2NzXCIsXG4gICAgICAgICAgICBcImxzIC4vIHwgeGFyZ3Mgc2VkIC1pICcxNTAwMDAsJCBkJyAkMVwiLFxuICAgICAgICAgIF0uam9pbihcIiAmJiBcIiksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHRoaXMucG9zdENvbXBpbGVUYXNrLnNwYXduKGRvY2dlbik7XG4gICAgdGhpcy5naXRpZ25vcmUuaW5jbHVkZShgL2RvY3MvKi5tZGApO1xuICAgIHRoaXMuYW5ub3RhdGVHZW5lcmF0ZWQoYC9kb2NzLyoubWRgKTtcblxuICAgIC8vIFNldHRpbmcgdGhlIHZlcnNpb24gaW4gcGFja2FnZS5qc29uIHNvIHRoZSBnb2xhbmcgZG9jcyBoYXZlIHRoZSBjb3JyZWN0IHZlcnNpb25cbiAgICBjb25zdCB1bmNvbmRpdGlvbmFsQnVtcCA9IHRoaXMuYWRkVGFzayhcInVuY29uZGl0aW9uYWwtYnVtcFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJTZXQgdGhlIHZlcnNpb24gaW4gcGFja2FnZS5qc29uIHRvIHRoZSBjdXJyZW50IHZlcnNpb25cIixcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcIkNsZWFyIHRoZSBjaGFuZ2Vsb2cgc28gdGhhdCBpdCBkb2Vzbid0IGdldCBwdWJsaXNoZWQgdHdpY2VcIixcbiAgICAgICAgICBleGVjOiBcInJtIC1mICRDSEFOR0VMT0dcIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBidWlsdGluOiBcInJlbGVhc2UvYnVtcC12ZXJzaW9uXCIgfSxcbiAgICAgIF0sXG4gICAgICBlbnY6IHtcbiAgICAgICAgT1VURklMRTogXCJwYWNrYWdlLmpzb25cIixcbiAgICAgICAgQ0hBTkdFTE9HOiBcImRpc3QvY2hhbmdlbG9nLm1kXCIsXG4gICAgICAgIEJVTVBGSUxFOiBcImRpc3QvdmVyc2lvbi50eHRcIixcbiAgICAgICAgUkVMRUFTRVRBRzogXCJkaXN0L3JlbGVhc2V0YWcudHh0XCIsXG4gICAgICAgIFJFTEVBU0VfVEFHX1BSRUZJWDogXCJcIixcbiAgICAgICAgTUlOX01BSk9SOiBTdHJpbmcoTUlOX01BSk9SX1ZFUlNJT04pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLnByZUNvbXBpbGVUYXNrLnNwYXduKHVuY29uZGl0aW9uYWxCdW1wKTtcbiAgICAvLyBUbyBidW1wIGNvcnJlY3RseSB3ZSBuZWVkIHRvIGhhdmUgdGhlIGNvbXBsZXRlbHkgY2xvbmVkIHJlcG9cbiAgICAodGhpcy5idWlsZFdvcmtmbG93IGFzIGFueSkud29ya2Zsb3cuZmlsZS5hZGRPdmVycmlkZShcbiAgICAgIFwiam9icy5idWlsZC5zdGVwcy4wLndpdGguZmV0Y2gtZGVwdGhcIixcbiAgICAgIDBcbiAgICApO1xuICAgIC8vIFVuZG8gdGhlIGNoYW5nZXMgYWZ0ZXIgY29tcGlsYXRpb25cbiAgICB0aGlzLmJ1aWxkV29ya2Zsb3c/LmFkZFBvc3RCdWlsZFN0ZXBzKHtcbiAgICAgIG5hbWU6IFwiUmV2ZXJ0IHBhY2thZ2UuanNvbiB2ZXJzaW9uIGJ1bXBcIixcbiAgICAgIHJ1bjogXCJnaXQgY2hlY2tvdXQgcGFja2FnZS5qc29uXCIsXG4gICAgfSk7XG5cbiAgICBuZXcgQ29weXJpZ2h0SGVhZGVycyh0aGlzKTtcbiAgICBuZXcgRGVwcmVjYXRlUGFja2FnZXModGhpcywge1xuICAgICAgcHJvdmlkZXJOYW1lLFxuICAgICAgcGFja2FnZUluZm8sXG4gICAgICBpc0RlcHJlY2F0ZWQ6ICEhaXNEZXByZWNhdGVkLFxuICAgIH0pO1xuICAgIGlmICghaXNEZXByZWNhdGVkKSB7XG4gICAgICAvLyBGb2xkcyB0aGUgbWFudWFsIGZvcmNlLXJlbGVhc2UgYmVoYXZpb3VyIGludG8gcmVsZWFzZS55bWwgYmVoaW5kIGFcbiAgICAgIC8vIHdvcmtmbG93X2Rpc3BhdGNoIHRyaWdnZXIsIHNvIG5wbS9QeVBJIE9JREMgdHJ1c3RzIGEgc2luZ2xlIHdvcmtmbG93LlxuICAgICAgbmV3IEZvcmNlUmVsZWFzZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBpbkdpdGh1YkFjdGlvblZlcnNpb25zKHBpbm5lZFZlcnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgLy8gVXNlIHBpbm5lZCB2ZXJzaW9ucyBvZiBnaXRodWIgYWN0aW9uc1xuICAgIE9iamVjdC5lbnRyaWVzKHBpbm5lZFZlcnNpb25zKS5mb3JFYWNoKChbbmFtZSwgc2hhXSkgPT4ge1xuICAgICAgdGhpcy5naXRodWI/LmFjdGlvbnMuc2V0KG5hbWUsIGAke25hbWV9QCR7c2hhfWApO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByZXR0eUFzc2VydEVxdWFsPFQ+KHN1YmplY3Q6IFQsIGV4cGVjdGVkOiBULCBtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChzdWJqZWN0ICE9PSBleHBlY3RlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke21lc3NhZ2UgPz8gXCJBc3NlcnRpb24gZmFpbGVkXCJ9OiBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBleHBlY3RlZFxuICAgICAgKX0gYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KHN1YmplY3QpfWBcbiAgICApO1xuICB9XG59XG4iXX0=
|