@cdktn/provider-project 0.8.0 → 0.9.0
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 +27 -27
- package/API.md +247 -441
- package/CLAUDE.md +12 -13
- package/README.md +3 -3
- package/lib/cdktf-config.js +38 -5
- package/lib/copyright-headers.js +7 -2
- package/lib/customized-license.js +3 -1
- package/lib/deprecate-packages.js +2 -2
- 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 +77 -19
- package/lib/package-info.d.ts +1 -1
- package/lib/package-info.js +1 -1
- package/lib/provider-upgrade.js +5 -5
- package/lib/readme.js +2 -1
- package/lib/scripts/check-for-upgrades.js +2 -1
- package/lib/scripts/should-release.js +2 -1
- package/node_modules/jsonfile/package.json +1 -1
- package/node_modules/jsonfile/utils.js +4 -0
- package/package.json +47 -40
- package/pnpm-workspace.yaml +6 -0
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");
|
|
@@ -50,8 +49,11 @@ const githubActionPinnedVersions = {
|
|
|
50
49
|
"peter-evans/create-pull-request": "5f6978faf089d4d20b00c7766989d076bb2fc7f1", // v8.1.1
|
|
51
50
|
"slackapi/slack-github-action": "45a88b9581bfab2566dc881e2cd66d334e621e2c", // v3.0.3
|
|
52
51
|
"actions/create-github-app-token": "29824e69f54612133e76f7eaac726eef6c875baf", // v2.2.1
|
|
52
|
+
// projen emits this unpinned as `pnpm/action-setup@v5` once packageManager is pnpm
|
|
53
|
+
"pnpm/action-setup": "fc06bc1257f339d1d5d8b3a19a8cae5388b55320", // v5
|
|
53
54
|
};
|
|
54
55
|
class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
56
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@cdktn/provider-project.CdktnProviderProject", version: "0.9.0" };
|
|
55
57
|
constructor(options) {
|
|
56
58
|
const cdktnVersion = options.cdktnVersion ?? options.cdktfVersion;
|
|
57
59
|
assert(cdktnVersion, "Either cdktnVersion or cdktfVersion must be provided");
|
|
@@ -194,16 +196,30 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
194
196
|
authorOrganization: true,
|
|
195
197
|
defaultReleaseBranch: "main",
|
|
196
198
|
repository: `https://github.com/${repository}.git`,
|
|
197
|
-
mergify: false,
|
|
198
199
|
eslint: false,
|
|
200
|
+
packageManager: javascript_1.NodePackageManager.PNPM,
|
|
201
|
+
// Provider repos run jsii-pacmak over bundled deps exactly as this project
|
|
202
|
+
// does, so they need the hoisted linker too -- see the note in .projenrc.ts.
|
|
203
|
+
// It must be in pnpm-workspace.yaml, not .npmrc, or pnpm 11 ignores it.
|
|
204
|
+
pnpmOptions: {
|
|
205
|
+
workspaceYamlOptions: {
|
|
206
|
+
nodeLinker: javascript_1.PnpmWorkspaceYamlSchemaNodeLinker.HOISTED,
|
|
207
|
+
},
|
|
208
|
+
},
|
|
199
209
|
depsUpgrade: !isDeprecated,
|
|
200
210
|
depsUpgradeOptions: {
|
|
211
|
+
cooldown: 4,
|
|
201
212
|
workflowOptions: {
|
|
202
213
|
labels: ["automerge", "auto-approve", "dependencies"],
|
|
203
214
|
schedule: javascript_1.UpgradeDependenciesSchedule.WEEKLY,
|
|
204
215
|
},
|
|
205
216
|
},
|
|
206
|
-
|
|
217
|
+
auditDeps: !isDeprecated,
|
|
218
|
+
auditDepsOptions: {
|
|
219
|
+
level: "high",
|
|
220
|
+
runOn: "build",
|
|
221
|
+
},
|
|
222
|
+
publishToPypi: packageInfo.python,
|
|
207
223
|
publishToNuget: packageInfo.publishToNuget,
|
|
208
224
|
publishToMaven: packageInfo.publishToMaven,
|
|
209
225
|
publishToGo: packageInfo.publishToGo,
|
|
@@ -238,6 +254,8 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
238
254
|
docgen: false,
|
|
239
255
|
githubOptions: {
|
|
240
256
|
projenCredentials: projen_1.github.GithubCredentials.fromApp(),
|
|
257
|
+
// projen >=0.100 moved the `mergify` project option under githubOptions
|
|
258
|
+
mergify: false,
|
|
241
259
|
},
|
|
242
260
|
});
|
|
243
261
|
this.addDevDeps("dot-prop@^5.2.0", "@actions/core@^1.1.0", "@action-validator/core", "@action-validator/cli");
|
|
@@ -274,12 +292,15 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
274
292
|
?.tryFindWorkflow("release")
|
|
275
293
|
?.file?.patch(projen_1.JsonPatch.replace("/jobs/release_npm/runs-on", "ubuntu-latest"));
|
|
276
294
|
}
|
|
277
|
-
//
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
295
|
+
// NOTE: release_pypi deliberately stays on whatever runner the project is
|
|
296
|
+
// configured for. Unlike npm, PyPI places no restriction on the runner
|
|
297
|
+
// environment: publib-pypi mints its token with `python3 -m id pypi` against
|
|
298
|
+
// ACTIONS_ID_TOKEN_REQUEST_URL, which GitHub injects on any runner given
|
|
299
|
+
// `id-token: write`, and PyPI's trust is bound to the workflow ref, not the
|
|
300
|
+
// runner. Forcing this job onto a hosted runner would also strand it with the
|
|
301
|
+
// 31GB NODE_OPTIONS heap ceiling that useCustomGithubRunner writes into
|
|
302
|
+
// .projen/tasks.json, on a box with far less RAM than that -- and unlike
|
|
303
|
+
// package:js, package:python is a real jsii-pacmak transpile.
|
|
283
304
|
// ensure we don't fail if the release file is not present
|
|
284
305
|
const checkExistingTagStep = this.release.defaultBranch.workflow.jobs.release.steps.find((s) => "id" in s && s.id === "check_tag_exists");
|
|
285
306
|
const oldExistingTagRun = checkExistingTagStep.run;
|
|
@@ -315,11 +336,13 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
315
336
|
patchGoPublishToUseAppToken(releaseWorkflow);
|
|
316
337
|
}
|
|
317
338
|
// Fix maven issue (https://github.com/cdklabs/publib/pull/777)
|
|
318
|
-
|
|
319
|
-
//
|
|
320
|
-
|
|
321
|
-
//
|
|
322
|
-
|
|
339
|
+
//
|
|
340
|
+
// The publish jobs don't exist until Release synthesizes, and the step's index
|
|
341
|
+
// within release_maven shifts whenever the job gains a step -- switching the
|
|
342
|
+
// package manager to pnpm inserts a "Setup pnpm" step, which silently moved the
|
|
343
|
+
// old hardcoded /steps/10/ onto a step with no env at all. Resolve the step by
|
|
344
|
+
// what it runs, in preSynthesize, so neither problem can recur.
|
|
345
|
+
new MavenOptsPatch(this);
|
|
323
346
|
this.pinGithubActionVersions(githubActionPinnedVersions);
|
|
324
347
|
new cdktf_config_1.CdktfConfig(this, {
|
|
325
348
|
terraformProvider,
|
|
@@ -383,8 +406,18 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
383
406
|
});
|
|
384
407
|
const releaseJobSteps = (this.github?.tryFindWorkflow("release")).jobs.release.steps;
|
|
385
408
|
const gitRemoteJob = releaseJobSteps.find((it) => it.id === "git_remote");
|
|
386
|
-
|
|
387
|
-
|
|
409
|
+
assert(gitRemoteJob, "git_remote step not found in release workflow, please check if the workaround still works!");
|
|
410
|
+
// We wrap whatever projen generated in a should-release guard rather than
|
|
411
|
+
// rewriting it, so assert only the two properties the wrapping actually
|
|
412
|
+
// depends on. Pinning to projen's exact wording broke the whole fleet
|
|
413
|
+
// once already: projen 0.101 changed `${{ github.ref }}` to `"$GITHUB_REF"`
|
|
414
|
+
// and every provider repo's upgrade-main started failing at synth.
|
|
415
|
+
assert(typeof gitRemoteJob.run === "string" &&
|
|
416
|
+
gitRemoteJob.run.includes("git ls-remote") &&
|
|
417
|
+
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)}`);
|
|
418
|
+
// Fold *every* line: projen emits two today, but String#replace with a
|
|
419
|
+
// string pattern only folds the first if that ever grows.
|
|
420
|
+
const previousCommand = gitRemoteJob.run.split("\n").join(" && ");
|
|
388
421
|
const cancelCommand = 'echo "latest_commit=release_cancelled" >> $GITHUB_OUTPUT'; // this cancels the release via a non-matching SHA;
|
|
389
422
|
gitRemoteJob.run = `node ./scripts/should-release.js && (${previousCommand}) || ${cancelCommand}`;
|
|
390
423
|
gitRemoteJob.name +=
|
|
@@ -486,11 +519,36 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
486
519
|
}
|
|
487
520
|
}
|
|
488
521
|
exports.CdktnProviderProject = CdktnProviderProject;
|
|
489
|
-
|
|
490
|
-
|
|
522
|
+
/**
|
|
523
|
+
* Sets MAVEN_OPTS on the maven publish step and drops the unused
|
|
524
|
+
* MAVEN_STAGING_PROFILE_ID, resolving the step by the command it runs.
|
|
525
|
+
*
|
|
526
|
+
* Runs in preSynthesize because the publish jobs are added by Release during
|
|
527
|
+
* synthesis, so the job does not exist yet at construction time.
|
|
528
|
+
*
|
|
529
|
+
* @see https://github.com/cdklabs/publib/pull/777
|
|
530
|
+
*/
|
|
531
|
+
class MavenOptsPatch extends projen_1.Component {
|
|
532
|
+
preSynthesize() {
|
|
533
|
+
const workflow = projen_1.github.GitHub.of(this.project)?.tryFindWorkflow("release");
|
|
534
|
+
const steps = workflow?.jobs?.release_maven
|
|
535
|
+
?.steps;
|
|
536
|
+
assert(steps, "release_maven job not found, please check if the MAVEN_OPTS workaround still works!");
|
|
537
|
+
const step = steps.find((s) => s.run?.includes("publib-maven"));
|
|
538
|
+
assert(step?.env, "no publib-maven step with an env block in release_maven, please check if the MAVEN_OPTS workaround still works!");
|
|
539
|
+
// Mutate the step directly rather than JsonPatch-ing the rendered file: the
|
|
540
|
+
// publisher prepends tool-setup steps at render time, so in-memory indices do
|
|
541
|
+
// not match rendered ones, and a JSON Pointer would have to encode that offset.
|
|
542
|
+
// See https://stackoverflow.com/questions/70153962/nexus-staging-maven-plugin-maven-deploy-failed-an-api-incompatibility-was-enco
|
|
543
|
+
step.env.MAVEN_OPTS =
|
|
544
|
+
"--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED";
|
|
545
|
+
// This is no longer used.
|
|
546
|
+
delete step.env.MAVEN_STAGING_PROFILE_ID;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
491
549
|
function prettyAssertEqual(subject, expected, message) {
|
|
492
550
|
if (subject !== expected) {
|
|
493
551
|
throw new Error(`${message ?? "Assertion failed"}: expected ${JSON.stringify(expected)} but got ${JSON.stringify(subject)}`);
|
|
494
552
|
}
|
|
495
553
|
}
|
|
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
|
|
554
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDBEQUEwRDtBQUMxRCxpQ0FBa0M7QUFDbEMsNkNBQXlDO0FBQ3pDLG1DQU9nQjtBQUVoQixzREFJK0I7QUFDL0IscURBQWdEO0FBQ2hELGlEQUE2QztBQUM3QywrRUFBeUU7QUFDekUsMkNBQXdDO0FBQ3hDLGlEQUE2QztBQUM3QywyREFBdUQ7QUFDdkQsNkRBQXlEO0FBQ3pELDZDQUEwQztBQUMxQyw2REFBeUQ7QUFDekQsbURBQStDO0FBQy9DLG1EQUErQztBQUMvQywrQ0FBMkM7QUFFM0MseURBQXFEO0FBQ3JELHFFQUEwRTtBQUMxRSw2REFBbUU7QUFDbkUsb0RBQWtFO0FBRWxFLG1IQUFtSDtBQUNuSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQXFFNUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxZQUFvQixFQUFVLEVBQUU7SUFDcEQsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxHQUFHLFlBQVksV0FBVztRQUM1QixDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUYsTUFBTSwwQkFBMEIsR0FBRztJQUNqQyxrQkFBa0IsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ3pFLDJCQUEyQixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDbEYsdUJBQXVCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUM5RSxzQkFBc0IsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQzdFLGtCQUFrQixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDekUsb0JBQW9CLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUMzRSxvQkFBb0IsRUFBRSwwQ0FBMEMsRUFBRSxTQUFT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QUksT0FBVSxFQUFFLFFBQVcsRUFBRSxPQUFnQjtJQUNyRSxJQUFJLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsT0FBTyxJQUFJLGtCQUFrQixjQUFjLElBQUksQ0FBQyxTQUFTLENBQzFELFFBQVEsQ0FDVCxZQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FDdkMsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuaW1wb3J0IGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG5pbXBvcnQgeyBwYXNjYWxDYXNlIH0gZnJvbSBcImNoYW5nZS1jYXNlXCI7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9iamVjdEZpbGUsXG4gIFRleHRGaWxlLFxuICBjZGssXG4gIGdpdGh1YixcbiAgSnNvblBhdGNoLFxufSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBKb2JTdGVwIH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHtcbiAgTm9kZVBhY2thZ2VNYW5hZ2VyLFxuICBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVMaW5rZXIsXG4gIFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZSxcbn0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgQWxlcnRPcGVuUHJzIH0gZnJvbSBcIi4vYWxlcnQtb3Blbi1wcnNcIjtcbmltcG9ydCB7IEF1dG9BcHByb3ZlIH0gZnJvbSBcIi4vYXV0by1hcHByb3ZlXCI7XG5pbXBvcnQgeyBBdXRvQ2xvc2VDb21tdW5pdHlJc3N1ZXMgfSBmcm9tIFwiLi9hdXRvLWNsb3NlLWNvbW11bml0eS1pc3N1ZXNcIjtcbmltcG9ydCB7IEF1dG9tZXJnZSB9IGZyb20gXCIuL2F1dG9tZXJnZVwiO1xuaW1wb3J0IHsgQ2RrdGZDb25maWcgfSBmcm9tIFwiLi9jZGt0Zi1jb25maWdcIjtcbmltcG9ydCB7IENvcHlyaWdodEhlYWRlcnMgfSBmcm9tIFwiLi9jb3B5cmlnaHQtaGVhZGVyc1wiO1xuaW1wb3J0IHsgQ3VzdG9taXplZExpY2Vuc2UgfSBmcm9tIFwiLi9jdXN0b21pemVkLWxpY2Vuc2VcIjtcbmltcG9ydCB7IERlcGVuZGFib3QgfSBmcm9tIFwiLi9kZXBlbmRhYm90XCI7XG5pbXBvcnQgeyBEZXByZWNhdGVQYWNrYWdlcyB9IGZyb20gXCIuL2RlcHJlY2F0ZS1wYWNrYWdlc1wiO1xuaW1wb3J0IHsgRm9yY2VSZWxlYXNlIH0gZnJvbSBcIi4vZm9yY2UtcmVsZWFzZVwiO1xuaW1wb3J0IHsgR2l0aHViSXNzdWVzIH0gZnJvbSBcIi4vZ2l0aHViLWlzc3Vlc1wiO1xuaW1wb3J0IHsgTG9ja0lzc3VlcyB9IGZyb20gXCIuL2xvY2staXNzdWVzXCI7XG5pbXBvcnQgeyBQYWNrYWdlSW5mbyB9IGZyb20gXCIuL3BhY2thZ2UtaW5mb1wiO1xuaW1wb3J0IHsgUHJvdmlkZXJVcGdyYWRlIH0gZnJvbSBcIi4vcHJvdmlkZXItdXBncmFkZVwiO1xuaW1wb3J0IHsgQ2hlY2tGb3JVcGdyYWRlc1NjcmlwdEZpbGUgfSBmcm9tIFwiLi9zY3JpcHRzL2NoZWNrLWZvci11cGdyYWRlc1wiO1xuaW1wb3J0IHsgU2hvdWxkUmVsZWFzZVNjcmlwdEZpbGUgfSBmcm9tIFwiLi9zY3JpcHRzL3Nob3VsZC1yZWxlYXNlXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZVJhbmRvbUNyb24sIFNjaGVkdWxlIH0gZnJvbSBcIi4vdXRpbC9yYW5kb20tY3JvblwiO1xuXG4vLyBlbnN1cmUgbmV3IHByb2plY3RzIHN0YXJ0IHdpdGggMS4wLjAgc28gdGhhdCBldmVyeSBmb2xsb3dpbmcgYnJlYWtpbmcgY2hhbmdlIGxlYWRzIHRvIGFuIGluY3JlYXNlZCBtYWpvciB2ZXJzaW9uXG5jb25zdCBNSU5fTUFKT1JfVkVSU0lPTiA9IDE7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrdG5Qcm92aWRlclByb2plY3RPcHRpb25zIGV4dGVuZHMgY2RrLkpzaWlQcm9qZWN0T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHVzZUN1c3RvbUdpdGh1YlJ1bm5lcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlcnJhZm9ybVByb3ZpZGVyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNka3RuVmVyc2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBjZGt0blZlcnNpb25gIGluc3RlYWQuIFRoaXMgYWxpYXMgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICByZWFkb25seSBjZGt0ZlZlcnNpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbnN0cnVjdHNWZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZvcmNlTWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJjZGt0blwiXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcImNka3RuLWlvXCJcbiAgICogcHJldmlvdXNseSB3YXMgXCJjZGt0ZlwiLiBVc2VkIGZvciBHaXRIdWIgb3JnIG5hbWUgYW5kIHBhY2thZ2Ugc2NvcGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViTmFtZXNwYWNlPzogc3RyaW5nO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJJby5DZGt0blwiXG4gICAqL1xuICByZWFkb25seSBudWdldE9yZz86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiY2RrdG5cIlxuICAgKi9cbiAgcmVhZG9ubHkgbWF2ZW5Pcmc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcImlvLiR7bWF2ZW5Pcmd9XCJcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuR3JvdXBJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB5ZWFyIG9mIHRoZSBjcmVhdGlvbiBvZiB0aGUgcmVwb3NpdG9yeSwgZm9yIGNvcHlyaWdodCBwdXJwb3Nlcy5cbiAgICogV2lsbCBmYWxsIGJhY2sgdG8gdGhlIGN1cnJlbnQgeWVhciBpZiBub3Qgc3BlY2lmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRpb25ZZWFyPzogbnVtYmVyO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBwcmVidWlsdCBwcm92aWRlciBpcyBkZXByZWNhdGVkLlxuICAgKiBJZiB0cnVlLCBubyBuZXcgdmVyc2lvbnMgd2lsbCBiZSBwdWJsaXNoZWQuXG4gICAqL1xuICByZWFkb25seSBpc0RlcHJlY2F0ZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZGF0ZSB3aGVuIHRoZSBwcm9qZWN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGRlcHJlY2F0ZWQsIHRvIGJlIHVzZWQgaW4gdGhlIFJFQURNRSB0ZXh0LlxuICAgKiBJZiBubyBkYXRlIGlzIHByb3ZpZGVkLCB0aGVuIHRoZSBkYXRlIG9mIHRoZSBidWlsZCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IGRlcHJlY2F0aW9uRGF0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiSGFzaGlDb3JwLCBJbmMuXCJcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2VlPzogc3RyaW5nO1xuICAvKipcbiAgICogVXNlIHRydXN0ZWQgcHVibGlzaGluZyBmb3IgcHVibGlzaGluZyB0byBweXBpLm9yZ1xuICAgKiBOZWVkcyB0byBiZSBwcmUtY29uZmlndXJlZCBvbiBQeVBJIHRvIHdvcmsuXG4gICAqXG4gICAqIFRoZSBgcmVsZWFzZV9weXBpYCBqb2Iga2VlcHMgd2hhdGV2ZXIgcnVubmVyIHRoZSBwcm9qZWN0IGlzIGNvbmZpZ3VyZWQgZm9yLlxuICAgKiBQeVBJLCB1bmxpa2UgbnBtLCBkb2VzIG5vdCByZXN0cmljdCB0cnVzdGVkIHB1Ymxpc2hpbmcgdG8gR2l0SHViLWhvc3RlZFxuICAgKiBydW5uZXJzIC0tIHRydXN0IGlzIGJvdW5kIHRvIHRoZSB3b3JrZmxvdyByZWYsIGFuZCB0aGUgT0lEQyB0b2tlbiBpcyBtaW50ZWRcbiAgICogZnJvbSBBQ1RJT05TX0lEX1RPS0VOX1JFUVVFU1RfVVJMLCB3aGljaCBpcyBhdmFpbGFibGUgb24gYW55IHJ1bm5lciB3aXRoXG4gICAqIGBpZC10b2tlbjogd3JpdGVgLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5weXBpLm9yZy90cnVzdGVkLXB1Ymxpc2hlcnMvXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB5cGlUcnVzdGVkUHVibGlzaGluZz86IGJvb2xlYW47XG59XG5cbmNvbnN0IGdldE1hdmVuTmFtZSA9IChwcm92aWRlck5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBbXCJudWxsXCIsIFwicmFuZG9tXCJdLmluY2x1ZGVzKHByb3ZpZGVyTmFtZSlcbiAgICA/IGAke3Byb3ZpZGVyTmFtZX1fcHJvdmlkZXJgXG4gICAgOiBwcm92aWRlck5hbWUucmVwbGFjZSgvLS9naSwgXCJfXCIpO1xufTtcblxuY29uc3QgZ2l0aHViQWN0aW9uUGlubmVkVmVyc2lvbnMgPSB7XG4gIFwiYWN0aW9ucy9jaGVja291dFwiOiBcImRlMGZhYzJlNDUwMGRhYmUwMDA5ZTY3MjE0ZmY1ZjU0NDdjZTgzZGRcIiwgLy8gdjYuMC4yXG4gIFwiYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdFwiOiBcIjNlNWY0NWIyY2ZiOTE3MjA1NGI0MDg3YTQwZThlMGI1YTU0NjFlN2NcIiwgLy8gdjguMC4xXG4gIFwiYWN0aW9ucy9naXRodWItc2NyaXB0XCI6IFwiZWQ1OTc0MTFkOGY5MjQwNzNmOThkZmM1YzY1YTIzYTIzMjVmMzRjZFwiLCAvLyB2OC4wLjBcbiAgXCJhY3Rpb25zL3NldHVwLWRvdG5ldFwiOiBcImMyZmEwOWY0YmRlNWViYjlkMTc3N2NmMjgyNjJhM2ViM2RiM2NlZDdcIiwgLy8gdjUuMi4wXG4gIFwiYWN0aW9ucy9zZXR1cC1nb1wiOiBcIjRhMzYwMTEyMWRkMDFkMTYyNmExZTIzZTM3MjExZTMyNTRjMWMwNmNcIiwgLy8gdjYuNC4wXG4gIFwiYWN0aW9ucy9zZXR1cC1qYXZhXCI6IFwiYmU2NjZjMmZjZDI3ZWM4MDk3MDNkZWM1MGU1MDhjMmZkYzdmNjY1NFwiLCAvLyB2NS4yLjBcbiAgXCJhY3Rpb25zL3NldHVwLW5vZGVcIjogXCI0OGI1NWEwMTFiZGE5ZjVkNmFlYjRjMmQ5YzczNjJlOGRhZTQwNDFlXCIsIC8vIHY2LjQuMFxuICBcImFjdGlvbnMvc2V0dXAtcHl0aG9uXCI6IFwiYTMwOWZmOGI0MjZiNThlYzBlMmE0NWYwZjg2OWQ0Njg4OWQwMjQwNVwiLCAvLyB2Ni4yLjBcbiAgXCJhY3Rpb25zL3N0YWxlXCI6IFwiYjVkNDFkNGUxZDVkY2VlYTEwZTcxMDQ3ODZiNzM2MjRjMThhMTkwZlwiLCAvLyB2MTAuMi4wXG4gIFwiYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RcIjogXCIwNDNmYjQ2ZDFhOTNjNzdhYWU2NTZlN2MxYzY0YTg3NWQxZmM2YTBhXCIsIC8vIHY3LjAuMVxuICBcImFtYW5ubi9hY3Rpb24tc2VtYW50aWMtcHVsbC1yZXF1ZXN0XCI6XG4gICAgXCI0OGYyNTYyODRiZDQ2Y2RhYWIxMDQ4YzM3MjEzNjBlODA4MzM1ZDUwXCIsIC8vIHY2LjEuMVxuICBcImRlc3NhbnQvbG9jay10aHJlYWRzXCI6IFwiNzI2NmE3Y2U1YzFkZjAxYjFjNmRiODViZjhjZDg2YzczN2RhZGJlN1wiLCAvLyB2Ni4wLjBcbiAgXCJoYXNoaWNvcnAvc2V0dXAtY29weXdyaXRlXCI6IFwiMzI2MzhkYTJkNGU4MWQ1NmEwNzY0YWExNTQ3ODgyZmM0ZDIwOTYzNlwiLCAvLyB2MS4xLjNcbiAgXCJoYXNoaWNvcnAvc2V0dXAtdGVycmFmb3JtXCI6IFwiNWU4ZGJmM2M2ZDlkZWFmNDE5M2NhN2E4ZmIyM2YyYWM4M2JiNmM4NVwiLCAvLyB2NC4wLjBcbiAgXCJpbWpvaG5iby9pc3N1ZS1ib3RcIjogXCIzMTg4YzZjZTA2MjQ5MjA2NzA5ZDNiMWYyNzRkMGQ0YzVhNTIxNjAxXCIsIC8vIHYzLjQuNVxuICBcInBldGVyLWV2YW5zL2NyZWF0ZS1wdWxsLXJlcXVlc3RcIjogXCI1ZjY5NzhmYWYwODlkNGQyMGIwMGM3NzY2OTg5ZDA3NmJiMmZjN2YxXCIsIC8vIHY4LjEuMVxuICBcInNsYWNrYXBpL3NsYWNrLWdpdGh1Yi1hY3Rpb25cIjogXCI0NWE4OGI5NTgxYmZhYjI1NjZkYzg4MWUyY2Q2NmQzMzRlNjIxZTJjXCIsIC8vIHYzLjAuM1xuICBcImFjdGlvbnMvY3JlYXRlLWdpdGh1Yi1hcHAtdG9rZW5cIjogXCIyOTgyNGU2OWY1NDYxMjEzM2U3NmY3ZWFhYzcyNmVlZjZjODc1YmFmXCIsIC8vIHYyLjIuMVxuICAvLyBwcm9qZW4gZW1pdHMgdGhpcyB1bnBpbm5lZCBhcyBgcG5wbS9hY3Rpb24tc2V0dXBAdjVgIG9uY2UgcGFja2FnZU1hbmFnZXIgaXMgcG5wbVxuICBcInBucG0vYWN0aW9uLXNldHVwXCI6IFwiZmMwNmJjMTI1N2YzMzlkMWQ1ZDhiM2ExOWE4Y2FlNTM4OGI1NTMyMFwiLCAvLyB2NVxufTtcblxuZXhwb3J0IGNsYXNzIENka3RuUHJvdmlkZXJQcm9qZWN0IGV4dGVuZHMgY2RrLkpzaWlQcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2RrdG5Qcm92aWRlclByb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgY2RrdG5WZXJzaW9uID0gb3B0aW9ucy5jZGt0blZlcnNpb24gPz8gb3B0aW9ucy5jZGt0ZlZlcnNpb247XG4gICAgYXNzZXJ0KFxuICAgICAgY2RrdG5WZXJzaW9uLFxuICAgICAgXCJFaXRoZXIgY2RrdG5WZXJzaW9uIG9yIGNka3RmVmVyc2lvbiBtdXN0IGJlIHByb3ZpZGVkXCJcbiAgICApO1xuXG4gICAgY29uc3Qge1xuICAgICAgdGVycmFmb3JtUHJvdmlkZXIsXG4gICAgICB3b3JrZmxvd0NvbnRhaW5lckltYWdlLFxuICAgICAgY29uc3RydWN0c1ZlcnNpb24sXG4gICAgICBtaW5Ob2RlVmVyc2lvbixcbiAgICAgIGpzaWlWZXJzaW9uLFxuICAgICAgdHlwZXNjcmlwdFZlcnNpb24sXG4gICAgICBpc0RlcHJlY2F0ZWQsXG4gICAgICBkZXByZWNhdGlvbkRhdGUsXG4gICAgICAvLyBUT0RPOiBDb25maXJtIGRlZmF1bHQgQXV0aG9yIE5hbWVcbiAgICAgIGF1dGhvck5hbWUgPSBcIkNESyBUZXJyYWluIE1haW50YWluZXJzXCIsXG4gICAgICBhdXRob3JBZGRyZXNzID0gXCJodHRwczovL2Nka3RuLmlvXCIsXG4gICAgICBuYW1lc3BhY2UgPSBcImNka3RuXCIsXG4gICAgICBnaXRodWJOYW1lc3BhY2UgPSBcImNka3RuLWlvXCIsXG4gICAgICBudWdldE9yZyA9IFwiSW8uQ2RrdG5cIixcbiAgICAgIG1hdmVuT3JnID0gXCJjZGt0blwiLFxuICAgICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmcsXG4gICAgICBweXBpVHJ1c3RlZFB1Ymxpc2hpbmcsXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBbZnFwcm92aWRlck5hbWUsIHByb3ZpZGVyVmVyc2lvbl0gPSB0ZXJyYWZvcm1Qcm92aWRlci5zcGxpdChcIkBcIik7XG4gICAgY29uc3QgcHJvdmlkZXJOYW1lID0gZnFwcm92aWRlck5hbWUuc3BsaXQoXCIvXCIpLnBvcCgpO1xuICAgIGFzc2VydChwcm92aWRlck5hbWUsIGAke3RlcnJhZm9ybVByb3ZpZGVyfSBkb2Vzbid0IHNlZW0gdG8gYmUgdmFsaWRgKTtcbiAgICBhc3NlcnQoXG4gICAgICAhcHJvdmlkZXJOYW1lLmVuZHNXaXRoKFwiLWdvXCIpLFxuICAgICAgXCJwcm92aWRlck5hbWUgbWF5IG5vdCBlbmQgd2l0aCAnLWdvJyBhcyB0aGlzIGNhbiBjb25mbGljdCB3aXRoIHJlcG9zIGZvciBnbyBwYWNrYWdlc1wiXG4gICAgKTtcblxuICAgIGNvbnN0IG51Z2V0TmFtZSA9IGAke251Z2V0T3JnfS5Qcm92aWRlcnMuJHtwYXNjYWxDYXNlKHByb3ZpZGVyTmFtZSl9YDtcbiAgICBjb25zdCBtYXZlbkdyb3VwSWQgPSBvcHRpb25zLm1hdmVuR3JvdXBJZCA/PyBgaW8uJHttYXZlbk9yZ31gO1xuICAgIGNvbnN0IG1hdmVuTmFtZSA9IGAke21hdmVuR3JvdXBJZH0ucHJvdmlkZXJzLiR7Z2V0TWF2ZW5OYW1lKHByb3ZpZGVyTmFtZSl9YDtcbiAgICBjb25zdCByZXBvc2l0b3J5ID0gYCR7Z2l0aHViTmFtZXNwYWNlfS8ke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgIC8tL2csXG4gICAgICBcIlwiXG4gICAgKX1gO1xuICAgIGNvbnN0IHJlcG9zaXRvcnlVcmwgPSBgZ2l0aHViLmNvbS8ke3JlcG9zaXRvcnl9YDtcblxuICAgIGNvbnN0IHBhY2thZ2VJbmZvOiBQYWNrYWdlSW5mbyA9IHtcbiAgICAgIG5wbToge1xuICAgICAgICBuYW1lOiBgQCR7bmFtZXNwYWNlfS9wcm92aWRlci0ke3Byb3ZpZGVyTmFtZX1gLFxuICAgICAgfSxcbiAgICAgIHB5dGhvbjoge1xuICAgICAgICAvLyBkaXN0TmFtZTogYCR7Z2l0aHViTmFtZXNwYWNlfS0ke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgICAgZGlzdE5hbWU6IGAke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZSgvLS9naSwgXCJfXCIpfWAsXG4gICAgICAgIC8vIG1vZHVsZTogYCR7Z2l0aHViTmFtZXNwYWNlfV8ke25hbWVzcGFjZX1fcHJvdmlkZXJfJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgICAgbW9kdWxlOiBgJHtuYW1lc3BhY2V9X3Byb3ZpZGVyXyR7cHJvdmlkZXJOYW1lLnJlcGxhY2UoLy0vZ2ksIFwiX1wiKX1gLFxuICAgICAgICB0cnVzdGVkUHVibGlzaGluZzogcHlwaVRydXN0ZWRQdWJsaXNoaW5nID8/IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHB1Ymxpc2hUb051Z2V0OiB7XG4gICAgICAgIGRvdE5ldE5hbWVzcGFjZTogbnVnZXROYW1lLFxuICAgICAgICBwYWNrYWdlSWQ6IG51Z2V0TmFtZSxcbiAgICAgIH0sXG4gICAgICBwdWJsaXNoVG9NYXZlbjoge1xuICAgICAgICBqYXZhUGFja2FnZTogbWF2ZW5OYW1lLFxuICAgICAgICBtYXZlbkdyb3VwSWQ6IG1hdmVuR3JvdXBJZCxcbiAgICAgICAgbWF2ZW5BcnRpZmFjdElkOiBgJHtuYW1lc3BhY2V9LXByb3ZpZGVyLSR7cHJvdmlkZXJOYW1lfWAsXG4gICAgICB9LFxuICAgICAgcHVibGlzaFRvR286IHtcbiAgICAgICAgbW9kdWxlTmFtZTogYCR7cmVwb3NpdG9yeVVybH0tZ29gLFxuICAgICAgICBnaXRVc2VyRW1haWw6IFwiZ2l0aHViLXRlYW0tY2RrLXRlcnJhaW5AY2RrdG4uaW9cIixcbiAgICAgICAgZ2l0VXNlck5hbWU6IFwidGVhbS1jZGstdGVycmFpblwiLFxuICAgICAgICBwYWNrYWdlTmFtZTogcHJvdmlkZXJOYW1lLnJlcGxhY2UoLy0vZywgXCJcIiksXG4gICAgICAgIC8vIEluIG9yZGVyIHRvIHVzZSB0aGUgY29weXdyaXRlIGFjdGlvbiwgd2UgbmVlZCB0byByZWJ1aWxkIHRoZSBmdWxsIHByZS1wdWJsaXNoIHN0ZXBzIHdvcmtmbG93IHVuZm9ydHVuYXRlbHlcbiAgICAgICAgLy8gSWYgc29tZW9uZSBrbm93cyBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyBtdXRhdGlvbiB3aXRoIG1pbmltYWwgY3VzdG9tIGNvZGUsIHBsZWFzZSBkbyBzb1xuICAgICAgICBwcmVQdWJsaXNoU3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNoZWNrb3V0XCIsXG4gICAgICAgICAgICB1c2VzOiBcImFjdGlvbnMvY2hlY2tvdXRcIixcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgcGF0aDogXCIucmVwb1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiSW5zdGFsbCBEZXBlbmRlbmNpZXNcIixcbiAgICAgICAgICAgIHJ1bjogXCJjZCAucmVwbyAmJiB5YXJuIGluc3RhbGwgLS1jaGVjay1maWxlcyAtLWZyb3plbi1sb2NrZmlsZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJFeHRyYWN0IGJ1aWxkIGFydGlmYWN0XCIsXG4gICAgICAgICAgICBydW46IFwidGFyIC0tc3RyaXAtY29tcG9uZW50cz0xIC14enZmIGRpc3QvanMvKi50Z3ogLUMgLnJlcG9cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiTW92ZSBidWlsZCBhcnRpZmFjdCBvdXQgb2YgdGhlIHdheVwiLFxuICAgICAgICAgICAgcnVuOiBcIm12IGRpc3QgZGlzdC5vbGRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ3JlYXRlIGdvIGFydGlmYWN0XCIsXG4gICAgICAgICAgICBydW46IFwiY2QgLnJlcG8gJiYgbnB4IHByb2plbiBwYWNrYWdlOmdvXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlNldHVwIENvcHl3cml0ZSB0b29sXCIsXG4gICAgICAgICAgICB1c2VzOiBcImhhc2hpY29ycC9zZXR1cC1jb3B5d3JpdGVcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29weSBjb3B5d3JpdGUgaGNsIGZpbGVcIixcbiAgICAgICAgICAgIHJ1bjogXCJjcCAucmVwby8uY29weXdyaXRlLmhjbCAucmVwby9kaXN0L2dvLy5jb3B5d3JpdGUuaGNsXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkFkZCBoZWFkZXJzIHVzaW5nIENvcHl3cml0ZSB0b29sXCIsXG4gICAgICAgICAgICBydW46IFwiY2QgLnJlcG8vZGlzdC9nbyAmJiBjb3B5d3JpdGUgaGVhZGVyc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSZW1vdmUgY29weXdyaXRlIGhjbCBmaWxlXCIsXG4gICAgICAgICAgICBydW46IFwicm0gLWYgLnJlcG8vZGlzdC9nby8uY29weXdyaXRlLmhjbFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSZW1vdmUgc29tZSB0ZXh0IGZyb20gdGhlIFJFQURNRSB0aGF0IGRvZXNuJ3QgYXBwbHkgdG8gR29cIixcbiAgICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgICBcInNlZCAtaSAncy8jIENES1ROIHByZWJ1aWx0IGJpbmRpbmdzIGZvci8jIENES1ROIEdvIGJpbmRpbmdzIGZvci8nIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRcIixcbiAgICAgICAgICAgICAgLy8gQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDk1MTE5NDlcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgICAgICBgc2VkIC1pIC1lICcvIyMgJHtpc0RlcHJlY2F0ZWQgPyBcIkRlcHJlY2F0ZWRcIiA6IFwiQXZhaWxhYmxlXCJ9IFBhY2thZ2VzLywvIyMjIEdvLyFiJyAtZSAnLyMjIyBHby8hZDtwOyBzLyMjIyBHby8jIyBHbyBQYWNrYWdlLycgLWUgJ2QnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBzZWQgLWUgaXMgYmxhY2sgbWFnaWMgYW5kIGZvciB3aGF0ZXZlciByZWFzb24gdGhlIHN0cmluZyByZXBsYWNlIGRvZXNuJ3Qgd29yayBzbyBsZXQncyB0cnkgaXQgYWdhaW46XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuICAgICAgICAgICAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICAgICAgICAgICAgYHNlZCAtaSAncy8jIyMgR28vIyMgJHtpc0RlcHJlY2F0ZWQgPyBcIkRlcHJlY2F0ZWRcIiA6IFwiR29cIn0gUGFja2FnZS8nIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBKdXN0IHN0cmFpZ2h0IHVwIGRlbGV0ZSB0aGVzZSBmdWxsIGxpbmVzIGFuZCBldmVyeXRoaW5nIGluIGJldHdlZW4gdGhlbTpcbiAgICAgICAgICAgICAgXCJzZWQgLWkgLWUgJy9BUEkudHlwZXNjcmlwdC5tZC8sL1lvdSBjYW4gYWxzbyB2aXNpdCBhIGhvc3RlZCB2ZXJzaW9uLyFiJyAtZSAnZCcgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZFwiLFxuICAgICAgICAgICAgICBgc2VkIC1pICdzfEZpbmQgYXV0by1nZW5lcmF0ZWQgZG9jcyBmb3IgdGhpcyBwcm92aWRlciBoZXJlOnxGaW5kIGF1dG8tZ2VuZXJhdGVkIGRvY3MgZm9yIHRoaXMgcHJvdmlkZXIgW2hlcmVdKGh0dHBzOi8vJHtyZXBvc2l0b3J5VXJsfS9ibG9iL21haW4vZG9jcy9BUEkuZ28ubWQpLnwnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBKdXN0IHN0cmFpZ2h0IHVwIGRlbGV0ZSB0aGVzZSBmdWxsIGxpbmVzIGFuZCBldmVyeXRoaW5nIGluIGJldHdlZW4gdGhlbTpcbiAgICAgICAgICAgICAgXCJzZWQgLWkgLWUgJy8jIyMgUHJvdmlkZXIgVmVyc2lvbi8sL1RoZSBwcm92aWRlciB2ZXJzaW9uIGNhbiBiZSBhZGp1c3RlZC8hYicgLWUgJ2QnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRcIixcbiAgICAgICAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29weSB0aGUgUkVBRE1FIGZpbGUgdG8gdGhlIHBhcmVudCBkaXJlY3RvcnlcIixcbiAgICAgICAgICAgIHJ1bjogXCJjcCAucmVwby9kaXN0L2dvLyovUkVBRE1FLm1kIC5yZXBvL2Rpc3QvZ28vUkVBRE1FLm1kXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNvbGxlY3QgZ28gQXJ0aWZhY3RcIixcbiAgICAgICAgICAgIHJ1bjogXCJtdiAucmVwby9kaXN0IGRpc3RcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3Qgd29ya2Zsb3dSdW5zT24gPSBvcHRpb25zLnVzZUN1c3RvbUdpdGh1YlJ1bm5lclxuICAgICAgPyBbXCJkZXBvdC11YnVudHUtMjQuMDQtOFwiXSAvLyA4IGNvcmUsIDMyIEdCXG4gICAgICA6IFtcInVidW50dS1sYXRlc3RcIl07IC8vIDcgR0JcblxuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBhdXRob3JBZGRyZXNzLFxuICAgICAgYXV0aG9yTmFtZSxcbiAgICAgIG1pbk5vZGVWZXJzaW9uLFxuICAgICAgd29ya2Zsb3dDb250YWluZXJJbWFnZSxcbiAgICAgIHdvcmtmbG93UnVuc09uLFxuICAgICAgbGljZW5zZWQ6IGZhbHNlLCAvLyB3ZSBkbyBzdXBwbHkgb3VyIG93biBsaWNlbnNlIGZpbGUgd2l0aCBhIGN1c3RvbSBoZWFkZXJcbiAgICAgIHJlbGVhc2VUb05wbTogdHJ1ZSxcbiAgICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nOiBucG1UcnVzdGVkUHVibGlzaGluZyA/PyBmYWxzZSxcbiAgICAgIG5hbWU6IHBhY2thZ2VJbmZvLm5wbS5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGBQcmVidWlsdCAke3Byb3ZpZGVyTmFtZX0gUHJvdmlkZXIgZm9yIENESyBUZXJyYWluIChjZGt0bilgLFxuICAgICAga2V5d29yZHM6IFtcbiAgICAgICAgXCJjZGt0blwiLFxuICAgICAgICBcImNkay10ZXJyYWluXCIsXG4gICAgICAgIFwiY2RrdGZcIixcbiAgICAgICAgXCJ0ZXJyYWZvcm1cIixcbiAgICAgICAgXCJvcGVudG9mdVwiLFxuICAgICAgICBcImNka1wiLFxuICAgICAgICBcInByb3ZpZGVyXCIsXG4gICAgICAgIHByb3ZpZGVyTmFtZSxcbiAgICAgIF0sXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgYXV0aG9yT3JnYW5pemF0aW9uOiB0cnVlLFxuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxuICAgICAgcmVwb3NpdG9yeTogYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3JlcG9zaXRvcnl9LmdpdGAsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgcGFja2FnZU1hbmFnZXI6IE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNLFxuICAgICAgLy8gUHJvdmlkZXIgcmVwb3MgcnVuIGpzaWktcGFjbWFrIG92ZXIgYnVuZGxlZCBkZXBzIGV4YWN0bHkgYXMgdGhpcyBwcm9qZWN0XG4gICAgICAvLyBkb2VzLCBzbyB0aGV5IG5lZWQgdGhlIGhvaXN0ZWQgbGlua2VyIHRvbyAtLSBzZWUgdGhlIG5vdGUgaW4gLnByb2plbnJjLnRzLlxuICAgICAgLy8gSXQgbXVzdCBiZSBpbiBwbnBtLXdvcmtzcGFjZS55YW1sLCBub3QgLm5wbXJjLCBvciBwbnBtIDExIGlnbm9yZXMgaXQuXG4gICAgICBwbnBtT3B0aW9uczoge1xuICAgICAgICB3b3Jrc3BhY2VZYW1sT3B0aW9uczoge1xuICAgICAgICAgIG5vZGVMaW5rZXI6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZUxpbmtlci5IT0lTVEVELFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGRlcHNVcGdyYWRlOiAhaXNEZXByZWNhdGVkLFxuICAgICAgZGVwc1VwZ3JhZGVPcHRpb25zOiB7XG4gICAgICAgIGNvb2xkb3duOiA0LFxuICAgICAgICB3b3JrZmxvd09wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbHM6IFtcImF1dG9tZXJnZVwiLCBcImF1dG8tYXBwcm92ZVwiLCBcImRlcGVuZGVuY2llc1wiXSxcbiAgICAgICAgICBzY2hlZHVsZTogVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlLldFRUtMWSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhdWRpdERlcHM6ICFpc0RlcHJlY2F0ZWQsXG4gICAgICBhdWRpdERlcHNPcHRpb25zOiB7XG4gICAgICAgIGxldmVsOiBcImhpZ2hcIixcbiAgICAgICAgcnVuT246IFwiYnVpbGRcIixcbiAgICAgIH0sXG4gICAgICBwdWJsaXNoVG9QeXBpOiBwYWNrYWdlSW5mby5weXRob24sXG4gICAgICBwdWJsaXNoVG9OdWdldDogcGFja2FnZUluZm8ucHVibGlzaFRvTnVnZXQsXG4gICAgICBwdWJsaXNoVG9NYXZlbjogcGFja2FnZUluZm8ucHVibGlzaFRvTWF2ZW4sXG4gICAgICBwdWJsaXNoVG9HbzogcGFja2FnZUluZm8ucHVibGlzaFRvR28sXG4gICAgICByZWxlYXNlRmFpbHVyZUlzc3VlOiB0cnVlLFxuICAgICAgcGVlckRlcGVuZGVuY3lPcHRpb25zOiB7XG4gICAgICAgIHBpbm5lZERldkRlcGVuZGVuY3k6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHdvcmtmbG93R2l0SWRlbnRpdHk6IHtcbiAgICAgICAgbmFtZTogXCJ0ZWFtLWNkay10ZXJyYWluXCIsXG4gICAgICAgIGVtYWlsOiBcImdpdGh1Yi10ZWFtLWNkay10ZXJyYWluQGNka3RuLmlvXCIsXG4gICAgICB9LFxuICAgICAgbWluTWFqb3JWZXJzaW9uOiBNSU5fTUFKT1JfVkVSU0lPTixcbiAgICAgIHN0YWxlOiB0cnVlLFxuICAgICAgc3RhbGVPcHRpb25zOiB7XG4gICAgICAgIGlzc3Vlczoge1xuICAgICAgICAgIHN0YWxlTGFiZWw6IFwic3RhbGVcIixcbiAgICAgICAgICBkYXlzQmVmb3JlU3RhbGU6IDQ1LFxuICAgICAgICAgIHN0YWxlTWVzc2FnZTpcbiAgICAgICAgICAgIFwiNDUgZGF5cyBoYXZlIHBhc3NlZCBzaW5jZSB0aGlzIGlzc3VlIHdhcyBvcGVuZWQsIGFuZCBJIGFzc3VtZSBvdGhlciBwdWJsaXNoZXMgaGF2ZSBzdWNjZWVkZWQgaW4gdGhlIG1lYW50aW1lLiBcIiArXG4gICAgICAgICAgICBcIklmIG5vIG9uZSByZW1vdmVzIHRoZSBgc3RhbGVgIGxhYmVsIG9yIGNvbW1lbnRzLCBJJ20gZ29pbmcgdG8gYXV0by1jbG9zZSB0aGlzIGlzc3VlIGluIDE0IGRheXMuXCIsXG4gICAgICAgICAgZGF5c0JlZm9yZUNsb3NlOiAxNCxcbiAgICAgICAgICBjbG9zZU1lc3NhZ2U6XG4gICAgICAgICAgICBcIjIgbW9udGhzIGhhdmUgcGFzc2VkLCBzbyBJJ20gY2xvc2luZyB0aGlzIGlzc3VlIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCBvdGhlciBwdWJsaXNoZXMgaGF2ZSBzdWNjZWVkZWQgaW4gdGhlIG1lYW50aW1lLlwiLFxuICAgICAgICB9LFxuICAgICAgICBwdWxsUmVxdWVzdDoge1xuICAgICAgICAgIHN0YWxlTGFiZWw6IFwic3RhbGVcIixcbiAgICAgICAgICBkYXlzQmVmb3JlU3RhbGU6IDEsXG4gICAgICAgICAgc3RhbGVNZXNzYWdlOiBgQ2xvc2luZyB0aGlzIFBSLCBpZiBpdCBoYXMgbm90IG1lcmdlZCB0aGVyZSBpcyBtb3N0IGxpa2VseSBhIENJIG9yIENES1ROIGlzc3VlIHByZXZlbnRpbmcgaXQgZnJvbSBtZXJnaW5nLiBJZiB0aGlzIGhhcyBiZWVuIGEgbWFudWFsIFBSLCBwbGVhc2UgcmVvcGVuIGl0IGFuZCBhZGQgdGhlIFxcYG5vLWF1dG8tY2xvc2VcXGAgbGFiZWwgdG8gcHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nIGFnYWluLmAsXG4gICAgICAgICAgZGF5c0JlZm9yZUNsb3NlOiAwLFxuICAgICAgICAgIGV4ZW1wdExhYmVsczogW1wibm8tYXV0by1jbG9zZVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwdWxsUmVxdWVzdFRlbXBsYXRlOiBmYWxzZSxcbiAgICAgIGRvY2dlbjogZmFsc2UsXG4gICAgICBnaXRodWJPcHRpb25zOiB7XG4gICAgICAgIHByb2plbkNyZWRlbnRpYWxzOiBnaXRodWIuR2l0aHViQ3JlZGVudGlhbHMuZnJvbUFwcCgpLFxuICAgICAgICAvLyBwcm9qZW4gPj0wLjEwMCBtb3ZlZCB0aGUgYG1lcmdpZnlgIHByb2plY3Qgb3B0aW9uIHVuZGVyIGdpdGh1Yk9wdGlvbnNcbiAgICAgICAgbWVyZ2lmeTogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGREZXZEZXBzKFxuICAgICAgXCJkb3QtcHJvcEBeNS4yLjBcIixcbiAgICAgIFwiQGFjdGlvbnMvY29yZUBeMS4xLjBcIixcbiAgICAgIFwiQGFjdGlvbi12YWxpZGF0b3IvY29yZVwiLFxuICAgICAgXCJAYWN0aW9uLXZhbGlkYXRvci9jbGlcIlxuICAgICk7XG5cbiAgICAvLyBEZWZhdWx0IG1lbW9yeSBpcyA3R0I6IGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvdXNpbmctZ2l0aHViLWhvc3RlZC1ydW5uZXJzL2Fib3V0LWdpdGh1Yi1ob3N0ZWQtcnVubmVycyNzdXBwb3J0ZWQtcnVubmVycy1hbmQtaGFyZHdhcmUtcmVzb3VyY2VzXG4gICAgLy8gQ3VzdG9tIFJ1bm5lcnMgd2UgdXNlIGhhdmUgMzJHQiBvZiBtZW1vcnlcbiAgICAvLyBUaGUgYmVsb3cgbnVtYmVycyBzZXQgaGVhcCBsaW1pdHMgdGhhdCBhcmUgfjFnYiBhbmQgfjAuNWdiIGxlc3MsIHJlc3BlY3RpdmVseSwgdGhhbiB0aGUgdG90YWwgYXZhaWxhYmxlIG1lbW9yeVxuICAgIGNvbnN0IG1heE9sZFNwYWNlU2l6ZSA9IG9wdGlvbnMudXNlQ3VzdG9tR2l0aHViUnVubmVyID8gXCIzMTc0NFwiIDogXCI2NjU2XCI7XG5cbiAgICAvLyBHb2xhbmcgbmVlZHMgbW9yZSBtZW1vcnkgdG8gYnVpbGRcbiAgICB0aGlzLnRhc2tzLmFkZEVudmlyb25tZW50KFxuICAgICAgXCJOT0RFX09QVElPTlNcIixcbiAgICAgIGAtLW1heC1vbGQtc3BhY2Utc2l6ZT0ke21heE9sZFNwYWNlU2l6ZX1gXG4gICAgKTtcblxuICAgIHRoaXMudGFza3MuYWRkRW52aXJvbm1lbnQoXCJDSEVDS1BPSU5UX0RJU0FCTEVcIiwgXCIxXCIpO1xuXG4gICAgY29uc3QgdmFsaWRhdGVUYXNrID0gdGhpcy5hZGRUYXNrKFwidmFsaWRhdGUtd29ya2Zsb3dzXCIsIHtcbiAgICAgIGV4ZWM6IGBmaW5kIC4vLmdpdGh1Yi93b3JrZmxvd3MgLXR5cGUgZiAtbmFtZSBcIioueW1sXCIgLXByaW50MCB8IHhhcmdzIC0wIC1uIDEgbnB4IGFjdGlvbi12YWxpZGF0b3JgLFxuICAgIH0pO1xuICAgIHZhbGlkYXRlVGFzay5kZXNjcmlwdGlvbiA9XG4gICAgICBcIkxpbnQgdGhlIFlBTUwgZmlsZXMgZ2VuZXJhdGVkIGJ5IFByb2plbiB0byBkZWZpbmUgR2l0SHViIEFjdGlvbnMgYW5kIFdvcmtmbG93cywgY2hlY2tpbmcgdGhlbSBhZ2FpbnN0IHB1Ymxpc2hlZCBKU09OIHNjaGVtYXNcIjtcbiAgICB0aGlzLnBvc3RDb21waWxlVGFzay5zcGF3bih2YWxpZGF0ZVRhc2spO1xuXG4gICAgdGhpcy5wYWNrYWdlLmFkZFBhY2thZ2VSZXNvbHV0aW9ucyhcIkB0eXBlcy95YXJnc0AxNy4wLjEzXCIpO1xuXG4gICAgY29uc3Qgc2V0U2FmZURpcmVjdG9yeSA9IHtcbiAgICAgIG5hbWU6IFwiU2V0IGdpdCBjb25maWcgc2FmZS5kaXJlY3RvcnlcIixcbiAgICAgIHJ1bjogXCJnaXQgY29uZmlnIC0tZ2xvYmFsIC0tYWRkIHNhZmUuZGlyZWN0b3J5ICQocHdkKVwiLFxuICAgIH07XG5cbiAgICAoKHRoaXMuYnVpbGRXb3JrZmxvdyBhcyBhbnkpLnByZUJ1aWxkU3RlcHMgYXMgSm9iU3RlcFtdKS5wdXNoKFxuICAgICAgc2V0U2FmZURpcmVjdG9yeVxuICAgICk7XG4gICAgKHRoaXMucmVsZWFzZSBhcyBhbnkpLmRlZmF1bHRCcmFuY2gud29ya2Zsb3cuam9icy5yZWxlYXNlLnN0ZXBzLnNwbGljZShcbiAgICAgIDEsXG4gICAgICAwLFxuICAgICAgc2V0U2FmZURpcmVjdG9yeVxuICAgICk7XG5cbiAgICAvLyBhbHdheXMgcHVibGlzaCBhIG5ldyBHaXRIdWIgcmVsZWFzZSwgZXZlbiB3aGVuIHB1Ymxpc2hpbmcgdG8gYSBwYXJ0aWN1bGFyIHBhY2thZ2UgbWFuYWdlciBmYWlsc1xuICAgIGNvbnN0IHJlbGVhc2VXb3JrZmxvdyA9IHRoaXMudHJ5RmluZE9iamVjdEZpbGUoXG4gICAgICBcIi5naXRodWIvd29ya2Zsb3dzL3JlbGVhc2UueW1sXCJcbiAgICApO1xuICAgIHJlbGVhc2VXb3JrZmxvdz8uYWRkT3ZlcnJpZGUoXCJqb2JzLnJlbGVhc2VfZ2l0aHViLm5lZWRzXCIsIFwicmVsZWFzZVwiKTtcblxuICAgIC8vIFRydXN0ZWQgcHVibGlzaGluZyByZXF1aXJlcyBucG0gPj0xMS41LjEgd2hpY2ggc2hpcHMgd2l0aCBOb2RlIDI0XG4gICAgaWYgKG5wbVRydXN0ZWRQdWJsaXNoaW5nKSB7XG4gICAgICB0aGlzLmdpdGh1YlxuICAgICAgICA/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIilcbiAgICAgICAgPy5maWxlPy5wYXRjaChcbiAgICAgICAgICBKc29uUGF0Y2gucmVwbGFjZShcbiAgICAgICAgICAgIFwiL2pvYnMvcmVsZWFzZV9ucG0vc3RlcHMvMC93aXRoL25vZGUtdmVyc2lvblwiLFxuICAgICAgICAgICAgXCIyNC54XCJcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgIC8vIE5QTSBPSURDIGRvZXNuJ3Qgc3VwcG9ydCBzZWxmLWhvc3RlZCBydW5uZXJzIHlldFxuICAgICAgdGhpcy5naXRodWJcbiAgICAgICAgPy50cnlGaW5kV29ya2Zsb3coXCJyZWxlYXNlXCIpXG4gICAgICAgID8uZmlsZT8ucGF0Y2goXG4gICAgICAgICAgSnNvblBhdGNoLnJlcGxhY2UoXCIvam9icy9yZWxlYXNlX25wbS9ydW5zLW9uXCIsIFwidWJ1bnR1LWxhdGVzdFwiKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIE5PVEU6IHJlbGVhc2VfcHlwaSBkZWxpYmVyYXRlbHkgc3RheXMgb24gd2hhdGV2ZXIgcnVubmVyIHRoZSBwcm9qZWN0IGlzXG4gICAgLy8gY29uZmlndXJlZCBmb3IuIFVubGlrZSBucG0sIFB5UEkgcGxhY2VzIG5vIHJlc3RyaWN0aW9uIG9uIHRoZSBydW5uZXJcbiAgICAvLyBlbnZpcm9ubWVudDogcHVibGliLXB5cGkgbWludHMgaXRzIHRva2VuIHdpdGggYHB5dGhvbjMgLW0gaWQgcHlwaWAgYWdhaW5zdFxuICAgIC8vIEFDVElPTlNfSURfVE9LRU5fUkVRVUVTVF9VUkwsIHdoaWNoIEdpdEh1YiBpbmplY3RzIG9uIGFueSBydW5uZXIgZ2l2ZW5cbiAgICAvLyBgaWQtdG9rZW46IHdyaXRlYCwgYW5kIFB5UEkncyB0cnVzdCBpcyBib3VuZCB0byB0aGUgd29ya2Zsb3cgcmVmLCBub3QgdGhlXG4gICAgLy8gcnVubmVyLiBGb3JjaW5nIHRoaXMgam9iIG9udG8gYSBob3N0ZWQgcnVubmVyIHdvdWxkIGFsc28gc3RyYW5kIGl0IHdpdGggdGhlXG4gICAgLy8gMzFHQiBOT0RFX09QVElPTlMgaGVhcCBjZWlsaW5nIHRoYXQgdXNlQ3VzdG9tR2l0aHViUnVubmVyIHdyaXRlcyBpbnRvXG4gICAgLy8gLnByb2plbi90YXNrcy5qc29uLCBvbiBhIGJveCB3aXRoIGZhciBsZXNzIFJBTSB0aGFuIHRoYXQgLS0gYW5kIHVubGlrZVxuICAgIC8vIHBhY2thZ2U6anMsIHBhY2thZ2U6cHl0aG9uIGlzIGEgcmVhbCBqc2lpLXBhY21hayB0cmFuc3BpbGUuXG5cbiAgICAvLyBlbnN1cmUgd2UgZG9uJ3QgZmFpbCBpZiB0aGUgcmVsZWFzZSBmaWxlIGlzIG5vdCBwcmVzZW50XG4gICAgY29uc3QgY2hlY2tFeGlzdGluZ1RhZ1N0ZXAgPSAoXG4gICAgICB0aGlzLnJlbGVhc2UgYXMgYW55XG4gICAgKS5kZWZhdWx0QnJhbmNoLndvcmtmbG93LmpvYnMucmVsZWFzZS5zdGVwcy5maW5kKFxuICAgICAgKHM6IG9iamVjdCkgPT4gXCJpZFwiIGluIHMgJiYgcy5pZCA9PT0gXCJjaGVja190YWdfZXhpc3RzXCJcbiAgICApO1xuICAgIGNvbnN0IG9sZEV4aXN0aW5nVGFnUnVuOiBzdHJpbmcgPSBjaGVja0V4aXN0aW5nVGFnU3RlcC5ydW47XG4gICAgcHJldHR5QXNzZXJ0RXF1YWwoXG4gICAgICBvbGRFeGlzdGluZ1RhZ1J1bi5zcGxpdChcIlxcblwiKVswXSxcbiAgICAgIFwiVEFHPSQoY2F0IGRpc3QvcmVsZWFzZXRhZy50eHQpXCIsXG4gICAgICBcInJlbGVhc2Ugc3RlcCBjaGFuZ2VkLCBwbGVhc2UgY2hlY2sgaWYgdGhlIHdvcmthcm91bmQgc3RpbGwgd29ya3MhXCJcbiAgICApO1xuICAgIGNoZWNrRXhpc3RpbmdUYWdTdGVwLnJ1biA9IGBpZiBbICEgLWYgZGlzdC9yZWxlYXNldGFnLnR4dCBdOyB0aGVuIChlY2hvIFwiZXhpc3RzPXRydWVcIiA+PiAkR0lUSFVCX09VVFBVVCkgJiYgZXhpdCAwOyBmaVxcbiR7b2xkRXhpc3RpbmdUYWdSdW59YDtcblxuICAgIGlmICghaXNEZXByZWNhdGVkKSB7XG4gICAgICBjb25zdCB7IHVwZ3JhZGUsIHByIH0gPSAodGhpcy51cGdyYWRlV29ya2Zsb3cgYXMgYW55KS53b3JrZmxvd3NbMF0uam9icztcbiAgICAgIHVwZ3JhZGUuc3RlcHMuc3BsaWNlKDEsIDAsIHNldFNhZmVEaXJlY3RvcnkpO1xuICAgICAgcHIuc3RlcHMuc3BsaWNlKDEsIDAsIHNldFNhZmVEaXJlY3RvcnkpO1xuICAgIH1cblxuICAgIC8vIHJlbGVhc2U6IEdvIOKAlCBwYXRjaCB0aGUgcmVsZWFzZSB3b3JrZmxvdydzIEdvIHB1Ymxpc2ggdG8gdXNlIGEgR2l0SHViXG4gICAgLy8gQXBwIGluc3RhbGxhdGlvbiB0b2tlbi5cbiAgICBjb25zdCBwYXRjaEdvUHVibGlzaFRvVXNlQXBwVG9rZW4gPSAod29ya2Zsb3dGaWxlPzogT2JqZWN0RmlsZSkgPT4ge1xuICAgICAgaWYgKCF3b3JrZmxvd0ZpbGUpIHJldHVybjtcbiAgICAgIGNvbnN0IGdvUHVibGlzaFRva2VuID0gZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21BcHAoe1xuICAgICAgICBhcHBJZFNlY3JldDogXCJQUk9KRU5fQVBQX0lEXCIsXG4gICAgICAgIHByaXZhdGVLZXlTZWNyZXQ6IFwiUFJPSkVOX0FQUF9QUklWQVRFX0tFWVwiLFxuICAgICAgICBvd25lcjogXCIke3sgZ2l0aHViLnJlcG9zaXRvcnlfb3duZXIgfX1cIixcbiAgICAgICAgcmVwb3NpdG9yaWVzOiBbXG4gICAgICAgICAgcGFja2FnZUluZm8ucHVibGlzaFRvR28/Lm1vZHVsZU5hbWU/LnNwbGl0KFwiL1wiKS5wb3AoKSA/PyBcIlwiLFxuICAgICAgICBdLFxuICAgICAgICBwZXJtaXNzaW9uczogeyBjb250ZW50czogZ2l0aHViLndvcmtmbG93cy5BcHBQZXJtaXNzaW9uLldSSVRFIH0sXG4gICAgICB9KTtcbiAgICAgIHdvcmtmbG93RmlsZS5wYXRjaChcbiAgICAgICAgSnNvblBhdGNoLmFkZChcbiAgICAgICAgICBcIi9qb2JzL3JlbGVhc2VfZ29sYW5nL3N0ZXBzLzE2XCIsXG4gICAgICAgICAgZ29QdWJsaXNoVG9rZW4uc2V0dXBTdGVwc1swXVxuICAgICAgICApLFxuICAgICAgICBKc29uUGF0Y2guYWRkKFxuICAgICAgICAgIFwiL2pvYnMvcmVsZWFzZV9nb2xhbmcvc3RlcHMvMTcvZW52L0dJVEhVQl9UT0tFTlwiLFxuICAgICAgICAgIC8vIEdpdEh1YiBBcHAgaW5zdGFsbGF0aW9uIHRva2VucyAoZ2hzXyopIHJlcXVpcmUgdGhlIGB4LWFjY2Vzcy10b2tlbmBcbiAgICAgICAgICAvLyB1c2VybmFtZSB3aGVuIHVzZWQgaW4gSFRUUFMgZ2l0IFVSTHMuIHB1YmxpYiByZW5kZXJzIHRoaXMgZW52IHZhclxuICAgICAgICAgIC8vIHZlcmJhdGltIGludG8gYGh0dHBzOi8vJHtHSVRIVUJfVE9LRU59QGdpdGh1Yi5jb20vLi4uYCwgc28gd2l0aG91dFxuICAgICAgICAgIC8vIHRoZSBwcmVmaXggdGhlIHB1c2ggNDAxcyBhbmQgZmFsbHMgYmFjayB0byBhIFRUWSBwYXNzd29yZCBwcm9tcHQuXG4gICAgICAgICAgYHgtYWNjZXNzLXRva2VuOiR7Z29QdWJsaXNoVG9rZW4udG9rZW5SZWZ9YFxuICAgICAgICApXG4gICAgICApO1xuICAgIH07XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgcGF0Y2hHb1B1Ymxpc2hUb1VzZUFwcFRva2VuKHJlbGVhc2VXb3JrZmxvdyk7XG4gICAgfVxuXG4gICAgLy8gRml4IG1hdmVuIGlzc3VlIChodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9wdWJsaWIvcHVsbC83NzcpXG4gICAgLy9cbiAgICAvLyBUaGUgcHVibGlzaCBqb2JzIGRvbid0IGV4aXN0IHVudGlsIFJlbGVhc2Ugc3ludGhlc2l6ZXMsIGFuZCB0aGUgc3RlcCdzIGluZGV4XG4gICAgLy8gd2l0aGluIHJlbGVhc2VfbWF2ZW4gc2hpZnRzIHdoZW5ldmVyIHRoZSBqb2IgZ2FpbnMgYSBzdGVwIC0tIHN3aXRjaGluZyB0aGVcbiAgICAvLyBwYWNrYWdlIG1hbmFnZXIgdG8gcG5wbSBpbnNlcnRzIGEgXCJTZXR1cCBwbnBtXCIgc3RlcCwgd2hpY2ggc2lsZW50bHkgbW92ZWQgdGhlXG4gICAgLy8gb2xkIGhhcmRjb2RlZCAvc3RlcHMvMTAvIG9udG8gYSBzdGVwIHdpdGggbm8gZW52IGF0IGFsbC4gUmVzb2x2ZSB0aGUgc3RlcCBieVxuICAgIC8vIHdoYXQgaXQgcnVucywgaW4gcHJlU3ludGhlc2l6ZSwgc28gbmVpdGhlciBwcm9ibGVtIGNhbiByZWN1ci5cbiAgICBuZXcgTWF2ZW5PcHRzUGF0Y2godGhpcyk7XG5cbiAgICB0aGlzLnBpbkdpdGh1YkFjdGlvblZlcnNpb25zKGdpdGh1YkFjdGlvblBpbm5lZFZlcnNpb25zKTtcblxuICAgIG5ldyBDZGt0ZkNvbmZpZyh0aGlzLCB7XG4gICAgICB0ZXJyYWZvcm1Qcm92aWRlcixcbiAgICAgIHByb3ZpZGVyTmFtZSxcbiAgICAgIGZxcHJvdmlkZXJOYW1lLFxuICAgICAgcHJvdmlkZXJWZXJzaW9uLFxuICAgICAgY2RrdG5WZXJzaW9uLFxuICAgICAgY29uc3RydWN0c1ZlcnNpb24sXG4gICAgICBqc2lpVmVyc2lvbixcbiAgICAgIHR5cGVzY3JpcHRWZXJzaW9uLFxuICAgICAgcGFja2FnZUluZm8sXG4gICAgICBnaXRodWJOYW1lc3BhY2UsXG4gICAgICBkZXByZWNhdGlvbkRhdGUsXG4gICAgICBpc0RlcHJlY2F0ZWQ6ICEhaXNEZXByZWNhdGVkLFxuICAgIH0pO1xuICAgIG5ldyBDdXN0b21pemVkTGljZW5zZSh0aGlzLCBvcHRpb25zLmNyZWF0aW9uWWVhciwgb3B0aW9ucy5saWNlbnNlZSk7XG4gICAgbmV3IEdpdGh1Yklzc3Vlcyh0aGlzLCB7IHByb3ZpZGVyTmFtZSB9KTtcbiAgICBuZXcgQXV0b0FwcHJvdmUodGhpcyk7XG4gICAgbmV3IEF1dG9DbG9zZUNvbW11bml0eUlzc3Vlcyh0aGlzLCB7IHByb3ZpZGVyTmFtZSB9KTtcbiAgICBuZXcgQXV0b21lcmdlKHRoaXMpO1xuICAgIG5ldyBMb2NrSXNzdWVzKHRoaXMpO1xuXG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIGNvbnN0IHVwZ3JhZGVTY3JpcHQgPSBuZXcgQ2hlY2tGb3JVcGdyYWRlc1NjcmlwdEZpbGUodGhpcywge1xuICAgICAgICBwcm92aWRlclZlcnNpb24sXG4gICAgICAgIGZxcHJvdmlkZXJOYW1lLFxuICAgICAgfSk7XG4gICAgICBuZXcgUHJvdmlkZXJVcGdyYWRlKHRoaXMsIHtcbiAgICAgICAgY2hlY2tGb3JVcGdyYWRlc1NjcmlwdFBhdGg6IHVwZ3JhZGVTY3JpcHQucGF0aCxcbiAgICAgICAgd29ya2Zsb3dSdW5zT24sXG4gICAgICAgIG5vZGVIZWFwU2l6ZTogbWF4T2xkU3BhY2VTaXplLFxuICAgICAgfSk7XG4gICAgICBuZXcgQWxlcnRPcGVuUHJzKHRoaXMsIHtcbiAgICAgICAgc2xhY2tXZWJob29rVXJsOiBcIiR7eyBzZWNyZXRzLkFMRVJUX1BSU19TTEFDS19XRUJIT09LX1VSTCB9fVwiLFxuICAgICAgICByZXBvc2l0b3J5LFxuICAgICAgfSk7XG4gICAgICBuZXcgRGVwZW5kYWJvdCh0aGlzKTtcbiAgICB9XG5cbiAgICBuZXcgVGV4dEZpbGUodGhpcywgXCIuZ2l0aHViL0NPREVPV05FUlNcIiwge1xuICAgICAgbGluZXM6IFtcbiAgICAgICAgXCIjIFRoZXNlIG93bmVycyB3aWxsIGJlIHRoZSBkZWZhdWx0IG93bmVycyBmb3IgZXZlcnl0aGluZyBpbiBcIixcbiAgICAgICAgXCIjIHRoZSByZXBvLiBVbmxlc3MgYSBsYXRlciBtYXRjaCB0YWtlcyBwcmVjZWRlbmNlLCBcIixcbiAgICAgICAgXCIjIHRoZXkgd2lsbCBiZSByZXF1ZXN0ZWQgZm9yIHJldmlldyB3aGVuIHNvbWVvbmUgb3BlbnMgYSBcIixcbiAgICAgICAgXCIjIHB1bGwgcmVxdWVzdC5cIixcbiAgICAgICAgXCIqICAgICAgIEBjZGt0bi1pby90ZWFtLWNkay10ZXJyYWluXCIsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIG5ldyBTaG91bGRSZWxlYXNlU2NyaXB0RmlsZSh0aGlzLCB7fSk7XG5cbiAgICAgIGNvbnN0IHJlbGVhc2VUYXNrID0gdGhpcy50YXNrcy50cnlGaW5kKFwicmVsZWFzZVwiKSE7XG4gICAgICB0aGlzLnJlbW92ZVRhc2soXCJyZWxlYXNlXCIpO1xuICAgICAgdGhpcy5hZGRUYXNrKFwicmVsZWFzZVwiLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiByZWxlYXNlVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgc3RlcHM6IHJlbGVhc2VUYXNrLnN0ZXBzLFxuICAgICAgICBlbnY6IChyZWxlYXNlVGFzayBhcyBhbnkpLl9lbnYsXG4gICAgICAgIGNvbmRpdGlvbjogXCJub2RlIC4vc2NyaXB0cy9zaG91bGQtcmVsZWFzZS5qc1wiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmFkZFRhc2soXCJ1bmNvbmRpdGlvbmFsLXJlbGVhc2VcIiwge1xuICAgICAgICBkZXNjcmlwdGlvbjogcmVsZWFzZVRhc2suZGVzY3JpcHRpb24sXG4gICAgICAgIHN0ZXBzOiByZWxlYXNlVGFzay5zdGVwcyxcbiAgICAgICAgZW52OiAocmVsZWFzZVRhc2sgYXMgYW55KS5fZW52LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlbGVhc2VKb2JTdGVwczogYW55W10gPSAoXG4gICAgICAgIHRoaXMuZ2l0aHViPy50cnlGaW5kV29ya2Zsb3coXCJyZWxlYXNlXCIpIGFzIGFueVxuICAgICAgKS5qb2JzLnJlbGVhc2Uuc3RlcHM7XG4gICAgICBjb25zdCBnaXRSZW1vdGVKb2IgPSByZWxlYXNlSm9iU3RlcHMuZmluZCgoaXQpID0+IGl0LmlkID09PSBcImdpdF9yZW1vdGVcIik7XG4gICAgICBhc3NlcnQoXG4gICAgICAgIGdpdFJlbW90ZUpvYixcbiAgICAgICAgXCJnaXRfcmVtb3RlIHN0ZXAgbm90IGZvdW5kIGluIHJlbGVhc2Ugd29ya2Zsb3csIHBsZWFzZSBjaGVjayBpZiB0aGUgd29ya2Fyb3VuZCBzdGlsbCB3b3JrcyFcIlxuICAgICAgKTtcbiAgICAgIC8vIFdlIHdyYXAgd2hhdGV2ZXIgcHJvamVuIGdlbmVyYXRlZCBpbiBhIHNob3VsZC1yZWxlYXNlIGd1YXJkIHJhdGhlciB0aGFuXG4gICAgICAvLyByZXdyaXRpbmcgaXQsIHNvIGFzc2VydCBvbmx5IHRoZSB0d28gcHJvcGVydGllcyB0aGUgd3JhcHBpbmcgYWN0dWFsbHlcbiAgICAgIC8vIGRlcGVuZHMgb24uIFBpbm5pbmcgdG8gcHJvamVuJ3MgZXhhY3Qgd29yZGluZyBicm9rZSB0aGUgd2hvbGUgZmxlZXRcbiAgICAgIC8vIG9uY2UgYWxyZWFkeTogcHJvamVuIDAuMTAxIGNoYW5nZWQgYCR7eyBnaXRodWIucmVmIH19YCB0byBgXCIkR0lUSFVCX1JFRlwiYFxuICAgICAgLy8gYW5kIGV2ZXJ5IHByb3ZpZGVyIHJlcG8ncyB1cGdyYWRlLW1haW4gc3RhcnRlZCBmYWlsaW5nIGF0IHN5bnRoLlxuICAgICAgYXNzZXJ0KFxuICAgICAgICB0eXBlb2YgZ2l0UmVtb3RlSm9iLnJ1biA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgIGdpdFJlbW90ZUpvYi5ydW4uaW5jbHVkZXMoXCJnaXQgbHMtcmVtb3RlXCIpICYmXG4gICAgICAgICAgZ2l0UmVtb3RlSm9iLnJ1bi5pbmNsdWRlcyhcImxhdGVzdF9jb21taXQ9XCIpLFxuICAgICAgICBgZ2l0X3JlbW90ZSBzdGVwIG5vIGxvbmdlciBzZXRzIGxhdGVzdF9jb21taXQgZnJvbSBnaXQgbHMtcmVtb3RlLCBwbGVhc2UgY2hlY2sgaWYgdGhlIHdvcmthcm91bmQgc3RpbGwgd29ya3MhIEdvdDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBnaXRSZW1vdGVKb2IucnVuXG4gICAgICAgICl9YFxuICAgICAgKTtcbiAgICAgIC8vIEZvbGQgKmV2ZXJ5KiBsaW5lOiBwcm9qZW4gZW1pdHMgdHdvIHRvZGF5LCBidXQgU3RyaW5nI3JlcGxhY2Ugd2l0aCBhXG4gICAgICAvLyBzdHJpbmcgcGF0dGVybiBvbmx5IGZvbGRzIHRoZSBmaXJzdCBpZiB0aGF0IGV2ZXIgZ3Jvd3MuXG4gICAgICBjb25zdCBwcmV2aW91c0NvbW1hbmQgPSBnaXRSZW1vdGVKb2IucnVuLnNwbGl0KFwiXFxuXCIpLmpvaW4oXCIgJiYgXCIpO1xuXG4gICAgICBjb25zdCBjYW5jZWxDb21tYW5kID1cbiAgICAgICAgJ2VjaG8gXCJsYXRlc3RfY29tbWl0PXJlbGVhc2VfY2FuY2VsbGVkXCIgPj4gJEdJVEhVQl9PVVRQVVQnOyAvLyB0aGlzIGNhbmNlbHMgdGhlIHJlbGVhc2UgdmlhIGEgbm9uLW1hdGNoaW5nIFNIQTtcbiAgICAgIGdpdFJlbW90ZUpvYi5ydW4gPSBgbm9kZSAuL3NjcmlwdHMvc2hvdWxkLXJlbGVhc2UuanMgJiYgKCR7cHJldmlvdXNDb21tYW5kfSkgfHwgJHtjYW5jZWxDb21tYW5kfWA7XG4gICAgICBnaXRSZW1vdGVKb2IubmFtZSArPVxuICAgICAgICBcIiBvciBjYW5jZWwgdmlhIGZha2luZyBhIFNIQSBpZiByZWxlYXNlIHdhcyBjYW5jZWxsZWRcIjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFsZVdvcmtmbG93ID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZShcIi5naXRodWIvd29ya2Zsb3dzL3N0YWxlLnltbFwiKTtcbiAgICBzdGFsZVdvcmtmbG93Py5hZGRPdmVycmlkZShcIm9uLnNjaGVkdWxlXCIsIFtcbiAgICAgIHtcbiAgICAgICAgY3JvbjogZ2VuZXJhdGVSYW5kb21Dcm9uKHsgcHJvamVjdDogdGhpcywgbWF4SG91cjogNCwgaG91ck9mZnNldDogMSB9KSxcbiAgICAgIH0sXG4gICAgXSk7XG5cbiAgICBjb25zdCB1cGdyYWRlV29ya2Zsb3cgPSB0aGlzLnRyeUZpbmRPYmplY3RGaWxlKFxuICAgICAgXCIuZ2l0aHViL3dvcmtmbG93cy91cGdyYWRlLW1haW4ueW1sXCJcbiAgICApO1xuICAgIHVwZ3JhZGVXb3JrZmxvdz8uYWRkT3ZlcnJpZGUoXCJvbi5zY2hlZHVsZVwiLCBbXG4gICAgICB7XG4gICAgICAgIGNyb246IGdlbmVyYXRlUmFuZG9tQ3Jvbih7XG4gICAgICAgICAgcHJvamVjdDogdGhpcyxcbiAgICAgICAgICBtYXhIb3VyOiAwLFxuICAgICAgICAgIGhvdXJPZmZzZXQ6IDEsXG4gICAgICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLldlZWtseSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgLy8gU3VibW9kdWxlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvblxuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoXCJBUEkubWRcIik7IC8vIGlnbm9yZSB0aGUgb2xkIGZpbGUsIHdlIG5vdyBnZW5lcmF0ZSBpdCBpbiB0aGUgZG9jcyBmb2xkZXJcbiAgICB0aGlzLmFkZERldkRlcHMoXCJqc2lpLWRvY2dlbkBeMTAuMi4zXCIpO1xuICAgIGlmIChqc2lpVmVyc2lvbikge1xuICAgICAgLy8gTk9URTogdGhlIGJlbG93IGlzIG1ha2luZyBhIGJyb2FkIGFzc3VtcHRpb24gdGhhdCB5b3UncmUgcGFzc2luZyBhIHJhbmdlIGxpa2UgXCJ+NS4zLjBcIiB0byBqc2lpVmVyc2lvblxuICAgICAgLy8gSWYgeW91IHVzZSB0aGF0IGZpZWxkIHRvIHBhc3MgYSB2ZXJ5IHNwZWNpZmljIHZlcnNpb24gKGUuZy4gXCI1LjMuMTFcIikgdGhlbiB0aGlzIG1pZ2h0IGJyZWFrXG4gICAgICB0aGlzLmFkZERldkRlcHMoYGpzaWktcm9zZXR0YUAke2pzaWlWZXJzaW9ufWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZERldkRlcHMoYGpzaWktcm9zZXR0YWApO1xuICAgIH1cblxuICAgIGNvbnN0IGRvY2dlbiA9IHRoaXMuYWRkVGFzayhcImRvY2dlblwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJHZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgcHJvamVjdFwiLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6IFtcbiAgICAgICAgICAgIFwicm0gLXJmIGRvY3NcIixcbiAgICAgICAgICAgIFwicm0gLWYgQVBJLm1kXCIsXG4gICAgICAgICAgICBcIm1rZGlyIGRvY3NcIixcbiAgICAgICAgICAgIFwianNpaS1kb2NnZW4gLS1zcGxpdC1ieS1zdWJtb2R1bGUgLWwgdHlwZXNjcmlwdCAtbCBweXRob24gLWwgamF2YSAtbCBjc2hhcnAgLWwgZ29cIixcbiAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5pY2Ugd2F5IHRvIHRlbGwganNpaS1kb2NnZW4gdG8gZ2VuZXJhdGUgZG9jcyBpbnRvIGEgZm9sZGVyIHNvIEkgd2VudCB0aGlzIHJvdXRlXG4gICAgICAgICAgICBcIm12ICouKi5tZCBkb2NzXCIsXG4gICAgICAgICAgICAvLyBTb21lIHBhcnQgb2YgdGhlIGRvY3VtZW50YXRpb24gYXJlIHRvbyBsb25nLCB3ZSBuZWVkIHRvIHRydW5jYXRlIHRoZW0gdG8gfjEwTUJcbiAgICAgICAgICAgIFwiY2QgZG9jc1wiLFxuICAgICAgICAgICAgXCJscyAuLyB8IHhhcmdzIHNlZCAtaSAnMTUwMDAwLCQgZCcgJDFcIixcbiAgICAgICAgICBdLmpvaW4oXCIgJiYgXCIpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICB0aGlzLnBvc3RDb21waWxlVGFzay5zcGF3bihkb2NnZW4pO1xuICAgIHRoaXMuZ2l0aWdub3JlLmluY2x1ZGUoYC9kb2NzLyoubWRgKTtcbiAgICB0aGlzLmFubm90YXRlR2VuZXJhdGVkKGAvZG9jcy8qLm1kYCk7XG5cbiAgICAvLyBTZXR0aW5nIHRoZSB2ZXJzaW9uIGluIHBhY2thZ2UuanNvbiBzbyB0aGUgZ29sYW5nIGRvY3MgaGF2ZSB0aGUgY29ycmVjdCB2ZXJzaW9uXG4gICAgY29uc3QgdW5jb25kaXRpb25hbEJ1bXAgPSB0aGlzLmFkZFRhc2soXCJ1bmNvbmRpdGlvbmFsLWJ1bXBcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiU2V0IHRoZSB2ZXJzaW9uIGluIHBhY2thZ2UuanNvbiB0byB0aGUgY3VycmVudCB2ZXJzaW9uXCIsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJDbGVhciB0aGUgY2hhbmdlbG9nIHNvIHRoYXQgaXQgZG9lc24ndCBnZXQgcHVibGlzaGVkIHR3aWNlXCIsXG4gICAgICAgICAgZXhlYzogXCJybSAtZiAkQ0hBTkdFTE9HXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHsgYnVpbHRpbjogXCJyZWxlYXNlL2J1bXAtdmVyc2lvblwiIH0sXG4gICAgICBdLFxuICAgICAgZW52OiB7XG4gICAgICAgIE9VVEZJTEU6IFwicGFja2FnZS5qc29uXCIsXG4gICAgICAgIENIQU5HRUxPRzogXCJkaXN0L2NoYW5nZWxvZy5tZFwiLFxuICAgICAgICBCVU1QRklMRTogXCJkaXN0L3ZlcnNpb24udHh0XCIsXG4gICAgICAgIFJFTEVBU0VUQUc6IFwiZGlzdC9yZWxlYXNldGFnLnR4dFwiLFxuICAgICAgICBSRUxFQVNFX1RBR19QUkVGSVg6IFwiXCIsXG4gICAgICAgIE1JTl9NQUpPUjogU3RyaW5nKE1JTl9NQUpPUl9WRVJTSU9OKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5wcmVDb21waWxlVGFzay5zcGF3bih1bmNvbmRpdGlvbmFsQnVtcCk7XG4gICAgLy8gVG8gYnVtcCBjb3JyZWN0bHkgd2UgbmVlZCB0byBoYXZlIHRoZSBjb21wbGV0ZWx5IGNsb25lZCByZXBvXG4gICAgKHRoaXMuYnVpbGRXb3JrZmxvdyBhcyBhbnkpLndvcmtmbG93LmZpbGUuYWRkT3ZlcnJpZGUoXG4gICAgICBcImpvYnMuYnVpbGQuc3RlcHMuMC53aXRoLmZldGNoLWRlcHRoXCIsXG4gICAgICAwXG4gICAgKTtcbiAgICAvLyBVbmRvIHRoZSBjaGFuZ2VzIGFmdGVyIGNvbXBpbGF0aW9uXG4gICAgdGhpcy5idWlsZFdvcmtmbG93Py5hZGRQb3N0QnVpbGRTdGVwcyh7XG4gICAgICBuYW1lOiBcIlJldmVydCBwYWNrYWdlLmpzb24gdmVyc2lvbiBidW1wXCIsXG4gICAgICBydW46IFwiZ2l0IGNoZWNrb3V0IHBhY2thZ2UuanNvblwiLFxuICAgIH0pO1xuXG4gICAgbmV3IENvcHlyaWdodEhlYWRlcnModGhpcyk7XG4gICAgbmV3IERlcHJlY2F0ZVBhY2thZ2VzKHRoaXMsIHtcbiAgICAgIHByb3ZpZGVyTmFtZSxcbiAgICAgIHBhY2thZ2VJbmZvLFxuICAgICAgaXNEZXByZWNhdGVkOiAhIWlzRGVwcmVjYXRlZCxcbiAgICB9KTtcbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgLy8gRm9sZHMgdGhlIG1hbnVhbCBmb3JjZS1yZWxlYXNlIGJlaGF2aW91ciBpbnRvIHJlbGVhc2UueW1sIGJlaGluZCBhXG4gICAgICAvLyB3b3JrZmxvd19kaXNwYXRjaCB0cmlnZ2VyLCBzbyBucG0vUHlQSSBPSURDIHRydXN0cyBhIHNpbmdsZSB3b3JrZmxvdy5cbiAgICAgIG5ldyBGb3JjZVJlbGVhc2UodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwaW5HaXRodWJBY3Rpb25WZXJzaW9ucyhwaW5uZWRWZXJzaW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIC8vIFVzZSBwaW5uZWQgdmVyc2lvbnMgb2YgZ2l0aHViIGFjdGlvbnNcbiAgICBPYmplY3QuZW50cmllcyhwaW5uZWRWZXJzaW9ucykuZm9yRWFjaCgoW25hbWUsIHNoYV0pID0+IHtcbiAgICAgIHRoaXMuZ2l0aHViPy5hY3Rpb25zLnNldChuYW1lLCBgJHtuYW1lfUAke3NoYX1gKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFNldHMgTUFWRU5fT1BUUyBvbiB0aGUgbWF2ZW4gcHVibGlzaCBzdGVwIGFuZCBkcm9wcyB0aGUgdW51c2VkXG4gKiBNQVZFTl9TVEFHSU5HX1BST0ZJTEVfSUQsIHJlc29sdmluZyB0aGUgc3RlcCBieSB0aGUgY29tbWFuZCBpdCBydW5zLlxuICpcbiAqIFJ1bnMgaW4gcHJlU3ludGhlc2l6ZSBiZWNhdXNlIHRoZSBwdWJsaXNoIGpvYnMgYXJlIGFkZGVkIGJ5IFJlbGVhc2UgZHVyaW5nXG4gKiBzeW50aGVzaXMsIHNvIHRoZSBqb2IgZG9lcyBub3QgZXhpc3QgeWV0IGF0IGNvbnN0cnVjdGlvbiB0aW1lLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvcHVibGliL3B1bGwvNzc3XG4gKi9cbmNsYXNzIE1hdmVuT3B0c1BhdGNoIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIHByZVN5bnRoZXNpemUoKSB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSBnaXRodWIuR2l0SHViLm9mKHRoaXMucHJvamVjdCk/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIik7XG4gICAgY29uc3Qgc3RlcHM6IEpvYlN0ZXBbXSB8IHVuZGVmaW5lZCA9ICh3b3JrZmxvdyBhcyBhbnkpPy5qb2JzPy5yZWxlYXNlX21hdmVuXG4gICAgICA/LnN0ZXBzO1xuICAgIGFzc2VydChcbiAgICAgIHN0ZXBzLFxuICAgICAgXCJyZWxlYXNlX21hdmVuIGpvYiBub3QgZm91bmQsIHBsZWFzZSBjaGVjayBpZiB0aGUgTUFWRU5fT1BUUyB3b3JrYXJvdW5kIHN0aWxsIHdvcmtzIVwiXG4gICAgKTtcbiAgICBjb25zdCBzdGVwID0gc3RlcHMuZmluZCgocykgPT4gcy5ydW4/LmluY2x1ZGVzKFwicHVibGliLW1hdmVuXCIpKTtcbiAgICBhc3NlcnQoXG4gICAgICBzdGVwPy5lbnYsXG4gICAgICBcIm5vIHB1YmxpYi1tYXZlbiBzdGVwIHdpdGggYW4gZW52IGJsb2NrIGluIHJlbGVhc2VfbWF2ZW4sIHBsZWFzZSBjaGVjayBpZiB0aGUgTUFWRU5fT1BUUyB3b3JrYXJvdW5kIHN0aWxsIHdvcmtzIVwiXG4gICAgKTtcbiAgICAvLyBNdXRhdGUgdGhlIHN0ZXAgZGlyZWN0bHkgcmF0aGVyIHRoYW4gSnNvblBhdGNoLWluZyB0aGUgcmVuZGVyZWQgZmlsZTogdGhlXG4gICAgLy8gcHVibGlzaGVyIHByZXBlbmRzIHRvb2wtc2V0dXAgc3RlcHMgYXQgcmVuZGVyIHRpbWUsIHNvIGluLW1lbW9yeSBpbmRpY2VzIGRvXG4gICAgLy8gbm90IG1hdGNoIHJlbmRlcmVkIG9uZXMsIGFuZCBhIEpTT04gUG9pbnRlciB3b3VsZCBoYXZlIHRvIGVuY29kZSB0aGF0IG9mZnNldC5cbiAgICAvLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzAxNTM5NjIvbmV4dXMtc3RhZ2luZy1tYXZlbi1wbHVnaW4tbWF2ZW4tZGVwbG95LWZhaWxlZC1hbi1hcGktaW5jb21wYXRpYmlsaXR5LXdhcy1lbmNvXG4gICAgc3RlcC5lbnYuTUFWRU5fT1BUUyA9XG4gICAgICBcIi0tYWRkLW9wZW5zPWphdmEuYmFzZS9qYXZhLnV0aWw9QUxMLVVOTkFNRUQgLS1hZGQtb3BlbnM9amF2YS5iYXNlL2phdmEubGFuZy5yZWZsZWN0PUFMTC1VTk5BTUVEIC0tYWRkLW9wZW5zPWphdmEuYmFzZS9qYXZhLnRleHQ9QUxMLVVOTkFNRUQgLS1hZGQtb3BlbnM9amF2YS5kZXNrdG9wL2phdmEuYXd0LmZvbnQ9QUxMLVVOTkFNRURcIjtcbiAgICAvLyBUaGlzIGlzIG5vIGxvbmdlciB1c2VkLlxuICAgIGRlbGV0ZSBzdGVwLmVudi5NQVZFTl9TVEFHSU5HX1BST0ZJTEVfSUQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJldHR5QXNzZXJ0RXF1YWw8VD4oc3ViamVjdDogVCwgZXhwZWN0ZWQ6IFQsIG1lc3NhZ2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKHN1YmplY3QgIT09IGV4cGVjdGVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7bWVzc2FnZSA/PyBcIkFzc2VydGlvbiBmYWlsZWRcIn06IGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGV4cGVjdGVkXG4gICAgICApfSBidXQgZ290ICR7SlNPTi5zdHJpbmdpZnkoc3ViamVjdCl9YFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/package-info.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export interface PackageInfo {
|
|
|
7
7
|
npm: {
|
|
8
8
|
name: string;
|
|
9
9
|
};
|
|
10
|
-
python: NonNullable<cdk.JsiiProjectOptions["
|
|
10
|
+
python: NonNullable<cdk.JsiiProjectOptions["publishToPypi"]>;
|
|
11
11
|
publishToNuget: NonNullable<cdk.JsiiProjectOptions["publishToNuget"]>;
|
|
12
12
|
publishToMaven: NonNullable<cdk.JsiiProjectOptions["publishToMaven"]>;
|
|
13
13
|
publishToGo: cdk.JsiiProjectOptions["publishToGo"];
|
package/lib/package-info.js
CHANGED
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MPL-2.0
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BhY2thZ2UtaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG5pbXBvcnQgeyBjZGsgfSBmcm9tIFwicHJvamVuXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZUluZm8ge1xuICBucG06IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH07XG4gIHB5dGhvbjogTm9uTnVsbGFibGU8Y2RrLkpzaWlQcm9qZWN0T3B0aW9uc1tcInB1Ymxpc2hUb1B5cGlcIl0+O1xuICBwdWJsaXNoVG9OdWdldDogTm9uTnVsbGFibGU8Y2RrLkpzaWlQcm9qZWN0T3B0aW9uc1tcInB1Ymxpc2hUb051Z2V0XCJdPjtcbiAgcHVibGlzaFRvTWF2ZW46IE5vbk51bGxhYmxlPGNkay5Kc2lpUHJvamVjdE9wdGlvbnNbXCJwdWJsaXNoVG9NYXZlblwiXT47XG4gIHB1Ymxpc2hUb0dvOiBjZGsuSnNpaVByb2plY3RPcHRpb25zW1wicHVibGlzaFRvR29cIl07XG59XG4iXX0=
|
package/lib/provider-upgrade.js
CHANGED
|
@@ -57,10 +57,10 @@ class ProviderUpgrade {
|
|
|
57
57
|
name: "Setup Copywrite tool",
|
|
58
58
|
uses: "hashicorp/setup-copywrite",
|
|
59
59
|
},
|
|
60
|
-
{ run: "
|
|
60
|
+
{ run: "pnpm install --frozen-lockfile" },
|
|
61
61
|
{
|
|
62
62
|
id: "check_version",
|
|
63
|
-
run: "
|
|
63
|
+
run: "pnpm run check-if-new-provider-version",
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
name: "get provider current version",
|
|
@@ -69,7 +69,7 @@ class ProviderUpgrade {
|
|
|
69
69
|
run: `echo "value=$(jq -r '(.cdktn // .cdktf).provider.version' package.json)" >> $GITHUB_OUTPUT`,
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
|
-
run: "
|
|
72
|
+
run: "pnpm run fetch",
|
|
73
73
|
if: newerVersionAvailable,
|
|
74
74
|
env: {
|
|
75
75
|
CHECKPOINT_DISABLE: "1",
|
|
@@ -77,7 +77,7 @@ class ProviderUpgrade {
|
|
|
77
77
|
},
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
|
-
// Because
|
|
80
|
+
// Because pnpm run fetch nukes the contents of /src, we've lost our auto-generated copyright headers
|
|
81
81
|
name: "Add headers using Copywrite tool",
|
|
82
82
|
if: newerVersionAvailable,
|
|
83
83
|
run: "copywrite headers",
|
|
@@ -161,4 +161,4 @@ class ProviderUpgrade {
|
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
exports.ProviderUpgrade = ProviderUpgrade;
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItdXBncmFkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92aWRlci11cGdyYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUdILHVFQUEyRTtBQUMzRSxvREFBd0Q7QUFPeEQ7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFDMUIsWUFDRSxPQUErQixFQUMvQixPQUErQjtRQUUvQixPQUFPLENBQUMsT0FBTyxDQUFDLCtCQUErQixFQUFFO1lBQy9DLElBQUksRUFBRSxVQUFVLE9BQU8sQ0FBQywwQkFBMEIsRUFBRTtTQUNyRCxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXRELFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDVixRQUFRLEVBQUU7Z0JBQ1I7b0JBQ0UsSUFBSSxFQUFFLElBQUEsZ0NBQWtCLEVBQUM7d0JBQ3ZCLE9BQU87d0JBQ1AsT0FBTyxFQUFFLENBQUM7d0JBQ1YsVUFBVSxFQUFFLENBQUM7cUJBQ2QsQ0FBQztpQkFDSDthQUNGLEVBQUUsMkNBQTJDO1lBQzlDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSwwQkFBMEI7U0FDakQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxxQkFBcUIsR0FDekIsK0RBQStELENBQUM7UUFDbEUsTUFBTSxjQUFjLEdBQUcsNENBQTRDLENBQUM7UUFDcEUsTUFBTSxVQUFVLEdBQUcsd0NBQXdDLENBQUM7UUFDNUQsTUFBTSxZQUFZLEdBQUcsbUNBQW1DLENBQUM7UUFFekQsTUFBTSxLQUFLLEdBQWM7WUFDdkI7Z0JBQ0UsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRSxrQkFBa0I7YUFDekI7WUFDRDtnQkFDRSxJQUFJLEVBQUUsaUJB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UCxNQUFNLEVBQUUsT0FBTyxDQUFDLGNBQWM7Z0JBQzlCLEdBQUcsRUFBRTtvQkFDSCxhQUFhLEVBQUUsOEJBQThCO29CQUM3QyxzQkFBc0IsRUFBRSx1Q0FBdUM7b0JBQy9ELFlBQVksRUFBRSx3QkFBd0IsT0FBTyxDQUFDLFlBQVksRUFBRTtpQkFDN0Q7Z0JBQ0QsS0FBSztnQkFDTCxXQUFXLEVBQUU7b0JBQ1gsWUFBWSxFQUFFLCtCQUFhLENBQUMsS0FBSztvQkFDakMsTUFBTSxFQUFFLCtCQUFhLENBQUMsS0FBSztvQkFDM0IsUUFBUSxFQUFFLCtCQUFhLENBQUMsS0FBSztvQkFDN0IsUUFBUSxFQUFFLCtCQUFhLENBQUMsS0FBSztpQkFDOUI7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWhLRCwwQ0FnS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IGphdmFzY3JpcHQgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uLCBKb2JTdGVwIH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVSYW5kb21Dcm9uIH0gZnJvbSBcIi4vdXRpbC9yYW5kb20tY3JvblwiO1xuXG5pbnRlcmZhY2UgUHJvdmlkZXJVcGdyYWRlT3B0aW9ucyB7XG4gIGNoZWNrRm9yVXBncmFkZXNTY3JpcHRQYXRoOiBzdHJpbmc7XG4gIHdvcmtmbG93UnVuc09uOiBzdHJpbmdbXTtcbiAgbm9kZUhlYXBTaXplOiBzdHJpbmc7XG59XG4vKipcbiAqIENoZWNrcyBmb3IgbmV3IHZlcnNpb25zIG9mIHRoZSBnaXZlbiBwcm92aWRlciBhbmQgY3JlYXRlcyBhIFBSIHdpdGggYW4gdXBncmFkZSBjaGFuZ2UgaWYgdGhlcmUgYXJlIGNoYW5nZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm92aWRlclVwZ3JhZGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBqYXZhc2NyaXB0Lk5vZGVQcm9qZWN0LFxuICAgIG9wdGlvbnM6IFByb3ZpZGVyVXBncmFkZU9wdGlvbnNcbiAgKSB7XG4gICAgcHJvamVjdC5hZGRUYXNrKFwiY2hlY2staWYtbmV3LXByb3ZpZGVyLXZlcnNpb25cIiwge1xuICAgICAgZXhlYzogYG5vZGUgLi8ke29wdGlvbnMuY2hlY2tGb3JVcGdyYWRlc1NjcmlwdFBhdGh9YCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHdvcmtmbG93ID0gcHJvamVjdC5naXRodWI/LmFkZFdvcmtmbG93KFwicHJvdmlkZXItdXBncmFkZVwiKTtcblxuICAgIGlmICghd29ya2Zsb3cpIHRocm93IG5ldyBFcnJvcihcIm5vIHdvcmtmbG93IGRlZmluZWRcIik7XG5cbiAgICB3b3JrZmxvdy5vbih7XG4gICAgICBzY2hlZHVsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgY3JvbjogZ2VuZXJhdGVSYW5kb21Dcm9uKHtcbiAgICAgICAgICAgIHByb2plY3QsXG4gICAgICAgICAgICBtYXhIb3VyOiAwLFxuICAgICAgICAgICAgaG91ck9mZnNldDogMyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIF0sIC8vIFJ1biBldmVyeSBkYXkgc29tZXRpbWUgYmV0d2VlbiAzIGFuZCA0YW1cbiAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LCAvLyBhbGxvdyBtYW51YWwgdHJpZ2dlcmluZ1xuICAgIH0pO1xuXG4gICAgY29uc3QgbmV3ZXJWZXJzaW9uQXZhaWxhYmxlID1cbiAgICAgIFwiJHt7IHN0ZXBzLmNoZWNrX3ZlcnNpb24ub3V0cHV0cy5uZXdfdmVyc2lvbiA9PSAnYXZhaWxhYmxlJyB9fVwiO1xuICAgIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gXCIke3sgc3RlcHMuY3VycmVudF92ZXJzaW9uLm91dHB1dHMudmFsdWUgfX1cIjtcbiAgICBjb25zdCBuZXdWZXJzaW9uID0gXCIke3sgc3RlcHMubmV3X3ZlcnNpb24ub3V0cHV0cy52YWx1ZSB9fVwiO1xuICAgIGNvbnN0IHNlbWFudGljVHlwZSA9IFwiJHt7IHN0ZXBzLnJlbGVhc2Uub3V0cHV0cy50eXBlIH19XCI7XG5cbiAgICBjb25zdCBzdGVwczogSm9iU3RlcFtdID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiBcIkNoZWNrb3V0XCIsXG4gICAgICAgIHVzZXM6IFwiYWN0aW9ucy9jaGVja291dFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJTZXR1cCBUZXJyYWZvcm1cIixcbiAgICAgICAgdXNlczogXCJoYXNoaWNvcnAvc2V0dXAtdGVycmFmb3JtXCIsXG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICB0ZXJyYWZvcm1fd3JhcHBlcjogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIlNldHVwIE5vZGUuanNcIixcbiAgICAgICAgdXNlczogXCJhY3Rpb25zL3NldHVwLW5vZGVcIixcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgIFwibm9kZS12ZXJzaW9uXCI6IHByb2plY3QubWluTm9kZVZlcnNpb24sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIlNldHVwIENvcHl3cml0ZSB0b29sXCIsXG4gICAgICAgIHVzZXM6IFwiaGFzaGljb3JwL3NldHVwLWNvcHl3cml0ZVwiLFxuICAgICAgfSxcbiAgICAgIHsgcnVuOiBcInlhcm4gaW5zdGFsbFwiIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiBcImNoZWNrX3ZlcnNpb25cIixcbiAgICAgICAgcnVuOiBcInlhcm4gY2hlY2staWYtbmV3LXByb3ZpZGVyLXZlcnNpb25cIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiZ2V0IHByb3ZpZGVyIGN1cnJlbnQgdmVyc2lvblwiLFxuICAgICAgICBpZjogbmV3ZXJWZXJzaW9uQXZhaWxhYmxlLFxuICAgICAgICBpZDogXCJjdXJyZW50X3ZlcnNpb25cIixcbiAgICAgICAgcnVuOiBgZWNobyBcInZhbHVlPSQoanEgLXIgJyguY2RrdG4gLy8gLmNka3RmKS5wcm92aWRlci52ZXJzaW9uJyBwYWNrYWdlLmpzb24pXCIgPj4gJEdJVEhVQl9PVVRQVVRgLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcnVuOiBcInlhcm4gZmV0Y2hcIixcbiAgICAgICAgaWY6IG5ld2VyVmVyc2lvbkF2YWlsYWJsZSxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgQ0hFQ0tQT0lOVF9ESVNBQkxFOiBcIjFcIixcbiAgICAgICAgICBHSF9UT0tFTjogXCIke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX1cIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIEJlY2F1c2UgeWFybiBmZXRjaCBudWtlcyB0aGUgY29udGVudHMgb2YgL3NyYywgd2UndmUgbG9zdCBvdXIgYXV0by1nZW5lcmF0ZWQgY29weXJpZ2h0IGhlYWRlcnNcbiAgICAgICAgbmFtZTogXCJBZGQgaGVhZGVycyB1c2luZyBDb3B5d3JpdGUgdG9vbFwiLFxuICAgICAgICBpZjogbmV3ZXJWZXJzaW9uQXZhaWxhYmxlLFxuICAgICAgICBydW46IFwiY29weXdyaXRlIGhlYWRlcnNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiZ2V0IHByb3ZpZGVyIHVwZGF0ZWQgdmVyc2lvblwiLFxuICAgICAgICBpZjogbmV3ZXJWZXJzaW9uQXZhaWxhYmxlLFxuICAgICAgICBpZDogXCJuZXdfdmVyc2lvblwiLFxuICAgICAgICBydW46IGBlY2hvIFwidmFsdWU9JChqcSAtciAnLiB8IHRvX2VudHJpZXNbXSB8IC52YWx1ZScgc3JjL3ZlcnNpb24uanNvbilcIiA+PiAkR0lUSFVCX09VVFBVVGAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIkRldGVybWluZSBpZiB0aGlzIGlzIGEgbWlub3Igb3IgcGF0Y2ggcmVsZWFzZVwiLFxuICAgICAgICBpZjogbmV3ZXJWZXJzaW9uQXZhaWxhYmxlLFxuICAgICAgICBpZDogXCJyZWxlYXNlXCIsXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIENVUlJFTlRfVkVSU0lPTjogY3VycmVudFZlcnNpb24sXG4gICAgICAgICAgTkVXX1ZFUlNJT046IG5ld1ZlcnNpb24sXG4gICAgICAgIH0sXG4gICAgICAgIHJ1bjogW1xuICAgICAgICAgIGBDVVJSRU5UX1ZFUlNJT05fTUlOT1I9JChjdXQgLWQgXCIuXCIgLWYgMiA8PDwgXCIkQ1VSUkVOVF9WRVJTSU9OXCIpYCxcbiAgICAgICAgICBgTkVXX1ZFUlNJT05fTUlOT1I9JChjdXQgLWQgXCIuXCIgLWYgMiA8PDwgXCIkTkVXX1ZFUlNJT05cIilgLFxuICAgICAgICAgIGBbWyBcIiRDVVJSRU5UX1ZFUlNJT05fTUlOT1JcIiAhPSBcIiRORVdfVkVSU0lPTl9NSU5PUlwiIF1dICYmIElTX01JTk9SX1JFTEVBU0U9dHJ1ZSB8fCBJU19NSU5PUl9SRUxFQVNFPWZhbHNlYCxcbiAgICAgICAgICBgW1sgXCIkSVNfTUlOT1JfUkVMRUFTRVwiID09IFwidHJ1ZVwiIF1dICYmIFNFTUFOVElDX1RZUEU9ZmVhdCB8fCBTRU1BTlRJQ19UWVBFPWZpeGAsXG4gICAgICAgICAgYGVjaG8gXCJpc19taW5vcj0kSVNfTUlOT1JfUkVMRUFTRVwiID4+ICRHSVRIVUJfT1VUUFVUYCxcbiAgICAgICAgICBgZWNobyBcInR5cGU9JFNFTUFOVElDX1RZUEVcIiA+PiAkR0lUSFVCX09VVFBVVGAsXG4gICAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICAgIH0sXG4gICAgICAvLyBzdWJtaXQgYSBQUlxuICAgICAge1xuICAgICAgICBuYW1lOiBcIkdlbmVyYXRlIHRva2VuXCIsXG4gICAgICAgIGlkOiBcImdlbmVyYXRlX3Rva2VuXCIsXG4gICAgICAgIHVzZXM6IFwiYWN0aW9ucy9jcmVhdGUtZ2l0aHViLWFwcC10b2tlblwiLFxuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgXCJhcHAtaWRcIjogXCIke3sgZW52LlBST0pFTl9BUFBfSUQgfX1cIixcbiAgICAgICAgICBcInByaXZhdGUta2V5XCI6IFwiJHt7IGVudi5QUk9KRU5fQVBQX1BSSVZBVEVfS0VZIH19XCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIkdldCBHaXRIdWIgQXBwIFVzZXIgSURcIixcbiAgICAgICAgaWQ6IFwiZ2V0X3VzZXJfaWRcIixcbiAgICAgICAgcnVuOiAnZWNobyBcImlkPSQoZ2ggYXBpIFwiL3VzZXJzLyR7eyBzdGVwcy5nZW5lcmF0ZV90b2tlbi5vdXRwdXRzLmFwcC1zbHVnIH19W2JvdF1cIiAtLWpxIC5pZClcIiA+PiBcIiRHSVRIVUJfT1VUUFVUXCInLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBHSF9UT0tFTjogXCIke3sgc3RlcHMuZ2VuZXJhdGVfdG9rZW4ub3V0cHV0cy50b2tlbiB9fVwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJDcmVhdGUgUHVsbCBSZXF1ZXN0XCIsXG4gICAgICAgIGlmOiBuZXdlclZlcnNpb25BdmFpbGFibGUsXG4gICAgICAgIHVzZXM6IFwicGV0ZXItZXZhbnMvY3JlYXRlLXB1bGwtcmVxdWVzdFwiLFxuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgYnJhbmNoOiBcImF1dG8vcHJvdmlkZXItdXBncmFkZVwiLFxuICAgICAgICAgIFwiY29tbWl0LW1lc3NhZ2VcIjogYCR7c2VtYW50aWNUeXBlfTogdXBncmFkZSBwcm92aWRlciBmcm9tIFxcYCR7Y3VycmVudFZlcnNpb259XFxgIHRvIHZlcnNpb24gXFxgJHtuZXdWZXJzaW9ufVxcYGAsXG4gICAgICAgICAgdGl0bGU6IGAke3NlbWFudGljVHlwZX06IHVwZ3JhZGUgcHJvdmlkZXIgZnJvbSBcXGAke2N1cnJlbnRWZXJzaW9ufVxcYCB0byB2ZXJzaW9uIFxcYCR7bmV3VmVyc2lvbn1cXGBgLFxuICAgICAgICAgIGJvZHk6IGBUaGlzIFBSIHVwZ3JhZGVzIHRoZSB1bmRlcmx5aW5nIFRlcnJhZm9ybSBwcm92aWRlciB0byB2ZXJzaW9uICR7bmV3VmVyc2lvbn1gLFxuICAgICAgICAgIGxhYmVsczogXCJhdXRvbWVyZ2UsYXV0by1hcHByb3ZlXCIsXG4gICAgICAgICAgXCJkZWxldGUtYnJhbmNoXCI6IHRydWUsXG4gICAgICAgICAgdG9rZW46IFwiJHt7IHN0ZXBzLmdlbmVyYXRlX3Rva2VuLm91dHB1dHMudG9rZW4gfX1cIixcbiAgICAgICAgICBhdXRob3I6XG4gICAgICAgICAgICBcIiR7eyBzdGVwcy5nZW5lcmF0ZV90b2tlbi5vdXRwdXRzLmFwcC1zbHVnIH19W2JvdF0gPCR7eyBzdGVwcy5nZXRfdXNlcl9pZC5vdXRwdXRzLmlkIH19KyR7eyBzdGVwcy5nZW5lcmF0ZV90b2tlbi5vdXRwdXRzLmFwcC1zbHVnIH19W2JvdF1AdXNlcnMubm9yZXBseS5naXRodWIuY29tPlwiLFxuICAgICAgICAgIGNvbW1pdHRlcjpcbiAgICAgICAgICAgIFwiJHt7IHN0ZXBzLmdlbmVyYXRlX3Rva2VuLm91dHB1dHMuYXBwLXNsdWcgfX1bYm90XSA8JHt7IHN0ZXBzLmdldF91c2VyX2lkLm91dHB1dHMuaWQgfX0rJHt7IHN0ZXBzLmdlbmVyYXRlX3Rva2VuLm91dHB1dHMuYXBwLXNsdWcgfX1bYm90XUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+XCIsXG4gICAgICAgICAgc2lnbm9mZjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHdvcmtmbG93LmFkZEpvYnMoe1xuICAgICAgdXBncmFkZToge1xuICAgICAgICBydW5zT246IG9wdGlvbnMud29ya2Zsb3dSdW5zT24sXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIFBST0pFTl9BUFBfSUQ6IFwiJHt7IHNlY3JldHMuUFJPSkVOX0FQUF9JRCB9fVwiLFxuICAgICAgICAgIFBST0pFTl9BUFBfUFJJVkFURV9LRVk6IFwiJHt7IHNlY3JldHMuUFJPSkVOX0FQUF9QUklWQVRFX0tFWSB9fVwiLFxuICAgICAgICAgIE5PREVfT1BUSU9OUzogYC0tbWF4LW9sZC1zcGFjZS1zaXplPSR7b3B0aW9ucy5ub2RlSGVhcFNpemV9YCxcbiAgICAgICAgfSxcbiAgICAgICAgc3RlcHMsXG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgcHVsbFJlcXVlc3RzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICAgIGlzc3VlczogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgICBzdGF0dXNlczogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItdXBncmFkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92aWRlci11cGdyYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUdILHVFQUEyRTtBQUMzRSxvREFBd0Q7QUFPeEQ7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFDMUIsWUFDRSxPQUErQixFQUMvQixPQUErQjtRQUUvQixPQUFPLENBQUMsT0FBTyxDQUFDLCtCQUErQixFQUFFO1lBQy9DLElBQUksRUFBRSxVQUFVLE9BQU8sQ0FBQywwQkFBMEIsRUFBRTtTQUNyRCxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXRELFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDVixRQUFRLEVBQUU7Z0JBQ1I7b0JBQ0UsSUFBSSxFQUFFLElBQUEsZ0NBQWtCLEVBQUM7d0JBQ3ZCLE9BQU87d0JBQ1AsT0FBTyxFQUFFLENBQUM7d0JBQ1YsVUFBVSxFQUFFLENBQUM7cUJBQ2QsQ0FBQztpQkFDSDthQUNGLEVBQUUsMkNBQTJDO1lBQzlDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSwwQkFBMEI7U0FDakQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxxQkFBcUIsR0FDekIsK0RBQStELENBQUM7UUFDbEUsTUFBTSxjQUFjLEdBQUcsNENBQTRDLENBQUM7UUFDcEUsTUFBTSxVQUFVLEdBQUcsd0NBQXdDLENBQUM7UUFDNUQsTUFBTSxZQUFZLEdBQUcsbUNBQW1DLENBQUM7UUFFekQsTUFBTSxLQUFLLEdBQWM7WUFDdkI7Z0JBQ0UsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRSxrQkFBa0I7YUFDekI7WUFDRDtnQkFDRSxJQUFJLEVBQUUsaUJB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Z0JBQ1AsTUFBTSxFQUFFLE9BQU8sQ0FBQyxjQUFjO2dCQUM5QixHQUFHLEVBQUU7b0JBQ0gsYUFBYSxFQUFFLDhCQUE4QjtvQkFDN0Msc0JBQXNCLEVBQUUsdUNBQXVDO29CQUMvRCxZQUFZLEVBQUUsd0JBQXdCLE9BQU8sQ0FBQyxZQUFZLEVBQUU7aUJBQzdEO2dCQUNELEtBQUs7Z0JBQ0wsV0FBVyxFQUFFO29CQUNYLFlBQVksRUFBRSwrQkFBYSxDQUFDLEtBQUs7b0JBQ2pDLE1BQU0sRUFBRSwrQkFBYSxDQUFDLEtBQUs7b0JBQzNCLFFBQVEsRUFBRSwrQkFBYSxDQUFDLEtBQUs7b0JBQzdCLFFBQVEsRUFBRSwrQkFBYSxDQUFDLEtBQUs7aUJBQzlCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFoS0QsMENBZ0tDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG5pbXBvcnQgeyBqYXZhc2NyaXB0IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiwgSm9iU3RlcCB9IGZyb20gXCJwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IGdlbmVyYXRlUmFuZG9tQ3JvbiB9IGZyb20gXCIuL3V0aWwvcmFuZG9tLWNyb25cIjtcblxuaW50ZXJmYWNlIFByb3ZpZGVyVXBncmFkZU9wdGlvbnMge1xuICBjaGVja0ZvclVwZ3JhZGVzU2NyaXB0UGF0aDogc3RyaW5nO1xuICB3b3JrZmxvd1J1bnNPbjogc3RyaW5nW107XG4gIG5vZGVIZWFwU2l6ZTogc3RyaW5nO1xufVxuLyoqXG4gKiBDaGVja3MgZm9yIG5ldyB2ZXJzaW9ucyBvZiB0aGUgZ2l2ZW4gcHJvdmlkZXIgYW5kIGNyZWF0ZXMgYSBQUiB3aXRoIGFuIHVwZ3JhZGUgY2hhbmdlIGlmIHRoZXJlIGFyZSBjaGFuZ2VzLlxuICovXG5leHBvcnQgY2xhc3MgUHJvdmlkZXJVcGdyYWRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvamVjdDogamF2YXNjcmlwdC5Ob2RlUHJvamVjdCxcbiAgICBvcHRpb25zOiBQcm92aWRlclVwZ3JhZGVPcHRpb25zXG4gICkge1xuICAgIHByb2plY3QuYWRkVGFzayhcImNoZWNrLWlmLW5ldy1wcm92aWRlci12ZXJzaW9uXCIsIHtcbiAgICAgIGV4ZWM6IGBub2RlIC4vJHtvcHRpb25zLmNoZWNrRm9yVXBncmFkZXNTY3JpcHRQYXRofWAsXG4gICAgfSk7XG5cbiAgICBjb25zdCB3b3JrZmxvdyA9IHByb2plY3QuZ2l0aHViPy5hZGRXb3JrZmxvdyhcInByb3ZpZGVyLXVwZ3JhZGVcIik7XG5cbiAgICBpZiAoIXdvcmtmbG93KSB0aHJvdyBuZXcgRXJyb3IoXCJubyB3b3JrZmxvdyBkZWZpbmVkXCIpO1xuXG4gICAgd29ya2Zsb3cub24oe1xuICAgICAgc2NoZWR1bGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNyb246IGdlbmVyYXRlUmFuZG9tQ3Jvbih7XG4gICAgICAgICAgICBwcm9qZWN0LFxuICAgICAgICAgICAgbWF4SG91cjogMCxcbiAgICAgICAgICAgIGhvdXJPZmZzZXQ6IDMsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdLCAvLyBSdW4gZXZlcnkgZGF5IHNvbWV0aW1lIGJldHdlZW4gMyBhbmQgNGFtXG4gICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7fSwgLy8gYWxsb3cgbWFudWFsIHRyaWdnZXJpbmdcbiAgICB9KTtcblxuICAgIGNvbnN0IG5ld2VyVmVyc2lvbkF2YWlsYWJsZSA9XG4gICAgICBcIiR7eyBzdGVwcy5jaGVja192ZXJzaW9uLm91dHB1dHMubmV3X3ZlcnNpb24gPT0gJ2F2YWlsYWJsZScgfX1cIjtcbiAgICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IFwiJHt7IHN0ZXBzLmN1cnJlbnRfdmVyc2lvbi5vdXRwdXRzLnZhbHVlIH19XCI7XG4gICAgY29uc3QgbmV3VmVyc2lvbiA9IFwiJHt7IHN0ZXBzLm5ld192ZXJzaW9uLm91dHB1dHMudmFsdWUgfX1cIjtcbiAgICBjb25zdCBzZW1hbnRpY1R5cGUgPSBcIiR7eyBzdGVwcy5yZWxlYXNlLm91dHB1dHMudHlwZSB9fVwiO1xuXG4gICAgY29uc3Qgc3RlcHM6IEpvYlN0ZXBbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJDaGVja291dFwiLFxuICAgICAgICB1c2VzOiBcImFjdGlvbnMvY2hlY2tvdXRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiU2V0dXAgVGVycmFmb3JtXCIsXG4gICAgICAgIHVzZXM6IFwiaGFzaGljb3JwL3NldHVwLXRlcnJhZm9ybVwiLFxuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgdGVycmFmb3JtX3dyYXBwZXI6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJTZXR1cCBOb2RlLmpzXCIsXG4gICAgICAgIHVzZXM6IFwiYWN0aW9ucy9zZXR1cC1ub2RlXCIsXG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICBcIm5vZGUtdmVyc2lvblwiOiBwcm9qZWN0Lm1pbk5vZGVWZXJzaW9uLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJTZXR1cCBDb3B5d3JpdGUgdG9vbFwiLFxuICAgICAgICB1c2VzOiBcImhhc2hpY29ycC9zZXR1cC1jb3B5d3JpdGVcIixcbiAgICAgIH0sXG4gICAgICB7IHJ1bjogXCJwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGVcIiB9LFxuICAgICAge1xuICAgICAgICBpZDogXCJjaGVja192ZXJzaW9uXCIsXG4gICAgICAgIHJ1bjogXCJwbnBtIHJ1biBjaGVjay1pZi1uZXctcHJvdmlkZXItdmVyc2lvblwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJnZXQgcHJvdmlkZXIgY3VycmVudCB2ZXJzaW9uXCIsXG4gICAgICAgIGlmOiBuZXdlclZlcnNpb25BdmFpbGFibGUsXG4gICAgICAgIGlkOiBcImN1cnJlbnRfdmVyc2lvblwiLFxuICAgICAgICBydW46IGBlY2hvIFwidmFsdWU9JChqcSAtciAnKC5jZGt0biAvLyAuY2RrdGYpLnByb3ZpZGVyLnZlcnNpb24nIHBhY2thZ2UuanNvbilcIiA+PiAkR0lUSFVCX09VVFBVVGAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBydW46IFwicG5wbSBydW4gZmV0Y2hcIixcbiAgICAgICAgaWY6IG5ld2VyVmVyc2lvbkF2YWlsYWJsZSxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgQ0hFQ0tQT0lOVF9ESVNBQkxFOiBcIjFcIixcbiAgICAgICAgICBHSF9UT0tFTjogXCIke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX1cIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIEJlY2F1c2UgcG5wbSBydW4gZmV0Y2ggbnVrZXMgdGhlIGNvbnRlbnRzIG9mIC9zcmMsIHdlJ3ZlIGxvc3Qgb3VyIGF1dG8tZ2VuZXJhdGVkIGNvcHlyaWdodCBoZWFkZXJzXG4gICAgICAgIG5hbWU6IFwiQWRkIGhlYWRlcnMgdXNpbmcgQ29weXdyaXRlIHRvb2xcIixcbiAgICAgICAgaWY6IG5ld2VyVmVyc2lvbkF2YWlsYWJsZSxcbiAgICAgICAgcnVuOiBcImNvcHl3cml0ZSBoZWFkZXJzXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcImdldCBwcm92aWRlciB1cGRhdGVkIHZlcnNpb25cIixcbiAgICAgICAgaWY6IG5ld2VyVmVyc2lvbkF2YWlsYWJsZSxcbiAgICAgICAgaWQ6IFwibmV3X3ZlcnNpb25cIixcbiAgICAgICAgcnVuOiBgZWNobyBcInZhbHVlPSQoanEgLXIgJy4gfCB0b19lbnRyaWVzW10gfCAudmFsdWUnIHNyYy92ZXJzaW9uLmpzb24pXCIgPj4gJEdJVEhVQl9PVVRQVVRgLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJEZXRlcm1pbmUgaWYgdGhpcyBpcyBhIG1pbm9yIG9yIHBhdGNoIHJlbGVhc2VcIixcbiAgICAgICAgaWY6IG5ld2VyVmVyc2lvbkF2YWlsYWJsZSxcbiAgICAgICAgaWQ6IFwicmVsZWFzZVwiLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBDVVJSRU5UX1ZFUlNJT046IGN1cnJlbnRWZXJzaW9uLFxuICAgICAgICAgIE5FV19WRVJTSU9OOiBuZXdWZXJzaW9uLFxuICAgICAgICB9LFxuICAgICAgICBydW46IFtcbiAgICAgICAgICBgQ1VSUkVOVF9WRVJTSU9OX01JTk9SPSQoY3V0IC1kIFwiLlwiIC1mIDIgPDw8IFwiJENVUlJFTlRfVkVSU0lPTlwiKWAsXG4gICAgICAgICAgYE5FV19WRVJTSU9OX01JTk9SPSQoY3V0IC1kIFwiLlwiIC1mIDIgPDw8IFwiJE5FV19WRVJTSU9OXCIpYCxcbiAgICAgICAgICBgW1sgXCIkQ1VSUkVOVF9WRVJTSU9OX01JTk9SXCIgIT0gXCIkTkVXX1ZFUlNJT05fTUlOT1JcIiBdXSAmJiBJU19NSU5PUl9SRUxFQVNFPXRydWUgfHwgSVNfTUlOT1JfUkVMRUFTRT1mYWxzZWAsXG4gICAgICAgICAgYFtbIFwiJElTX01JTk9SX1JFTEVBU0VcIiA9PSBcInRydWVcIiBdXSAmJiBTRU1BTlRJQ19UWVBFPWZlYXQgfHwgU0VNQU5USUNfVFlQRT1maXhgLFxuICAgICAgICAgIGBlY2hvIFwiaXNfbWlub3I9JElTX01JTk9SX1JFTEVBU0VcIiA+PiAkR0lUSFVCX09VVFBVVGAsXG4gICAgICAgICAgYGVjaG8gXCJ0eXBlPSRTRU1BTlRJQ19UWVBFXCIgPj4gJEdJVEhVQl9PVVRQVVRgLFxuICAgICAgICBdLmpvaW4oXCJcXG5cIiksXG4gICAgICB9LFxuICAgICAgLy8gc3VibWl0IGEgUFJcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJHZW5lcmF0ZSB0b2tlblwiLFxuICAgICAgICBpZDogXCJnZW5lcmF0ZV90b2tlblwiLFxuICAgICAgICB1c2VzOiBcImFjdGlvbnMvY3JlYXRlLWdpdGh1Yi1hcHAtdG9rZW5cIixcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgIFwiYXBwLWlkXCI6IFwiJHt7IGVudi5QUk9KRU5fQVBQX0lEIH19XCIsXG4gICAgICAgICAgXCJwcml2YXRlLWtleVwiOiBcIiR7eyBlbnYuUFJPSkVOX0FQUF9QUklWQVRFX0tFWSB9fVwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJHZXQgR2l0SHViIEFwcCBVc2VyIElEXCIsXG4gICAgICAgIGlkOiBcImdldF91c2VyX2lkXCIsXG4gICAgICAgIHJ1bjogJ2VjaG8gXCJpZD0kKGdoIGFwaSBcIi91c2Vycy8ke3sgc3RlcHMuZ2VuZXJhdGVfdG9rZW4ub3V0cHV0cy5hcHAtc2x1ZyB9fVtib3RdXCIgLS1qcSAuaWQpXCIgPj4gXCIkR0lUSFVCX09VVFBVVFwiJyxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgR0hfVE9LRU46IFwiJHt7IHN0ZXBzLmdlbmVyYXRlX3Rva2VuLm91dHB1dHMudG9rZW4gfX1cIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiQ3JlYXRlIFB1bGwgUmVxdWVzdFwiLFxuICAgICAgICBpZjogbmV3ZXJWZXJzaW9uQXZhaWxhYmxlLFxuICAgICAgICB1c2VzOiBcInBldGVyLWV2YW5zL2NyZWF0ZS1wdWxsLXJlcXVlc3RcIixcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgIGJyYW5jaDogXCJhdXRvL3Byb3ZpZGVyLXVwZ3JhZGVcIixcbiAgICAgICAgICBcImNvbW1pdC1tZXNzYWdlXCI6IGAke3NlbWFudGljVHlwZX06IHVwZ3JhZGUgcHJvdmlkZXIgZnJvbSBcXGAke2N1cnJlbnRWZXJzaW9ufVxcYCB0byB2ZXJzaW9uIFxcYCR7bmV3VmVyc2lvbn1cXGBgLFxuICAgICAgICAgIHRpdGxlOiBgJHtzZW1hbnRpY1R5cGV9OiB1cGdyYWRlIHByb3ZpZGVyIGZyb20gXFxgJHtjdXJyZW50VmVyc2lvbn1cXGAgdG8gdmVyc2lvbiBcXGAke25ld1ZlcnNpb259XFxgYCxcbiAgICAgICAgICBib2R5OiBgVGhpcyBQUiB1cGdyYWRlcyB0aGUgdW5kZXJseWluZyBUZXJyYWZvcm0gcHJvdmlkZXIgdG8gdmVyc2lvbiAke25ld1ZlcnNpb259YCxcbiAgICAgICAgICBsYWJlbHM6IFwiYXV0b21lcmdlLGF1dG8tYXBwcm92ZVwiLFxuICAgICAgICAgIFwiZGVsZXRlLWJyYW5jaFwiOiB0cnVlLFxuICAgICAgICAgIHRva2VuOiBcIiR7eyBzdGVwcy5nZW5lcmF0ZV90b2tlbi5vdXRwdXRzLnRva2VuIH19XCIsXG4gICAgICAgICAgYXV0aG9yOlxuICAgICAgICAgICAgXCIke3sgc3RlcHMuZ2VuZXJhdGVfdG9rZW4ub3V0cHV0cy5hcHAtc2x1ZyB9fVtib3RdIDwke3sgc3RlcHMuZ2V0X3VzZXJfaWQub3V0cHV0cy5pZCB9fSske3sgc3RlcHMuZ2VuZXJhdGVfdG9rZW4ub3V0cHV0cy5hcHAtc2x1ZyB9fVtib3RdQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT5cIixcbiAgICAgICAgICBjb21taXR0ZXI6XG4gICAgICAgICAgICBcIiR7eyBzdGVwcy5nZW5lcmF0ZV90b2tlbi5vdXRwdXRzLmFwcC1zbHVnIH19W2JvdF0gPCR7eyBzdGVwcy5nZXRfdXNlcl9pZC5vdXRwdXRzLmlkIH19KyR7eyBzdGVwcy5nZW5lcmF0ZV90b2tlbi5vdXRwdXRzLmFwcC1zbHVnIH19W2JvdF1AdXNlcnMubm9yZXBseS5naXRodWIuY29tPlwiLFxuICAgICAgICAgIHNpZ25vZmY6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG5cbiAgICB3b3JrZmxvdy5hZGRKb2JzKHtcbiAgICAgIHVwZ3JhZGU6IHtcbiAgICAgICAgcnVuc09uOiBvcHRpb25zLndvcmtmbG93UnVuc09uLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBQUk9KRU5fQVBQX0lEOiBcIiR7eyBzZWNyZXRzLlBST0pFTl9BUFBfSUQgfX1cIixcbiAgICAgICAgICBQUk9KRU5fQVBQX1BSSVZBVEVfS0VZOiBcIiR7eyBzZWNyZXRzLlBST0pFTl9BUFBfUFJJVkFURV9LRVkgfX1cIixcbiAgICAgICAgICBOT0RFX09QVElPTlM6IGAtLW1heC1vbGQtc3BhY2Utc2l6ZT0ke29wdGlvbnMubm9kZUhlYXBTaXplfWAsXG4gICAgICAgIH0sXG4gICAgICAgIHN0ZXBzLFxuICAgICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICAgIHB1bGxSZXF1ZXN0czogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgICBpc3N1ZXM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgc3RhdHVzZXM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|