projen 0.103.18 → 0.103.20
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 +603 -211
- package/lib/ai-instructions.js +2 -2
- package/lib/awscdk/auto-discover.js +6 -6
- package/lib/awscdk/awscdk-app-java.js +1 -1
- package/lib/awscdk/awscdk-app-py.js +1 -1
- package/lib/awscdk/awscdk-app-ts.js +1 -1
- package/lib/awscdk/awscdk-construct.js +1 -1
- package/lib/awscdk/awscdk-deps-java.js +1 -1
- package/lib/awscdk/awscdk-deps-js.js +1 -1
- package/lib/awscdk/awscdk-deps-py.js +1 -1
- package/lib/awscdk/awscdk-deps.js +1 -1
- package/lib/awscdk/cdk-config.js +3 -3
- package/lib/awscdk/cdk-tasks.js +1 -1
- package/lib/awscdk/integration-test.js +1 -1
- package/lib/awscdk/lambda-extension.js +1 -1
- package/lib/awscdk/lambda-function.js +2 -2
- package/lib/awscdk/private/feature-flags-v2.const.d.ts +1 -1
- package/lib/awscdk/private/feature-flags-v2.const.js +2 -2
- package/lib/build/build-workflow.js +1 -1
- package/lib/cdk/auto-discover-base.js +2 -2
- package/lib/cdk/construct-lib.js +1 -1
- package/lib/cdk/integration-test-base.js +1 -1
- package/lib/cdk/jsii-build.js +1 -1
- package/lib/cdk/jsii-docgen.js +1 -1
- package/lib/cdk/jsii-project.js +1 -1
- package/lib/cdk8s/auto-discover.js +2 -2
- package/lib/cdk8s/cdk8s-app-py.js +1 -1
- package/lib/cdk8s/cdk8s-app-ts.js +1 -1
- package/lib/cdk8s/cdk8s-construct.js +1 -1
- package/lib/cdk8s/cdk8s-deps-py.js +1 -1
- package/lib/cdk8s/cdk8s-deps.js +1 -1
- package/lib/cdk8s/integration-test.js +1 -1
- package/lib/cdktf/cdktf-construct.js +1 -1
- package/lib/cdktn/cdktn-app-ts.js +1 -1
- package/lib/cdktn/cdktn-config.js +1 -1
- package/lib/cdktn/cdktn-construct.js +1 -1
- package/lib/cdktn/cdktn-deps.js +1 -1
- package/lib/cdktn/cdktn-tasks.js +1 -1
- package/lib/circleci/circleci.js +1 -1
- package/lib/component.js +2 -2
- package/lib/dependencies.js +1 -1
- package/lib/dev-env.js +1 -1
- package/lib/docker-compose/docker-compose-service.js +1 -1
- package/lib/docker-compose/docker-compose.js +1 -1
- package/lib/file.js +1 -1
- package/lib/gitattributes.js +1 -1
- package/lib/github/actions-provider.js +1 -1
- package/lib/github/auto-approve.js +1 -1
- package/lib/github/auto-merge.js +1 -1
- package/lib/github/auto-queue.js +1 -1
- package/lib/github/dependabot.js +1 -1
- package/lib/github/dependency-review.js +1 -1
- package/lib/github/github-credentials.js +1 -1
- package/lib/github/github-project.js +1 -1
- package/lib/github/github.js +1 -1
- package/lib/github/merge-queue.js +1 -1
- package/lib/github/mergify.js +1 -1
- package/lib/github/pr-template.js +1 -1
- package/lib/github/pull-request-backport.js +1 -1
- package/lib/github/pull-request-lint.js +1 -1
- package/lib/github/stale.js +1 -1
- package/lib/github/task-workflow-job.js +1 -1
- package/lib/github/task-workflow.js +1 -1
- package/lib/github/workflow-actions.js +1 -1
- package/lib/github/workflow-jobs.js +1 -1
- package/lib/github/workflow-steps.js +1 -1
- package/lib/github/workflows.js +1 -1
- package/lib/gitlab/configuration.js +1 -1
- package/lib/gitlab/gitlab-configuration.js +1 -1
- package/lib/gitlab/nested-configuration.js +1 -1
- package/lib/gitpod.js +1 -1
- package/lib/ignore-file.js +1 -1
- package/lib/ini.js +1 -1
- package/lib/java/java-project.js +1 -1
- package/lib/java/junit.js +1 -1
- package/lib/java/maven-compile.js +1 -1
- package/lib/java/maven-packaging.js +1 -1
- package/lib/java/maven-sample.js +1 -1
- package/lib/java/pom.js +2 -2
- package/lib/java/projenrc.js +1 -1
- package/lib/javascript/biome/biome-config.d.ts +80 -14
- package/lib/javascript/biome/biome-config.js +44 -15
- package/lib/javascript/biome/biome.js +1 -1
- package/lib/javascript/bundler.js +1 -1
- package/lib/javascript/eslint.js +1 -1
- package/lib/javascript/jest.js +4 -4
- package/lib/javascript/license-checker.js +1 -1
- package/lib/javascript/node-config-file.js +1 -1
- package/lib/javascript/node-package.js +1 -1
- package/lib/javascript/node-project.js +1 -1
- package/lib/javascript/npm-config.js +1 -1
- package/lib/javascript/pnpm-workspace-config.d.ts +34 -2
- package/lib/javascript/pnpm-workspace-config.js +22 -3
- package/lib/javascript/pnpm-workspace.js +1 -1
- package/lib/javascript/prettier.js +1 -1
- package/lib/javascript/projenrc.js +1 -1
- package/lib/javascript/typescript-config.js +2 -2
- package/lib/javascript/upgrade-dependencies.js +2 -2
- package/lib/javascript/yarnrc.js +1 -1
- package/lib/json-patch.js +1 -1
- package/lib/json.js +1 -1
- package/lib/license.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/makefile.js +1 -1
- package/lib/object-file.js +1 -1
- package/lib/polaris/coverity-go.js +1 -1
- package/lib/polaris/coverity-java.js +1 -1
- package/lib/polaris/coverity-javascript.js +1 -1
- package/lib/polaris/coverity.js +1 -1
- package/lib/project-build.js +1 -1
- package/lib/project-tree.js +1 -1
- package/lib/project.js +1 -1
- package/lib/projects.js +1 -1
- package/lib/projenrc-json.js +1 -1
- package/lib/projenrc.js +1 -1
- package/lib/properties-file.js +1 -1
- package/lib/python/pip.js +1 -1
- package/lib/python/poetry.js +2 -2
- package/lib/python/projenrc.js +1 -1
- package/lib/python/pyproject-toml-file.js +1 -1
- package/lib/python/pytest-sample.js +1 -1
- package/lib/python/pytest.js +1 -1
- package/lib/python/python-project.js +1 -1
- package/lib/python/python-sample.js +1 -1
- package/lib/python/requirements-file.js +1 -1
- package/lib/python/setuppy.js +1 -1
- package/lib/python/setuptools.js +1 -1
- package/lib/python/uv-config.js +1 -1
- package/lib/python/uv.js +1 -1
- package/lib/python/venv.js +1 -1
- package/lib/readme.js +1 -1
- package/lib/release/publisher.js +1 -1
- package/lib/release/release-trigger.js +1 -1
- package/lib/release/release.js +1 -1
- package/lib/renovatebot.js +1 -1
- package/lib/run-task.cjs +2 -2
- package/lib/sample-file.js +2 -2
- package/lib/script-runner.js +1 -1
- package/lib/sonarqube/javascript.js +1 -1
- package/lib/sonarqube/rust.js +1 -1
- package/lib/sonarqube/sonarqube.js +1 -1
- package/lib/sonarqube/typescript.js +1 -1
- package/lib/source-code.js +1 -1
- package/lib/task-shell.js +1 -1
- package/lib/task.js +1 -1
- package/lib/tasks.js +1 -1
- package/lib/testing.js +1 -1
- package/lib/textfile.js +1 -1
- package/lib/toml.js +1 -1
- package/lib/typescript/projenrc-ts.js +1 -1
- package/lib/typescript/projenrc.js +1 -1
- package/lib/typescript/typescript-runner.js +1 -1
- package/lib/typescript/typescript-typedoc.js +1 -1
- package/lib/typescript/typescript.js +5 -5
- package/lib/version.js +2 -2
- package/lib/vscode/devcontainer.js +1 -1
- package/lib/vscode/extensions.js +1 -1
- package/lib/vscode/launch-config.js +1 -1
- package/lib/vscode/settings.js +1 -1
- package/lib/vscode/vscode.js +1 -1
- package/lib/web/next.js +3 -3
- package/lib/web/postcss.js +1 -1
- package/lib/web/react.js +3 -3
- package/lib/web/tailwind.js +1 -1
- package/lib/xmlfile.js +1 -1
- package/lib/yaml.js +1 -1
- package/package.json +2 -2
|
@@ -9,6 +9,7 @@ exports.toJson_PnpmWorkspaceYamlSchemaAudit = toJson_PnpmWorkspaceYamlSchemaAudi
|
|
|
9
9
|
exports.toJson_PnpmWorkspaceYamlSchemaAuditConfig = toJson_PnpmWorkspaceYamlSchemaAuditConfig;
|
|
10
10
|
exports.toJson_PnpmWorkspaceYamlSchemaSupportedArchitectures = toJson_PnpmWorkspaceYamlSchemaSupportedArchitectures;
|
|
11
11
|
exports.toJson_PnpmWorkspaceYamlSchemaExecutionEnv = toJson_PnpmWorkspaceYamlSchemaExecutionEnv;
|
|
12
|
+
exports.toJson_PnpmWorkspaceYamlSchemaTasks = toJson_PnpmWorkspaceYamlSchemaTasks;
|
|
12
13
|
exports.toJson_PnpmWorkspaceYamlSchemaVersioning = toJson_PnpmWorkspaceYamlSchemaVersioning;
|
|
13
14
|
exports.toJson_PnpmWorkspaceYamlSchemaVersioningEpics = toJson_PnpmWorkspaceYamlSchemaVersioningEpics;
|
|
14
15
|
exports.toJson_PnpmWorkspaceYamlSchemaVersioningChangelog = toJson_PnpmWorkspaceYamlSchemaVersioningChangelog;
|
|
@@ -138,6 +139,7 @@ function toJson_PnpmWorkspaceYamlSchema(obj) {
|
|
|
138
139
|
'ignoreWorkspaceRootCheck': obj.ignoreWorkspaceRootCheck,
|
|
139
140
|
'disallowWorkspaceCycles': obj.disallowWorkspaceCycles,
|
|
140
141
|
'workspaceConcurrency': obj.workspaceConcurrency,
|
|
142
|
+
'tasks': ((obj.tasks) === undefined) ? undefined : (Object.entries(obj.tasks).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: toJson_PnpmWorkspaceYamlSchemaTasks(i[1]) }), {})),
|
|
141
143
|
'failIfNoMatch': obj.failIfNoMatch,
|
|
142
144
|
'forceLegacyDeploy': obj.forceLegacyDeploy,
|
|
143
145
|
'savePrefix': obj.savePrefix,
|
|
@@ -439,7 +441,7 @@ var PnpmWorkspaceYamlSchemaReporter;
|
|
|
439
441
|
*/
|
|
440
442
|
class PnpmWorkspaceYamlSchemaLinkWorkspacePackages {
|
|
441
443
|
value;
|
|
442
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaLinkWorkspacePackages", version: "0.103.
|
|
444
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaLinkWorkspacePackages", version: "0.103.20" };
|
|
443
445
|
static fromBoolean(value) {
|
|
444
446
|
return new PnpmWorkspaceYamlSchemaLinkWorkspacePackages(value);
|
|
445
447
|
}
|
|
@@ -458,7 +460,7 @@ exports.PnpmWorkspaceYamlSchemaLinkWorkspacePackages = PnpmWorkspaceYamlSchemaLi
|
|
|
458
460
|
*/
|
|
459
461
|
class PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol {
|
|
460
462
|
value;
|
|
461
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol", version: "0.103.
|
|
463
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol", version: "0.103.20" };
|
|
462
464
|
static fromBoolean(value) {
|
|
463
465
|
return new PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol(value);
|
|
464
466
|
}
|
|
@@ -470,6 +472,23 @@ class PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol {
|
|
|
470
472
|
}
|
|
471
473
|
}
|
|
472
474
|
exports.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol = PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol;
|
|
475
|
+
/**
|
|
476
|
+
* Converts an object of type 'PnpmWorkspaceYamlSchemaTasks' to JSON representation.
|
|
477
|
+
* @internal
|
|
478
|
+
*/
|
|
479
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
480
|
+
function toJson_PnpmWorkspaceYamlSchemaTasks(obj) {
|
|
481
|
+
if (obj === undefined) {
|
|
482
|
+
return undefined;
|
|
483
|
+
}
|
|
484
|
+
const result = {
|
|
485
|
+
'dependsOn': obj.dependsOn?.map(y => y),
|
|
486
|
+
'concurrency': obj.concurrency,
|
|
487
|
+
};
|
|
488
|
+
// filter undefined values
|
|
489
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
490
|
+
}
|
|
491
|
+
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
473
492
|
/**
|
|
474
493
|
* Configure how versions of packages installed to a package.json file get prefixed.
|
|
475
494
|
*
|
|
@@ -651,4 +670,4 @@ var PnpmWorkspaceYamlSchemaVersioningChangelogStorage;
|
|
|
651
670
|
/** repository */
|
|
652
671
|
PnpmWorkspaceYamlSchemaVersioningChangelogStorage["REPOSITORY"] = "repository";
|
|
653
672
|
})(PnpmWorkspaceYamlSchemaVersioningChangelogStorage || (exports.PnpmWorkspaceYamlSchemaVersioningChangelogStorage = PnpmWorkspaceYamlSchemaVersioningChangelogStorage = {}));
|
|
654
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvcG5wbS13b3Jrc3BhY2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW9yQ0Esd0VBaUxDO0FBZ0RELDhHQVNDO0FBeUNELG9GQVVDO0FBb0JELGdHQU9DO0FBa0NELGtGQVNDO0FBMkJELDhGQVFDO0FBOEJELG9IQVNDO0FBb0JELGdHQU9DO0FBNE5ELDRGQVlDO0FBbUhELHNHQVFDO0FBc0JELDhHQU9DOztBQTcwQkQ7OztHQUdHO0FBQ0gscUZBQXFGO0FBQ3JGLFNBQWdCLDhCQUE4QixDQUFDLEdBQXdDO0lBQ3JGLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLFNBQVMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5SixVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsUyxhQUFhLEVBQUUsR0FBRyxDQUFDLFdBQVc7UUFDOUIsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtRQUNsRCxjQUFjLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDaEMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRCxXQUFXLEVBQUUsR0FB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SUFDZiwwRUFBcUIsQ0FBQTtJQUNyQixpQkFBaUI7SUFDakIsOEVBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUxXLGlEQUFpRCxpRUFBakQsaURBQWlELFFBSzVEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibm9kZSAuL3Byb2plbi5qc1wiLlxuLyoqXG4gKiBKU09OIHNjaGVtYSBmb3IgcG5wbS13b3Jrc3BhY2UueWFtbCBmaWxlc1xuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSB7XG4gIC8qKlxuICAgKiBXb3Jrc3BhY2UgcGFja2FnZSBwYXRocy4gR2xvYiBwYXR0ZXJucyBhcmUgc3VwcG9ydGVkXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIERlZmluZSBkZXBlbmRlbmN5IHZlcnNpb24gcmFuZ2VzIGFzIHJldXNhYmxlIGNvbnN0YW50cyxcbiAgICogZm9yIGxhdGVyIHJlZmVyZW5jZSBpbiBwYWNrYWdlLmpzb24gZmlsZXMuXG4gICAqIFRoaXMgKHNpbmd1bGFyKSBmaWVsZCBjcmVhdGVzIGEgY2F0YWxvZyBuYW1lZCBkZWZhdWx0LlxuICAgKlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhdGFsb2dcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2c/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgYXJiaXRyYXJpbHkgbmFtZWQgY2F0YWxvZ3NcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nc1xuICAgKi9cbiAgcmVhZG9ubHkgY2F0YWxvZ3M/OiB7IFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfTtcblxuICAvKipcbiAgICogQ29udHJvbGxpbmcgaWYgYW5kIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGFkZGVkIHRvIHRoZSBkZWZhdWx0IGNhdGFsb2dcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nTW9kZVxuICAgKi9cbiAgcmVhZG9ubHkgY2F0YWxvZ01vZGU/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNhdGFsb2dNb2RlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHBucG0gd2lsbCByZW1vdmUgdW51c2VkIGNhdGFsb2cgZW50cmllcyBkdXJpbmcgaW5zdGFsbGF0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NsZWFudXBVbnVzZWRDYXRhbG9nc1xuICAgKi9cbiAgcmVhZG9ubHkgY2xlYW51cFVudXNlZENhdGFsb2dzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgcG5wbSB3aWxsIHJlbW92ZSB1bnVzZWQgY2F0YWxvZyBlbnRyaWVzIGR1cmluZyBpbnN0YWxsYXRpb24uIGBjbGVhbnVwVW51c2VkQ2F0YWxvZ3NgIGlzIHRoZSBkZXByZWNhdGVkIHNwZWxsaW5nIG9mIHRoaXMgc2V0dGluZyBhbmQgY29udGludWVzIHRvIHdvcms7IHdoZW4gYm90aCBhcmUgc2V0LCBgY2F0YWxvZ1BydW5lYCB3aW5zLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhdGFsb2dQcnVuZVxuICAgKi9cbiAgcmVhZG9ubHkgY2F0YWxvZ1BydW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2UgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBleGVjdXRlZCBkdXJpbmcgaW5zdGFsbGF0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI29ubHlCdWlsdERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgb25seUJ1aWx0RGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gb3ZlcnJpZGUgYW55IGRlcGVuZGVuY3kgaW4gdGhlIGRlcGVuZGVuY3kgZ3JhcGguXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjb3ZlcnJpZGVzXG4gICAqL1xuICByZWFkb25seSBvdmVycmlkZXM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZXh0ZW5kIHRoZSBleGlzdGluZyBwYWNrYWdlIGRlZmluaXRpb25zIHdpdGggYWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlRXh0ZW5zaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZUV4dGVuc2lvbnM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFBlci13b3Jrc3BhY2UtcHJvamVjdCBwbnBtIHNldHRpbmdzIHRoYXQgcmVwbGFjZSBwcm9qZWN0LXNwZWNpZmljIC5ucG1yYyBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlQ29uZmlnc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZUNvbmZpZ3M/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGVlckRlcGVuZGVuY3lSdWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGVlckRlcGVuZGVuY3lSdWxlcz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcGVuZGVuY2llcyB0byBydW4gYnVpbGRzIGZvci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNuZXZlckJ1aWx0RGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBuZXZlckJ1aWx0RGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byB0cnVlLCBhbGwgYnVpbGQgc2NyaXB0cyAoZS5nLiBwcmVpbnN0YWxsLCBpbnN0YWxsLCBwb3N0aW5zdGFsbCkgZnJvbSBkZXBlbmRlbmNpZXMgd2lsbCBydW4gYXV0b21hdGljYWxseSwgd2l0aG91dCByZXF1aXJpbmcgYXBwcm92YWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGFuZ2Vyb3VzbHlBbGxvd0FsbEJ1aWxkc1xuICAgKi9cbiAgcmVhZG9ubHkgZGFuZ2Vyb3VzbHlBbGxvd0FsbEJ1aWxkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIEpTT04gZmlsZSB0aGF0IGxpc3RzIHRoZSBvbmx5IHBhY2thZ2VzIHBlcm1pdHRlZCB0byBydW4gaW5zdGFsbGF0aW9uIHNjcmlwdHMgZHVyaW5nIHRoZSBwbnBtIGluc3RhbGwgcHJvY2Vzcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNvbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlXG4gICAqL1xuICByZWFkb25seSBvbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcGFja2FnZSBuYW1lcyB0aGF0IHNob3VsZCBub3QgYmUgYnVpbHQgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZWRCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZGVwcmVjYXRlZCB2ZXJzaW9ucyB0aGF0IHRoZSB3YXJuaW5ncyBhcmUgc3VwcHJlc3NlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBwYXRjaGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhdGNoZWREZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoZWREZXBlbmRlbmNpZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGluc3RhbGxhdGlvbiB3b24ndCBmYWlsIGlmIHNvbWUgb2YgdGhlIHBhdGNoZXMgZnJvbSB0aGUgXCJwYXRjaGVkRGVwZW5kZW5jaWVzXCIgZmllbGQgd2VyZSBub3QgYXBwbGllZC4gKFByZXZpb3VzbHkgbmFtZWQgXCJhbGxvd05vbkFwcGxpZWRQYXRjaGVzXCIpXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dVbnVzZWRQYXRjaGVzXG4gICAqL1xuICByZWFkb25seSBhbGxvd1VudXNlZFBhdGNoZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGluc3RhbGxhdGlvbiB3b24ndCBmYWlsIGlmIHNvbWUgb2YgdGhlIHBhdGNoZXMgZnJvbSB0aGUgXCJwYXRjaGVkRGVwZW5kZW5jaWVzXCIgZmllbGQgd2VyZSBub3QgYXBwbGllZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhbGxvd05vbkFwcGxpZWRQYXRjaGVzXG4gICAqL1xuICByZWFkb25seSBhbGxvd05vbkFwcGxpZWRQYXRjaGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVmYXVsdCBpcyB1bmRlZmluZWQuIEVycm9ycyBvdXQgd2hlbiBhIHBhdGNoIHdpdGggYW4gZXhhY3QgdmVyc2lvbiBvciB2ZXJzaW9uIHJhbmdlIGZhaWxzLiBJZ25vcmVzIGZhaWx1cmVzIGZyb20gbmFtZS1vbmx5IHBhdGNoZXMuIFdoZW4gdHJ1ZSwgcHJpbnRzIGEgd2FybmluZyBpbnN0ZWFkIG9mIGZhaWxpbmcgd2hlbiBhbnkgcGF0Y2ggY2Fubm90IGJlIGFwcGxpZWQuIFdoZW4gZmFsc2UsIGVycm9ycyBvdXQgZm9yIGFueSBwYXRjaCBmYWlsdXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQuIEVycm9ycyBvdXQgd2hlbiBhIHBhdGNoIHdpdGggYW4gZXhhY3QgdmVyc2lvbiBvciB2ZXJzaW9uIHJhbmdlIGZhaWxzLiBJZ25vcmVzIGZhaWx1cmVzIGZyb20gbmFtZS1vbmx5IHBhdGNoZXMuIFdoZW4gdHJ1ZSwgcHJpbnRzIGEgd2FybmluZyBpbnN0ZWFkIG9mIGZhaWxpbmcgd2hlbiBhbnkgcGF0Y2ggY2Fubm90IGJlIGFwcGxpZWQuIFdoZW4gZmFsc2UsIGVycm9ycyBvdXQgZm9yIGFueSBwYXRjaCBmYWlsdXJlLlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVBhdGNoRmFpbHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVBhdGNoRmFpbHVyZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VwZGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGU7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXBkYXRlQ29uZmlnXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVDb25maWc/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZztcblxuICAvKipcbiAgICogQ29uZmlnIGRlcGVuZGVuY2llcyBhbGxvdyB5b3UgdG8gc2hhcmUgYW5kIGNlbnRyYWxpemUgY29uZmlndXJhdGlvbiBmaWxlcywgc2V0dGluZ3MsIGFuZCBob29rcyBhY3Jvc3MgbXVsdGlwbGUgcHJvamVjdHMuIFRoZXkgYXJlIGluc3RhbGxlZCBiZWZvcmUgYWxsIHJlZ3VsYXIgZGVwZW5kZW5jaWVzICgnZGVwZW5kZW5jaWVzJywgJ2RldkRlcGVuZGVuY2llcycsICdvcHRpb25hbERlcGVuZGVuY2llcycpLCBtYWtpbmcgdGhlbSBpZGVhbCBmb3Igc2V0dGluZyB1cCBjdXN0b20gaG9va3MsIHBhdGNoZXMsIGFuZCBjYXRhbG9nIGVudHJpZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY29uZmlnRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBjb25maWdEZXBlbmRlbmNpZXM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXVkaXRcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdDtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhdWRpdENvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgYXVkaXRDb25maWc/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2Ygc2NyaXB0cyB0aGF0IG11c3QgZXhpc3QgaW4gZWFjaCBwcm9qZWN0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlcXVpcmVkU2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWRTY3JpcHRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhcmNoaXRlY3R1cmVzIGZvciB3aGljaCB5b3UnZCBsaWtlIHRvIGluc3RhbGwgb3B0aW9uYWwgZGVwZW5kZW5jaWVzLCBldmVuIGlmIHRoZXkgZG9uJ3QgbWF0Y2ggdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgc3lzdGVtIHJ1bm5pbmcgdGhlIGluc3RhbGwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3VwcG9ydGVkQXJjaGl0ZWN0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG9wdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IHRoZSBpbnN0YWxsIHNob3VsZCBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlZE9wdGlvbmFsRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZXhlY3V0aW9uRW52XG4gICAqL1xuICByZWFkb25seSBleGVjdXRpb25FbnY/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBhbGwgZGVwZW5kZW5jaWVzIGFyZSBob2lzdGVkIHRvIG5vZGVfbW9kdWxlcy8ucG5wbS9ub2RlX21vZHVsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RcbiAgICovXG4gIHJlYWRvbmx5IGhvaXN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2VzIGFyZSBzeW1saW5rZWQgdG8gZWl0aGVyIDx3b3Jrc3BhY2Vfcm9vdD4vbm9kZV9tb2R1bGVzLy5wbnBtL25vZGVfbW9kdWxlcyBvciB0byA8d29ya3NwYWNlX3Jvb3Q+L25vZGVfbW9kdWxlcyBkZXBlbmRpbmcgb24gb3RoZXIgaG9pc3Rpbmcgc2V0dGluZ3MgKGhvaXN0UGF0dGVybiBhbmQgcHVibGljSG9pc3RQYXR0ZXJuKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNob2lzdFdvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBob2lzdFdvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGVsbHMgcG5wbSB3aGljaCBwYWNrYWdlcyBzaG91bGQgYmUgaG9pc3RlZCB0byBub2RlX21vZHVsZXMvLnBucG0vbm9kZV9tb2R1bGVzXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RQYXR0ZXJuXG4gICAqL1xuICByZWFkb25seSBob2lzdFBhdHRlcm4/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVW5saWtlIGhvaXN0UGF0dGVybiwgd2hpY2ggaG9pc3RzIGRlcGVuZGVuY2llcyB0byBhIGhpZGRlbiBtb2R1bGVzIGRpcmVjdG9yeSBpbnNpZGUgdGhlIHZpcnR1YWwgc3RvcmUsIHB1YmxpY0hvaXN0UGF0dGVybiBob2lzdHMgZGVwZW5kZW5jaWVzIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIHRvIHRoZSByb290IG1vZHVsZXMgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3B1YmxpY0hvaXN0UGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljSG9pc3RQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIHBucG0gY3JlYXRlcyBhIHNlbWlzdHJpY3Qgbm9kZV9tb2R1bGVzLCBtZWFuaW5nIGRlcGVuZGVuY2llcyBoYXZlIGFjY2VzcyB0byB1bmRlY2xhcmVkIGRlcGVuZGVuY2llcyBidXQgbW9kdWxlcyBvdXRzaWRlIG9mIG5vZGVfbW9kdWxlcyBkbyBub3QuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2hhbWVmdWxseUhvaXN0XG4gICAqL1xuICByZWFkb25seSBzaGFtZWZ1bGx5SG9pc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGRlcGVuZGVuY2llcyB3aWxsIGJlIGluc3RhbGxlZCAoaW5zdGVhZCBvZiBub2RlX21vZHVsZXMpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21vZHVsZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZXNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hhdCBsaW5rZXIgc2hvdWxkIGJlIHVzZWQgZm9yIGluc3RhbGxpbmcgTm9kZSBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlTGlua2VyXG4gICAqL1xuICByZWFkb25seSBub2RlTGlua2VyPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlTGlua2VyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gaW5qZWN0cyB0aGUgZ2VuZXJhdGVkIG5vZGVfbW9kdWxlcy8ucGFja2FnZS1tYXAuanNvbiBpbnRvIHBucG0tbWFuYWdlZCBOb2RlLmpzIHNjcmlwdCBlbnZpcm9ubWVudHMgYnkgYWRkaW5nIE5vZGUncyAtLWV4cGVyaW1lbnRhbC1wYWNrYWdlLW1hcCBvcHRpb24gdG8gTk9ERV9PUFRJT05TLiBzZWUgaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzL25vZGUtbW9kdWxlcyNub2RlZXhwZXJpbWVudGFscGFja2FnZW1hcFxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVFeHBlcmltZW50YWxQYWNrYWdlTWFwXG4gICAqL1xuICByZWFkb25seSBub2RlRXhwZXJpbWVudGFsUGFja2FnZU1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGhvdyBub2RlX21vZHVsZXMvLnBhY2thZ2UtbWFwLmpzb24gaXMgZ2VuZXJhdGVkLiBzdGFuZGFyZCAtIG9ubHkgZGVjbGFyZWQgZGVwZW5kZW5jaWVzIGFyZSBhdmFpbGFibGUgdGhyb3VnaCB0aGUgcGFja2FnZSBtYXAuIGxvb3NlIC0gYWxzbyBtYXBzIHBhY2thZ2VzIHRoYXQgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBpbnN0YWxsZWQgbm9kZV9tb2R1bGVzIGxheW91dCwgd2hpY2ggY2FuIGFsbG93IHVuZGVjbGFyZWQgaG9pc3RlZCBkZXBlbmRlbmNpZXMgdG8gcmVzb2x2ZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlUGFja2FnZU1hcFR5cGVcbiAgICovXG4gIHJlYWRvbmx5IG5vZGVQYWNrYWdlTWFwVHlwZT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZVBhY2thZ2VNYXBUeXBlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHN5bWxpbmsgaXMgc2V0IHRvIGZhbHNlLCBwbnBtIGNyZWF0ZXMgYSB2aXJ0dWFsIHN0b3JlIGRpcmVjdG9yeSB3aXRob3V0IGFueSBzeW1saW5rcy4gSXQgaXMgYSB1c2VmdWwgc2V0dGluZyB0b2dldGhlciB3aXRoIG5vZGVMaW5rZXI9cG5wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N5bWxpbmtcbiAgICovXG4gIHJlYWRvbmx5IHN5bWxpbms/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGZhbHNlLCBwbnBtIHdpbGwgbm90IHdyaXRlIGFueSBmaWxlcyB0byB0aGUgbW9kdWxlcyBkaXJlY3RvcnkgKG5vZGVfbW9kdWxlcykuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW5hYmxlTW9kdWxlc0RpclxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlTW9kdWxlc0Rpcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rvcnkgd2l0aCBsaW5rcyB0byB0aGUgc3RvcmUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmlydHVhbFN0b3JlRGlyXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1heGltdW0gYWxsb3dlZCBsZW5ndGggb2YgZGlyZWN0b3J5IG5hbWVzIGluc2lkZSB0aGUgdmlydHVhbCBzdG9yZSBkaXJlY3RvcnkgKG5vZGVfbW9kdWxlcy8ucG5wbSkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVEaXJNYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hlcmUgdGhlIHZpcnR1YWwgc3RvcmUgaXMgbG9jYXRlZC4gV2hlbiBzZXQgdG8gcHJvamVjdCwgYSBzZXBhcmF0ZSB2aXJ0dWFsIHN0b3JlIGlzIGNyZWF0ZWQgaW4gZWFjaCBwcm9qZWN0J3Mgbm9kZV9tb2R1bGVzLy5wbnBtLiBXaGVuIHNldCB0byBnbG9iYWwsIGEgc2luZ2xlIHN0b3JlIGlzIHNoYXJlZCBieSBldmVyeSBwcm9qZWN0IG9uIHRoZSBtYWNoaW5lLCB3aXRoIGVhY2ggcHJvamVjdCdzIG5vZGVfbW9kdWxlcyBob2xkaW5nIG9ubHkgc3ltbGlua3MgaW50byBpdC4gQWRkZWQgaW4gcG5wbSB2MTEuMjMuMC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2aXJ0dWFsU3RvcmVUeXBlXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVUeXBlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWaXJ0dWFsU3RvcmVUeXBlO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgd2F5IHBhY2thZ2VzIGFyZSBpbXBvcnRlZCBmcm9tIHRoZSBzdG9yZSAoaWYgeW91IHdhbnQgdG8gZGlzYWJsZSBzeW1saW5rcyBpbnNpZGUgbm9kZV9tb2R1bGVzLCB0aGVuIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgbm9kZUxpbmtlciBzZXR0aW5nLCBub3QgdGhpcyBvbmUpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VJbXBvcnRNZXRob2RcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VJbXBvcnRNZXRob2Q/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2Q7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggb3JwaGFuIHBhY2thZ2VzIGZyb20gdGhlIG1vZHVsZXMgZGlyZWN0b3J5IHNob3VsZCBiZSByZW1vdmVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21vZHVsZXNDYWNoZU1heEFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlc0NhY2hlTWF4QWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpbiBtaW51dGVzIGFmdGVyIHdoaWNoIGRseCBjYWNoZSBleHBpcmVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RseENhY2hlTWF4QWdlXG4gICAqL1xuICByZWFkb25seSBkbHhDYWNoZU1heEFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIGFsbCB0aGUgcGFja2FnZXMgYXJlIHNhdmVkIG9uIHRoZSBkaXNrLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0b3JlRGlyXG4gICAqL1xuICByZWFkb25seSBzdG9yZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgaWYgYSBmaWxlIGluIHRoZSBzdG9yZSBoYXMgYmVlbiBtb2RpZmllZCwgdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGlzIGNoZWNrZWQgYmVmb3JlIGxpbmtpbmcgaXQgdG8gYSBwcm9qZWN0J3Mgbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZlcmlmeVN0b3JlSW50ZWdyaXR5XG4gICAqL1xuICByZWFkb25seSB2ZXJpZnlTdG9yZUludGVncml0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQuIE9ubHkgYWxsb3dzIGluc3RhbGxhdGlvbiB3aXRoIGEgc3RvcmUgc2VydmVyLiBJZiBubyBzdG9yZSBzZXJ2ZXIgaXMgcnVubmluZywgaW5zdGFsbGF0aW9uIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VSdW5uaW5nU3RvcmVTZXJ2ZXJcbiAgICovXG4gIHJlYWRvbmx5IHVzZVJ1bm5pbmdTdG9yZVNlcnZlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1ha2VzIHBucG0gaW5zdGFsbCB3b3JrIGFnYWluc3QgYSByZWFkLW9ubHkgcGFja2FnZSBzdG9yZSAoc3VjaCBhcyBhIE5peCBzdG9yZSBvciBPQ0kgaW1hZ2UgbGF5ZXIpLiBXaGVuIGVuYWJsZWQsIHBucG0gb3BlbnMgdGhlIHN0b3JlJ3MgU1FMaXRlIGRhdGFiYXNlIGluIGltbXV0YWJsZSBtb2RlIGFuZCBuZXZlciB3cml0ZXMgdG8gdGhlIHN0b3JlLiBXb3JrcyBiZXN0IHRvZ2V0aGVyIHdpdGggLS1vZmZsaW5lIGFuZCAtLWZyb3plbi1sb2NrZmlsZTsgaW5jb21wYXRpYmxlIHdpdGggLS1mb3JjZS4gQWRkZWQgaW4gcG5wbSB2MTEuNy4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Zyb3plblN0b3JlXG4gICAqL1xuICByZWFkb25seSBmcm96ZW5TdG9yZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNvbWUgcmVnaXN0cmllcyBhbGxvdyB0aGUgZXhhY3Qgc2FtZSBjb250ZW50IHRvIGJlIHB1Ymxpc2hlZCB1bmRlciBkaWZmZXJlbnQgcGFja2FnZSBuYW1lcyBhbmQvb3IgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0U3RvcmVQa2dDb250ZW50Q2hlY2tcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFN0b3JlUGtnQ29udGVudENoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBub2RlX21vZHVsZXMgY29udGFpbnMgb25seSBzeW1saW5rcyB0byBhIGNlbnRyYWwgdmlydHVhbCBzdG9yZSwgcmF0aGVyIHRoYW4gdG8gbm9kZV9tb2R1bGVzLy5wbnBtLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZUdsb2JhbFZpcnR1YWxTdG9yZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHBucG0gd29uJ3QgcmVhZCBvciBnZW5lcmF0ZSBhIHBucG0tbG9jay55YW1sIGZpbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGxvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSBhbmQgdGhlIGF2YWlsYWJsZSBwbnBtLWxvY2sueWFtbCBzYXRpc2ZpZXMgdGhlIHBhY2thZ2UuanNvbiBkZXBlbmRlbmNpZXMgZGlyZWN0aXZlLCBhIGhlYWRsZXNzIGluc3RhbGxhdGlvbiBpcyBwZXJmb3JtZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyRnJvemVuTG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlckZyb3plbkxvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHRoZSBmdWxsIFVSTCB0byB0aGUgcGFja2FnZSdzIHRhcmJhbGwgdG8gZXZlcnkgZW50cnkgaW4gcG5wbS1sb2NrLnlhbWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybFxuICAgKi9cbiAgcmVhZG9ubHkgbG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHRoZSBnZW5lcmF0ZWQgbG9ja2ZpbGUgbmFtZSBhZnRlciBpbnN0YWxsYXRpb24gd2lsbCBiZSBuYW1lZCBiYXNlZCBvbiB0aGUgY3VycmVudCBicmFuY2ggbmFtZSB0byBjb21wbGV0ZWx5IGF2b2lkIG1lcmdlIGNvbmZsaWN0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnaXRCcmFuY2hMb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0QnJhbmNoTG9ja2ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIGNvbmZpZ3VyYXRpb24gbWF0Y2hlcyB0aGUgY3VycmVudCBicmFuY2ggbmFtZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byBtZXJnZSBhbGwgZ2l0IGJyYW5jaCBsb2NrZmlsZSBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm5cbiAgICovXG4gIHJlYWRvbmx5IG1lcmdlR2l0QnJhbmNoTG9ja2ZpbGVzQnJhbmNoUGF0dGVybj86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBNYXggbGVuZ3RoIG9mIHRoZSBwZWVyIElEcyBzdWZmaXggYWRkZWQgdG8gZGVwZW5kZW5jeSBrZXlzIGluIHRoZSBsb2NrZmlsZS4gSWYgdGhlIHN1ZmZpeCBpcyBsb25nZXIsIGl0IGlzIHJlcGxhY2VkIHdpdGggYSBoYXNoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BlZXJzU3VmZml4TWF4TGVuZ3RoXG4gICAqL1xuICByZWFkb25seSBwZWVyc1N1ZmZpeE1heExlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJhc2UgVVJMIG9mIHRoZSBucG0gcGFja2FnZSByZWdpc3RyeSAodHJhaWxpbmcgc2xhc2ggaW5jbHVkZWQpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSByZWdpc3RyeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENlcnRpZmljYXRlIEF1dGhvcml0eSBzaWduaW5nIGNlcnRpZmljYXRlIHRoYXQgaXMgdHJ1c3RlZCBmb3IgU1NMIGNvbm5lY3Rpb25zIHRvIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYVxuICAgKi9cbiAgcmVhZG9ubHkgY2E/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyBvbmUgb3IgbXVsdGlwbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IHNpZ25pbmcgY2VydGlmaWNhdGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FmaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsaWVudCBjZXJ0aWZpY2F0ZSB0byBwYXNzIHdoZW4gYWNjZXNzaW5nIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjZXJ0XG4gICAqL1xuICByZWFkb25seSBjZXJ0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsaWVudCBrZXkgdG8gcGFzcyB3aGVuIGFjY2Vzc2luZyB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gZmV0Y2hpbmcgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIEdpdCByZXBvc2l0b3JpZXMsIGlmIHRoZSBob3N0IGlzIGxpc3RlZCBpbiB0aGlzIHNldHRpbmcsIHBucG0gd2lsbCB1c2Ugc2hhbGxvdyBjbG9uaW5nIHRvIGZldGNoIG9ubHkgdGhlIG5lZWRlZCBjb21taXQsIG5vdCBhbGwgdGhlIGhpc3RvcnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2l0U2hhbGxvd0hvc3RzXG4gICAqL1xuICByZWFkb25seSBnaXRTaGFsbG93SG9zdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBwcm94eSB0byB1c2UgZm9yIG91dGdvaW5nIEhUVFBTIHJlcXVlc3RzLiBJZiB0aGUgSFRUUFNfUFJPWFksIGh0dHBzX3Byb3h5LCBIVFRQX1BST1hZIG9yIGh0dHBfcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBzZXQsIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHVzZWQgaW5zdGVhZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNodHRwc1Byb3h5XG4gICAqL1xuICByZWFkb25seSBodHRwc1Byb3h5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHByb3h5IHRvIHVzZSBmb3Igb3V0Z29pbmcgSFRUUCByZXF1ZXN0cy4gSWYgdGhlIEhUVFBfUFJPWFkgb3IgaHR0cF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHNldCwgcHJveHkgc2V0dGluZ3Mgd2lsbCBiZSBob25vcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHJlcXVlc3QgbGlicmFyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNodHRwUHJveHlcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBQcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogbnBtJ3MgbGVnYWN5IHByb3h5IHNldHRpbmcsIHVzZWQgYXMgdGhlIGZhbGxiYWNrIGZvciBib3RoIGh0dHBzUHJveHkgYW5kIGh0dHBQcm94eS4gSWYgdGhlIEhUVFBfUFJPWFkgb3IgaHR0cF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHNldCwgcHJveHkgc2V0dGluZ3Mgd2lsbCBiZSBob25vcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHJlcXVlc3QgbGlicmFyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUCBhZGRyZXNzIG9mIHRoZSBsb2NhbCBpbnRlcmZhY2UgdG8gdXNlIHdoZW4gbWFraW5nIGNvbm5lY3Rpb25zIHRvIHRoZSBucG0gcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9jYWxBZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBsb2NhbEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyB0byB1c2UgcGVyIG9yaWdpbiAocHJvdG9jb2wvaG9zdC9wb3J0IGNvbWJpbmF0aW9uKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtYXhzb2NrZXRzXG4gICAqL1xuICByZWFkb25seSBtYXhzb2NrZXRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2YgZG9tYWluIGV4dGVuc2lvbnMgdGhhdCBhIHByb3h5IHNob3VsZCBub3QgYmUgdXNlZCBmb3IuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9Qcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgbm9Qcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZG8gU1NMIGtleSB2YWxpZGF0aW9uIHdoZW4gbWFraW5nIHJlcXVlc3RzIHRvIHRoZSByZWdpc3RyeSB2aWEgSFRUUFMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0U3NsXG4gICAqL1xuICByZWFkb25seSBzdHJpY3RTc2w/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgbWF4aW11bSBudW1iZXIgb2YgSFRUUChTKSByZXF1ZXN0cyB0byBwcm9jZXNzIHNpbXVsdGFuZW91c2x5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25ldHdvcmtDb25jdXJyZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya0NvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgbWFueSB0aW1lcyB0byByZXRyeSBpZiBwbnBtIGZhaWxzIHRvIGZldGNoIGZyb20gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyaWVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwb25lbnRpYWwgZmFjdG9yIGZvciByZXRyeSBiYWNrb2ZmLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cnlGYWN0b3JcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoUmV0cnlGYWN0b3I/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIChiYXNlKSB0aW1lb3V0IGZvciByZXRyeWluZyByZXF1ZXN0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJ5TWludGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeU1pbnRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGZhbGxiYWNrIHRpbWVvdXQgdG8gZW5zdXJlIHRoZSByZXRyeSBmYWN0b3IgZG9lcyBub3QgbWFrZSByZXF1ZXN0cyB0b28gbG9uZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJ5TWF4dGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeU1heHRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgZm9yIEhUVFAgcmVxdWVzdHMgdG8gY29tcGxldGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmV0Y2hUaW1lb3V0XG4gICAqL1xuICByZWFkb25seSBmZXRjaFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgd2FybmluZyBtZXNzYWdlIGlzIGRpc3BsYXllZCBpZiBhIG1ldGFkYXRhIHJlcXVlc3QgdG8gdGhlIHJlZ2lzdHJ5IHRha2VzIGxvbmdlciB0aGFuIHRoZSBzcGVjaWZpZWQgdGhyZXNob2xkIChpbiBtaWxsaXNlY29uZHMpLiBBZGRlZCBpbiBwbnBtIHYxMC4xOC4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoV2FyblRpbWVvdXRNc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hXYXJuVGltZW91dE1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHdhcm5pbmcgbWVzc2FnZSBpcyBkaXNwbGF5ZWQgaWYgdGhlIGRvd25sb2FkIHNwZWVkIG9mIGEgdGFyYmFsbCBmcm9tIHRoZSByZWdpc3RyeSBmYWxscyBiZWxvdyB0aGUgc3BlY2lmaWVkIHRocmVzaG9sZCAoaW4gS2lCL3MpLiBBZGRlZCBpbiBwbnBtIHYxMC4xOC4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoTWluU3BlZWRLaUJwc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hNaW5TcGVlZEtpQnBzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGFueSBtaXNzaW5nIG5vbi1vcHRpb25hbCBwZWVyIGRlcGVuZGVuY2llcyBhcmUgYXV0b21hdGljYWxseSBpbnN0YWxsZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXV0b0luc3RhbGxQZWVyc1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0luc3RhbGxQZWVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBzZXR0aW5nIGlzIHNldCB0byB0cnVlLCBwYWNrYWdlcyB3aXRoIHBlZXIgZGVwZW5kZW5jaWVzIHdpbGwgYmUgZGVkdXBsaWNhdGVkIGFmdGVyIHBlZXJzIHJlc29sdXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlUGVlckRlcGVuZGVudHNcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwZVBlZXJEZXBlbmRlbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBjb21tYW5kcyB3aWxsIGZhaWwgaWYgdGhlcmUgaXMgYSBtaXNzaW5nIG9yIGludmFsaWQgcGVlciBkZXBlbmRlbmN5IGluIHRoZSB0cmVlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0cmljdFBlZXJEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFBlZXJEZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGRlcGVuZGVuY2llcyBvZiB0aGUgcm9vdCB3b3Jrc3BhY2UgcHJvamVjdCBhcmUgdXNlZCB0byByZXNvbHZlIHBlZXIgZGVwZW5kZW5jaWVzIG9mIGFueSBwcm9qZWN0cyBpbiB0aGUgd29ya3NwYWNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Jlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290XG4gICAqL1xuICByZWFkb25seSByZXNvbHZlUGVlcnNGcm9tV29ya3NwYWNlUm9vdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGNvbG9ycyBpbiB0aGUgb3V0cHV0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NvbG9yXG4gICAqL1xuICByZWFkb25seSBjb2xvcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ29sb3I7XG5cbiAgLyoqXG4gICAqIEFueSBsb2dzIGF0IG9yIGhpZ2hlciB0aGFuIHRoZSBnaXZlbiBsZXZlbCB3aWxsIGJlIHNob3duLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2xvZ2xldmVsXG4gICAqL1xuICByZWFkb25seSBsb2dsZXZlbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTG9nbGV2ZWw7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gY3VzdG9taXplIHRoZSBvdXRwdXQgc3R5bGUgb2YgdGhlIGxvZ3MuXG4gICAqIGh0dHBzOi8vcG5wbS5pby9jbGkvaW5zdGFsbCMtLXJlcG9ydGVybmFtZVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlcG9ydGVyXG4gICAqL1xuICByZWFkb25seSByZXBvcnRlcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVwb3J0ZXI7XG5cbiAgLyoqXG4gICAqIEV4cGVyaW1lbnRhbCBvcHRpb24gdGhhdCBlbmFibGVzIGJldGEgZmVhdHVyZXMgb2YgdGhlIENMSS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VCZXRhQ2xpXG4gICAqL1xuICByZWFkb25seSB1c2VCZXRhQ2xpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCB0aGUgcHJpbWFyeSBiZWhhdmlvdXIgb2YgcG5wbSBpbnN0YWxsIGJlY29tZXMgdGhhdCBvZiBwbnBtIGluc3RhbGwgLXIsIG1lYW5pbmcgdGhlIGluc3RhbGwgaXMgcGVyZm9ybWVkIG9uIGFsbCB3b3Jrc3BhY2Ugb3Igc3ViZGlyZWN0b3J5IHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlY3Vyc2l2ZUluc3RhbGxcbiAgICovXG4gIHJlYWRvbmx5IHJlY3Vyc2l2ZUluc3RhbGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIGVuYWJsZWQsIHBucG0gd2lsbCBub3QgaW5zdGFsbCBhbnkgcGFja2FnZSB0aGF0IGNsYWltcyB0byBub3QgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IE5vZGUgdmVyc2lvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbmdpbmVTdHJpY3RcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZVN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgbnBtIGJpbmFyeSB0aGF0IHBucG0gdXNlcyBmb3Igc29tZSBhY3Rpb25zLCBsaWtlIHB1Ymxpc2hpbmcuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbnBtUGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgbnBtUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhpcyBzZXR0aW5nIGlzIGRpc2FibGVkLCBwbnBtIHdpbGwgbm90IGZhaWwgaWYgYSBkaWZmZXJlbnQgcGFja2FnZSBtYW5hZ2VyIGlzIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQgb2YgcGFja2FnZS5qc29uLiBXaGVuIGVuYWJsZWQsIG9ubHkgdGhlIHBhY2thZ2UgbmFtZSBpcyBjaGVja2VkIChzaW5jZSBwbnBtIHY5LjIuMCksIHNvIHlvdSBjYW4gc3RpbGwgcnVuIGFueSB2ZXJzaW9uIG9mIHBucG0gcmVnYXJkbGVzcyBvZiB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgaW4gdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VNYW5hZ2VyU3RyaWN0XG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlclN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgcG5wbSB3aWxsIGZhaWwgaWYgaXRzIHZlcnNpb24gZG9lc24ndCBleGFjdGx5IG1hdGNoIHRoZSB2ZXJzaW9uIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQgb2YgcGFja2FnZS5qc29uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VNYW5hZ2VyU3RyaWN0VmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBwbnBtIHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCBhbmQgcnVuIHRoZSB2ZXJzaW9uIG9mIHBucG0gc3BlY2lmaWVkIGluIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZCBvZiBwYWNrYWdlLmpzb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvIG5vdCBleGVjdXRlIGFueSBzY3JpcHRzIGRlZmluZWQgaW4gdGhlIHByb2plY3QgcGFja2FnZS5qc29uIGFuZCBpdHMgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVNjcmlwdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZXhlY3V0ZSBhbnkgc2NyaXB0cyBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLiBTY3JpcHRzIG9mIHRoZSBwcm9qZWN0cyBhcmUgZXhlY3V0ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlRGVwU2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlRGVwU2NyaXB0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGlsZCBwcm9jZXNzZXMgdG8gYWxsb2NhdGUgc2ltdWx0YW5lb3VzbHkgdG8gYnVpbGQgbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NoaWxkQ29uY3VycmVuY3lcbiAgICovXG4gIHJlYWRvbmx5IGNoaWxkQ29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFVzZSBhbmQgY2FjaGUgdGhlIHJlc3VsdHMgb2YgKHByZS9wb3N0KWluc3RhbGwgaG9va3MuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2lkZUVmZmVjdHNDYWNoZVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZUVmZmVjdHNDYWNoZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9ubHkgdXNlIHRoZSBzaWRlIGVmZmVjdHMgY2FjaGUgaWYgcHJlc2VudCwgZG8gbm90IGNyZWF0ZSBpdCBmb3IgbmV3IHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NpZGVFZmZlY3RzQ2FjaGVSZWFkb25seVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZUVmZmVjdHNDYWNoZVJlYWRvbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gZW5hYmxlIFVJRC9HSUQgc3dpdGNoaW5nIHdoZW4gcnVubmluZyBwYWNrYWdlIHNjcmlwdHMuIElmIHNldCBleHBsaWNpdGx5IHRvIGZhbHNlLCB0aGVuIGluc3RhbGxpbmcgYXMgYSBub24tcm9vdCB1c2VyIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1bnNhZmVQZXJtXG4gICAqL1xuICByZWFkb25seSB1bnNhZmVQZXJtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyB0byBwYXNzIHRocm91Z2ggdG8gTm9kZS5qcyB2aWEgdGhlIE5PREVfT1BUSU9OUyBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlT3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9kZU9wdGlvbnM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBhbGxvd3MgdGhlIGNoZWNraW5nIG9mIHRoZSBzdGF0ZSBvZiBkZXBlbmRlbmNpZXMgYmVmb3JlIHJ1bm5pbmcgc2NyaXB0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2ZXJpZnlEZXBzQmVmb3JlUnVuXG4gICAqL1xuICByZWFkb25seSB2ZXJpZnlEZXBzQmVmb3JlUnVuPzogYW55O1xuXG4gIC8qKlxuICAgKiBXaGVuIHN0cmljdERlcEJ1aWxkcyBpcyBlbmFibGVkLCB0aGUgaW5zdGFsbGF0aW9uIHdpbGwgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlIGlmIGFueSBkZXBlbmRlbmNpZXMgaGF2ZSB1bnJldmlld2VkIGJ1aWxkIHNjcmlwdHMgKGFrYSBwb3N0aW5zdGFsbCBzY3JpcHRzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3REZXBCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdERlcEJ1aWxkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGljaCBleGFjdCBOb2RlLmpzIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBwcm9qZWN0J3MgcnVudGltZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VOb2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdXNlTm9kZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlLmpzIHZlcnNpb24gdG8gdXNlIHdoZW4gY2hlY2tpbmcgYSBwYWNrYWdlJ3MgZW5naW5lcyBzZXR0aW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBsb2NhbGx5IGF2YWlsYWJsZSBwYWNrYWdlcyBhcmUgbGlua2VkIHRvIG5vZGVfbW9kdWxlcyBpbnN0ZWFkIG9mIGJlaW5nIGRvd25sb2FkZWQgZnJvbSB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbGlua1dvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBsaW5rV29ya3NwYWNlUGFja2FnZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcztcblxuICAvKipcbiAgICogRW5hYmxlcyBoYXJkLWxpbmtpbmcgb2YgYWxsIGxvY2FsIHdvcmtzcGFjZSBkZXBlbmRlbmNpZXMgaW5zdGVhZCBvZiBzeW1saW5raW5nIHRoZW0uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaW5qZWN0V29ya3NwYWNlUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IGluamVjdFdvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5qZWN0ZWQgd29ya3NwYWNlIGRlcGVuZGVuY2llcyBhcmUgY29sbGVjdGlvbnMgb2YgaGFyZGxpbmtzLCB3aGljaCBkb24ndCBhZGQgb3IgcmVtb3ZlIHRoZSBmaWxlcyB3aGVuIHRoZWlyIHNvdXJjZXMgY2hhbmdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IHN5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBsb2NhbCBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIHByZWZlcnJlZCBvdmVyIHBhY2thZ2VzIGZyb20gdGhlIHJlZ2lzdHJ5LCBldmVuIGlmIHRoZXJlIGlzIGEgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSBpbiB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyV29ya3NwYWNlUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlcldvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBwbnBtIGNyZWF0ZXMgYSBzaW5nbGUgcG5wbS1sb2NrLnlhbWwgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgd29ya3NwYWNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NoYXJlZFdvcmtzcGFjZUxvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGxpbmtlZCBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIGFkZGVkIHRvIHBhY2thZ2UuanNvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlV29ya3NwYWNlUHJvdG9jb2xcbiAgICovXG4gIHJlYWRvbmx5IHNhdmVXb3Jrc3BhY2VQcm90b2NvbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBXaGVuIGV4ZWN1dGluZyBjb21tYW5kcyByZWN1cnNpdmVseSBpbiBhIHdvcmtzcGFjZSwgZXhlY3V0ZSB0aGVtIG9uIHRoZSByb290IHdvcmtzcGFjZSBwcm9qZWN0IGFzIHdlbGwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaW5jbHVkZVdvcmtzcGFjZVJvb3RcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVXb3Jrc3BhY2VSb290PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgbm8gd29ya3NwYWNlIGN5Y2xlIHdhcm5pbmdzIHdpbGwgYmUgcHJpbnRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVXb3Jrc3BhY2VDeWNsZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVdvcmtzcGFjZUN5Y2xlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGluZyBhIG5ldyBkZXBlbmRlbmN5IHRvIHRoZSByb290IHdvcmtzcGFjZSBwYWNrYWdlIGZhaWxzLCB1bmxlc3MgdGhlIC0taWdub3JlLXdvcmtzcGFjZS1yb290LWNoZWNrIG9yIC13IGZsYWcgaXMgdXNlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2tcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVdvcmtzcGFjZVJvb3RDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwgaWYgdGhlIHdvcmtzcGFjZSBoYXMgY3ljbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Rpc2FsbG93V29ya3NwYWNlQ3ljbGVzXG4gICAqL1xuICByZWFkb25seSBkaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFza3MgdG8gcnVuIHNpbXVsdGFuZW91c2x5LiBGb3IgdW5saW1pdGVkIGNvbmN1cnJlbmN5IHVzZSBJbmZpbml0eS4gWW91IGNhbiBzZXQgdGhlIHZhbHVlIHRvIDw9IDAgYW5kIGl0IHdpbGwgdXNlIGFtb3VudCBvZiBDUFUgY29yZXMgb2YgdGhlIGhvc3QgbWludXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBwcm92aWRlZCBudW1iZXIgYXM6IG1heCgxLCAobnVtYmVyIG9mIGNvcmVzKSAtIGFicyh3b3Jrc3BhY2VDb25jdXJyZW5jeSkpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3dvcmtzcGFjZUNvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VDb25jdXJyZW5jeT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgcG5wbSB3aWxsIGZhaWwgaWYgbm8gcGFja2FnZXMgbWF0Y2ggdGhlIGZpbHRlclxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZhaWxJZk5vTWF0Y2hcbiAgICovXG4gIHJlYWRvbmx5IGZhaWxJZk5vTWF0Y2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBwbnBtIGRlcGxveSB3aWxsIHRyeSBjcmVhdGluZyBhIGRlZGljYXRlZCBsb2NrZmlsZSBmcm9tIGEgc2hhcmVkIGxvY2tmaWxlIGZvciBkZXBsb3ltZW50LiBJZiB0aGlzIHNldHRpbmcgaXMgc2V0IHRvIHRydWUsIHRoZSBsZWdhY3kgZGVwbG95IGJlaGF2aW9yIHdpbGwgYmUgdXNlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmb3JjZUxlZ2FjeURlcGxveVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VMZWdhY3lEZXBsb3k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgaG93IHZlcnNpb25zIG9mIHBhY2thZ2VzIGluc3RhbGxlZCB0byBhIHBhY2thZ2UuanNvbiBmaWxlIGdldCBwcmVmaXhlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlUHJlZml4XG4gICAqL1xuICByZWFkb25seSBzYXZlUHJlZml4PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4O1xuXG4gIC8qKlxuICAgKiBJZiB5b3UgcG5wbSBhZGQgYSBwYWNrYWdlIGFuZCB5b3UgZG9uJ3QgcHJvdmlkZSBhIHNwZWNpZmljIHZlcnNpb24sIHRoZW4gaXQgd2lsbCBpbnN0YWxsIHRoZSBwYWNrYWdlIGF0IHRoZSB2ZXJzaW9uIHJlZ2lzdGVyZWQgdW5kZXIgdGhlIHRhZyBmcm9tIHRoaXMgc2V0dGluZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0YWdcbiAgICovXG4gIHJlYWRvbmx5IHRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmeSBhIGN1c3RvbSBkaXJlY3RvcnkgdG8gc3RvcmUgZ2xvYmFsIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dsb2JhbERpclxuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2V0IHRoZSB0YXJnZXQgZGlyZWN0b3J5IGZvciB0aGUgYmluIGZpbGVzIG9mIGdsb2JhbGx5IGluc3RhbGxlZCBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnbG9iYWxCaW5EaXJcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbEJpbkRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQ29udHJvbHMgd2hpY2ggZ2xvYmFsbHkgaW5zdGFsbGVkIHBhY2thZ2VzIGdldCBwcm9qZWN0LWF3YXJlIHNoaW1zLCB3aGljaCBhcmUgZ2xvYmFsIGNvbW1hbmRzIHRoYXQgcnVuIHRoZSB2ZXJzaW9uIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCBwcm9qZWN0IGluc3RlYWQgb2YgdGhlIGdsb2JhbGx5IGluc3RhbGxlZCBvbmUuIEEgYm9vbGVhbiBkaXNhYmxlcyAoZmFsc2UpIG9yIHJlc2V0cyB0byB0aGUgZGVmYXVsdHMgKHRydWUpLCB3aGlsZSBhbiBvYmplY3QgbWFwcyBwYWNrYWdlIG5hbWVzIHRvIGEgcG9saWN5OiBcImF1dG9cIiAob3IgdHJ1ZSkgdG8gc3dpdGNoIGF1dG9tYXRpY2FsbHkgd2hlbiBwdWJsaXNoZXItYXV0aGVudGljYXRlZCwgXCJwcm9tcHRcIiB0byBjb25maXJtIG9uIGVhY2ggdXNlLCBcImFsd2F5c1wiIHRvIHN3aXRjaCB1bmNvbmRpdGlvbmFsbHksIG9yIGZhbHNlIHRvIGRpc2FibGUuIE9iamVjdCBlbnRyaWVzIG1lcmdlIHdpdGggdGhlIGJ1aWx0LWluIGRlZmF1bHRzICh7XCJub2RlXCI6IFwiYXV0b1wiLCBcImRlbm9cIjogXCJhdXRvXCIsIFwiYnVuXCI6IFwiYXV0b1wifSkuIEFkZGVkIGluIHBucG0gdjEyLjAuMC1yYy4yLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dsb2JhbFNoaW1zXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxTaGltcz86IGFueTtcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIGFsbCB0aGUgcGFja2FnZXMgYXJlIHNhdmVkIG9uIHRoZSBkaXNrLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0YXRlRGlyXG4gICAqL1xuICByZWFkb25seSBzdGF0ZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBjYWNoZSAocGFja2FnZSBtZXRhZGF0YSBhbmQgZGx4KS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYWNoZURpclxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgYWxsIHRoZSBvdXRwdXQgaXMgd3JpdHRlbiB0byBzdGRlcnIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXNlU3RkZXJyXG4gICAqL1xuICByZWFkb25seSB1c2VTdGRlcnI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCBjaGVjayBmb3IgdXBkYXRlcyB0byB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIGFuZCBub3RpZnkgdGhlIHVzZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXBkYXRlTm90aWZpZXJcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZU5vdGlmaWVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXhwbGljaXRseSB0ZWxscyBwbnBtIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBDb250aW51b3VzIEludGVncmF0aW9uIHN5c3RlbSwgb3ZlcnJpZGluZyBwbnBtJ3MgYXV0b21hdGljIENJIGRldGVjdGlvbi4gQWRkZWQgaW4gcG5wbSB2MTAuMTIuMS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjaVxuICAgKi9cbiAgcmVhZG9ubHkgY2k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgc3ltbGlua3MgdG8gZXhlY3V0YWJsZXMgaW4gbm9kZV9tb2R1bGVzLy5iaW4gaW5zdGVhZCBvZiBjb21tYW5kIHNoaW1zLiBUaGlzIHNldHRpbmcgaXMgaWdub3JlZCBvbiBXaW5kb3dzLCB3aGVyZSBvbmx5IGNvbW1hbmQgc2hpbXMgd29yay5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcmVmZXJTeW1saW5rZWRFeGVjdXRhYmxlc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEdXJpbmcgaW5zdGFsbGF0aW9uIHRoZSBkZXBlbmRlbmNpZXMgb2Ygc29tZSBwYWNrYWdlcyBhcmUgYXV0b21hdGljYWxseSBwYXRjaGVkLiBJZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoaXMsIHNldCB0aGlzIGNvbmZpZyB0byBmYWxzZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVDb21wYXRpYmlsaXR5RGJcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNvbXBhdGliaWxpdHlEYj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaG93IHBucG0gcmVzb2x2ZXMgZGVwZW5kZW5jaWVzLCBTZWUgaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI3Jlc29sdXRpb25tb2RlXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVzb2x1dGlvbk1vZGVcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdXRpb25Nb2RlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXNvbHV0aW9uTW9kZTtcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSBpZiB0aGUgcmVnaXN0cnkgdGhhdCB5b3UgYXJlIHVzaW5nIHJldHVybnMgdGhlIFwidGltZVwiIGZpZWxkIGluIHRoZSBhYmJyZXZpYXRlZCBtZXRhZGF0YS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkXG4gICAqL1xuICByZWFkb25seSByZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBmYWxzZSwgdGhlIE5PREVfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0IGluIHRoZSBjb21tYW5kIHNoaW1zLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2V4dGVuZE5vZGVQYXRoXG4gICAqL1xuICByZWFkb25seSBleHRlbmROb2RlUGF0aD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZGVwbG95aW5nIGEgcGFja2FnZSBvciBpbnN0YWxsaW5nIGEgbG9jYWwgcGFja2FnZSwgYWxsIGZpbGVzIG9mIHRoZSBwYWNrYWdlIGFyZSBjb3BpZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVwbG95QWxsRmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveUFsbEZpbGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGFscmVhZHkgc3ltbGlua2VkIHRvIHRoZSByb290IG5vZGVfbW9kdWxlcyBkaXJlY3Rvcnkgb2YgdGhlIHdvcmtzcGFjZSB3aWxsIG5vdCBiZSBzeW1saW5rZWQgdG8gc3VicHJvamVjdCBub2RlX21vZHVsZXMgZGlyZWN0b3JpZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlRGlyZWN0RGVwc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlRGlyZWN0RGVwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBzZXR0aW5nIGlzIGVuYWJsZWQsIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBpbmplY3RlZCB3aWxsIGJlIHN5bWxpbmtlZCBmcm9tIHRoZSB3b3Jrc3BhY2Ugd2hlbmV2ZXIgcG9zc2libGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlSW5qZWN0ZWREZXBzXG4gICAqL1xuICByZWFkb25seSBkZWR1cGVJbmplY3RlZERlcHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGEgZmFzdCBjaGVjayB3aWxsIGJlIHBlcmZvcm1lZCBiZWZvcmUgcHJvY2VlZGluZyB0byBpbnN0YWxsYXRpb24uIFRoaXMgd2F5IGEgcmVwZWF0IGluc3RhbGwgb3IgYW4gaW5zdGFsbCBvbiBhIHByb2plY3Qgd2l0aCBldmVyeXRoaW5nIHVwLXRvLWRhdGUgYmVjb21lcyBhIGxvdCBmYXN0ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjb3B0aW1pc3RpY1JlcGVhdEluc3RhbGxcbiAgICovXG4gIHJlYWRvbmx5IG9wdGltaXN0aWNSZXBlYXRJbnN0YWxsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgY3VycmVudCBicmFuY2ggaXMgeW91ciBwdWJsaXNoIGJyYW5jaCwgY2xlYW4sIGFuZCB1cC10by1kYXRlIHdpdGggcmVtb3RlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dpdENoZWNrc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0Q2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVU5ET0NVTUVOVEVELiBXaGVuIGB0cnVlYCwgYHBucG0gcHVibGlzaGAgd3JpdGVzIHRoZSBSRUFETUUgZmlsZSdzIGNvbnRlbnQgaW50byB0aGUgcHVibGlzaGVkIHBhY2thZ2UuanNvbiAodGhlIGByZWFkbWVgIGZpZWxkKSwgc28gcmVnaXN0cmllcyBzdWNoIGFzIG5wbWpzLmNvbSByZW5kZXIgdGhlIHBhY2thZ2UncyBSRUFETUUuIEFkZGVkIGluIHBucG0gNi4yOC4wOyBwbnBtIGRvZXMgbm90IGVtYmVkIHRoZSBSRUFETUUgdW5sZXNzIHRoaXMgaXMgZW5hYmxlZC4gSXQgYWxzbyB3b24ndCBvdmVycmlkZSBhIGByZWFkbWVgIGZpZWxkIGFscmVhZHkgc2V0IGluIHRoZSBwYWNrYWdlLmpzb25cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbWJlZFJlYWRtZVxuICAgKi9cbiAgcmVhZG9ubHkgZW1iZWRSZWFkbWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSBicmFuY2ggb2YgdGhlIHJlcG9zaXRvcnkgd2hpY2ggaXMgdXNlZCBmb3IgcHVibGlzaGluZyB0aGUgbGF0ZXN0IGNoYW5nZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHVibGlzaEJyYW5jaFxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaEJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbmluZyBzZXR0aW5ncyBmb3IgcG5wbSdzIG5hdGl2ZSB3b3Jrc3BhY2UgcmVsZWFzZSBtYW5hZ2VtZW50LCB1c2VkIGJ5IGBwbnBtIGNoYW5nZWAgYW5kIHJlY3Vyc2l2ZSBgcG5wbSB2ZXJzaW9uYC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2ZXJzaW9uaW5nXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uaW5nPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHB1Ymxpc2hpbmcgZnJvbSBhIHN1cHBvcnRlZCBjbG91ZCBDSS9DRCBzeXN0ZW0sIHRoZSBwYWNrYWdlIHdpbGwgYmUgcHVibGljbHkgbGlua2VkIHRvIHdoZXJlIGl0IHdhcyBidWlsdCBhbmQgcHVibGlzaGVkIGZyb20uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJvdmVuYW5jZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmVuYW5jZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgbG9jYWwgcG5wbWZpbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcG5wbWZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHBucG1maWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgYSBnbG9iYWwgcG5wbWZpbGUuIEEgZ2xvYmFsIHBucG1maWxlIGlzIHVzZWQgYnkgYWxsIHByb2plY3RzIGR1cmluZyBpbnN0YWxsYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2xvYmFsUG5wbWZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbFBucG1maWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAucG5wbWZpbGUuY2pzIHdpbGwgYmUgaWdub3JlZC4gVXNlZnVsIHRvZ2V0aGVyIHdpdGggLS1pZ25vcmUtc2NyaXB0cyB3aGVuIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IG5vIHNjcmlwdCBnZXRzIGV4ZWN1dGVkIGR1cmluZyBpbnN0YWxsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVBucG1maWxlXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQbnBtZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBnZW5lcmF0ZWQgcGF0Y2ggZmlsZSB3aWxsIGJlIHNhdmVkIHRvIHRoaXMgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhdGNoZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoZXNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcG5wbSB3aWxsIHJ1biBhbnkgcHJlL3Bvc3Qgc2NyaXB0cyBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZVByZVBvc3RTY3JpcHRzXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQcmVQb3N0U2NyaXB0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzaGVsbCB0byB1c2UgZm9yIHNjcmlwdHMgcnVuIHdpdGggdGhlIHBucG0gcnVuIGNvbW1hbmQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2NyaXB0U2hlbGxcbiAgICovXG4gIHJlYWRvbmx5IHNjcmlwdFNoZWxsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCB1c2UgYSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGEgYmFzaC1saWtlIHNoZWxsIHRvIGV4ZWN1dGUgc2NyaXB0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzaGVsbEVtdWxhdG9yXG4gICAqL1xuICByZWFkb25seSBzaGVsbEVtdWxhdG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2F2ZWQgZGVwZW5kZW5jaWVzIHdpbGwgYmUgY29uZmlndXJlZCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gcmF0aGVyIHRoYW4gdXNpbmcgcG5wbSdzIGRlZmF1bHQgc2VtdmVyIHJhbmdlIG9wZXJhdG9yLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NhdmVFeGFjdFxuICAgKi9cbiAgcmVhZG9ubHkgc2F2ZUV4YWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogbWluaW11bVJlbGVhc2VBZ2UgZGVmaW5lcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWludXRlcyB0aGF0IG11c3QgcGFzcyBhZnRlciBhIHZlcnNpb24gaXMgcHVibGlzaGVkIGJlZm9yZSBwbnBtIHdpbGwgaW5zdGFsbCBpdC4gVGhpcyBhcHBsaWVzIHRvIGFsbCBkZXBlbmRlbmNpZXMsIGluY2x1ZGluZyB0cmFuc2l0aXZlIG9uZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWluaW11bVJlbGVhc2VBZ2VcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IGBtaW5pbXVtUmVsZWFzZUFnZWAgYnV0IG5lZWQgY2VydGFpbiBkZXBlbmRlbmNpZXMgdG8gYWx3YXlzIGluc3RhbGwgdGhlIG5ld2VzdCB2ZXJzaW9uIGltbWVkaWF0ZWx5LCB5b3UgY2FuIGxpc3QgdGhlbSB1bmRlciBgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlYC4gVGhlIGV4Y2x1c2lvbiB3b3JrcyBieSBgcGFja2FnZSBuYW1lYCBhbmQgYXBwbGllcyB0byBhbGwgdmVyc2lvbnMgb2YgdGhhdCBwYWNrYWdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGhvdyBwbnBtIGJlaGF2ZXMgd2hlbiBubyB2ZXJzaW9uIG9mIGEgZGVwZW5kZW5jeSBzYXRpc2ZpZXMgdGhlIG1pbmltdW1SZWxlYXNlQWdlIGNvbnN0cmFpbnQgd2l0aGluIHRoZSByZXF1ZXN0ZWQgcmFuZ2UuXG4gICAqIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNtaW5pbXVtcmVsZWFzZWFnZXN0cmljdFxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlU3RyaWN0XG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZVN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHBucG0gYWRkLCBwbnBtIHVwZGF0ZSwgYW5kIHBucG0gcmVtb3ZlIHBydW5lIHRoZSBlbnRyaWVzIG9mIG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZSBpbiBwbnBtLXdvcmtzcGFjZS55YW1sIHRoYXQgdGhlIGZyZXNobHkgd3JpdHRlbiBsb2NrZmlsZSBubyBsb25nZXIgcmVzb2x2ZXM6IGEgdmVyc2lvbiB0aGF0IGlzIGdvbmUgaXMgZHJvcHBlZCAoYW4gZW50cnkgaXMgcmVtb3ZlZCBvbmNlIG5vbmUgb2YgaXRzIHZlcnNpb25zIHJlbWFpbiksIGFuZCBhbiBlbnRyeSBmb3IgYSBwYWNrYWdlIHRoYXQgaXMgbm8gbG9uZ2VyIGluIHRoZSBsb2NrZmlsZSBpcyByZW1vdmVkIHRvby4gTmFtZSBwYXR0ZXJucyAoQG15b3JnLyopIGFyZSBhbHdheXMga2VwdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVQcnVuZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlUHJ1bmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCeXBhc3Mgc3RhbGVuZXNzIGNoZWNrcyBmb3IgY2FjaGVkIGRhdGEuIE1pc3NpbmcgZGF0YSB3aWxsIHN0aWxsIGJlIHJlcXVlc3RlZCBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyT2ZmbGluZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVyT2ZmbGluZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIG5vLWRvd25ncmFkZSwgcG5wbSB3aWxsIGZhaWwgaWYgYSBwYWNrYWdlJ3MgdHJ1c3QgbGV2ZWwgaGFzIGRlY3JlYXNlZCBjb21wYXJlZCB0byBwcmV2aW91cyByZWxlYXNlcy4gRm9yIGV4YW1wbGUsIGlmIGEgcGFja2FnZSB3YXMgcHJldmlvdXNseSBwdWJsaXNoZWQgYnkgYSB0cnVzdGVkIHB1Ymxpc2hlciBidXQgbm93IG9ubHkgaGFzIHByb3ZlbmFuY2Ugb3Igbm8gdHJ1c3QgZXZpZGVuY2UsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwuIFRoaXMgaGVscHMgcHJldmVudCBpbnN0YWxsaW5nIHBvdGVudGlhbGx5IGNvbXByb21pc2VkIHZlcnNpb25zLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3RydXN0UG9saWN5XG4gICAqL1xuICByZWFkb25seSB0cnVzdFBvbGljeT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVHJ1c3RQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gbm93IGxpc3Qgb25lIG9yIG1vcmUgc3BlY2lmaWMgcGFja2FnZXMgb3IgdmVyc2lvbnMgdGhhdCBwbnBtIHNob3VsZCBhbGxvdyB0byBpbnN0YWxsLCBldmVuIGlmIHRob3NlIHBhY2thZ2VzIGRvbid0IHNhdGlzZnkgdGhlIHRydXN0IHBvbGljeSByZXF1aXJlbWVudC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdFBvbGljeUV4Y2x1ZGVcbiAgICovXG4gIHJlYWRvbmx5IHRydXN0UG9saWN5RXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBwYWNrYWdlIG1hdGNoZXJzIHRvIGV4cGxpY2l0bHkgYWxsb3cgKGB0cnVlYCkgb3IgZGlzYWxsb3cgKGBmYWxzZWApIHNjcmlwdCBleGVjdXRpb24uIFRoaXMgZmllbGQgcmVwbGFjZXMgYG9ubHlCdWlsdERlcGVuZGVuY2llc2AgYW5kIGBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXNgICh3aGljaCBhcmUgYWxzbyBkZXByZWNhdGVkIGJ5IHRoaXMgbmV3IHNldHRpbmcpLCBwcm92aWRpbmcgYSBzaW5nbGUgc291cmNlIG9mIHRydXRoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2FsbG93QnVpbGRzXG4gICAqL1xuICByZWFkb25seSBhbGxvd0J1aWxkcz86IGFueTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgaXQgcHJldmVudHMgdGhlIHJlc29sdXRpb24gb2YgZXhvdGljIHByb3RvY29scyAobGlrZSBnaXQrc3NoOiBvciBkaXJlY3QgaHR0cHM6IHRhcmJhbGxzKSBpbiB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcy4gT25seSBkaXJlY3QgZGVwZW5kZW5jaWVzIGFyZSBhbGxvd2VkIHRvIHVzZSBleG90aWMgc291cmNlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNibG9ja0V4b3RpY1N1YmRlcHNcbiAgICovXG4gIHJlYWRvbmx5IGJsb2NrRXhvdGljU3ViZGVwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93cyBpZ25vcmluZyB0aGUgdHJ1c3QgcG9saWN5IGNoZWNrIGZvciBwYWNrYWdlcyBwdWJsaXNoZWQgbW9yZSB0aGFuIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgYWdvLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGVuYWJsaW5nIHN0cmljdCB0cnVzdCBwb2xpY2llcywgYXMgaXQgYWxsb3dzIG9sZGVyIHZlcnNpb25zIG9mIHBhY2thZ2VzICh3aGljaCBtYXkgbGFjayBhIHByb2Nlc3MgZm9yIHB1Ymxpc2hpbmcgd2l0aCBzaWduYXR1cmVzIG9yIHByb3ZlbmFuY2UpIHRvIGJlIGluc3RhbGxlZCB3aXRob3V0IG1hbnVhbCBleGNsdXNpb24sIGFzc3VtaW5nIHRoZXkgYXJlIHNhZmUgZHVlIHRvIHRoZWlyIGFnZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdFBvbGljeUlnbm9yZUFmdGVyXG4gICAqL1xuICByZWFkb25seSB0cnVzdFBvbGljeUlnbm9yZUFmdGVyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgbGV2ZWwgb2YgaXNzdWVzIHJlcG9ydGVkIGJ5IGBwbnBtIGF1ZGl0YC4gV2hlbiBzZXQgdG8gJ2xvdycsIGFsbCB2dWxuZXJhYmlsaXRpZXMgYXJlIHJlcG9ydGVkLiBXaGVuIHNldCB0byAnbW9kZXJhdGUnLCAnaGlnaCcsIG9yICdjcml0aWNhbCcsIG9ubHkgdnVsbmVyYWJpbGl0aWVzIHdpdGggdGhhdCBzZXZlcml0eSBvciBoaWdoZXIgYXJlIHJlcG9ydGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2F1ZGl0TGV2ZWxcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0TGV2ZWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWw7XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgcGVlciBkZXBlbmRlbmN5IHN1ZmZpeGVzIHVzZSB2ZXJzaW9uLW9ubHkgaWRlbnRpZmllcnMgKGBuYW1lQHZlcnNpb25gKSBpbnN0ZWFkIG9mIGZ1bGwgZGVwIHBhdGhzLCBlbGltaW5hdGluZyBuZXN0ZWQgc3VmZml4ZXMgbGlrZSBgKGZvb0AxLjAuMChiYXJAMi4wLjApKWAuIFRoaXMgZHJhbWF0aWNhbGx5IHJlZHVjZXMgdGhlIG51bWJlciBvZiBwYWNrYWdlIGluc3RhbmNlcyBpbiBwcm9qZWN0cyB3aXRoIG1hbnkgcmVjdXJzaXZlIHBlZXIgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZVBlZXJzXG4gICAqL1xuICByZWFkb25seSBkZWR1cGVQZWVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHJlZ2lzdHJ5IGF1dGhlbnRpY2F0aW9uIHRva2Vucy4gQnkgZGVmYXVsdCwgcG5wbSByZWFkcyBhdXRoIHRva2VucyBmcm9tIH4vLm5wbXJjIGFzIGEgZmFsbGJhY2sgZm9yIHJlZ2lzdHJ5IGF1dGhlbnRpY2F0aW9uLiBVc2UgdGhpcyBzZXR0aW5nIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IGZpbGUgaW5zdGVhZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNucG1yY0F1dGhGaWxlXG4gICAqL1xuICByZWFkb25seSBucG1yY0F1dGhGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgcG5wbSBza2lwcyB0aGUgYG1pbmltdW1SZWxlYXNlQWdlYCBjaGVjayBmb3IgYSBwYWNrYWdlIHdob3NlIHJlZ2lzdHJ5IG1ldGFkYXRhIGRvZXMgbm90IGluY2x1ZGUgdGhlIHRpbWUgZmllbGQgKHNvbWUgcHJpdmF0ZSByZWdpc3RyaWVzIGFuZCBtaXJyb3JzIG9taXQgaXQpLiBTZXQgdG8gYGZhbHNlYCB0byBmYWlsIHJlc29sdXRpb24gaW4gdGhhdCBjYXNlIGluc3RlYWQgb2YgaW5zdGFsbGluZyB0aGUgcGFja2FnZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIHJlZ2lzdHJpZXMgZm9yIHNjb3BlZCBwYWNrYWdlcyBpbiBgcG5wbS13b3Jrc3BhY2UueWFtbGAuIFRoZSBgZGVmYXVsdGAga2V5IHNldHMgdGhlIG1haW4gcmVnaXN0cnkgKGVxdWl2YWxlbnQgdG8gdGhlIGByZWdpc3RyeWAgYC5ucG1yY2Agc2V0dGluZykuIFNjb3BlZCBrZXlzIGNvbmZpZ3VyZSByZWdpc3RyaWVzIGZvciBzcGVjaWZpYyBwYWNrYWdlIHNjb3Blcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZWdpc3RyaWVzXG4gICAqL1xuICByZWFkb25seSByZWdpc3RyaWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRGVmaW5lcyBuYW1lZCByZWdpc3RyeSBhbGlhc2VzIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBwcmVmaXggd2hlbiBpbnN0YWxsaW5nIHBhY2thZ2VzLCBlLmcuIGBwbnBtIGFkZCB3b3JrOkBjb3JwL2xpYkBeMi4wLjBgIHJlc29sdmVzIGBAY29ycC9saWJAXjIuMC4wYCBhZ2FpbnN0IHRoZSBjb25maWd1cmVkIFVSTC4gQnVpbHQtaW4gYWxpYXNlcyBgZ2g6YCAoaHR0cHM6Ly9ucG0ucGtnLmdpdGh1Yi5jb20vKSBhbmQgYG5wbWpzOmAgKGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLykgd29yayB3aXRob3V0IGFueSBjb25maWd1cmF0aW9uIGFuZCBjYW4gYmUgb3ZlcnJpZGRlbi4gQW4gYWxpYXMgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjb250YWluIG9ubHkgbGV0dGVycywgZGlnaXRzLCBgLmAsIGBfYCwgYW5kIGAtYC4gQWRkZWQgaW4gcG5wbSAxMS4xLjAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbmFtZWRSZWdpc3RyaWVzXG4gICAqL1xuICByZWFkb25seSBuYW1lZFJlZ2lzdHJpZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBwbnBtIHBvcHVsYXRlcyB0aGUgdmlydHVhbCBzdG9yZSB3aXRob3V0IGNyZWF0aW5nIGltcG9ydGVyIHN5bWxpbmtzLCBob2lzdGluZywgYmluIGxpbmtzLCBvciBydW5uaW5nIGxpZmVjeWNsZSBzY3JpcHRzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJlLXBvcHVsYXRpbmcgYSBzdG9yZSAoZS5nLiwgaW4gTml4IGJ1aWxkcykgd2l0aG91dCBjcmVhdGluZyB1bm5lY2Vzc2FyeSBwcm9qZWN0LWxldmVsIGFydGlmYWN0cy4gcG5wbSBmZXRjaCB1c2VzIHRoaXMgbW9kZSBpbnRlcm5hbGx5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZU9ubHlcbiAgICovXG4gIHJlYWRvbmx5IHZpcnR1YWxTdG9yZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGBvbkZhaWxgIGJlaGF2aW9yIG9mIGJvdGggdGhlIGBwYWNrYWdlTWFuYWdlcmAgZmllbGQgYW5kIGBkZXZFbmdpbmVzLnBhY2thZ2VNYW5hZ2VyYCB3aGVuIHRoZSBydW5uaW5nIHBucG0gdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgZGVjbGFyZWQgb25lLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BtT25GYWlsXG4gICAqL1xuICByZWFkb25seSBwbU9uRmFpbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUG1PbkZhaWw7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgYG9uRmFpbGAgZmllbGQgb2YgYGRldkVuZ2luZXMucnVudGltZWAgKGFuZCBgZW5naW5lcy5ydW50aW1lYCkgaW4gdGhlIHJvb3QgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IGEgZGlmZmVyZW50IGxvY2FsIGJlaGF2aW9yIHRoYW4gd2hhdCBpcyB3cml0dGVuIGluIHRoZSBtYW5pZmVzdCDigJQgZm9yIGluc3RhbmNlLCBmb3JjaW5nIHBucG0gdG8gZG93bmxvYWQgdGhlIGRlY2xhcmVkIHJ1bnRpbWUgZXZlbiB3aGVuIHRoZSBtYW5pZmVzdCBzZXRzIGBvbkZhaWw6IFwid2FyblwiYC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNydW50aW1lT25GYWlsXG4gICAqL1xuICByZWFkb25seSBydW50aW1lT25GYWlsPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSdW50aW1lT25GYWlsO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgY3VzdG9tIE5vZGUuanMgZG93bmxvYWQgbWlycm9ycyBpbiBgcG5wbS13b3Jrc3BhY2UueWFtbGAuIFRoZSBrZXlzIGFyZSByZWxlYXNlIGNoYW5uZWxzIChgcmVsZWFzZWAsIGByY2AsIGBuaWdodGx5YCwgYHY4LWNhbmFyeWAsIGV0Yy4pIGFuZCB0aGUgdmFsdWVzIGFyZSBiYXNlIFVSTHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZURvd25sb2FkTWlycm9yc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9kZURvd25sb2FkTWlycm9ycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgbmV3IHRydXN0TG9ja2ZpbGUgc2V0dGluZyBjb250cm9scyB3aGV0aGVyIHBucG0gaW5zdGFsbCByZS1hcHBsaWVzIHRoZSBgbWluaW11bVJlbGVhc2VBZ2VgIC8gYHRydXN0UG9saWN5OiAnbm8tZG93bmdyYWRlJ2AgY2hlY2tzIHRvIGV2ZXJ5IGVudHJ5IGluIHRoZSBsb2FkZWQgbG9ja2ZpbGUuIFdoZW4gdHJ1ZSwgdGhlIGluc3RhbGwgdHJlYXRzIHRoZSBsb2NrZmlsZSBhcyBhbHJlYWR5LXRydXN0ZWQgYW5kIHNraXBzIHRoZSB2ZXJpZmljYXRpb24gcGFzcyDigJQgdXNlZnVsIGZvciBjbG9zZWQtc291cmNlIHByb2plY3RzIHdoZXJlIGV2ZXJ5IGNvbW1pdCBjb21lcyBmcm9tIGEgdHJ1c3RlZCBhdXRob3IuIFRoZSBkZWZhdWx0IGlzIGZhbHNlLCBzbyB2ZXJpZmljYXRpb24gc3RheXMgb24gYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdExvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSB0cnVzdExvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkZWQgYSBuZXcgaG9pc3RpbmdMaW1pdHMgc2V0dGluZyBmb3IgYG5vZGVMaW5rZXI6IGhvaXN0ZWRgIGluc3RhbGxzLCBtaXJyb3JpbmcgeWFybidzIGBubUhvaXN0aW5nTGltaXRzYC4gSXQgYWNjZXB0cyBgbm9uZWAgKHRoZSBkZWZhdWx0IOKAlCBob2lzdCBhcyBmYXIgYXMgcG9zc2libGUpLCB3b3Jrc3BhY2VzIChob2lzdCBvbmx5IGFzIGZhciBhcyBlYWNoIHdvcmtzcGFjZSBwYWNrYWdlKSwgb3IgZGVwZW5kZW5jaWVzIChob2lzdCBvbmx5IHVwIHRvIGVhY2ggd29ya3NwYWNlIHBhY2thZ2UncyBkaXJlY3QgZGVwZW5kZW5jaWVzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNob2lzdGluZ0xpbWl0c1xuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RpbmdMaW1pdHM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUhvaXN0aW5nTGltaXRzO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdwYWNrYWdlcyc6IG9iai5wYWNrYWdlcz8ubWFwKHkgPT4geSksXG4gICAgJ2NhdGFsb2cnOiAoKG9iai5jYXRhbG9nKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouY2F0YWxvZykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ2NhdGFsb2dzJzogKChvYmouY2F0YWxvZ3MpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5jYXRhbG9ncykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06ICgoaVsxXSkgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMoaVsxXSkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSkgfSksIHt9KSksXG4gICAgJ2NhdGFsb2dNb2RlJzogb2JqLmNhdGFsb2dNb2RlLFxuICAgICdjbGVhbnVwVW51c2VkQ2F0YWxvZ3MnOiBvYmouY2xlYW51cFVudXNlZENhdGFsb2dzLFxuICAgICdjYXRhbG9nUHJ1bmUnOiBvYmouY2F0YWxvZ1BydW5lLFxuICAgICdvbmx5QnVpbHREZXBlbmRlbmNpZXMnOiBvYmoub25seUJ1aWx0RGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgICAnb3ZlcnJpZGVzJzogb2JqLm92ZXJyaWRlcyxcbiAgICAncGFja2FnZUV4dGVuc2lvbnMnOiBvYmoucGFja2FnZUV4dGVuc2lvbnMsXG4gICAgJ3BhY2thZ2VDb25maWdzJzogb2JqLnBhY2thZ2VDb25maWdzLFxuICAgICdwZWVyRGVwZW5kZW5jeVJ1bGVzJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyhvYmoucGVlckRlcGVuZGVuY3lSdWxlcyksXG4gICAgJ25ldmVyQnVpbHREZXBlbmRlbmNpZXMnOiBvYmoubmV2ZXJCdWlsdERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ2Rhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHMnOiBvYmouZGFuZ2Vyb3VzbHlBbGxvd0FsbEJ1aWxkcyxcbiAgICAnb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZSc6IG9iai5vbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlLFxuICAgICdpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXMnOiBvYmouaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgICAnYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucyc6ICgob2JqLmFsbG93ZWREZXByZWNhdGVkVmVyc2lvbnMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5hbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAncGF0Y2hlZERlcGVuZGVuY2llcyc6ICgob2JqLnBhdGNoZWREZXBlbmRlbmNpZXMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5wYXRjaGVkRGVwZW5kZW5jaWVzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAnYWxsb3dVbnVzZWRQYXRjaGVzJzogb2JqLmFsbG93VW51c2VkUGF0Y2hlcyxcbiAgICAnYWxsb3dOb25BcHBsaWVkUGF0Y2hlcyc6IG9iai5hbGxvd05vbkFwcGxpZWRQYXRjaGVzLFxuICAgICdpZ25vcmVQYXRjaEZhaWx1cmVzJzogb2JqLmlnbm9yZVBhdGNoRmFpbHVyZXMsXG4gICAgJ3VwZGF0ZSc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZShvYmoudXBkYXRlKSxcbiAgICAndXBkYXRlQ29uZmlnJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnKG9iai51cGRhdGVDb25maWcpLFxuICAgICdjb25maWdEZXBlbmRlbmNpZXMnOiBvYmouY29uZmlnRGVwZW5kZW5jaWVzLFxuICAgICdhdWRpdCc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0KG9iai5hdWRpdCksXG4gICAgJ2F1ZGl0Q29uZmlnJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcob2JqLmF1ZGl0Q29uZmlnKSxcbiAgICAncmVxdWlyZWRTY3JpcHRzJzogb2JqLnJlcXVpcmVkU2NyaXB0cz8ubWFwKHkgPT4geSksXG4gICAgJ3N1cHBvcnRlZEFyY2hpdGVjdHVyZXMnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzKG9iai5zdXBwb3J0ZWRBcmNoaXRlY3R1cmVzKSxcbiAgICAnaWdub3JlZE9wdGlvbmFsRGVwZW5kZW5jaWVzJzogb2JqLmlnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ2V4ZWN1dGlvbkVudic6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudihvYmouZXhlY3V0aW9uRW52KSxcbiAgICAnaG9pc3QnOiBvYmouaG9pc3QsXG4gICAgJ2hvaXN0V29ya3NwYWNlUGFja2FnZXMnOiBvYmouaG9pc3RXb3Jrc3BhY2VQYWNrYWdlcyxcbiAgICAnaG9pc3RQYXR0ZXJuJzogb2JqLmhvaXN0UGF0dGVybj8ubWFwKHkgPT4geSksXG4gICAgJ3B1YmxpY0hvaXN0UGF0dGVybic6IG9iai5wdWJsaWNIb2lzdFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICdzaGFtZWZ1bGx5SG9pc3QnOiBvYmouc2hhbWVmdWxseUhvaXN0LFxuICAgICdtb2R1bGVzRGlyJzogb2JqLm1vZHVsZXNEaXIsXG4gICAgJ25vZGVMaW5rZXInOiBvYmoubm9kZUxpbmtlcixcbiAgICAnbm9kZUV4cGVyaW1lbnRhbFBhY2thZ2VNYXAnOiBvYmoubm9kZUV4cGVyaW1lbnRhbFBhY2thZ2VNYXAsXG4gICAgJ25vZGVQYWNrYWdlTWFwVHlwZSc6IG9iai5ub2RlUGFja2FnZU1hcFR5cGUsXG4gICAgJ3N5bWxpbmsnOiBvYmouc3ltbGluayxcbiAgICAnZW5hYmxlTW9kdWxlc0Rpcic6IG9iai5lbmFibGVNb2R1bGVzRGlyLFxuICAgICd2aXJ0dWFsU3RvcmVEaXInOiBvYmoudmlydHVhbFN0b3JlRGlyLFxuICAgICd2aXJ0dWFsU3RvcmVEaXJNYXhMZW5ndGgnOiBvYmoudmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoLFxuICAgICd2aXJ0dWFsU3RvcmVUeXBlJzogb2JqLnZpcnR1YWxTdG9yZVR5cGUsXG4gICAgJ3BhY2thZ2VJbXBvcnRNZXRob2QnOiBvYmoucGFja2FnZUltcG9ydE1ldGhvZCxcbiAgICAnbW9kdWxlc0NhY2hlTWF4QWdlJzogb2JqLm1vZHVsZXNDYWNoZU1heEFnZSxcbiAgICAnZGx4Q2FjaGVNYXhBZ2UnOiBvYmouZGx4Q2FjaGVNYXhBZ2UsXG4gICAgJ3N0b3JlRGlyJzogb2JqLnN0b3JlRGlyLFxuICAgICd2ZXJpZnlTdG9yZUludGVncml0eSc6IG9iai52ZXJpZnlTdG9yZUludGVncml0eSxcbiAgICAndXNlUnVubmluZ1N0b3JlU2VydmVyJzogb2JqLnVzZVJ1bm5pbmdTdG9yZVNlcnZlcixcbiAgICAnZnJvemVuU3RvcmUnOiBvYmouZnJvemVuU3RvcmUsXG4gICAgJ3N0cmljdFN0b3JlUGtnQ29udGVudENoZWNrJzogb2JqLnN0cmljdFN0b3JlUGtnQ29udGVudENoZWNrLFxuICAgICdlbmFibGVHbG9iYWxWaXJ0dWFsU3RvcmUnOiBvYmouZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlLFxuICAgICdsb2NrZmlsZSc6IG9iai5sb2NrZmlsZSxcbiAgICAncHJlZmVyRnJvemVuTG9ja2ZpbGUnOiBvYmoucHJlZmVyRnJvemVuTG9ja2ZpbGUsXG4gICAgJ2xvY2tmaWxlSW5jbHVkZVRhcmJhbGxVcmwnOiBvYmoubG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybCxcbiAgICAnZ2l0QnJhbmNoTG9ja2ZpbGUnOiBvYmouZ2l0QnJhbmNoTG9ja2ZpbGUsXG4gICAgJ21lcmdlR2l0QnJhbmNoTG9ja2ZpbGVzQnJhbmNoUGF0dGVybic6IG9iai5tZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICdwZWVyc1N1ZmZpeE1heExlbmd0aCc6IG9iai5wZWVyc1N1ZmZpeE1heExlbmd0aCxcbiAgICAncmVnaXN0cnknOiBvYmoucmVnaXN0cnksXG4gICAgJ2NhJzogb2JqLmNhLFxuICAgICdjYWZpbGUnOiBvYmouY2FmaWxlLFxuICAgICdjZXJ0Jzogb2JqLmNlcnQsXG4gICAgJ2tleSc6IG9iai5rZXksXG4gICAgJ2dpdFNoYWxsb3dIb3N0cyc6IG9iai5naXRTaGFsbG93SG9zdHM/Lm1hcCh5ID0+IHkpLFxuICAgICdodHRwc1Byb3h5Jzogb2JqLmh0dHBzUHJveHksXG4gICAgJ2h0dHBQcm94eSc6IG9iai5odHRwUHJveHksXG4gICAgJ3Byb3h5Jzogb2JqLnByb3h5LFxuICAgICdsb2NhbEFkZHJlc3MnOiBvYmoubG9jYWxBZGRyZXNzLFxuICAgICdtYXhzb2NrZXRzJzogb2JqLm1heHNvY2tldHMsXG4gICAgJ25vUHJveHknOiBvYmoubm9Qcm94eSxcbiAgICAnc3RyaWN0U3NsJzogb2JqLnN0cmljdFNzbCxcbiAgICAnbmV0d29ya0NvbmN1cnJlbmN5Jzogb2JqLm5ldHdvcmtDb25jdXJyZW5jeSxcbiAgICAnZmV0Y2hSZXRyaWVzJzogb2JqLmZldGNoUmV0cmllcyxcbiAgICAnZmV0Y2hSZXRyeUZhY3Rvcic6IG9iai5mZXRjaFJldHJ5RmFjdG9yLFxuICAgICdmZXRjaFJldHJ5TWludGltZW91dCc6IG9iai5mZXRjaFJldHJ5TWludGltZW91dCxcbiAgICAnZmV0Y2hSZXRyeU1heHRpbWVvdXQnOiBvYmouZmV0Y2hSZXRyeU1heHRpbWVvdXQsXG4gICAgJ2ZldGNoVGltZW91dCc6IG9iai5mZXRjaFRpbWVvdXQsXG4gICAgJ2ZldGNoV2FyblRpbWVvdXRNcyc6IG9iai5mZXRjaFdhcm5UaW1lb3V0TXMsXG4gICAgJ2ZldGNoTWluU3BlZWRLaUJwcyc6IG9iai5mZXRjaE1pblNwZWVkS2lCcHMsXG4gICAgJ2F1dG9JbnN0YWxsUGVlcnMnOiBvYmouYXV0b0luc3RhbGxQZWVycyxcbiAgICAnZGVkdXBlUGVlckRlcGVuZGVudHMnOiBvYmouZGVkdXBlUGVlckRlcGVuZGVudHMsXG4gICAgJ3N0cmljdFBlZXJEZXBlbmRlbmNpZXMnOiBvYmouc3RyaWN0UGVlckRlcGVuZGVuY2llcyxcbiAgICAncmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3QnOiBvYmoucmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3QsXG4gICAgJ2NvbG9yJzogb2JqLmNvbG9yLFxuICAgICdsb2dsZXZlbCc6IG9iai5sb2dsZXZlbCxcbiAgICAncmVwb3J0ZXInOiBvYmoucmVwb3J0ZXIsXG4gICAgJ3VzZUJldGFDbGknOiBvYmoudXNlQmV0YUNsaSxcbiAgICAncmVjdXJzaXZlSW5zdGFsbCc6IG9iai5yZWN1cnNpdmVJbnN0YWxsLFxuICAgICdlbmdpbmVTdHJpY3QnOiBvYmouZW5naW5lU3RyaWN0LFxuICAgICducG1QYXRoJzogb2JqLm5wbVBhdGgsXG4gICAgJ3BhY2thZ2VNYW5hZ2VyU3RyaWN0Jzogb2JqLnBhY2thZ2VNYW5hZ2VyU3RyaWN0LFxuICAgICdwYWNrYWdlTWFuYWdlclN0cmljdFZlcnNpb24nOiBvYmoucGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uLFxuICAgICdtYW5hZ2VQYWNrYWdlTWFuYWdlclZlcnNpb25zJzogb2JqLm1hbmFnZVBhY2thZ2VNYW5hZ2VyVmVyc2lvbnMsXG4gICAgJ2lnbm9yZVNjcmlwdHMnOiBvYmouaWdub3JlU2NyaXB0cyxcbiAgICAnaWdub3JlRGVwU2NyaXB0cyc6IG9iai5pZ25vcmVEZXBTY3JpcHRzLFxuICAgICdjaGlsZENvbmN1cnJlbmN5Jzogb2JqLmNoaWxkQ29uY3VycmVuY3ksXG4gICAgJ3NpZGVFZmZlY3RzQ2FjaGUnOiBvYmouc2lkZUVmZmVjdHNDYWNoZSxcbiAgICAnc2lkZUVmZmVjdHNDYWNoZVJlYWRvbmx5Jzogb2JqLnNpZGVFZmZlY3RzQ2FjaGVSZWFkb25seSxcbiAgICAndW5zYWZlUGVybSc6IG9iai51bnNhZmVQZXJtLFxuICAgICdub2RlT3B0aW9ucyc6IG9iai5ub2RlT3B0aW9ucyxcbiAgICAndmVyaWZ5RGVwc0JlZm9yZVJ1bic6IG9iai52ZXJpZnlEZXBzQmVmb3JlUnVuLFxuICAgICdzdHJpY3REZXBCdWlsZHMnOiBvYmouc3RyaWN0RGVwQnVpbGRzLFxuICAgICd1c2VOb2RlVmVyc2lvbic6IG9iai51c2VOb2RlVmVyc2lvbixcbiAgICAnbm9kZVZlcnNpb24nOiBvYmoubm9kZVZlcnNpb24sXG4gICAgJ2xpbmtXb3Jrc3BhY2VQYWNrYWdlcyc6IG9iai5saW5rV29ya3NwYWNlUGFja2FnZXM/LnZhbHVlLFxuICAgICdpbmplY3RXb3Jrc3BhY2VQYWNrYWdlcyc6IG9iai5pbmplY3RXb3Jrc3BhY2VQYWNrYWdlcyxcbiAgICAnc3luY0luamVjdGVkRGVwc0FmdGVyU2NyaXB0cyc6IG9iai5zeW5jSW5qZWN0ZWREZXBzQWZ0ZXJTY3JpcHRzPy5tYXAoeSA9PiB5KSxcbiAgICAncHJlZmVyV29ya3NwYWNlUGFja2FnZXMnOiBvYmoucHJlZmVyV29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ3NoYXJlZFdvcmtzcGFjZUxvY2tmaWxlJzogb2JqLnNoYXJlZFdvcmtzcGFjZUxvY2tmaWxlLFxuICAgICdzYXZlV29ya3NwYWNlUHJvdG9jb2wnOiBvYmouc2F2ZVdvcmtzcGFjZVByb3RvY29sPy52YWx1ZSxcbiAgICAnaW5jbHVkZVdvcmtzcGFjZVJvb3QnOiBvYmouaW5jbHVkZVdvcmtzcGFjZVJvb3QsXG4gICAgJ2lnbm9yZVdvcmtzcGFjZUN5Y2xlcyc6IG9iai5pZ25vcmVXb3Jrc3BhY2VDeWNsZXMsXG4gICAgJ2lnbm9yZVdvcmtzcGFjZVJvb3RDaGVjayc6IG9iai5pZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2ssXG4gICAgJ2Rpc2FsbG93V29ya3NwYWNlQ3ljbGVzJzogb2JqLmRpc2FsbG93V29ya3NwYWNlQ3ljbGVzLFxuICAgICd3b3Jrc3BhY2VDb25jdXJyZW5jeSc6IG9iai53b3Jrc3BhY2VDb25jdXJyZW5jeSxcbiAgICAnZmFpbElmTm9NYXRjaCc6IG9iai5mYWlsSWZOb01hdGNoLFxuICAgICdmb3JjZUxlZ2FjeURlcGxveSc6IG9iai5mb3JjZUxlZ2FjeURlcGxveSxcbiAgICAnc2F2ZVByZWZpeCc6IG9iai5zYXZlUHJlZml4LFxuICAgICd0YWcnOiBvYmoudGFnLFxuICAgICdnbG9iYWxEaXInOiBvYmouZ2xvYmFsRGlyLFxuICAgICdnbG9iYWxCaW5EaXInOiBvYmouZ2xvYmFsQmluRGlyLFxuICAgICdnbG9iYWxTaGltcyc6IG9iai5nbG9iYWxTaGltcyxcbiAgICAnc3RhdGVEaXInOiBvYmouc3RhdGVEaXIsXG4gICAgJ2NhY2hlRGlyJzogb2JqLmNhY2hlRGlyLFxuICAgICd1c2VTdGRlcnInOiBvYmoudXNlU3RkZXJyLFxuICAgICd1cGRhdGVOb3RpZmllcic6IG9iai51cGRhdGVOb3RpZmllcixcbiAgICAnY2knOiBvYmouY2ksXG4gICAgJ3ByZWZlclN5bWxpbmtlZEV4ZWN1dGFibGVzJzogb2JqLnByZWZlclN5bWxpbmtlZEV4ZWN1dGFibGVzLFxuICAgICdpZ25vcmVDb21wYXRpYmlsaXR5RGInOiBvYmouaWdub3JlQ29tcGF0aWJpbGl0eURiLFxuICAgICdyZXNvbHV0aW9uTW9kZSc6IG9iai5yZXNvbHV0aW9uTW9kZSxcbiAgICAncmVnaXN0cnlTdXBwb3J0c1RpbWVGaWVsZCc6IG9iai5yZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkLFxuICAgICdleHRlbmROb2RlUGF0aCc6IG9iai5leHRlbmROb2RlUGF0aCxcbiAgICAnZGVwbG95QWxsRmlsZXMnOiBvYmouZGVwbG95QWxsRmlsZXMsXG4gICAgJ2RlZHVwZURpcmVjdERlcHMnOiBvYmouZGVkdXBlRGlyZWN0RGVwcyxcbiAgICAnZGVkdXBlSW5qZWN0ZWREZXBzJzogb2JqLmRlZHVwZUluamVjdGVkRGVwcyxcbiAgICAnb3B0aW1pc3RpY1JlcGVhdEluc3RhbGwnOiBvYmoub3B0aW1pc3RpY1JlcGVhdEluc3RhbGwsXG4gICAgJ2dpdENoZWNrcyc6IG9iai5naXRDaGVja3MsXG4gICAgJ2VtYmVkUmVhZG1lJzogb2JqLmVtYmVkUmVhZG1lLFxuICAgICdwdWJsaXNoQnJhbmNoJzogb2JqLnB1Ymxpc2hCcmFuY2gsXG4gICAgJ3ZlcnNpb25pbmcnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nKG9iai52ZXJzaW9uaW5nKSxcbiAgICAncHJvdmVuYW5jZSc6IG9iai5wcm92ZW5hbmNlLFxuICAgICdwbnBtZmlsZSc6IG9iai5wbnBtZmlsZSxcbiAgICAnZ2xvYmFsUG5wbWZpbGUnOiBvYmouZ2xvYmFsUG5wbWZpbGUsXG4gICAgJ2lnbm9yZVBucG1maWxlJzogb2JqLmlnbm9yZVBucG1maWxlLFxuICAgICdwYXRjaGVzRGlyJzogb2JqLnBhdGNoZXNEaXIsXG4gICAgJ2VuYWJsZVByZVBvc3RTY3JpcHRzJzogb2JqLmVuYWJsZVByZVBvc3RTY3JpcHRzLFxuICAgICdzY3JpcHRTaGVsbCc6IG9iai5zY3JpcHRTaGVsbCxcbiAgICAnc2hlbGxFbXVsYXRvcic6IG9iai5zaGVsbEVtdWxhdG9yLFxuICAgICdzYXZlRXhhY3QnOiBvYmouc2F2ZUV4YWN0LFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZSc6IG9iai5taW5pbXVtUmVsZWFzZUFnZSxcbiAgICAnbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZT8ubWFwKHkgPT4geSksXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlU3RyaWN0Jzogb2JqLm1pbmltdW1SZWxlYXNlQWdlU3RyaWN0LFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVQcnVuZSc6IG9iai5taW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVQcnVuZSxcbiAgICAncHJlZmVyT2ZmbGluZSc6IG9iai5wcmVmZXJPZmZsaW5lLFxuICAgICd0cnVzdFBvbGljeSc6IG9iai50cnVzdFBvbGljeSxcbiAgICAndHJ1c3RQb2xpY3lFeGNsdWRlJzogb2JqLnRydXN0UG9saWN5RXhjbHVkZT8ubWFwKHkgPT4geSksXG4gICAgJ2FsbG93QnVpbGRzJzogb2JqLmFsbG93QnVpbGRzLFxuICAgICdibG9ja0V4b3RpY1N1YmRlcHMnOiBvYmouYmxvY2tFeG90aWNTdWJkZXBzLFxuICAgICd0cnVzdFBvbGljeUlnbm9yZUFmdGVyJzogb2JqLnRydXN0UG9saWN5SWdub3JlQWZ0ZXIsXG4gICAgJ2F1ZGl0TGV2ZWwnOiBvYmouYXVkaXRMZXZlbCxcbiAgICAnZGVkdXBlUGVlcnMnOiBvYmouZGVkdXBlUGVlcnMsXG4gICAgJ25wbXJjQXV0aEZpbGUnOiBvYmoubnBtcmNBdXRoRmlsZSxcbiAgICAnbWluaW11bVJlbGVhc2VBZ2VJZ25vcmVNaXNzaW5nVGltZSc6IG9iai5taW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lLFxuICAgICdyZWdpc3RyaWVzJzogKChvYmoucmVnaXN0cmllcykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLnJlZ2lzdHJpZXMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICduYW1lZFJlZ2lzdHJpZXMnOiAoKG9iai5uYW1lZFJlZ2lzdHJpZXMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5uYW1lZFJlZ2lzdHJpZXMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICd2aXJ0dWFsU3RvcmVPbmx5Jzogb2JqLnZpcnR1YWxTdG9yZU9ubHksXG4gICAgJ3BtT25GYWlsJzogb2JqLnBtT25GYWlsLFxuICAgICdydW50aW1lT25GYWlsJzogb2JqLnJ1bnRpbWVPbkZhaWwsXG4gICAgJ25vZGVEb3dubG9hZE1pcnJvcnMnOiAoKG9iai5ub2RlRG93bmxvYWRNaXJyb3JzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoubm9kZURvd25sb2FkTWlycm9ycykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ3RydXN0TG9ja2ZpbGUnOiBvYmoudHJ1c3RMb2NrZmlsZSxcbiAgICAnaG9pc3RpbmdMaW1pdHMnOiBvYmouaG9pc3RpbmdMaW1pdHMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBDb250cm9sbGluZyBpZiBhbmQgaG93IGRlcGVuZGVuY2llcyBhcmUgYWRkZWQgdG8gdGhlIGRlZmF1bHQgY2F0YWxvZ1xuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDYXRhbG9nTW9kZVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNhdGFsb2dNb2RlIHtcbiAgLyoqIHN0cmljdCAqL1xuICBTVFJJQ1QgPSBcInN0cmljdFwiLFxuICAvKiogcHJlZmVyICovXG4gIFBSRUZFUiA9IFwicHJlZmVyXCIsXG4gIC8qKiBtYW51YWwgKi9cbiAgTUFOVUFMID0gXCJtYW51YWxcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyB7XG4gIC8qKlxuICAgKiBwbnBtIHdpbGwgbm90IHByaW50IHdhcm5pbmdzIGFib3V0IG1pc3NpbmcgcGVlciBkZXBlbmRlbmNpZXMgZnJvbSB0aGlzIGxpc3QuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzI2lnbm9yZU1pc3NpbmdcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZU1pc3Npbmc/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVW5tZXQgcGVlciBkZXBlbmRlbmN5IHdhcm5pbmdzIHdpbGwgbm90IGJlIHByaW50ZWQgZm9yIHBlZXIgZGVwZW5kZW5jaWVzIG9mIHRoZSBzcGVjaWZpZWQgcmFuZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzI2FsbG93ZWRWZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZFZlcnNpb25zPzogYW55O1xuXG4gIC8qKlxuICAgKiBBbnkgcGVlciBkZXBlbmRlbmN5IG1hdGNoaW5nIHRoZSBwYXR0ZXJuIHdpbGwgYmUgcmVzb2x2ZWQgZnJvbSBhbnkgdmVyc2lvbiwgcmVnYXJkbGVzcyBvZiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGluIFwicGVlckRlcGVuZGVuY2llc1wiLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyNhbGxvd0FueVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dBbnk/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaWdub3JlTWlzc2luZyc6IG9iai5pZ25vcmVNaXNzaW5nPy5tYXAoeSA9PiB5KSxcbiAgICAnYWxsb3dlZFZlcnNpb25zJzogb2JqLmFsbG93ZWRWZXJzaW9ucyxcbiAgICAnYWxsb3dBbnknOiBvYmouYWxsb3dBbnk/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmN5IG5hbWUgcGF0dGVybnMgdGhhdCBwbnBtIHVwZGF0ZSBhbmQgcG5wbSBvdXRkYXRlZCBzaG91bGQgc2tpcC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZSNpZ25vcmVEZXBzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVEZXBzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcG5wbSB1cGRhdGUgd3JpdGVzIGEgY2hhbmdlIGludGVudCBhZnRlciB1cGRhdGluZyB3b3Jrc3BhY2UgbWFuaWZlc3RzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlI2NoYW5nZXNldFxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc2V0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHVwZGF0ZSBhbmQgcG5wbSBvdXRkYXRlZCBhbHNvIGNoZWNrIHRoZSBHaXRIdWIgQWN0aW9ucyByZWZlcmVuY2VkIGJ5IHRoZSByZXBvc2l0b3J5J3Mgd29ya2Zsb3cgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUjZ2l0aHViQWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViQWN0aW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIFVSTCBvZiB0aGUgR2l0SHViIHNlcnZlciB0aGF0IGhvc3RzIHRoZSByZXBvc2l0b3JpZXMgb2YgdGhlIEdpdEh1YiBBY3Rpb25zIHJlZmVyZW5jZWQgYnkgdGhlIHdvcmtmbG93IGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlI2dpdGh1YkFjdGlvbnNTZXJ2ZXJcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YkFjdGlvbnNTZXJ2ZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2lnbm9yZURlcHMnOiBvYmouaWdub3JlRGVwcz8ubWFwKHkgPT4geSksXG4gICAgJ2NoYW5nZXNldCc6IG9iai5jaGFuZ2VzZXQsXG4gICAgJ2dpdGh1YkFjdGlvbnMnOiBvYmouZ2l0aHViQWN0aW9ucyxcbiAgICAnZ2l0aHViQWN0aW9uc1NlcnZlcic6IG9iai5naXRodWJBY3Rpb25zU2VydmVyLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlcyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gcnVubmluZyBcInBucG0gb3V0ZGF0ZWRcIiBvciBcInBucG0gdXBkYXRlIC0tbGF0ZXN0XCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcjaWdub3JlRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVEZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaWdub3JlRGVwZW5kZW5jaWVzJzogb2JqLmlnbm9yZURlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0IHtcbiAgLyoqXG4gICAqIE9ubHkgcHJpbnQgYWR2aXNvcmllcyB3aXRoIHNldmVyaXR5IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGlzIGxldmVsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQjbGV2ZWxcbiAgICovXG4gIHJlYWRvbmx5IGxldmVsPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgR0hTQSBjb2RlcyB0aGF0IHdpbGwgYmUgaWdub3JlZCBieSBwbnBtIGF1ZGl0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQjaWdub3JlXG4gICAqL1xuICByZWFkb25seSBpZ25vcmU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIGBwbnBtIGF1ZGl0IC0tZml4YCByZW1vdmVzIHRoZSBgYXVkaXQuaWdub3JlYCBlbnRyaWVzIHdob3NlIEdIU0Egbm8gbG9uZ2VyIGFwcGVhcnMgaW4gdGhlIGF1ZGl0IHJlcG9ydCwgc28gYSBsaXN0IG9mIHRvbGVyYXRlZCBhZHZpc29yaWVzIGRvZXNuJ3QgYWNjdW11bGF0ZSBlbnRyaWVzIGZvciBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgbG9uZyBnb25lLiBBZGRlZCBpbjogdjExLjI1LjAgYW5kIHYxMi4wLjAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdCNpZ25vcmVQcnVuZVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlUHJ1bmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdChvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdsZXZlbCc6IG9iai5sZXZlbCxcbiAgICAnaWdub3JlJzogb2JqLmlnbm9yZT8ubWFwKHkgPT4geSksXG4gICAgJ2lnbm9yZVBydW5lJzogb2JqLmlnbm9yZVBydW5lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgQ1ZFIElEcyB0aGF0IHdpbGwgYmUgaWdub3JlZCBieSBcInBucG0gYXVkaXRcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnI2lnbm9yZUN2ZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUN2ZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIEdIU0EgQ29kZXMgdGhhdCB3aWxsIGJlIGlnbm9yZWQgYnkgXCJwbnBtIGF1ZGl0XCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyNpZ25vcmVHaHNhc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlR2hzYXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaWdub3JlQ3Zlcyc6IG9iai5pZ25vcmVDdmVzPy5tYXAoeSA9PiB5KSxcbiAgICAnaWdub3JlR2hzYXMnOiBvYmouaWdub3JlR2hzYXM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogU3BlY2lmaWVzIGFyY2hpdGVjdHVyZXMgZm9yIHdoaWNoIHlvdSdkIGxpa2UgdG8gaW5zdGFsbCBvcHRpb25hbCBkZXBlbmRlbmNpZXMsIGV2ZW4gaWYgdGhleSBkb24ndCBtYXRjaCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBzeXN0ZW0gcnVubmluZyB0aGUgaW5zdGFsbC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyNvc1xuICAgKi9cbiAgcmVhZG9ubHkgb3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMjY3B1XG4gICAqL1xuICByZWFkb25seSBjcHU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMjbGliY1xuICAgKi9cbiAgcmVhZG9ubHkgbGliYz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdvcyc6IG9iai5vcz8ubWFwKHkgPT4geSksXG4gICAgJ2NwdSc6IG9iai5jcHU/Lm1hcCh5ID0+IHkpLFxuICAgICdsaWJjJzogb2JqLmxpYmM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52IHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGljaCBleGFjdCBOb2RlLmpzIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBwcm9qZWN0J3MgcnVudGltZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudiNub2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25vZGVWZXJzaW9uJzogb2JqLm5vZGVWZXJzaW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogRGVmaW5lcyB3aGF0IGxpbmtlciBzaG91bGQgYmUgdXNlZCBmb3IgaW5zdGFsbGluZyBOb2RlIHBhY2thZ2VzLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlTGlua2VyXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZUxpbmtlciB7XG4gIC8qKiBpc29sYXRlZCAqL1xuICBJU09MQVRFRCA9IFwiaXNvbGF0ZWRcIixcbiAgLyoqIGhvaXN0ZWQgKi9cbiAgSE9JU1RFRCA9IFwiaG9pc3RlZFwiLFxuICAvKiogcG5wICovXG4gIFBOUCA9IFwicG5wXCIsXG59XG5cbi8qKlxuICogQ29udHJvbHMgaG93IG5vZGVfbW9kdWxlcy8ucGFja2FnZS1tYXAuanNvbiBpcyBnZW5lcmF0ZWQuIHN0YW5kYXJkIC0gb25seSBkZWNsYXJlZCBkZXBlbmRlbmNpZXMgYXJlIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBwYWNrYWdlIG1hcC4gbG9vc2UgLSBhbHNvIG1hcHMgcGFja2FnZXMgdGhhdCBhcmUgcmVhY2hhYmxlIHRocm91Z2ggdGhlIGluc3RhbGxlZCBub2RlX21vZHVsZXMgbGF5b3V0LCB3aGljaCBjYW4gYWxsb3cgdW5kZWNsYXJlZCBob2lzdGVkIGRlcGVuZGVuY2llcyB0byByZXNvbHZlLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlUGFja2FnZU1hcFR5cGVcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlUGFja2FnZU1hcFR5cGUge1xuICAvKiogc3RhbmRhcmQgKi9cbiAgU1RBTkRBUkQgPSBcInN0YW5kYXJkXCIsXG4gIC8qKiBsb29zZSAqL1xuICBMT09TRSA9IFwibG9vc2VcIixcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXJlIHRoZSB2aXJ0dWFsIHN0b3JlIGlzIGxvY2F0ZWQuIFdoZW4gc2V0IHRvIHByb2plY3QsIGEgc2VwYXJhdGUgdmlydHVhbCBzdG9yZSBpcyBjcmVhdGVkIGluIGVhY2ggcHJvamVjdCdzIG5vZGVfbW9kdWxlcy8ucG5wbS4gV2hlbiBzZXQgdG8gZ2xvYmFsLCBhIHNpbmdsZSBzdG9yZSBpcyBzaGFyZWQgYnkgZXZlcnkgcHJvamVjdCBvbiB0aGUgbWFjaGluZSwgd2l0aCBlYWNoIHByb2plY3QncyBub2RlX21vZHVsZXMgaG9sZGluZyBvbmx5IHN5bWxpbmtzIGludG8gaXQuIEFkZGVkIGluIHBucG0gdjExLjIzLjAuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZpcnR1YWxTdG9yZVR5cGVcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWaXJ0dWFsU3RvcmVUeXBlIHtcbiAgLyoqIHByb2plY3QgKi9cbiAgUFJPSkVDVCA9IFwicHJvamVjdFwiLFxuICAvKiogZ2xvYmFsICovXG4gIEdMT0JBTCA9IFwiZ2xvYmFsXCIsXG59XG5cbi8qKlxuICogQ29udHJvbHMgdGhlIHdheSBwYWNrYWdlcyBhcmUgaW1wb3J0ZWQgZnJvbSB0aGUgc3RvcmUgKGlmIHlvdSB3YW50IHRvIGRpc2FibGUgc3ltbGlua3MgaW5zaWRlIG5vZGVfbW9kdWxlcywgdGhlbiB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIG5vZGVMaW5rZXIgc2V0dGluZywgbm90IHRoaXMgb25lKS5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGFja2FnZUltcG9ydE1ldGhvZFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2Qge1xuICAvKiogYXV0byAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG4gIC8qKiBoYXJkbGluayAqL1xuICBIQVJETElOSyA9IFwiaGFyZGxpbmtcIixcbiAgLyoqIGNvcHkgKi9cbiAgQ09QWSA9IFwiY29weVwiLFxuICAvKiogY2xvbmUgKi9cbiAgQ0xPTkUgPSBcImNsb25lXCIsXG4gIC8qKiBjbG9uZS1vci1jb3B5ICovXG4gIENMT05FX0hZUEhFTl9PUl9IWVBIRU5fQ09QWSA9IFwiY2xvbmUtb3ItY29weVwiLFxufVxuXG4vKipcbiAqIENvbnRyb2xzIGNvbG9ycyBpbiB0aGUgb3V0cHV0LlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDb2xvclxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNvbG9yIHtcbiAgLyoqIGFsd2F5cyAqL1xuICBBTFdBWVMgPSBcImFsd2F5c1wiLFxuICAvKiogYXV0byAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG4gIC8qKiBuZXZlciAqL1xuICBORVZFUiA9IFwibmV2ZXJcIixcbn1cblxuLyoqXG4gKiBBbnkgbG9ncyBhdCBvciBoaWdoZXIgdGhhbiB0aGUgZ2l2ZW4gbGV2ZWwgd2lsbCBiZSBzaG93bi5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTG9nbGV2ZWxcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMb2dsZXZlbCB7XG4gIC8qKiBkZWJ1ZyAqL1xuICBERUJVRyA9IFwiZGVidWdcIixcbiAgLyoqIGluZm8gKi9cbiAgSU5GTyA9IFwiaW5mb1wiLFxuICAvKiogd2FybiAqL1xuICBXQVJOID0gXCJ3YXJuXCIsXG4gIC8qKiBlcnJvciAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbn1cblxuLyoqXG4gKiBBbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgb3V0cHV0IHN0eWxlIG9mIHRoZSBsb2dzLlxuICogaHR0cHM6Ly9wbnBtLmlvL2NsaS9pbnN0YWxsIy0tcmVwb3J0ZXJuYW1lXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlcG9ydGVyXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVwb3J0ZXIge1xuICAvKiogc2lsZW50ICovXG4gIFNJTEVOVCA9IFwic2lsZW50XCIsXG4gIC8qKiBkZWZhdWx0ICovXG4gIERFRkFVTFQgPSBcImRlZmF1bHRcIixcbiAgLyoqIGFwcGVuZC1vbmx5ICovXG4gIEFQUEVORF9IWVBIRU5fT05MWSA9IFwiYXBwZW5kLW9ubHlcIixcbiAgLyoqIG5kanNvbiAqL1xuICBOREpTT04gPSBcIm5kanNvblwiLFxufVxuXG4vKipcbiAqIElmIHRoaXMgaXMgZW5hYmxlZCwgbG9jYWxseSBhdmFpbGFibGUgcGFja2FnZXMgYXJlIGxpbmtlZCB0byBub2RlX21vZHVsZXMgaW5zdGVhZCBvZiBiZWluZyBkb3dubG9hZGVkIGZyb20gdGhlIHJlZ2lzdHJ5LlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMaW5rV29ya3NwYWNlUGFja2FnZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQm9vbGVhbih2YWx1ZTogYm9vbGVhbik6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzKHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgbGlua2VkIGZyb20gdGhlIHdvcmtzcGFjZSBhcmUgYWRkZWQgdG8gcGFja2FnZS5qc29uLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlV29ya3NwYWNlUHJvdG9jb2xcbiAqL1xuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQm9vbGVhbih2YWx1ZTogYm9vbGVhbik6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sKHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xuICB9XG59XG5cbi8qKlxuICogQ29uZmlndXJlIGhvdyB2ZXJzaW9ucyBvZiBwYWNrYWdlcyBpbnN0YWxsZWQgdG8gYSBwYWNrYWdlLmpzb24gZmlsZSBnZXQgcHJlZml4ZWQuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVQcmVmaXhcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4IHtcbiAgLyoqIF4gKi9cbiAgVkFMVUVfQ0FSQVQgPSBcIl5cIixcbiAgLyoqIH4gKi9cbiAgVkFMVUVfVElMREUgPSBcIn5cIixcbiAgLyoqID0gKi9cbiAgVkFMVUVfRVFVQUxTID0gXCI9XCIsXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgcG5wbSByZXNvbHZlcyBkZXBlbmRlbmNpZXMsIFNlZSBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjcmVzb2x1dGlvbm1vZGVcbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVzb2x1dGlvbk1vZGVcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXNvbHV0aW9uTW9kZSB7XG4gIC8qKiBoaWdoZXN0ICovXG4gIEhJR0hFU1QgPSBcImhpZ2hlc3RcIixcbiAgLyoqIHRpbWUtYmFzZWQgKi9cbiAgVElNRV9IWVBIRU5fQkFTRUQgPSBcInRpbWUtYmFzZWRcIixcbiAgLyoqIGxvd2VzdC1kaXJlY3QgKi9cbiAgTE9XRVNUX0hZUEhFTl9ESVJFQ1QgPSBcImxvd2VzdC1kaXJlY3RcIixcbn1cblxuLyoqXG4gKiBWZXJzaW9uaW5nIHNldHRpbmdzIGZvciBwbnBtJ3MgbmF0aXZlIHdvcmtzcGFjZSByZWxlYXNlIG1hbmFnZW1lbnQsIHVzZWQgYnkgYHBucG0gY2hhbmdlYCBhbmQgcmVjdXJzaXZlIGBwbnBtIHZlcnNpb25gLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nIHtcbiAgLyoqXG4gICAqIEdyb3VwcyBvZiB3b3Jrc3BhY2UgcHJvamVjdHMgdGhhdCBhbHdheXMgcmVsZWFzZSB0b2dldGhlciBhdCBvbmUgc2hhcmVkIHZlcnNpb24uIFRoZSBzaGFyZWQgdmVyc2lvbiBpcyB0aGUgaGlnaGVzdCBjdXJyZW50IHZlcnNpb24gaW4gdGhlIGdyb3VwLCBidW1wZWQgYnkgdGhlIGxhcmdlc3QgYnVtcCBhbnkgbWVtYmVyIG5lZWRzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyNmaXhlZFxuICAgKi9cbiAgcmVhZG9ubHkgZml4ZWQ/OiBzdHJpbmdbXVtdO1xuXG4gIC8qKlxuICAgKiBXb3Jrc3BhY2UgcHJvamVjdHMgcGVybWFuZW50bHkgZXhjbHVkZWQgZnJvbSB2ZXJzaW9uaW5nIGFuZCBkZXBlbmRlbnQgcHJvcGFnYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nI2lnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENhcHMgdGhlIGJ1bXAgdGhhdCBhIHJlbGVhc2UgZnJvbSB0aGUgY3VycmVudCBjaGVja291dCBtYXkgYXBwbHksIGFmdGVyIGRlcGVuZGVudCBwcm9wYWdhdGlvbiBhbmQgZml4ZWQtZ3JvdXAgcmVzb2x1dGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcjbWF4QnVtcFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4QnVtcD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ01heEJ1bXA7XG5cbiAgLyoqXG4gICAqIE1hcHMgYSB3b3Jrc3BhY2UgcHJvamVjdCB0byBhIHJlbGVhc2UgbGFuZS4gVW5saXN0ZWQgcHJvamVjdHMgYXJlIG9uIHRoZSByZXNlcnZlZCBgbWFpbmAgbGFuZSBhbmQgcmVsZWFzZSBzdGFibGUgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nI2xhbmVzXG4gICAqL1xuICByZWFkb25seSBsYW5lcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRpZXMgbWVtYmVyIHByb2plY3RzIHRvIGEgbGVhZCBwcm9qZWN0IGFuZCBjb25zdHJhaW5zIHRoZWlyIG1ham9yIHZlcnNpb25zIHRvIHRoZSBsZWFkJ3MgbWFqb3ItdmVyc2lvbiBiYW5kLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyNlcGljc1xuICAgKi9cbiAgcmVhZG9ubHkgZXBpY3M/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljc1tdO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGVyZSByZWxlYXNlIGNoYW5nZWxvZyBjb250ZW50IGlzIHN0b3JlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcjY2hhbmdlbG9nXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2Vsb2c/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2c7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2ZpeGVkJzogb2JqLmZpeGVkPy5tYXAoeSA9PiB5Py5tYXAoeSA9PiB5KSksXG4gICAgJ2lnbm9yZSc6IG9iai5pZ25vcmU/Lm1hcCh5ID0+IHkpLFxuICAgICdtYXhCdW1wJzogb2JqLm1heEJ1bXAsXG4gICAgJ2xhbmVzJzogKChvYmoubGFuZXMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5sYW5lcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ2VwaWNzJzogb2JqLmVwaWNzPy5tYXAoeSA9PiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MoeSkpLFxuICAgICdjaGFuZ2Vsb2cnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nKG9iai5jaGFuZ2Vsb2cpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogV2hlbiBzZXQgdG8gbm8tZG93bmdyYWRlLCBwbnBtIHdpbGwgZmFpbCBpZiBhIHBhY2thZ2UncyB0cnVzdCBsZXZlbCBoYXMgZGVjcmVhc2VkIGNvbXBhcmVkIHRvIHByZXZpb3VzIHJlbGVhc2VzLiBGb3IgZXhhbXBsZSwgaWYgYSBwYWNrYWdlIHdhcyBwcmV2aW91c2x5IHB1Ymxpc2hlZCBieSBhIHRydXN0ZWQgcHVibGlzaGVyIGJ1dCBub3cgb25seSBoYXMgcHJvdmVuYW5jZSBvciBubyB0cnVzdCBldmlkZW5jZSwgaW5zdGFsbGF0aW9uIHdpbGwgZmFpbC4gVGhpcyBoZWxwcyBwcmV2ZW50IGluc3RhbGxpbmcgcG90ZW50aWFsbHkgY29tcHJvbWlzZWQgdmVyc2lvbnMuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRydXN0UG9saWN5XG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVHJ1c3RQb2xpY3kge1xuICAvKiogb2ZmICovXG4gIE9GRiA9IFwib2ZmXCIsXG4gIC8qKiBuby1kb3duZ3JhZGUgKi9cbiAgTk9fSFlQSEVOX0RPV05HUkFERSA9IFwibm8tZG93bmdyYWRlXCIsXG59XG5cbi8qKlxuICogT25seSBwcmludCBhZHZpc29yaWVzIHdpdGggc2V2ZXJpdHkgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoaXMgbGV2ZWwuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWxcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsIHtcbiAgLyoqIGxvdyAqL1xuICBMT1cgPSBcImxvd1wiLFxuICAvKiogbW9kZXJhdGUgKi9cbiAgTU9ERVJBVEUgPSBcIm1vZGVyYXRlXCIsXG4gIC8qKiBoaWdoICovXG4gIEhJR0ggPSBcImhpZ2hcIixcbiAgLyoqIGNyaXRpY2FsICovXG4gIENSSVRJQ0FMID0gXCJjcml0aWNhbFwiLFxufVxuXG4vKipcbiAqIE92ZXJyaWRlcyB0aGUgYG9uRmFpbGAgYmVoYXZpb3Igb2YgYm90aCB0aGUgYHBhY2thZ2VNYW5hZ2VyYCBmaWVsZCBhbmQgYGRldkVuZ2luZXMucGFja2FnZU1hbmFnZXJgIHdoZW4gdGhlIHJ1bm5pbmcgcG5wbSB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHRoZSBkZWNsYXJlZCBvbmUuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBtT25GYWlsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUG1PbkZhaWwge1xuICAvKiogZG93bmxvYWQgKi9cbiAgRE9XTkxPQUQgPSBcImRvd25sb2FkXCIsXG4gIC8qKiBlcnJvciAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbiAgLyoqIHdhcm4gKi9cbiAgV0FSTiA9IFwid2FyblwiLFxuICAvKiogaWdub3JlICovXG4gIElHTk9SRSA9IFwiaWdub3JlXCIsXG59XG5cbi8qKlxuICogT3ZlcnJpZGVzIHRoZSBgb25GYWlsYCBmaWVsZCBvZiBgZGV2RW5naW5lcy5ydW50aW1lYCAoYW5kIGBlbmdpbmVzLnJ1bnRpbWVgKSBpbiB0aGUgcm9vdCBwcm9qZWN0J3MgYHBhY2thZ2UuanNvbmAuIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgYSBkaWZmZXJlbnQgbG9jYWwgYmVoYXZpb3IgdGhhbiB3aGF0IGlzIHdyaXR0ZW4gaW4gdGhlIG1hbmlmZXN0IOKAlCBmb3IgaW5zdGFuY2UsIGZvcmNpbmcgcG5wbSB0byBkb3dubG9hZCB0aGUgZGVjbGFyZWQgcnVudGltZSBldmVuIHdoZW4gdGhlIG1hbmlmZXN0IHNldHMgYG9uRmFpbDogXCJ3YXJuXCJgLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSdW50aW1lT25GYWlsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUnVudGltZU9uRmFpbCB7XG4gIC8qKiBkb3dubG9hZCAqL1xuICBET1dOTE9BRCA9IFwiZG93bmxvYWRcIixcbiAgLyoqIGVycm9yICovXG4gIEVSUk9SID0gXCJlcnJvclwiLFxuICAvKiogd2FybiAqL1xuICBXQVJOID0gXCJ3YXJuXCIsXG4gIC8qKiBpZ25vcmUgKi9cbiAgSUdOT1JFID0gXCJpZ25vcmVcIixcbn1cblxuLyoqXG4gKiBBZGRlZCBhIG5ldyBob2lzdGluZ0xpbWl0cyBzZXR0aW5nIGZvciBgbm9kZUxpbmtlcjogaG9pc3RlZGAgaW5zdGFsbHMsIG1pcnJvcmluZyB5YXJuJ3MgYG5tSG9pc3RpbmdMaW1pdHNgLiBJdCBhY2NlcHRzIGBub25lYCAodGhlIGRlZmF1bHQg4oCUIGhvaXN0IGFzIGZhciBhcyBwb3NzaWJsZSksIHdvcmtzcGFjZXMgKGhvaXN0IG9ubHkgYXMgZmFyIGFzIGVhY2ggd29ya3NwYWNlIHBhY2thZ2UpLCBvciBkZXBlbmRlbmNpZXMgKGhvaXN0IG9ubHkgdXAgdG8gZWFjaCB3b3Jrc3BhY2UgcGFja2FnZSdzIGRpcmVjdCBkZXBlbmRlbmNpZXMpLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFIb2lzdGluZ0xpbWl0c1xuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUhvaXN0aW5nTGltaXRzIHtcbiAgLyoqIG5vbmUgKi9cbiAgTk9ORSA9IFwibm9uZVwiLFxuICAvKiogd29ya3NwYWNlcyAqL1xuICBXT1JLU1BBQ0VTID0gXCJ3b3Jrc3BhY2VzXCIsXG4gIC8qKiBkZXBlbmRlbmNpZXMgKi9cbiAgREVQRU5ERU5DSUVTID0gXCJkZXBlbmRlbmNpZXNcIixcbn1cblxuLyoqXG4gKiBDYXBzIHRoZSBidW1wIHRoYXQgYSByZWxlYXNlIGZyb20gdGhlIGN1cnJlbnQgY2hlY2tvdXQgbWF5IGFwcGx5LCBhZnRlciBkZXBlbmRlbnQgcHJvcGFnYXRpb24gYW5kIGZpeGVkLWdyb3VwIHJlc29sdXRpb24uXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdNYXhCdW1wXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ01heEJ1bXAge1xuICAvKiogcGF0Y2ggKi9cbiAgUEFUQ0ggPSBcInBhdGNoXCIsXG4gIC8qKiBtaW5vciAqL1xuICBNSU5PUiA9IFwibWlub3JcIixcbiAgLyoqIG1ham9yICovXG4gIE1BSk9SID0gXCJtYWpvclwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljcyB7XG4gIC8qKlxuICAgKiBMZWFkIHdvcmtzcGFjZSBwcm9qZWN0IG5hbWUgb3IgYSBgLi9gLXByZWZpeGVkIHdvcmtzcGFjZS1yZWxhdGl2ZSBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MjbGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgbGVhZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcm9qZWN0IHNlbGVjdG9ycyBtYXRjaGVkIGluIG9yZGVyLCBzdXBwb3J0aW5nIG5hbWUgZ2xvYnMsIGAuL2AtcHJlZml4ZWQgZGlyZWN0b3J5IGdsb2JzLCBhbmQgYCFgLXByZWZpeGVkIG5lZ2F0aW9ucy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljcyNwYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0VwaWNzKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdsZWFkJzogb2JqLmxlYWQsXG4gICAgJ3BhY2thZ2VzJzogb2JqLnBhY2thZ2VzPy5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIENvbnRyb2xzIHdoZXJlIHJlbGVhc2UgY2hhbmdlbG9nIGNvbnRlbnQgaXMgc3RvcmVkLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nIHtcbiAgLyoqXG4gICAqIENoYW5nZWxvZyBzdG9yYWdlIG1vZGUuIGByZWdpc3RyeWAgY29tcG9zZXMgY2hhbmdlbG9nIGVudHJpZXMgYXQgcHVibGlzaCB0aW1lLCB3aGlsZSBgcmVwb3NpdG9yeWAgY29tbWl0cyBDSEFOR0VMT0cubWQgZmlsZXMgaW4gcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nI3N0b3JhZ2VcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2U/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2dTdG9yYWdlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2cnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2cob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2cgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdzdG9yYWdlJzogb2JqLnN0b3JhZ2UsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBDaGFuZ2Vsb2cgc3RvcmFnZSBtb2RlLiBgcmVnaXN0cnlgIGNvbXBvc2VzIGNoYW5nZWxvZyBlbnRyaWVzIGF0IHB1Ymxpc2ggdGltZSwgd2hpbGUgYHJlcG9zaXRvcnlgIGNvbW1pdHMgQ0hBTkdFTE9HLm1kIGZpbGVzIGluIHBhY2thZ2VzLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nU3RvcmFnZVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2dTdG9yYWdlIHtcbiAgLyoqIHJlZ2lzdHJ5ICovXG4gIFJFR0lTVFJZID0gXCJyZWdpc3RyeVwiLFxuICAvKiogcmVwb3NpdG9yeSAqL1xuICBSRVBPU0lUT1JZID0gXCJyZXBvc2l0b3J5XCIsXG59XG4iXX0=
|
|
673
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvcG5wbS13b3Jrc3BhY2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZyQ0Esd0VBa0xDO0FBZ0RELDhHQVNDO0FBeUNELG9GQVVDO0FBb0JELGdHQU9DO0FBa0NELGtGQVNDO0FBMkJELDhGQVFDO0FBOEJELG9IQVNDO0FBb0JELGdHQU9DO0FBa0tELGtGQVFDO0FBcUZELDRGQVlDO0FBbUhELHNHQVFDO0FBc0JELDhHQU9DOztBQWozQkQ7OztHQUdHO0FBQ0gscUZBQXFGO0FBQ3JGLFNBQWdCLDhCQUE4QixDQUFDLEdBQXdDO0lBQ3JGLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLFNBQVMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5SixVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsUyxhQUFhLEVBQUUsR0FBRyxDQUFDLFdBQVc7UUFDOUIsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtRQUNsRCxjQUFjLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDaEMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRCxX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QUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQXNCRDs7O0dBR0c7QUFDSCxxRkFBcUY7QUFDckYsU0FBZ0IseUNBQXlDLENBQUMsR0FBbUQ7SUFDM0csSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxPQUFPLFNBQVMsQ0FBQztJQUFDLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixZQUFZLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQzVDLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQXlCRDs7O0dBR0c7QUFDSCxxRkFB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LENBQUM7QUFDRCxvRkFBb0Y7QUFFcEY7Ozs7R0FJRztBQUNILElBQVksaURBS1g7QUFMRCxXQUFZLGlEQUFpRDtJQUMzRCxlQUFlO0lBQ2YsMEVBQXFCLENBQUE7SUFDckIsaUJBQWlCO0lBQ2pCLDhFQUF5QixDQUFBO0FBQzNCLENBQUMsRUFMVyxpREFBaUQsaUVBQWpELGlEQUFpRCxRQUs1RCIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5vZGUgLi9wcm9qZW4uanNcIi5cbi8qKlxuICogSlNPTiBzY2hlbWEgZm9yIHBucG0td29ya3NwYWNlLnlhbWwgZmlsZXNcbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEge1xuICAvKipcbiAgICogV29ya3NwYWNlIHBhY2thZ2UgcGF0aHMuIEdsb2IgcGF0dGVybnMgYXJlIHN1cHBvcnRlZFxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgZGVwZW5kZW5jeSB2ZXJzaW9uIHJhbmdlcyBhcyByZXVzYWJsZSBjb25zdGFudHMsXG4gICAqIGZvciBsYXRlciByZWZlcmVuY2UgaW4gcGFja2FnZS5qc29uIGZpbGVzLlxuICAgKiBUaGlzIChzaW5ndWxhcikgZmllbGQgY3JlYXRlcyBhIGNhdGFsb2cgbmFtZWQgZGVmYXVsdC5cbiAgICpcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nXG4gICAqL1xuICByZWFkb25seSBjYXRhbG9nPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRGVmaW5lIGFyYml0cmFyaWx5IG5hbWVkIGNhdGFsb2dzXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2F0YWxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dzPzogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH07XG5cbiAgLyoqXG4gICAqIENvbnRyb2xsaW5nIGlmIGFuZCBob3cgZGVwZW5kZW5jaWVzIGFyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBjYXRhbG9nXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2F0YWxvZ01vZGVcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dNb2RlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDYXRhbG9nTW9kZTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCBwbnBtIHdpbGwgcmVtb3ZlIHVudXNlZCBjYXRhbG9nIGVudHJpZXMgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjbGVhbnVwVW51c2VkQ2F0YWxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFudXBVbnVzZWRDYXRhbG9ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHBucG0gd2lsbCByZW1vdmUgdW51c2VkIGNhdGFsb2cgZW50cmllcyBkdXJpbmcgaW5zdGFsbGF0aW9uLiBgY2xlYW51cFVudXNlZENhdGFsb2dzYCBpcyB0aGUgZGVwcmVjYXRlZCBzcGVsbGluZyBvZiB0aGlzIHNldHRpbmcgYW5kIGNvbnRpbnVlcyB0byB3b3JrOyB3aGVuIGJvdGggYXJlIHNldCwgYGNhdGFsb2dQcnVuZWAgd2lucy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nUHJ1bmVcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dQcnVuZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgZXhlY3V0ZWQgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNvbmx5QnVpbHREZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IG9ubHlCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG92ZXJyaWRlIGFueSBkZXBlbmRlbmN5IGluIHRoZSBkZXBlbmRlbmN5IGdyYXBoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI292ZXJyaWRlc1xuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogYW55O1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGV4dGVuZCB0aGUgZXhpc3RpbmcgcGFja2FnZSBkZWZpbml0aW9ucyB3aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZUV4dGVuc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VFeHRlbnNpb25zPzogYW55O1xuXG4gIC8qKlxuICAgKiBQZXItd29ya3NwYWNlLXByb2plY3QgcG5wbSBzZXR0aW5ncyB0aGF0IHJlcGxhY2UgcHJvamVjdC1zcGVjaWZpYyAubnBtcmMgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZUNvbmZpZ3NcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VDb25maWdzPzogYW55O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BlZXJEZXBlbmRlbmN5UnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IHBlZXJEZXBlbmRlbmN5UnVsZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXM7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgdG8gcnVuIGJ1aWxkcyBmb3IuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbmV2ZXJCdWlsdERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgbmV2ZXJCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYWxsIGJ1aWxkIHNjcmlwdHMgKGUuZy4gcHJlaW5zdGFsbCwgaW5zdGFsbCwgcG9zdGluc3RhbGwpIGZyb20gZGVwZW5kZW5jaWVzIHdpbGwgcnVuIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgcmVxdWlyaW5nIGFwcHJvdmFsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Rhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IGRhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBKU09OIGZpbGUgdGhhdCBsaXN0cyB0aGUgb25seSBwYWNrYWdlcyBwZXJtaXR0ZWQgdG8gcnVuIGluc3RhbGxhdGlvbiBzY3JpcHRzIGR1cmluZyB0aGUgcG5wbSBpbnN0YWxsIHByb2Nlc3MuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2UgbmFtZXMgdGhhdCBzaG91bGQgbm90IGJlIGJ1aWx0IGR1cmluZyBpbnN0YWxsYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcHJlY2F0ZWQgdmVyc2lvbnMgdGhhdCB0aGUgd2FybmluZ3MgYXJlIHN1cHByZXNzZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgcGF0Y2hlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYXRjaGVkRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBwYXRjaGVkRGVwZW5kZW5jaWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBpbnN0YWxsYXRpb24gd29uJ3QgZmFpbCBpZiBzb21lIG9mIHRoZSBwYXRjaGVzIGZyb20gdGhlIFwicGF0Y2hlZERlcGVuZGVuY2llc1wiIGZpZWxkIHdlcmUgbm90IGFwcGxpZWQuIChQcmV2aW91c2x5IG5hbWVkIFwiYWxsb3dOb25BcHBsaWVkUGF0Y2hlc1wiKVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2FsbG93VW51c2VkUGF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbnVzZWRQYXRjaGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBpbnN0YWxsYXRpb24gd29uJ3QgZmFpbCBpZiBzb21lIG9mIHRoZSBwYXRjaGVzIGZyb20gdGhlIFwicGF0Y2hlZERlcGVuZGVuY2llc1wiIGZpZWxkIHdlcmUgbm90IGFwcGxpZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dOb25BcHBsaWVkUGF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dOb25BcHBsaWVkUGF0Y2hlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaXMgdW5kZWZpbmVkLiBFcnJvcnMgb3V0IHdoZW4gYSBwYXRjaCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gb3IgdmVyc2lvbiByYW5nZSBmYWlscy4gSWdub3JlcyBmYWlsdXJlcyBmcm9tIG5hbWUtb25seSBwYXRjaGVzLiBXaGVuIHRydWUsIHByaW50cyBhIHdhcm5pbmcgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4gYW55IHBhdGNoIGNhbm5vdCBiZSBhcHBsaWVkLiBXaGVuIGZhbHNlLCBlcnJvcnMgb3V0IGZvciBhbnkgcGF0Y2ggZmFpbHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkLiBFcnJvcnMgb3V0IHdoZW4gYSBwYXRjaCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gb3IgdmVyc2lvbiByYW5nZSBmYWlscy4gSWdub3JlcyBmYWlsdXJlcyBmcm9tIG5hbWUtb25seSBwYXRjaGVzLiBXaGVuIHRydWUsIHByaW50cyBhIHdhcm5pbmcgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4gYW55IHBhdGNoIGNhbm5vdCBiZSBhcHBsaWVkLiBXaGVuIGZhbHNlLCBlcnJvcnMgb3V0IGZvciBhbnkgcGF0Y2ggZmFpbHVyZS5cbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVQYXRjaEZhaWx1cmVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQYXRjaEZhaWx1cmVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1cGRhdGVcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VwZGF0ZUNvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlQ29uZmlnPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWc7XG5cbiAgLyoqXG4gICAqIENvbmZpZyBkZXBlbmRlbmNpZXMgYWxsb3cgeW91IHRvIHNoYXJlIGFuZCBjZW50cmFsaXplIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHNldHRpbmdzLCBhbmQgaG9va3MgYWNyb3NzIG11bHRpcGxlIHByb2plY3RzLiBUaGV5IGFyZSBpbnN0YWxsZWQgYmVmb3JlIGFsbCByZWd1bGFyIGRlcGVuZGVuY2llcyAoJ2RlcGVuZGVuY2llcycsICdkZXZEZXBlbmRlbmNpZXMnLCAnb3B0aW9uYWxEZXBlbmRlbmNpZXMnKSwgbWFraW5nIHRoZW0gaWRlYWwgZm9yIHNldHRpbmcgdXAgY3VzdG9tIGhvb2tzLCBwYXRjaGVzLCBhbmQgY2F0YWxvZyBlbnRyaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NvbmZpZ0RlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnRGVwZW5kZW5jaWVzPzogYW55O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2F1ZGl0XG4gICAqL1xuICByZWFkb25seSBhdWRpdD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXVkaXRDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0Q29uZmlnPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHNjcmlwdHMgdGhhdCBtdXN0IGV4aXN0IGluIGVhY2ggcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXF1aXJlZFNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkU2NyaXB0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlcyBmb3Igd2hpY2ggeW91J2QgbGlrZSB0byBpbnN0YWxsIG9wdGlvbmFsIGRlcGVuZGVuY2llcywgZXZlbiBpZiB0aGV5IGRvbid0IG1hdGNoIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIHN5c3RlbSBydW5uaW5nIHRoZSBpbnN0YWxsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N1cHBvcnRlZEFyY2hpdGVjdHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IHN1cHBvcnRlZEFyY2hpdGVjdHVyZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXM7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBvcHRpb25hbCBkZXBlbmRlbmNpZXMgdGhhdCB0aGUgaW5zdGFsbCBzaG91bGQgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVkT3B0aW9uYWxEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2V4ZWN1dGlvbkVudlxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uRW52PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnY7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgYWxsIGRlcGVuZGVuY2llcyBhcmUgaG9pc3RlZCB0byBub2RlX21vZHVsZXMvLnBucG0vbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2hvaXN0XG4gICAqL1xuICByZWFkb25seSBob2lzdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlcyBhcmUgc3ltbGlua2VkIHRvIGVpdGhlciA8d29ya3NwYWNlX3Jvb3Q+L25vZGVfbW9kdWxlcy8ucG5wbS9ub2RlX21vZHVsZXMgb3IgdG8gPHdvcmtzcGFjZV9yb290Pi9ub2RlX21vZHVsZXMgZGVwZW5kaW5nIG9uIG90aGVyIGhvaXN0aW5nIHNldHRpbmdzIChob2lzdFBhdHRlcm4gYW5kIHB1YmxpY0hvaXN0UGF0dGVybikuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RXb3Jrc3BhY2VQYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RXb3Jrc3BhY2VQYWNrYWdlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRlbGxzIHBucG0gd2hpY2ggcGFja2FnZXMgc2hvdWxkIGJlIGhvaXN0ZWQgdG8gbm9kZV9tb2R1bGVzLy5wbnBtL25vZGVfbW9kdWxlc1xuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2hvaXN0UGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFVubGlrZSBob2lzdFBhdHRlcm4sIHdoaWNoIGhvaXN0cyBkZXBlbmRlbmNpZXMgdG8gYSBoaWRkZW4gbW9kdWxlcyBkaXJlY3RvcnkgaW5zaWRlIHRoZSB2aXJ0dWFsIHN0b3JlLCBwdWJsaWNIb2lzdFBhdHRlcm4gaG9pc3RzIGRlcGVuZGVuY2llcyBtYXRjaGluZyB0aGUgcGF0dGVybiB0byB0aGUgcm9vdCBtb2R1bGVzIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwdWJsaWNIb2lzdFBhdHRlcm5cbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0hvaXN0UGF0dGVybj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBwbnBtIGNyZWF0ZXMgYSBzZW1pc3RyaWN0IG5vZGVfbW9kdWxlcywgbWVhbmluZyBkZXBlbmRlbmNpZXMgaGF2ZSBhY2Nlc3MgdG8gdW5kZWNsYXJlZCBkZXBlbmRlbmNpZXMgYnV0IG1vZHVsZXMgb3V0c2lkZSBvZiBub2RlX21vZHVsZXMgZG8gbm90LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NoYW1lZnVsbHlIb2lzdFxuICAgKi9cbiAgcmVhZG9ubHkgc2hhbWVmdWxseUhvaXN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBpbnN0YWxsZWQgKGluc3RlYWQgb2Ygbm9kZV9tb2R1bGVzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtb2R1bGVzRGlyXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVzRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHdoYXQgbGlua2VyIHNob3VsZCBiZSB1c2VkIGZvciBpbnN0YWxsaW5nIE5vZGUgcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZUxpbmtlclxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZUxpbmtlcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZUxpbmtlcjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIGluamVjdHMgdGhlIGdlbmVyYXRlZCBub2RlX21vZHVsZXMvLnBhY2thZ2UtbWFwLmpzb24gaW50byBwbnBtLW1hbmFnZWQgTm9kZS5qcyBzY3JpcHQgZW52aXJvbm1lbnRzIGJ5IGFkZGluZyBOb2RlJ3MgLS1leHBlcmltZW50YWwtcGFja2FnZS1tYXAgb3B0aW9uIHRvIE5PREVfT1BUSU9OUy4gc2VlIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncy9ub2RlLW1vZHVsZXMjbm9kZWV4cGVyaW1lbnRhbHBhY2thZ2VtYXBcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlRXhwZXJpbWVudGFsUGFja2FnZU1hcFxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZUV4cGVyaW1lbnRhbFBhY2thZ2VNYXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBob3cgbm9kZV9tb2R1bGVzLy5wYWNrYWdlLW1hcC5qc29uIGlzIGdlbmVyYXRlZC4gc3RhbmRhcmQgLSBvbmx5IGRlY2xhcmVkIGRlcGVuZGVuY2llcyBhcmUgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHBhY2thZ2UgbWFwLiBsb29zZSAtIGFsc28gbWFwcyBwYWNrYWdlcyB0aGF0IGFyZSByZWFjaGFibGUgdGhyb3VnaCB0aGUgaW5zdGFsbGVkIG5vZGVfbW9kdWxlcyBsYXlvdXQsIHdoaWNoIGNhbiBhbGxvdyB1bmRlY2xhcmVkIGhvaXN0ZWQgZGVwZW5kZW5jaWVzIHRvIHJlc29sdmUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZVBhY2thZ2VNYXBUeXBlXG4gICAqL1xuICByZWFkb25seSBub2RlUGFja2FnZU1hcFR5cGU/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVQYWNrYWdlTWFwVHlwZTtcblxuICAvKipcbiAgICogV2hlbiBzeW1saW5rIGlzIHNldCB0byBmYWxzZSwgcG5wbSBjcmVhdGVzIGEgdmlydHVhbCBzdG9yZSBkaXJlY3Rvcnkgd2l0aG91dCBhbnkgc3ltbGlua3MuIEl0IGlzIGEgdXNlZnVsIHNldHRpbmcgdG9nZXRoZXIgd2l0aCBub2RlTGlua2VyPXBucC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzeW1saW5rXG4gICAqL1xuICByZWFkb25seSBzeW1saW5rPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBmYWxzZSwgcG5wbSB3aWxsIG5vdCB3cml0ZSBhbnkgZmlsZXMgdG8gdGhlIG1vZHVsZXMgZGlyZWN0b3J5IChub2RlX21vZHVsZXMpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZU1vZHVsZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZU1vZHVsZXNEaXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdpdGggbGlua3MgdG8gdGhlIHN0b3JlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZURpclxuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbFN0b3JlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIG9mIGRpcmVjdG9yeSBuYW1lcyBpbnNpZGUgdGhlIHZpcnR1YWwgc3RvcmUgZGlyZWN0b3J5IChub2RlX21vZHVsZXMvLnBucG0pLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZURpck1heExlbmd0aFxuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXJlIHRoZSB2aXJ0dWFsIHN0b3JlIGlzIGxvY2F0ZWQuIFdoZW4gc2V0IHRvIHByb2plY3QsIGEgc2VwYXJhdGUgdmlydHVhbCBzdG9yZSBpcyBjcmVhdGVkIGluIGVhY2ggcHJvamVjdCdzIG5vZGVfbW9kdWxlcy8ucG5wbS4gV2hlbiBzZXQgdG8gZ2xvYmFsLCBhIHNpbmdsZSBzdG9yZSBpcyBzaGFyZWQgYnkgZXZlcnkgcHJvamVjdCBvbiB0aGUgbWFjaGluZSwgd2l0aCBlYWNoIHByb2plY3QncyBub2RlX21vZHVsZXMgaG9sZGluZyBvbmx5IHN5bWxpbmtzIGludG8gaXQuIEFkZGVkIGluIHBucG0gdjExLjIzLjAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmlydHVhbFN0b3JlVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbFN0b3JlVHlwZT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmlydHVhbFN0b3JlVHlwZTtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHdheSBwYWNrYWdlcyBhcmUgaW1wb3J0ZWQgZnJvbSB0aGUgc3RvcmUgKGlmIHlvdSB3YW50IHRvIGRpc2FibGUgc3ltbGlua3MgaW5zaWRlIG5vZGVfbW9kdWxlcywgdGhlbiB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIG5vZGVMaW5rZXIgc2V0dGluZywgbm90IHRoaXMgb25lKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlSW1wb3J0TWV0aG9kXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlSW1wb3J0TWV0aG9kPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQYWNrYWdlSW1wb3J0TWV0aG9kO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpbiBtaW51dGVzIGFmdGVyIHdoaWNoIG9ycGhhbiBwYWNrYWdlcyBmcm9tIHRoZSBtb2R1bGVzIGRpcmVjdG9yeSBzaG91bGQgYmUgcmVtb3ZlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtb2R1bGVzQ2FjaGVNYXhBZ2VcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZXNDYWNoZU1heEFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRpbWUgaW4gbWludXRlcyBhZnRlciB3aGljaCBkbHggY2FjaGUgZXhwaXJlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkbHhDYWNoZU1heEFnZVxuICAgKi9cbiAgcmVhZG9ubHkgZGx4Q2FjaGVNYXhBZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB3aGVyZSBhbGwgdGhlIHBhY2thZ2VzIGFyZSBzYXZlZCBvbiB0aGUgZGlzay5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdG9yZURpclxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIGlmIGEgZmlsZSBpbiB0aGUgc3RvcmUgaGFzIGJlZW4gbW9kaWZpZWQsIHRoZSBjb250ZW50IG9mIHRoaXMgZmlsZSBpcyBjaGVja2VkIGJlZm9yZSBsaW5raW5nIGl0IHRvIGEgcHJvamVjdCdzIG5vZGVfbW9kdWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2ZXJpZnlTdG9yZUludGVncml0eVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyaWZ5U3RvcmVJbnRlZ3JpdHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkLiBPbmx5IGFsbG93cyBpbnN0YWxsYXRpb24gd2l0aCBhIHN0b3JlIHNlcnZlci4gSWYgbm8gc3RvcmUgc2VydmVyIGlzIHJ1bm5pbmcsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXNlUnVubmluZ1N0b3JlU2VydmVyXG4gICAqL1xuICByZWFkb25seSB1c2VSdW5uaW5nU3RvcmVTZXJ2ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNYWtlcyBwbnBtIGluc3RhbGwgd29yayBhZ2FpbnN0IGEgcmVhZC1vbmx5IHBhY2thZ2Ugc3RvcmUgKHN1Y2ggYXMgYSBOaXggc3RvcmUgb3IgT0NJIGltYWdlIGxheWVyKS4gV2hlbiBlbmFibGVkLCBwbnBtIG9wZW5zIHRoZSBzdG9yZSdzIFNRTGl0ZSBkYXRhYmFzZSBpbiBpbW11dGFibGUgbW9kZSBhbmQgbmV2ZXIgd3JpdGVzIHRvIHRoZSBzdG9yZS4gV29ya3MgYmVzdCB0b2dldGhlciB3aXRoIC0tb2ZmbGluZSBhbmQgLS1mcm96ZW4tbG9ja2ZpbGU7IGluY29tcGF0aWJsZSB3aXRoIC0tZm9yY2UuIEFkZGVkIGluIHBucG0gdjExLjcuMC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmcm96ZW5TdG9yZVxuICAgKi9cbiAgcmVhZG9ubHkgZnJvemVuU3RvcmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTb21lIHJlZ2lzdHJpZXMgYWxsb3cgdGhlIGV4YWN0IHNhbWUgY29udGVudCB0byBiZSBwdWJsaXNoZWQgdW5kZXIgZGlmZmVyZW50IHBhY2thZ2UgbmFtZXMgYW5kL29yIHZlcnNpb25zLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0cmljdFN0b3JlUGtnQ29udGVudENoZWNrXG4gICAqL1xuICByZWFkb25seSBzdHJpY3RTdG9yZVBrZ0NvbnRlbnRDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgbm9kZV9tb2R1bGVzIGNvbnRhaW5zIG9ubHkgc3ltbGlua3MgdG8gYSBjZW50cmFsIHZpcnR1YWwgc3RvcmUsIHJhdGhlciB0aGFuIHRvIG5vZGVfbW9kdWxlcy8ucG5wbS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbmFibGVHbG9iYWxWaXJ0dWFsU3RvcmVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUdsb2JhbFZpcnR1YWxTdG9yZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIGZhbHNlLCBwbnBtIHdvbid0IHJlYWQgb3IgZ2VuZXJhdGUgYSBwbnBtLWxvY2sueWFtbCBmaWxlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2xvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSBsb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUgYW5kIHRoZSBhdmFpbGFibGUgcG5wbS1sb2NrLnlhbWwgc2F0aXNmaWVzIHRoZSBwYWNrYWdlLmpzb24gZGVwZW5kZW5jaWVzIGRpcmVjdGl2ZSwgYSBoZWFkbGVzcyBpbnN0YWxsYXRpb24gaXMgcGVyZm9ybWVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ByZWZlckZyb3plbkxvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSBwcmVmZXJGcm96ZW5Mb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgZnVsbCBVUkwgdG8gdGhlIHBhY2thZ2UncyB0YXJiYWxsIHRvIGV2ZXJ5IGVudHJ5IGluIHBucG0tbG9jay55YW1sLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2xvY2tmaWxlSW5jbHVkZVRhcmJhbGxVcmxcbiAgICovXG4gIHJlYWRvbmx5IGxvY2tmaWxlSW5jbHVkZVRhcmJhbGxVcmw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCB0aGUgZ2VuZXJhdGVkIGxvY2tmaWxlIG5hbWUgYWZ0ZXIgaW5zdGFsbGF0aW9uIHdpbGwgYmUgbmFtZWQgYmFzZWQgb24gdGhlIGN1cnJlbnQgYnJhbmNoIG5hbWUgdG8gY29tcGxldGVseSBhdm9pZCBtZXJnZSBjb25mbGljdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2l0QnJhbmNoTG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGdpdEJyYW5jaExvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBjb25maWd1cmF0aW9uIG1hdGNoZXMgdGhlIGN1cnJlbnQgYnJhbmNoIG5hbWUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gbWVyZ2UgYWxsIGdpdCBicmFuY2ggbG9ja2ZpbGUgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWVyZ2VHaXRCcmFuY2hMb2NrZmlsZXNCcmFuY2hQYXR0ZXJuXG4gICAqL1xuICByZWFkb25seSBtZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm4/OiBhbnlbXTtcblxuICAvKipcbiAgICogTWF4IGxlbmd0aCBvZiB0aGUgcGVlciBJRHMgc3VmZml4IGFkZGVkIHRvIGRlcGVuZGVuY3kga2V5cyBpbiB0aGUgbG9ja2ZpbGUuIElmIHRoZSBzdWZmaXggaXMgbG9uZ2VyLCBpdCBpcyByZXBsYWNlZCB3aXRoIGEgaGFzaC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwZWVyc1N1ZmZpeE1heExlbmd0aFxuICAgKi9cbiAgcmVhZG9ubHkgcGVlcnNTdWZmaXhNYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIFVSTCBvZiB0aGUgbnBtIHBhY2thZ2UgcmVnaXN0cnkgKHRyYWlsaW5nIHNsYXNoIGluY2x1ZGVkKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZWdpc3RyeVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgc2lnbmluZyBjZXJ0aWZpY2F0ZSB0aGF0IGlzIHRydXN0ZWQgZm9yIFNTTCBjb25uZWN0aW9ucyB0byB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2FcbiAgICovXG4gIHJlYWRvbmx5IGNhPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgb25lIG9yIG11bHRpcGxlIENlcnRpZmljYXRlIEF1dGhvcml0eSBzaWduaW5nIGNlcnRpZmljYXRlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYWZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGNhZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBjbGllbnQgY2VydGlmaWNhdGUgdG8gcGFzcyB3aGVuIGFjY2Vzc2luZyB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2VydFxuICAgKi9cbiAgcmVhZG9ubHkgY2VydD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBjbGllbnQga2V5IHRvIHBhc3Mgd2hlbiBhY2Nlc3NpbmcgdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2tleVxuICAgKi9cbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGZldGNoaW5nIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBHaXQgcmVwb3NpdG9yaWVzLCBpZiB0aGUgaG9zdCBpcyBsaXN0ZWQgaW4gdGhpcyBzZXR0aW5nLCBwbnBtIHdpbGwgdXNlIHNoYWxsb3cgY2xvbmluZyB0byBmZXRjaCBvbmx5IHRoZSBuZWVkZWQgY29tbWl0LCBub3QgYWxsIHRoZSBoaXN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dpdFNoYWxsb3dIb3N0c1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0U2hhbGxvd0hvc3RzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgcHJveHkgdG8gdXNlIGZvciBvdXRnb2luZyBIVFRQUyByZXF1ZXN0cy4gSWYgdGhlIEhUVFBTX1BST1hZLCBodHRwc19wcm94eSwgSFRUUF9QUk9YWSBvciBodHRwX3Byb3h5IGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgc2V0LCB0aGVpciB2YWx1ZXMgd2lsbCBiZSB1c2VkIGluc3RlYWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaHR0cHNQcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cHNQcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBwcm94eSB0byB1c2UgZm9yIG91dGdvaW5nIEhUVFAgcmVxdWVzdHMuIElmIHRoZSBIVFRQX1BST1hZIG9yIGh0dHBfcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBzZXQsIHByb3h5IHNldHRpbmdzIHdpbGwgYmUgaG9ub3JlZCBieSB0aGUgdW5kZXJseWluZyByZXF1ZXN0IGxpYnJhcnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaHR0cFByb3h5XG4gICAqL1xuICByZWFkb25seSBodHRwUHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIG5wbSdzIGxlZ2FjeSBwcm94eSBzZXR0aW5nLCB1c2VkIGFzIHRoZSBmYWxsYmFjayBmb3IgYm90aCBodHRwc1Byb3h5IGFuZCBodHRwUHJveHkuIElmIHRoZSBIVFRQX1BST1hZIG9yIGh0dHBfcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBzZXQsIHByb3h5IHNldHRpbmdzIHdpbGwgYmUgaG9ub3JlZCBieSB0aGUgdW5kZXJseWluZyByZXF1ZXN0IGxpYnJhcnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJveHlcbiAgICovXG4gIHJlYWRvbmx5IHByb3h5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSVAgYWRkcmVzcyBvZiB0aGUgbG9jYWwgaW50ZXJmYWNlIHRvIHVzZSB3aGVuIG1ha2luZyBjb25uZWN0aW9ucyB0byB0aGUgbnBtIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2xvY2FsQWRkcmVzc1xuICAgKi9cbiAgcmVhZG9ubHkgbG9jYWxBZGRyZXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgdG8gdXNlIHBlciBvcmlnaW4gKHByb3RvY29sL2hvc3QvcG9ydCBjb21iaW5hdGlvbikuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWF4c29ja2V0c1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4c29ja2V0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nIG9mIGRvbWFpbiBleHRlbnNpb25zIHRoYXQgYSBwcm94eSBzaG91bGQgbm90IGJlIHVzZWQgZm9yLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vUHJveHlcbiAgICovXG4gIHJlYWRvbmx5IG5vUHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGRvIFNTTCBrZXkgdmFsaWRhdGlvbiB3aGVuIG1ha2luZyByZXF1ZXN0cyB0byB0aGUgcmVnaXN0cnkgdmlhIEhUVFBTLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0cmljdFNzbFxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0U3NsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIEhUVFAoUykgcmVxdWVzdHMgdG8gcHJvY2VzcyBzaW11bHRhbmVvdXNseS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNuZXR3b3JrQ29uY3VycmVuY3lcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtDb25jdXJyZW5jeT86IG51bWJlcjtcblxuICAvKipcbiAgICogSG93IG1hbnkgdGltZXMgdG8gcmV0cnkgaWYgcG5wbSBmYWlscyB0byBmZXRjaCBmcm9tIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJpZXNcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoUmV0cmllcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGV4cG9uZW50aWFsIGZhY3RvciBmb3IgcmV0cnkgYmFja29mZi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJ5RmFjdG9yXG4gICAqL1xuICByZWFkb25seSBmZXRjaFJldHJ5RmFjdG9yPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSAoYmFzZSkgdGltZW91dCBmb3IgcmV0cnlpbmcgcmVxdWVzdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmV0Y2hSZXRyeU1pbnRpbWVvdXRcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoUmV0cnlNaW50aW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBmYWxsYmFjayB0aW1lb3V0IHRvIGVuc3VyZSB0aGUgcmV0cnkgZmFjdG9yIGRvZXMgbm90IG1ha2UgcmVxdWVzdHMgdG9vIGxvbmcuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmV0Y2hSZXRyeU1heHRpbWVvdXRcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoUmV0cnlNYXh0aW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGZvciBIVFRQIHJlcXVlc3RzIHRvIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoVGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hUaW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHdhcm5pbmcgbWVzc2FnZSBpcyBkaXNwbGF5ZWQgaWYgYSBtZXRhZGF0YSByZXF1ZXN0IHRvIHRoZSByZWdpc3RyeSB0YWtlcyBsb25nZXIgdGhhbiB0aGUgc3BlY2lmaWVkIHRocmVzaG9sZCAoaW4gbWlsbGlzZWNvbmRzKS4gQWRkZWQgaW4gcG5wbSB2MTAuMTguMC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFdhcm5UaW1lb3V0TXNcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoV2FyblRpbWVvdXRNcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQSB3YXJuaW5nIG1lc3NhZ2UgaXMgZGlzcGxheWVkIGlmIHRoZSBkb3dubG9hZCBzcGVlZCBvZiBhIHRhcmJhbGwgZnJvbSB0aGUgcmVnaXN0cnkgZmFsbHMgYmVsb3cgdGhlIHNwZWNpZmllZCB0aHJlc2hvbGQgKGluIEtpQi9zKS4gQWRkZWQgaW4gcG5wbSB2MTAuMTguMC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaE1pblNwZWVkS2lCcHNcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoTWluU3BlZWRLaUJwcz86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBhbnkgbWlzc2luZyBub24tb3B0aW9uYWwgcGVlciBkZXBlbmRlbmNpZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2F1dG9JbnN0YWxsUGVlcnNcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9JbnN0YWxsUGVlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgc2V0dGluZyBpcyBzZXQgdG8gdHJ1ZSwgcGFja2FnZXMgd2l0aCBwZWVyIGRlcGVuZGVuY2llcyB3aWxsIGJlIGRlZHVwbGljYXRlZCBhZnRlciBwZWVycyByZXNvbHV0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZVBlZXJEZXBlbmRlbnRzXG4gICAqL1xuICByZWFkb25seSBkZWR1cGVQZWVyRGVwZW5kZW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgY29tbWFuZHMgd2lsbCBmYWlsIGlmIHRoZXJlIGlzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBlZXIgZGVwZW5kZW5jeSBpbiB0aGUgdHJlZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3RQZWVyRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBzdHJpY3RQZWVyRGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBkZXBlbmRlbmNpZXMgb2YgdGhlIHJvb3Qgd29ya3NwYWNlIHByb2plY3QgYXJlIHVzZWQgdG8gcmVzb2x2ZSBwZWVyIGRlcGVuZGVuY2llcyBvZiBhbnkgcHJvamVjdHMgaW4gdGhlIHdvcmtzcGFjZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXNvbHZlUGVlcnNGcm9tV29ya3NwYWNlUm9vdFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBjb2xvcnMgaW4gdGhlIG91dHB1dC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjb2xvclxuICAgKi9cbiAgcmVhZG9ubHkgY29sb3I/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNvbG9yO1xuXG4gIC8qKlxuICAgKiBBbnkgbG9ncyBhdCBvciBoaWdoZXIgdGhhbiB0aGUgZ2l2ZW4gbGV2ZWwgd2lsbCBiZSBzaG93bi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNsb2dsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nbGV2ZWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxvZ2xldmVsO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgb3V0cHV0IHN0eWxlIG9mIHRoZSBsb2dzLlxuICAgKiBodHRwczovL3BucG0uaW8vY2xpL2luc3RhbGwjLS1yZXBvcnRlcm5hbWVcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXBvcnRlclxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0ZXI/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlcG9ydGVyO1xuXG4gIC8qKlxuICAgKiBFeHBlcmltZW50YWwgb3B0aW9uIHRoYXQgZW5hYmxlcyBiZXRhIGZlYXR1cmVzIG9mIHRoZSBDTEkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXNlQmV0YUNsaVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlQmV0YUNsaT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgdGhlIHByaW1hcnkgYmVoYXZpb3VyIG9mIHBucG0gaW5zdGFsbCBiZWNvbWVzIHRoYXQgb2YgcG5wbSBpbnN0YWxsIC1yLCBtZWFuaW5nIHRoZSBpbnN0YWxsIGlzIHBlcmZvcm1lZCBvbiBhbGwgd29ya3NwYWNlIG9yIHN1YmRpcmVjdG9yeSBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZWN1cnNpdmVJbnN0YWxsXG4gICAqL1xuICByZWFkb25seSByZWN1cnNpdmVJbnN0YWxsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBwbnBtIHdpbGwgbm90IGluc3RhbGwgYW55IHBhY2thZ2UgdGhhdCBjbGFpbXMgdG8gbm90IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCBOb2RlIHZlcnNpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW5naW5lU3RyaWN0XG4gICAqL1xuICByZWFkb25seSBlbmdpbmVTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIG5wbSBiaW5hcnkgdGhhdCBwbnBtIHVzZXMgZm9yIHNvbWUgYWN0aW9ucywgbGlrZSBwdWJsaXNoaW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25wbVBhdGhcbiAgICovXG4gIHJlYWRvbmx5IG5wbVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgc2V0dGluZyBpcyBkaXNhYmxlZCwgcG5wbSB3aWxsIG5vdCBmYWlsIGlmIGEgZGlmZmVyZW50IHBhY2thZ2UgbWFuYWdlciBpcyBzcGVjaWZpZWQgaW4gdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkIG9mIHBhY2thZ2UuanNvbi4gV2hlbiBlbmFibGVkLCBvbmx5IHRoZSBwYWNrYWdlIG5hbWUgaXMgY2hlY2tlZCAoc2luY2UgcG5wbSB2OS4yLjApLCBzbyB5b3UgY2FuIHN0aWxsIHJ1biBhbnkgdmVyc2lvbiBvZiBwbnBtIHJlZ2FyZGxlc3Mgb2YgdGhlIHZlcnNpb24gc3BlY2lmaWVkIGluIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlTWFuYWdlclN0cmljdFxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXJTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHBucG0gd2lsbCBmYWlsIGlmIGl0cyB2ZXJzaW9uIGRvZXNuJ3QgZXhhY3RseSBtYXRjaCB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgaW4gdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkIG9mIHBhY2thZ2UuanNvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlTWFuYWdlclN0cmljdFZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyU3RyaWN0VmVyc2lvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgcG5wbSB3aWxsIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgYW5kIHJ1biB0aGUgdmVyc2lvbiBvZiBwbnBtIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQgb2YgcGFja2FnZS5qc29uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21hbmFnZVBhY2thZ2VNYW5hZ2VyVmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IG1hbmFnZVBhY2thZ2VNYW5hZ2VyVmVyc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZXhlY3V0ZSBhbnkgc2NyaXB0cyBkZWZpbmVkIGluIHRoZSBwcm9qZWN0IHBhY2thZ2UuanNvbiBhbmQgaXRzIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVTY3JpcHRzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVTY3JpcHRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGV4ZWN1dGUgYW55IHNjcmlwdHMgb2YgdGhlIGluc3RhbGxlZCBwYWNrYWdlcy4gU2NyaXB0cyBvZiB0aGUgcHJvamVjdHMgYXJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZURlcFNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZURlcFNjcmlwdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hpbGQgcHJvY2Vzc2VzIHRvIGFsbG9jYXRlIHNpbXVsdGFuZW91c2x5IHRvIGJ1aWxkIG5vZGVfbW9kdWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjaGlsZENvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSBjaGlsZENvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBVc2UgYW5kIGNhY2hlIHRoZSByZXN1bHRzIG9mIChwcmUvcG9zdClpbnN0YWxsIGhvb2tzLlxuICAgKiBXaGVuIGEgcHJlL3Bvc3QgaW5zdGFsbCBzY3JpcHQgbW9kaWZ5IHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UgKGUuZy4gYnVpbGQgb3V0cHV0KSwgcG5wbSBzYXZlcyB0aGUgbW9kaWZpZWQgcGFja2FnZSBpbiB0aGUgZ2xvYmFsIHN0b3JlLiBPbiBmdXR1cmUgaW5zdGFsbHMgb24gdGhlIHNhbWUgbWFjaGluZSwgcG5wbSByZXVzZXMgdGhpcyBjYWNoZWQsIHByZWJ1aWx0IHZlcnNpb24uXG4gICAqIEFuIG9iamVjdCBpcyB0aGUgY2Fub25pY2FsIHdheSB0byBkZWNsYXJlIHRoZSByZW1vdGUgdGllcjsgYHNpZGVFZmZlY3RzQ2FjaGU6IHRydWVgIGlzIHRoZSBzaG9ydGhhbmQgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2lkZUVmZmVjdHNDYWNoZVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZUVmZmVjdHNDYWNoZT86IGFueTtcblxuICAvKipcbiAgICogT25seSB1c2UgdGhlIHNpZGUgZWZmZWN0cyBjYWNoZSBpZiBwcmVzZW50LCBkbyBub3QgY3JlYXRlIGl0IGZvciBuZXcgcGFja2FnZXMuIFRoZSBvbGRlciBzcGVsbGluZyBvZiBzaWRlRWZmZWN0c0NhY2hlOiB7IHJlYWQ6IHRydWUsIHdyaXRlOiBmYWxzZSB9LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NpZGVFZmZlY3RzQ2FjaGVSZWFkb25seVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZUVmZmVjdHNDYWNoZVJlYWRvbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gZW5hYmxlIFVJRC9HSUQgc3dpdGNoaW5nIHdoZW4gcnVubmluZyBwYWNrYWdlIHNjcmlwdHMuIElmIHNldCBleHBsaWNpdGx5IHRvIGZhbHNlLCB0aGVuIGluc3RhbGxpbmcgYXMgYSBub24tcm9vdCB1c2VyIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1bnNhZmVQZXJtXG4gICAqL1xuICByZWFkb25seSB1bnNhZmVQZXJtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyB0byBwYXNzIHRocm91Z2ggdG8gTm9kZS5qcyB2aWEgdGhlIE5PREVfT1BUSU9OUyBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlT3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9kZU9wdGlvbnM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBhbGxvd3MgdGhlIGNoZWNraW5nIG9mIHRoZSBzdGF0ZSBvZiBkZXBlbmRlbmNpZXMgYmVmb3JlIHJ1bm5pbmcgc2NyaXB0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2ZXJpZnlEZXBzQmVmb3JlUnVuXG4gICAqL1xuICByZWFkb25seSB2ZXJpZnlEZXBzQmVmb3JlUnVuPzogYW55O1xuXG4gIC8qKlxuICAgKiBXaGVuIHN0cmljdERlcEJ1aWxkcyBpcyBlbmFibGVkLCB0aGUgaW5zdGFsbGF0aW9uIHdpbGwgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlIGlmIGFueSBkZXBlbmRlbmNpZXMgaGF2ZSB1bnJldmlld2VkIGJ1aWxkIHNjcmlwdHMgKGFrYSBwb3N0aW5zdGFsbCBzY3JpcHRzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3REZXBCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdERlcEJ1aWxkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGljaCBleGFjdCBOb2RlLmpzIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBwcm9qZWN0J3MgcnVudGltZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VOb2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdXNlTm9kZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlLmpzIHZlcnNpb24gdG8gdXNlIHdoZW4gY2hlY2tpbmcgYSBwYWNrYWdlJ3MgZW5naW5lcyBzZXR0aW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBsb2NhbGx5IGF2YWlsYWJsZSBwYWNrYWdlcyBhcmUgbGlua2VkIHRvIG5vZGVfbW9kdWxlcyBpbnN0ZWFkIG9mIGJlaW5nIGRvd25sb2FkZWQgZnJvbSB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbGlua1dvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBsaW5rV29ya3NwYWNlUGFja2FnZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcztcblxuICAvKipcbiAgICogRW5hYmxlcyBoYXJkLWxpbmtpbmcgb2YgYWxsIGxvY2FsIHdvcmtzcGFjZSBkZXBlbmRlbmNpZXMgaW5zdGVhZCBvZiBzeW1saW5raW5nIHRoZW0uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaW5qZWN0V29ya3NwYWNlUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IGluamVjdFdvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5qZWN0ZWQgd29ya3NwYWNlIGRlcGVuZGVuY2llcyBhcmUgY29sbGVjdGlvbnMgb2YgaGFyZGxpbmtzLCB3aGljaCBkb24ndCBhZGQgb3IgcmVtb3ZlIHRoZSBmaWxlcyB3aGVuIHRoZWlyIHNvdXJjZXMgY2hhbmdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IHN5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBsb2NhbCBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIHByZWZlcnJlZCBvdmVyIHBhY2thZ2VzIGZyb20gdGhlIHJlZ2lzdHJ5LCBldmVuIGlmIHRoZXJlIGlzIGEgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSBpbiB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyV29ya3NwYWNlUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlcldvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBwbnBtIGNyZWF0ZXMgYSBzaW5nbGUgcG5wbS1sb2NrLnlhbWwgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgd29ya3NwYWNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NoYXJlZFdvcmtzcGFjZUxvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGxpbmtlZCBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIGFkZGVkIHRvIHBhY2thZ2UuanNvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlV29ya3NwYWNlUHJvdG9jb2xcbiAgICovXG4gIHJlYWRvbmx5IHNhdmVXb3Jrc3BhY2VQcm90b2NvbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBXaGVuIGV4ZWN1dGluZyBjb21tYW5kcyByZWN1cnNpdmVseSBpbiBhIHdvcmtzcGFjZSwgZXhlY3V0ZSB0aGVtIG9uIHRoZSByb290IHdvcmtzcGFjZSBwcm9qZWN0IGFzIHdlbGwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaW5jbHVkZVdvcmtzcGFjZVJvb3RcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVXb3Jrc3BhY2VSb290PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgbm8gd29ya3NwYWNlIGN5Y2xlIHdhcm5pbmdzIHdpbGwgYmUgcHJpbnRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVXb3Jrc3BhY2VDeWNsZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVdvcmtzcGFjZUN5Y2xlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGluZyBhIG5ldyBkZXBlbmRlbmN5IHRvIHRoZSByb290IHdvcmtzcGFjZSBwYWNrYWdlIGZhaWxzLCB1bmxlc3MgdGhlIC0taWdub3JlLXdvcmtzcGFjZS1yb290LWNoZWNrIG9yIC13IGZsYWcgaXMgdXNlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2tcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVdvcmtzcGFjZVJvb3RDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwgaWYgdGhlIHdvcmtzcGFjZSBoYXMgY3ljbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Rpc2FsbG93V29ya3NwYWNlQ3ljbGVzXG4gICAqL1xuICByZWFkb25seSBkaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFza3MgdG8gcnVuIHNpbXVsdGFuZW91c2x5LiBGb3IgdW5saW1pdGVkIGNvbmN1cnJlbmN5IHVzZSBJbmZpbml0eS4gWW91IGNhbiBzZXQgdGhlIHZhbHVlIHRvIDw9IDAgYW5kIGl0IHdpbGwgdXNlIGFtb3VudCBvZiBDUFUgY29yZXMgb2YgdGhlIGhvc3QgbWludXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBwcm92aWRlZCBudW1iZXIgYXM6IG1heCgxLCAobnVtYmVyIG9mIGNvcmVzKSAtIGFicyh3b3Jrc3BhY2VDb25jdXJyZW5jeSkpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3dvcmtzcGFjZUNvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VDb25jdXJyZW5jeT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBhbmQgcGVyLXRhc2sgY29uY3VycmVuY3kgbGltaXRzIGZvciByZWN1cnNpdmUgcnVucyAoYHBucG0gLXIgcnVuIDxzY3JpcHQ+YCkuIEEgdGFzayBpcyBhIHNjcmlwdCBpbiBvbmUgd29ya3NwYWNlIHByb2plY3Q7IGl0IGJlY29tZXMgcmVhZHkgYWZ0ZXIgZXZlcnkgdGFzayBpdCBkZXBlbmRzIG9uIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHkuIEEgdGFzayB3aXRoIG5vIGVudHJ5IHVuZGVyIHRhc2tzIGRlZmF1bHRzIHRvIGRlcGVuZGluZyBvbiB0aGUgc2FtZSB0YXNrIGluIGl0cyB3b3Jrc3BhY2UgZGVwZW5kZW5jaWVzLCBidXQgb25jZSBhIHRhc2sgaGFzIGFuIGVudHJ5LCBhbiBvbWl0dGVkIGRlcGVuZHNPbiBpcyB0aGUgc2FtZSBhcyBgZGVwZW5kc09uOiBbXWAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdGFza3NcbiAgICovXG4gIHJlYWRvbmx5IHRhc2tzPzogeyBba2V5OiBzdHJpbmddOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRhc2tzIH07XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHBucG0gd2lsbCBmYWlsIGlmIG5vIHBhY2thZ2VzIG1hdGNoIHRoZSBmaWx0ZXJcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmYWlsSWZOb01hdGNoXG4gICAqL1xuICByZWFkb25seSBmYWlsSWZOb01hdGNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgcG5wbSBkZXBsb3kgd2lsbCB0cnkgY3JlYXRpbmcgYSBkZWRpY2F0ZWQgbG9ja2ZpbGUgZnJvbSBhIHNoYXJlZCBsb2NrZmlsZSBmb3IgZGVwbG95bWVudC4gSWYgdGhpcyBzZXR0aW5nIGlzIHNldCB0byB0cnVlLCB0aGUgbGVnYWN5IGRlcGxveSBiZWhhdmlvciB3aWxsIGJlIHVzZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZm9yY2VMZWdhY3lEZXBsb3lcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlTGVnYWN5RGVwbG95PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGhvdyB2ZXJzaW9ucyBvZiBwYWNrYWdlcyBpbnN0YWxsZWQgdG8gYSBwYWNrYWdlLmpzb24gZmlsZSBnZXQgcHJlZml4ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2F2ZVByZWZpeFxuICAgKi9cbiAgcmVhZG9ubHkgc2F2ZVByZWZpeD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVByZWZpeDtcblxuICAvKipcbiAgICogSWYgeW91IHBucG0gYWRkIGEgcGFja2FnZSBhbmQgeW91IGRvbid0IHByb3ZpZGUgYSBzcGVjaWZpYyB2ZXJzaW9uLCB0aGVuIGl0IHdpbGwgaW5zdGFsbCB0aGUgcGFja2FnZSBhdCB0aGUgdmVyc2lvbiByZWdpc3RlcmVkIHVuZGVyIHRoZSB0YWcgZnJvbSB0aGlzIHNldHRpbmcuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdGFnXG4gICAqL1xuICByZWFkb25seSB0YWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gZGlyZWN0b3J5IHRvIHN0b3JlIGdsb2JhbCBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnbG9iYWxEaXJcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbERpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb3dzIHRvIHNldCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBmb3IgdGhlIGJpbiBmaWxlcyBvZiBnbG9iYWxseSBpbnN0YWxsZWQgcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2xvYmFsQmluRGlyXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxCaW5EaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoaWNoIGdsb2JhbGx5IGluc3RhbGxlZCBwYWNrYWdlcyBnZXQgcHJvamVjdC1hd2FyZSBzaGltcywgd2hpY2ggYXJlIGdsb2JhbCBjb21tYW5kcyB0aGF0IHJ1biB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgcHJvamVjdCBpbnN0ZWFkIG9mIHRoZSBnbG9iYWxseSBpbnN0YWxsZWQgb25lLiBBIGJvb2xlYW4gZGlzYWJsZXMgKGZhbHNlKSBvciByZXNldHMgdG8gdGhlIGRlZmF1bHRzICh0cnVlKSwgd2hpbGUgYW4gb2JqZWN0IG1hcHMgcGFja2FnZSBuYW1lcyB0byBhIHBvbGljeTogXCJhdXRvXCIgKG9yIHRydWUpIHRvIHN3aXRjaCBhdXRvbWF0aWNhbGx5IHdoZW4gcHVibGlzaGVyLWF1dGhlbnRpY2F0ZWQsIFwicHJvbXB0XCIgdG8gY29uZmlybSBvbiBlYWNoIHVzZSwgXCJhbHdheXNcIiB0byBzd2l0Y2ggdW5jb25kaXRpb25hbGx5LCBvciBmYWxzZSB0byBkaXNhYmxlLiBPYmplY3QgZW50cmllcyBtZXJnZSB3aXRoIHRoZSBidWlsdC1pbiBkZWZhdWx0cyAoe1wibm9kZVwiOiBcImF1dG9cIiwgXCJkZW5vXCI6IFwiYXV0b1wiLCBcImJ1blwiOiBcImF1dG9cIn0pLiBBZGRlZCBpbiBwbnBtIHYxMi4wLjAtcmMuMi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnbG9iYWxTaGltc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsU2hpbXM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB3aGVyZSBhbGwgdGhlIHBhY2thZ2VzIGFyZSBzYXZlZCBvbiB0aGUgZGlzay5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdGF0ZURpclxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgY2FjaGUgKHBhY2thZ2UgbWV0YWRhdGEgYW5kIGRseCkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2FjaGVEaXJcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGFsbCB0aGUgb3V0cHV0IGlzIHdyaXR0ZW4gdG8gc3RkZXJyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VzZVN0ZGVyclxuICAgKi9cbiAgcmVhZG9ubHkgdXNlU3RkZXJyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHdpbGwgY2hlY2sgZm9yIHVwZGF0ZXMgdG8gdGhlIGluc3RhbGxlZCBwYWNrYWdlcyBhbmQgbm90aWZ5IHRoZSB1c2VyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VwZGF0ZU5vdGlmaWVyXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVOb3RpZmllcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEV4cGxpY2l0bHkgdGVsbHMgcG5wbSB3aGV0aGVyIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIGEgQ29udGludW91cyBJbnRlZ3JhdGlvbiBzeXN0ZW0sIG92ZXJyaWRpbmcgcG5wbSdzIGF1dG9tYXRpYyBDSSBkZXRlY3Rpb24uIEFkZGVkIGluIHBucG0gdjEwLjEyLjEuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2lcbiAgICovXG4gIHJlYWRvbmx5IGNpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3JlYXRlIHN5bWxpbmtzIHRvIGV4ZWN1dGFibGVzIGluIG5vZGVfbW9kdWxlcy8uYmluIGluc3RlYWQgb2YgY29tbWFuZCBzaGltcy4gVGhpcyBzZXR0aW5nIGlzIGlnbm9yZWQgb24gV2luZG93cywgd2hlcmUgb25seSBjb21tYW5kIHNoaW1zIHdvcmsuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlclN5bWxpbmtlZEV4ZWN1dGFibGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRHVyaW5nIGluc3RhbGxhdGlvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIHNvbWUgcGFja2FnZXMgYXJlIGF1dG9tYXRpY2FsbHkgcGF0Y2hlZC4gSWYgeW91IHdhbnQgdG8gZGlzYWJsZSB0aGlzLCBzZXQgdGhpcyBjb25maWcgdG8gZmFsc2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlQ29tcGF0aWJpbGl0eURiXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVDb21wYXRpYmlsaXR5RGI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGhvdyBwbnBtIHJlc29sdmVzIGRlcGVuZGVuY2llcywgU2VlIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNyZXNvbHV0aW9ubW9kZVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Jlc29sdXRpb25Nb2RlXG4gICAqL1xuICByZWFkb25seSByZXNvbHV0aW9uTW9kZT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVzb2x1dGlvbk1vZGU7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUgaWYgdGhlIHJlZ2lzdHJ5IHRoYXQgeW91IGFyZSB1c2luZyByZXR1cm5zIHRoZSBcInRpbWVcIiBmaWVsZCBpbiB0aGUgYWJicmV2aWF0ZWQgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVnaXN0cnlTdXBwb3J0c1RpbWVGaWVsZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cnlTdXBwb3J0c1RpbWVGaWVsZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZmFsc2UsIHRoZSBOT0RFX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCBpbiB0aGUgY29tbWFuZCBzaGltcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNleHRlbmROb2RlUGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5kTm9kZVBhdGg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGRlcGxveWluZyBhIHBhY2thZ2Ugb3IgaW5zdGFsbGluZyBhIGxvY2FsIHBhY2thZ2UsIGFsbCBmaWxlcyBvZiB0aGUgcGFja2FnZSBhcmUgY29waWVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlcGxveUFsbEZpbGVzXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lBbGxGaWxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBhbHJlYWR5IHN5bWxpbmtlZCB0byB0aGUgcm9vdCBub2RlX21vZHVsZXMgZGlyZWN0b3J5IG9mIHRoZSB3b3Jrc3BhY2Ugd2lsbCBub3QgYmUgc3ltbGlua2VkIHRvIHN1YnByb2plY3Qgbm9kZV9tb2R1bGVzIGRpcmVjdG9yaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZURpcmVjdERlcHNcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwZURpcmVjdERlcHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgc2V0dGluZyBpcyBlbmFibGVkLCBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgaW5qZWN0ZWQgd2lsbCBiZSBzeW1saW5rZWQgZnJvbSB0aGUgd29ya3NwYWNlIHdoZW5ldmVyIHBvc3NpYmxlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZUluamVjdGVkRGVwc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlSW5qZWN0ZWREZXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBhIGZhc3QgY2hlY2sgd2lsbCBiZSBwZXJmb3JtZWQgYmVmb3JlIHByb2NlZWRpbmcgdG8gaW5zdGFsbGF0aW9uLiBUaGlzIHdheSBhIHJlcGVhdCBpbnN0YWxsIG9yIGFuIGluc3RhbGwgb24gYSBwcm9qZWN0IHdpdGggZXZlcnl0aGluZyB1cC10by1kYXRlIGJlY29tZXMgYSBsb3QgZmFzdGVyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI29wdGltaXN0aWNSZXBlYXRJbnN0YWxsXG4gICAqL1xuICByZWFkb25seSBvcHRpbWlzdGljUmVwZWF0SW5zdGFsbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGN1cnJlbnQgYnJhbmNoIGlzIHlvdXIgcHVibGlzaCBicmFuY2gsIGNsZWFuLCBhbmQgdXAtdG8tZGF0ZSB3aXRoIHJlbW90ZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnaXRDaGVja3NcbiAgICovXG4gIHJlYWRvbmx5IGdpdENoZWNrcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVORE9DVU1FTlRFRC4gV2hlbiBgdHJ1ZWAsIGBwbnBtIHB1Ymxpc2hgIHdyaXRlcyB0aGUgUkVBRE1FIGZpbGUncyBjb250ZW50IGludG8gdGhlIHB1Ymxpc2hlZCBwYWNrYWdlLmpzb24gKHRoZSBgcmVhZG1lYCBmaWVsZCksIHNvIHJlZ2lzdHJpZXMgc3VjaCBhcyBucG1qcy5jb20gcmVuZGVyIHRoZSBwYWNrYWdlJ3MgUkVBRE1FLiBBZGRlZCBpbiBwbnBtIDYuMjguMDsgcG5wbSBkb2VzIG5vdCBlbWJlZCB0aGUgUkVBRE1FIHVubGVzcyB0aGlzIGlzIGVuYWJsZWQuIEl0IGFsc28gd29uJ3Qgb3ZlcnJpZGUgYSBgcmVhZG1lYCBmaWVsZCBhbHJlYWR5IHNldCBpbiB0aGUgcGFja2FnZS5qc29uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW1iZWRSZWFkbWVcbiAgICovXG4gIHJlYWRvbmx5IGVtYmVkUmVhZG1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHByaW1hcnkgYnJhbmNoIG9mIHRoZSByZXBvc2l0b3J5IHdoaWNoIGlzIHVzZWQgZm9yIHB1Ymxpc2hpbmcgdGhlIGxhdGVzdCBjaGFuZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3B1Ymxpc2hCcmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hCcmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZlcnNpb25pbmcgc2V0dGluZ3MgZm9yIHBucG0ncyBuYXRpdmUgd29ya3NwYWNlIHJlbGVhc2UgbWFuYWdlbWVudCwgdXNlZCBieSBgcG5wbSBjaGFuZ2VgIGFuZCByZWN1cnNpdmUgYHBucG0gdmVyc2lvbmAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmVyc2lvbmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbmluZz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZztcblxuICAvKipcbiAgICogV2hlbiBwdWJsaXNoaW5nIGZyb20gYSBzdXBwb3J0ZWQgY2xvdWQgQ0kvQ0Qgc3lzdGVtLCB0aGUgcGFja2FnZSB3aWxsIGJlIHB1YmxpY2x5IGxpbmtlZCB0byB3aGVyZSBpdCB3YXMgYnVpbHQgYW5kIHB1Ymxpc2hlZCBmcm9tLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Byb3ZlbmFuY2VcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZlbmFuY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIGxvY2FsIHBucG1maWxlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BucG1maWxlXG4gICAqL1xuICByZWFkb25seSBwbnBtZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIGEgZ2xvYmFsIHBucG1maWxlLiBBIGdsb2JhbCBwbnBtZmlsZSBpcyB1c2VkIGJ5IGFsbCBwcm9qZWN0cyBkdXJpbmcgaW5zdGFsbGF0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dsb2JhbFBucG1maWxlXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxQbnBtZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogLnBucG1maWxlLmNqcyB3aWxsIGJlIGlnbm9yZWQuIFVzZWZ1bCB0b2dldGhlciB3aXRoIC0taWdub3JlLXNjcmlwdHMgd2hlbiB5b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBubyBzY3JpcHQgZ2V0cyBleGVjdXRlZCBkdXJpbmcgaW5zdGFsbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVQbnBtZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlUG5wbWZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2VuZXJhdGVkIHBhdGNoIGZpbGUgd2lsbCBiZSBzYXZlZCB0byB0aGlzIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYXRjaGVzRGlyXG4gICAqL1xuICByZWFkb25seSBwYXRjaGVzRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCBydW4gYW55IHByZS9wb3N0IHNjcmlwdHMgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbmFibGVQcmVQb3N0U2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUHJlUG9zdFNjcmlwdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2hlbGwgdG8gdXNlIGZvciBzY3JpcHRzIHJ1biB3aXRoIHRoZSBwbnBtIHJ1biBjb21tYW5kLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NjcmlwdFNoZWxsXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRTaGVsbD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHdpbGwgdXNlIGEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBhIGJhc2gtbGlrZSBzaGVsbCB0byBleGVjdXRlIHNjcmlwdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2hlbGxFbXVsYXRvclxuICAgKi9cbiAgcmVhZG9ubHkgc2hlbGxFbXVsYXRvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNhdmVkIGRlcGVuZGVuY2llcyB3aWxsIGJlIGNvbmZpZ3VyZWQgd2l0aCBhbiBleGFjdCB2ZXJzaW9uIHJhdGhlciB0aGFuIHVzaW5nIHBucG0ncyBkZWZhdWx0IHNlbXZlciByYW5nZSBvcGVyYXRvci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlRXhhY3RcbiAgICovXG4gIHJlYWRvbmx5IHNhdmVFeGFjdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG1pbmltdW1SZWxlYXNlQWdlIGRlZmluZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgdGhhdCBtdXN0IHBhc3MgYWZ0ZXIgYSB2ZXJzaW9uIGlzIHB1Ymxpc2hlZCBiZWZvcmUgcG5wbSB3aWxsIGluc3RhbGwgaXQuIFRoaXMgYXBwbGllcyB0byBhbGwgZGVwZW5kZW5jaWVzLCBpbmNsdWRpbmcgdHJhbnNpdGl2ZSBvbmVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgeW91IHNldCBgbWluaW11bVJlbGVhc2VBZ2VgIGJ1dCBuZWVkIGNlcnRhaW4gZGVwZW5kZW5jaWVzIHRvIGFsd2F5cyBpbnN0YWxsIHRoZSBuZXdlc3QgdmVyc2lvbiBpbW1lZGlhdGVseSwgeW91IGNhbiBsaXN0IHRoZW0gdW5kZXIgYG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZWAuIFRoZSBleGNsdXNpb24gd29ya3MgYnkgYHBhY2thZ2UgbmFtZWAgYW5kIGFwcGxpZXMgdG8gYWxsIHZlcnNpb25zIG9mIHRoYXQgcGFja2FnZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBob3cgcG5wbSBiZWhhdmVzIHdoZW4gbm8gdmVyc2lvbiBvZiBhIGRlcGVuZGVuY3kgc2F0aXNmaWVzIHRoZSBtaW5pbXVtUmVsZWFzZUFnZSBjb25zdHJhaW50IHdpdGhpbiB0aGUgcmVxdWVzdGVkIHJhbmdlLlxuICAgKiBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjbWluaW11bXJlbGVhc2VhZ2VzdHJpY3RcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZVN0cmljdFxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBwbnBtIGFkZCwgcG5wbSB1cGRhdGUsIGFuZCBwbnBtIHJlbW92ZSBwcnVuZSB0aGUgZW50cmllcyBvZiBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUgaW4gcG5wbS13b3Jrc3BhY2UueWFtbCB0aGF0IHRoZSBmcmVzaGx5IHdyaXR0ZW4gbG9ja2ZpbGUgbm8gbG9uZ2VyIHJlc29sdmVzOiBhIHZlcnNpb24gdGhhdCBpcyBnb25lIGlzIGRyb3BwZWQgKGFuIGVudHJ5IGlzIHJlbW92ZWQgb25jZSBub25lIG9mIGl0cyB2ZXJzaW9ucyByZW1haW4pLCBhbmQgYW4gZW50cnkgZm9yIGEgcGFja2FnZSB0aGF0IGlzIG5vIGxvbmdlciBpbiB0aGUgbG9ja2ZpbGUgaXMgcmVtb3ZlZCB0b28uIE5hbWUgcGF0dGVybnMgKEBteW9yZy8qKSBhcmUgYWx3YXlzIGtlcHQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlUHJ1bmVcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVBydW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQnlwYXNzIHN0YWxlbmVzcyBjaGVja3MgZm9yIGNhY2hlZCBkYXRhLiBNaXNzaW5nIGRhdGEgd2lsbCBzdGlsbCBiZSByZXF1ZXN0ZWQgZnJvbSB0aGUgc2VydmVyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ByZWZlck9mZmxpbmVcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlck9mZmxpbmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBuby1kb3duZ3JhZGUsIHBucG0gd2lsbCBmYWlsIGlmIGEgcGFja2FnZSdzIHRydXN0IGxldmVsIGhhcyBkZWNyZWFzZWQgY29tcGFyZWQgdG8gcHJldmlvdXMgcmVsZWFzZXMuIEZvciBleGFtcGxlLCBpZiBhIHBhY2thZ2Ugd2FzIHByZXZpb3VzbHkgcHVibGlzaGVkIGJ5IGEgdHJ1c3RlZCBwdWJsaXNoZXIgYnV0IG5vdyBvbmx5IGhhcyBwcm92ZW5hbmNlIG9yIG5vIHRydXN0IGV2aWRlbmNlLCBpbnN0YWxsYXRpb24gd2lsbCBmYWlsLiBUaGlzIGhlbHBzIHByZXZlbnQgaW5zdGFsbGluZyBwb3RlbnRpYWxseSBjb21wcm9taXNlZCB2ZXJzaW9ucy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdFBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RQb2xpY3k/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRydXN0UG9saWN5O1xuXG4gIC8qKlxuICAgKiBZb3UgY2FuIG5vdyBsaXN0IG9uZSBvciBtb3JlIHNwZWNpZmljIHBhY2thZ2VzIG9yIHZlcnNpb25zIHRoYXQgcG5wbSBzaG91bGQgYWxsb3cgdG8gaW5zdGFsbCwgZXZlbiBpZiB0aG9zZSBwYWNrYWdlcyBkb24ndCBzYXRpc2Z5IHRoZSB0cnVzdCBwb2xpY3kgcmVxdWlyZW1lbnQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RQb2xpY3lFeGNsdWRlXG4gICAqL1xuICByZWFkb25seSB0cnVzdFBvbGljeUV4Y2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBtYXAgb2YgcGFja2FnZSBtYXRjaGVycyB0byBleHBsaWNpdGx5IGFsbG93IChgdHJ1ZWApIG9yIGRpc2FsbG93IChgZmFsc2VgKSBzY3JpcHQgZXhlY3V0aW9uLiBUaGlzIGZpZWxkIHJlcGxhY2VzIGBvbmx5QnVpbHREZXBlbmRlbmNpZXNgIGFuZCBgaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzYCAod2hpY2ggYXJlIGFsc28gZGVwcmVjYXRlZCBieSB0aGlzIG5ldyBzZXR0aW5nKSwgcHJvdmlkaW5nIGEgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhbGxvd0J1aWxkc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dCdWlsZHM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGl0IHByZXZlbnRzIHRoZSByZXNvbHV0aW9uIG9mIGV4b3RpYyBwcm90b2NvbHMgKGxpa2UgZ2l0K3NzaDogb3IgZGlyZWN0IGh0dHBzOiB0YXJiYWxscykgaW4gdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMuIE9ubHkgZGlyZWN0IGRlcGVuZGVuY2llcyBhcmUgYWxsb3dlZCB0byB1c2UgZXhvdGljIHNvdXJjZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYmxvY2tFeG90aWNTdWJkZXBzXG4gICAqL1xuICByZWFkb25seSBibG9ja0V4b3RpY1N1YmRlcHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgaWdub3JpbmcgdGhlIHRydXN0IHBvbGljeSBjaGVjayBmb3IgcGFja2FnZXMgcHVibGlzaGVkIG1vcmUgdGhhbiB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIGFnby4gVGhpcyBpcyB1c2VmdWwgd2hlbiBlbmFibGluZyBzdHJpY3QgdHJ1c3QgcG9saWNpZXMsIGFzIGl0IGFsbG93cyBvbGRlciB2ZXJzaW9ucyBvZiBwYWNrYWdlcyAod2hpY2ggbWF5IGxhY2sgYSBwcm9jZXNzIGZvciBwdWJsaXNoaW5nIHdpdGggc2lnbmF0dXJlcyBvciBwcm92ZW5hbmNlKSB0byBiZSBpbnN0YWxsZWQgd2l0aG91dCBtYW51YWwgZXhjbHVzaW9uLCBhc3N1bWluZyB0aGV5IGFyZSBzYWZlIGR1ZSB0byB0aGVpciBhZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RQb2xpY3lJZ25vcmVBZnRlclxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RQb2xpY3lJZ25vcmVBZnRlcj86IG51bWJlcjtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIGxldmVsIG9mIGlzc3VlcyByZXBvcnRlZCBieSBgcG5wbSBhdWRpdGAuIFdoZW4gc2V0IHRvICdsb3cnLCBhbGwgdnVsbmVyYWJpbGl0aWVzIGFyZSByZXBvcnRlZC4gV2hlbiBzZXQgdG8gJ21vZGVyYXRlJywgJ2hpZ2gnLCBvciAnY3JpdGljYWwnLCBvbmx5IHZ1bG5lcmFiaWxpdGllcyB3aXRoIHRoYXQgc2V2ZXJpdHkgb3IgaGlnaGVyIGFyZSByZXBvcnRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhdWRpdExldmVsXG4gICAqL1xuICByZWFkb25seSBhdWRpdExldmVsPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHBlZXIgZGVwZW5kZW5jeSBzdWZmaXhlcyB1c2UgdmVyc2lvbi1vbmx5IGlkZW50aWZpZXJzIChgbmFtZUB2ZXJzaW9uYCkgaW5zdGVhZCBvZiBmdWxsIGRlcCBwYXRocywgZWxpbWluYXRpbmcgbmVzdGVkIHN1ZmZpeGVzIGxpa2UgYChmb29AMS4wLjAoYmFyQDIuMC4wKSlgLiBUaGlzIGRyYW1hdGljYWxseSByZWR1Y2VzIHRoZSBudW1iZXIgb2YgcGFja2FnZSBpbnN0YW5jZXMgaW4gcHJvamVjdHMgd2l0aCBtYW55IHJlY3Vyc2l2ZSBwZWVyIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkZWR1cGVQZWVyc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlUGVlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyByZWdpc3RyeSBhdXRoZW50aWNhdGlvbiB0b2tlbnMuIEJ5IGRlZmF1bHQsIHBucG0gcmVhZHMgYXV0aCB0b2tlbnMgZnJvbSB+Ly5ucG1yYyBhcyBhIGZhbGxiYWNrIGZvciByZWdpc3RyeSBhdXRoZW50aWNhdGlvbi4gVXNlIHRoaXMgc2V0dGluZyB0byBwb2ludCB0byBhIGRpZmZlcmVudCBmaWxlIGluc3RlYWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbnBtcmNBdXRoRmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgbnBtcmNBdXRoRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHBucG0gc2tpcHMgdGhlIGBtaW5pbXVtUmVsZWFzZUFnZWAgY2hlY2sgZm9yIGEgcGFja2FnZSB3aG9zZSByZWdpc3RyeSBtZXRhZGF0YSBkb2VzIG5vdCBpbmNsdWRlIHRoZSB0aW1lIGZpZWxkIChzb21lIHByaXZhdGUgcmVnaXN0cmllcyBhbmQgbWlycm9ycyBvbWl0IGl0KS4gU2V0IHRvIGBmYWxzZWAgdG8gZmFpbCByZXNvbHV0aW9uIGluIHRoYXQgY2FzZSBpbnN0ZWFkIG9mIGluc3RhbGxpbmcgdGhlIHBhY2thZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWluaW11bVJlbGVhc2VBZ2VJZ25vcmVNaXNzaW5nVGltZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VJZ25vcmVNaXNzaW5nVGltZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSByZWdpc3RyaWVzIGZvciBzY29wZWQgcGFja2FnZXMgaW4gYHBucG0td29ya3NwYWNlLnlhbWxgLiBUaGUgYGRlZmF1bHRgIGtleSBzZXRzIHRoZSBtYWluIHJlZ2lzdHJ5IChlcXVpdmFsZW50IHRvIHRoZSBgcmVnaXN0cnlgIGAubnBtcmNgIHNldHRpbmcpLiBTY29wZWQga2V5cyBjb25maWd1cmUgcmVnaXN0cmllcyBmb3Igc3BlY2lmaWMgcGFja2FnZSBzY29wZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVnaXN0cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cmllcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIERlZmluZXMgbmFtZWQgcmVnaXN0cnkgYWxpYXNlcyB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgcHJlZml4IHdoZW4gaW5zdGFsbGluZyBwYWNrYWdlcywgZS5nLiBgcG5wbSBhZGQgd29yazpAY29ycC9saWJAXjIuMC4wYCByZXNvbHZlcyBgQGNvcnAvbGliQF4yLjAuMGAgYWdhaW5zdCB0aGUgY29uZmlndXJlZCBVUkwuIEJ1aWx0LWluIGFsaWFzZXMgYGdoOmAgKGh0dHBzOi8vbnBtLnBrZy5naXRodWIuY29tLykgYW5kIGBucG1qczpgIChodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8pIHdvcmsgd2l0aG91dCBhbnkgY29uZmlndXJhdGlvbiBhbmQgY2FuIGJlIG92ZXJyaWRkZW4uIEFuIGFsaWFzIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY29udGFpbiBvbmx5IGxldHRlcnMsIGRpZ2l0cywgYC5gLCBgX2AsIGFuZCBgLWAuIEFkZGVkIGluIHBucG0gMTEuMS4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25hbWVkUmVnaXN0cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZWRSZWdpc3RyaWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgcG5wbSBwb3B1bGF0ZXMgdGhlIHZpcnR1YWwgc3RvcmUgd2l0aG91dCBjcmVhdGluZyBpbXBvcnRlciBzeW1saW5rcywgaG9pc3RpbmcsIGJpbiBsaW5rcywgb3IgcnVubmluZyBsaWZlY3ljbGUgc2NyaXB0cy4gVGhpcyBpcyB1c2VmdWwgZm9yIHByZS1wb3B1bGF0aW5nIGEgc3RvcmUgKGUuZy4sIGluIE5peCBidWlsZHMpIHdpdGhvdXQgY3JlYXRpbmcgdW5uZWNlc3NhcnkgcHJvamVjdC1sZXZlbCBhcnRpZmFjdHMuIHBucG0gZmV0Y2ggdXNlcyB0aGlzIG1vZGUgaW50ZXJuYWxseS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2aXJ0dWFsU3RvcmVPbmx5XG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVPbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIHRoZSBgb25GYWlsYCBiZWhhdmlvciBvZiBib3RoIHRoZSBgcGFja2FnZU1hbmFnZXJgIGZpZWxkIGFuZCBgZGV2RW5naW5lcy5wYWNrYWdlTWFuYWdlcmAgd2hlbiB0aGUgcnVubmluZyBwbnBtIHZlcnNpb24gZG9lcyBub3QgbWF0Y2ggdGhlIGRlY2xhcmVkIG9uZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwbU9uRmFpbFxuICAgKi9cbiAgcmVhZG9ubHkgcG1PbkZhaWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBtT25GYWlsO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGBvbkZhaWxgIGZpZWxkIG9mIGBkZXZFbmdpbmVzLnJ1bnRpbWVgIChhbmQgYGVuZ2luZXMucnVudGltZWApIGluIHRoZSByb290IHByb2plY3QncyBgcGFja2FnZS5qc29uYC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCBhIGRpZmZlcmVudCBsb2NhbCBiZWhhdmlvciB0aGFuIHdoYXQgaXMgd3JpdHRlbiBpbiB0aGUgbWFuaWZlc3Qg4oCUIGZvciBpbnN0YW5jZSwgZm9yY2luZyBwbnBtIHRvIGRvd25sb2FkIHRoZSBkZWNsYXJlZCBydW50aW1lIGV2ZW4gd2hlbiB0aGUgbWFuaWZlc3Qgc2V0cyBgb25GYWlsOiBcIndhcm5cImAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcnVudGltZU9uRmFpbFxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZU9uRmFpbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUnVudGltZU9uRmFpbDtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGN1c3RvbSBOb2RlLmpzIGRvd25sb2FkIG1pcnJvcnMgaW4gYHBucG0td29ya3NwYWNlLnlhbWxgLiBUaGUga2V5cyBhcmUgcmVsZWFzZSBjaGFubmVscyAoYHJlbGVhc2VgLCBgcmNgLCBgbmlnaHRseWAsIGB2OC1jYW5hcnlgLCBldGMuKSBhbmQgdGhlIHZhbHVlcyBhcmUgYmFzZSBVUkxzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVEb3dubG9hZE1pcnJvcnNcbiAgICovXG4gIHJlYWRvbmx5IG5vZGVEb3dubG9hZE1pcnJvcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBIG5ldyB0cnVzdExvY2tmaWxlIHNldHRpbmcgY29udHJvbHMgd2hldGhlciBwbnBtIGluc3RhbGwgcmUtYXBwbGllcyB0aGUgYG1pbmltdW1SZWxlYXNlQWdlYCAvIGB0cnVzdFBvbGljeTogJ25vLWRvd25ncmFkZSdgIGNoZWNrcyB0byBldmVyeSBlbnRyeSBpbiB0aGUgbG9hZGVkIGxvY2tmaWxlLiBXaGVuIHRydWUsIHRoZSBpbnN0YWxsIHRyZWF0cyB0aGUgbG9ja2ZpbGUgYXMgYWxyZWFkeS10cnVzdGVkIGFuZCBza2lwcyB0aGUgdmVyaWZpY2F0aW9uIHBhc3Mg4oCUIHVzZWZ1bCBmb3IgY2xvc2VkLXNvdXJjZSBwcm9qZWN0cyB3aGVyZSBldmVyeSBjb21taXQgY29tZXMgZnJvbSBhIHRydXN0ZWQgYXV0aG9yLiBUaGUgZGVmYXVsdCBpcyBmYWxzZSwgc28gdmVyaWZpY2F0aW9uIHN0YXlzIG9uIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RMb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RMb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGVkIGEgbmV3IGhvaXN0aW5nTGltaXRzIHNldHRpbmcgZm9yIGBub2RlTGlua2VyOiBob2lzdGVkYCBpbnN0YWxscywgbWlycm9yaW5nIHlhcm4ncyBgbm1Ib2lzdGluZ0xpbWl0c2AuIEl0IGFjY2VwdHMgYG5vbmVgICh0aGUgZGVmYXVsdCDigJQgaG9pc3QgYXMgZmFyIGFzIHBvc3NpYmxlKSwgd29ya3NwYWNlcyAoaG9pc3Qgb25seSBhcyBmYXIgYXMgZWFjaCB3b3Jrc3BhY2UgcGFja2FnZSksIG9yIGRlcGVuZGVuY2llcyAoaG9pc3Qgb25seSB1cCB0byBlYWNoIHdvcmtzcGFjZSBwYWNrYWdlJ3MgZGlyZWN0IGRlcGVuZGVuY2llcykuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RpbmdMaW1pdHNcbiAgICovXG4gIHJlYWRvbmx5IGhvaXN0aW5nTGltaXRzPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFIb2lzdGluZ0xpbWl0cztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYShvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncGFja2FnZXMnOiBvYmoucGFja2FnZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdjYXRhbG9nJzogKChvYmouY2F0YWxvZykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLmNhdGFsb2cpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdjYXRhbG9ncyc6ICgob2JqLmNhdGFsb2dzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouY2F0YWxvZ3MpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiAoKGlbMV0pID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKGlbMV0pLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpIH0pLCB7fSkpLFxuICAgICdjYXRhbG9nTW9kZSc6IG9iai5jYXRhbG9nTW9kZSxcbiAgICAnY2xlYW51cFVudXNlZENhdGFsb2dzJzogb2JqLmNsZWFudXBVbnVzZWRDYXRhbG9ncyxcbiAgICAnY2F0YWxvZ1BydW5lJzogb2JqLmNhdGFsb2dQcnVuZSxcbiAgICAnb25seUJ1aWx0RGVwZW5kZW5jaWVzJzogb2JqLm9ubHlCdWlsdERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ292ZXJyaWRlcyc6IG9iai5vdmVycmlkZXMsXG4gICAgJ3BhY2thZ2VFeHRlbnNpb25zJzogb2JqLnBhY2thZ2VFeHRlbnNpb25zLFxuICAgICdwYWNrYWdlQ29uZmlncyc6IG9iai5wYWNrYWdlQ29uZmlncyxcbiAgICAncGVlckRlcGVuZGVuY3lSdWxlcyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMob2JqLnBlZXJEZXBlbmRlbmN5UnVsZXMpLFxuICAgICduZXZlckJ1aWx0RGVwZW5kZW5jaWVzJzogb2JqLm5ldmVyQnVpbHREZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdkYW5nZXJvdXNseUFsbG93QWxsQnVpbGRzJzogb2JqLmRhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHMsXG4gICAgJ29ubHlCdWlsdERlcGVuZGVuY2llc0ZpbGUnOiBvYmoub25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZSxcbiAgICAnaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzJzogb2JqLmlnbm9yZWRCdWlsdERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ2FsbG93ZWREZXByZWNhdGVkVmVyc2lvbnMnOiAoKG9iai5hbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ3BhdGNoZWREZXBlbmRlbmNpZXMnOiAoKG9iai5wYXRjaGVkRGVwZW5kZW5jaWVzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoucGF0Y2hlZERlcGVuZGVuY2llcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ2FsbG93VW51c2VkUGF0Y2hlcyc6IG9iai5hbGxvd1VudXNlZFBhdGNoZXMsXG4gICAgJ2FsbG93Tm9uQXBwbGllZFBhdGNoZXMnOiBvYmouYWxsb3dOb25BcHBsaWVkUGF0Y2hlcyxcbiAgICAnaWdub3JlUGF0Y2hGYWlsdXJlcyc6IG9iai5pZ25vcmVQYXRjaEZhaWx1cmVzLFxuICAgICd1cGRhdGUnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUob2JqLnVwZGF0ZSksXG4gICAgJ3VwZGF0ZUNvbmZpZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyhvYmoudXBkYXRlQ29uZmlnKSxcbiAgICAnY29uZmlnRGVwZW5kZW5jaWVzJzogb2JqLmNvbmZpZ0RlcGVuZGVuY2llcyxcbiAgICAnYXVkaXQnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdChvYmouYXVkaXQpLFxuICAgICdhdWRpdENvbmZpZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnKG9iai5hdWRpdENvbmZpZyksXG4gICAgJ3JlcXVpcmVkU2NyaXB0cyc6IG9iai5yZXF1aXJlZFNjcmlwdHM/Lm1hcCh5ID0+IHkpLFxuICAgICdzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyhvYmouc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyksXG4gICAgJ2lnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llcyc6IG9iai5pZ25vcmVkT3B0aW9uYWxEZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdleGVjdXRpb25FbnYnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYob2JqLmV4ZWN1dGlvbkVudiksXG4gICAgJ2hvaXN0Jzogb2JqLmhvaXN0LFxuICAgICdob2lzdFdvcmtzcGFjZVBhY2thZ2VzJzogb2JqLmhvaXN0V29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ2hvaXN0UGF0dGVybic6IG9iai5ob2lzdFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICdwdWJsaWNIb2lzdFBhdHRlcm4nOiBvYmoucHVibGljSG9pc3RQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAnc2hhbWVmdWxseUhvaXN0Jzogb2JqLnNoYW1lZnVsbHlIb2lzdCxcbiAgICAnbW9kdWxlc0Rpcic6IG9iai5tb2R1bGVzRGlyLFxuICAgICdub2RlTGlua2VyJzogb2JqLm5vZGVMaW5rZXIsXG4gICAgJ25vZGVFeHBlcmltZW50YWxQYWNrYWdlTWFwJzogb2JqLm5vZGVFeHBlcmltZW50YWxQYWNrYWdlTWFwLFxuICAgICdub2RlUGFja2FnZU1hcFR5cGUnOiBvYmoubm9kZVBhY2thZ2VNYXBUeXBlLFxuICAgICdzeW1saW5rJzogb2JqLnN5bWxpbmssXG4gICAgJ2VuYWJsZU1vZHVsZXNEaXInOiBvYmouZW5hYmxlTW9kdWxlc0RpcixcbiAgICAndmlydHVhbFN0b3JlRGlyJzogb2JqLnZpcnR1YWxTdG9yZURpcixcbiAgICAndmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoJzogb2JqLnZpcnR1YWxTdG9yZURpck1heExlbmd0aCxcbiAgICAndmlydHVhbFN0b3JlVHlwZSc6IG9iai52aXJ0dWFsU3RvcmVUeXBlLFxuICAgICdwYWNrYWdlSW1wb3J0TWV0aG9kJzogb2JqLnBhY2thZ2VJbXBvcnRNZXRob2QsXG4gICAgJ21vZHVsZXNDYWNoZU1heEFnZSc6IG9iai5tb2R1bGVzQ2FjaGVNYXhBZ2UsXG4gICAgJ2RseENhY2hlTWF4QWdlJzogb2JqLmRseENhY2hlTWF4QWdlLFxuICAgICdzdG9yZURpcic6IG9iai5zdG9yZURpcixcbiAgICAndmVyaWZ5U3RvcmVJbnRlZ3JpdHknOiBvYmoudmVyaWZ5U3RvcmVJbnRlZ3JpdHksXG4gICAgJ3VzZVJ1bm5pbmdTdG9yZVNlcnZlcic6IG9iai51c2VSdW5uaW5nU3RvcmVTZXJ2ZXIsXG4gICAgJ2Zyb3plblN0b3JlJzogb2JqLmZyb3plblN0b3JlLFxuICAgICdzdHJpY3RTdG9yZVBrZ0NvbnRlbnRDaGVjayc6IG9iai5zdHJpY3RTdG9yZVBrZ0NvbnRlbnRDaGVjayxcbiAgICAnZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlJzogb2JqLmVuYWJsZUdsb2JhbFZpcnR1YWxTdG9yZSxcbiAgICAnbG9ja2ZpbGUnOiBvYmoubG9ja2ZpbGUsXG4gICAgJ3ByZWZlckZyb3plbkxvY2tmaWxlJzogb2JqLnByZWZlckZyb3plbkxvY2tmaWxlLFxuICAgICdsb2NrZmlsZUluY2x1ZGVUYXJiYWxsVXJsJzogb2JqLmxvY2tmaWxlSW5jbHVkZVRhcmJhbGxVcmwsXG4gICAgJ2dpdEJyYW5jaExvY2tmaWxlJzogb2JqLmdpdEJyYW5jaExvY2tmaWxlLFxuICAgICdtZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm4nOiBvYmoubWVyZ2VHaXRCcmFuY2hMb2NrZmlsZXNCcmFuY2hQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAncGVlcnNTdWZmaXhNYXhMZW5ndGgnOiBvYmoucGVlcnNTdWZmaXhNYXhMZW5ndGgsXG4gICAgJ3JlZ2lzdHJ5Jzogb2JqLnJlZ2lzdHJ5LFxuICAgICdjYSc6IG9iai5jYSxcbiAgICAnY2FmaWxlJzogb2JqLmNhZmlsZSxcbiAgICAnY2VydCc6IG9iai5jZXJ0LFxuICAgICdrZXknOiBvYmoua2V5LFxuICAgICdnaXRTaGFsbG93SG9zdHMnOiBvYmouZ2l0U2hhbGxvd0hvc3RzPy5tYXAoeSA9PiB5KSxcbiAgICAnaHR0cHNQcm94eSc6IG9iai5odHRwc1Byb3h5LFxuICAgICdodHRwUHJveHknOiBvYmouaHR0cFByb3h5LFxuICAgICdwcm94eSc6IG9iai5wcm94eSxcbiAgICAnbG9jYWxBZGRyZXNzJzogb2JqLmxvY2FsQWRkcmVzcyxcbiAgICAnbWF4c29ja2V0cyc6IG9iai5tYXhzb2NrZXRzLFxuICAgICdub1Byb3h5Jzogb2JqLm5vUHJveHksXG4gICAgJ3N0cmljdFNzbCc6IG9iai5zdHJpY3RTc2wsXG4gICAgJ25ldHdvcmtDb25jdXJyZW5jeSc6IG9iai5uZXR3b3JrQ29uY3VycmVuY3ksXG4gICAgJ2ZldGNoUmV0cmllcyc6IG9iai5mZXRjaFJldHJpZXMsXG4gICAgJ2ZldGNoUmV0cnlGYWN0b3InOiBvYmouZmV0Y2hSZXRyeUZhY3RvcixcbiAgICAnZmV0Y2hSZXRyeU1pbnRpbWVvdXQnOiBvYmouZmV0Y2hSZXRyeU1pbnRpbWVvdXQsXG4gICAgJ2ZldGNoUmV0cnlNYXh0aW1lb3V0Jzogb2JqLmZldGNoUmV0cnlNYXh0aW1lb3V0LFxuICAgICdmZXRjaFRpbWVvdXQnOiBvYmouZmV0Y2hUaW1lb3V0LFxuICAgICdmZXRjaFdhcm5UaW1lb3V0TXMnOiBvYmouZmV0Y2hXYXJuVGltZW91dE1zLFxuICAgICdmZXRjaE1pblNwZWVkS2lCcHMnOiBvYmouZmV0Y2hNaW5TcGVlZEtpQnBzLFxuICAgICdhdXRvSW5zdGFsbFBlZXJzJzogb2JqLmF1dG9JbnN0YWxsUGVlcnMsXG4gICAgJ2RlZHVwZVBlZXJEZXBlbmRlbnRzJzogb2JqLmRlZHVwZVBlZXJEZXBlbmRlbnRzLFxuICAgICdzdHJpY3RQZWVyRGVwZW5kZW5jaWVzJzogb2JqLnN0cmljdFBlZXJEZXBlbmRlbmNpZXMsXG4gICAgJ3Jlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290Jzogb2JqLnJlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290LFxuICAgICdjb2xvcic6IG9iai5jb2xvcixcbiAgICAnbG9nbGV2ZWwnOiBvYmoubG9nbGV2ZWwsXG4gICAgJ3JlcG9ydGVyJzogb2JqLnJlcG9ydGVyLFxuICAgICd1c2VCZXRhQ2xpJzogb2JqLnVzZUJldGFDbGksXG4gICAgJ3JlY3Vyc2l2ZUluc3RhbGwnOiBvYmoucmVjdXJzaXZlSW5zdGFsbCxcbiAgICAnZW5naW5lU3RyaWN0Jzogb2JqLmVuZ2luZVN0cmljdCxcbiAgICAnbnBtUGF0aCc6IG9iai5ucG1QYXRoLFxuICAgICdwYWNrYWdlTWFuYWdlclN0cmljdCc6IG9iai5wYWNrYWdlTWFuYWdlclN0cmljdCxcbiAgICAncGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uJzogb2JqLnBhY2thZ2VNYW5hZ2VyU3RyaWN0VmVyc2lvbixcbiAgICAnbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9ucyc6IG9iai5tYW5hZ2VQYWNrYWdlTWFuYWdlclZlcnNpb25zLFxuICAgICdpZ25vcmVTY3JpcHRzJzogb2JqLmlnbm9yZVNjcmlwdHMsXG4gICAgJ2lnbm9yZURlcFNjcmlwdHMnOiBvYmouaWdub3JlRGVwU2NyaXB0cyxcbiAgICAnY2hpbGRDb25jdXJyZW5jeSc6IG9iai5jaGlsZENvbmN1cnJlbmN5LFxuICAgICdzaWRlRWZmZWN0c0NhY2hlJzogb2JqLnNpZGVFZmZlY3RzQ2FjaGUsXG4gICAgJ3NpZGVFZmZlY3RzQ2FjaGVSZWFkb25seSc6IG9iai5zaWRlRWZmZWN0c0NhY2hlUmVhZG9ubHksXG4gICAgJ3Vuc2FmZVBlcm0nOiBvYmoudW5zYWZlUGVybSxcbiAgICAnbm9kZU9wdGlvbnMnOiBvYmoubm9kZU9wdGlvbnMsXG4gICAgJ3ZlcmlmeURlcHNCZWZvcmVSdW4nOiBvYmoudmVyaWZ5RGVwc0JlZm9yZVJ1bixcbiAgICAnc3RyaWN0RGVwQnVpbGRzJzogb2JqLnN0cmljdERlcEJ1aWxkcyxcbiAgICAndXNlTm9kZVZlcnNpb24nOiBvYmoudXNlTm9kZVZlcnNpb24sXG4gICAgJ25vZGVWZXJzaW9uJzogb2JqLm5vZGVWZXJzaW9uLFxuICAgICdsaW5rV29ya3NwYWNlUGFja2FnZXMnOiBvYmoubGlua1dvcmtzcGFjZVBhY2thZ2VzPy52YWx1ZSxcbiAgICAnaW5qZWN0V29ya3NwYWNlUGFja2FnZXMnOiBvYmouaW5qZWN0V29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ3N5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHMnOiBvYmouc3luY0luamVjdGVkRGVwc0FmdGVyU2NyaXB0cz8ubWFwKHkgPT4geSksXG4gICAgJ3ByZWZlcldvcmtzcGFjZVBhY2thZ2VzJzogb2JqLnByZWZlcldvcmtzcGFjZVBhY2thZ2VzLFxuICAgICdzaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZSc6IG9iai5zaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZSxcbiAgICAnc2F2ZVdvcmtzcGFjZVByb3RvY29sJzogb2JqLnNhdmVXb3Jrc3BhY2VQcm90b2NvbD8udmFsdWUsXG4gICAgJ2luY2x1ZGVXb3Jrc3BhY2VSb290Jzogb2JqLmluY2x1ZGVXb3Jrc3BhY2VSb290LFxuICAgICdpZ25vcmVXb3Jrc3BhY2VDeWNsZXMnOiBvYmouaWdub3JlV29ya3NwYWNlQ3ljbGVzLFxuICAgICdpZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2snOiBvYmouaWdub3JlV29ya3NwYWNlUm9vdENoZWNrLFxuICAgICdkaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcyc6IG9iai5kaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcyxcbiAgICAnd29ya3NwYWNlQ29uY3VycmVuY3knOiBvYmoud29ya3NwYWNlQ29uY3VycmVuY3ksXG4gICAgJ3Rhc2tzJzogKChvYmoudGFza3MpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai50YXNrcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRhc2tzKGlbMV0pIH0pLCB7fSkpLFxuICAgICdmYWlsSWZOb01hdGNoJzogb2JqLmZhaWxJZk5vTWF0Y2gsXG4gICAgJ2ZvcmNlTGVnYWN5RGVwbG95Jzogb2JqLmZvcmNlTGVnYWN5RGVwbG95LFxuICAgICdzYXZlUHJlZml4Jzogb2JqLnNhdmVQcmVmaXgsXG4gICAgJ3RhZyc6IG9iai50YWcsXG4gICAgJ2dsb2JhbERpcic6IG9iai5nbG9iYWxEaXIsXG4gICAgJ2dsb2JhbEJpbkRpcic6IG9iai5nbG9iYWxCaW5EaXIsXG4gICAgJ2dsb2JhbFNoaW1zJzogb2JqLmdsb2JhbFNoaW1zLFxuICAgICdzdGF0ZURpcic6IG9iai5zdGF0ZURpcixcbiAgICAnY2FjaGVEaXInOiBvYmouY2FjaGVEaXIsXG4gICAgJ3VzZVN0ZGVycic6IG9iai51c2VTdGRlcnIsXG4gICAgJ3VwZGF0ZU5vdGlmaWVyJzogb2JqLnVwZGF0ZU5vdGlmaWVyLFxuICAgICdjaSc6IG9iai5jaSxcbiAgICAncHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXMnOiBvYmoucHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXMsXG4gICAgJ2lnbm9yZUNvbXBhdGliaWxpdHlEYic6IG9iai5pZ25vcmVDb21wYXRpYmlsaXR5RGIsXG4gICAgJ3Jlc29sdXRpb25Nb2RlJzogb2JqLnJlc29sdXRpb25Nb2RlLFxuICAgICdyZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkJzogb2JqLnJlZ2lzdHJ5U3VwcG9ydHNUaW1lRmllbGQsXG4gICAgJ2V4dGVuZE5vZGVQYXRoJzogb2JqLmV4dGVuZE5vZGVQYXRoLFxuICAgICdkZXBsb3lBbGxGaWxlcyc6IG9iai5kZXBsb3lBbGxGaWxlcyxcbiAgICAnZGVkdXBlRGlyZWN0RGVwcyc6IG9iai5kZWR1cGVEaXJlY3REZXBzLFxuICAgICdkZWR1cGVJbmplY3RlZERlcHMnOiBvYmouZGVkdXBlSW5qZWN0ZWREZXBzLFxuICAgICdvcHRpbWlzdGljUmVwZWF0SW5zdGFsbCc6IG9iai5vcHRpbWlzdGljUmVwZWF0SW5zdGFsbCxcbiAgICAnZ2l0Q2hlY2tzJzogb2JqLmdpdENoZWNrcyxcbiAgICAnZW1iZWRSZWFkbWUnOiBvYmouZW1iZWRSZWFkbWUsXG4gICAgJ3B1Ymxpc2hCcmFuY2gnOiBvYmoucHVibGlzaEJyYW5jaCxcbiAgICAndmVyc2lvbmluZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcob2JqLnZlcnNpb25pbmcpLFxuICAgICdwcm92ZW5hbmNlJzogb2JqLnByb3ZlbmFuY2UsXG4gICAgJ3BucG1maWxlJzogb2JqLnBucG1maWxlLFxuICAgICdnbG9iYWxQbnBtZmlsZSc6IG9iai5nbG9iYWxQbnBtZmlsZSxcbiAgICAnaWdub3JlUG5wbWZpbGUnOiBvYmouaWdub3JlUG5wbWZpbGUsXG4gICAgJ3BhdGNoZXNEaXInOiBvYmoucGF0Y2hlc0RpcixcbiAgICAnZW5hYmxlUHJlUG9zdFNjcmlwdHMnOiBvYmouZW5hYmxlUHJlUG9zdFNjcmlwdHMsXG4gICAgJ3NjcmlwdFNoZWxsJzogb2JqLnNjcmlwdFNoZWxsLFxuICAgICdzaGVsbEVtdWxhdG9yJzogb2JqLnNoZWxsRW11bGF0b3IsXG4gICAgJ3NhdmVFeGFjdCc6IG9iai5zYXZlRXhhY3QsXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlLFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAnbWluaW11bVJlbGVhc2VBZ2VTdHJpY3QnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VTdHJpY3QsXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVBydW5lJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVBydW5lLFxuICAgICdwcmVmZXJPZmZsaW5lJzogb2JqLnByZWZlck9mZmxpbmUsXG4gICAgJ3RydXN0UG9saWN5Jzogb2JqLnRydXN0UG9saWN5LFxuICAgICd0cnVzdFBvbGljeUV4Y2x1ZGUnOiBvYmoudHJ1c3RQb2xpY3lFeGNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAnYWxsb3dCdWlsZHMnOiBvYmouYWxsb3dCdWlsZHMsXG4gICAgJ2Jsb2NrRXhvdGljU3ViZGVwcyc6IG9iai5ibG9ja0V4b3RpY1N1YmRlcHMsXG4gICAgJ3RydXN0UG9saWN5SWdub3JlQWZ0ZXInOiBvYmoudHJ1c3RQb2xpY3lJZ25vcmVBZnRlcixcbiAgICAnYXVkaXRMZXZlbCc6IG9iai5hdWRpdExldmVsLFxuICAgICdkZWR1cGVQZWVycyc6IG9iai5kZWR1cGVQZWVycyxcbiAgICAnbnBtcmNBdXRoRmlsZSc6IG9iai5ucG1yY0F1dGhGaWxlLFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlSWdub3JlTWlzc2luZ1RpbWUsXG4gICAgJ3JlZ2lzdHJpZXMnOiAoKG9iai5yZWdpc3RyaWVzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoucmVnaXN0cmllcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ25hbWVkUmVnaXN0cmllcyc6ICgob2JqLm5hbWVkUmVnaXN0cmllcykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLm5hbWVkUmVnaXN0cmllcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ3ZpcnR1YWxTdG9yZU9ubHknOiBvYmoudmlydHVhbFN0b3JlT25seSxcbiAgICAncG1PbkZhaWwnOiBvYmoucG1PbkZhaWwsXG4gICAgJ3J1bnRpbWVPbkZhaWwnOiBvYmoucnVudGltZU9uRmFpbCxcbiAgICAnbm9kZURvd25sb2FkTWlycm9ycyc6ICgob2JqLm5vZGVEb3dubG9hZE1pcnJvcnMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5ub2RlRG93bmxvYWRNaXJyb3JzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAndHJ1c3RMb2NrZmlsZSc6IG9iai50cnVzdExvY2tmaWxlLFxuICAgICdob2lzdGluZ0xpbWl0cyc6IG9iai5ob2lzdGluZ0xpbWl0cyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIENvbnRyb2xsaW5nIGlmIGFuZCBob3cgZGVwZW5kZW5jaWVzIGFyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBjYXRhbG9nXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNhdGFsb2dNb2RlXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ2F0YWxvZ01vZGUge1xuICAvKiogc3RyaWN0ICovXG4gIFNUUklDVCA9IFwic3RyaWN0XCIsXG4gIC8qKiBwcmVmZXIgKi9cbiAgUFJFRkVSID0gXCJwcmVmZXJcIixcbiAgLyoqIG1hbnVhbCAqL1xuICBNQU5VQUwgPSBcIm1hbnVhbFwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzIHtcbiAgLyoqXG4gICAqIHBucG0gd2lsbCBub3QgcHJpbnQgd2FybmluZ3MgYWJvdXQgbWlzc2luZyBwZWVyIGRlcGVuZGVuY2llcyBmcm9tIHRoaXMgbGlzdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMjaWdub3JlTWlzc2luZ1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlTWlzc2luZz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBVbm1ldCBwZWVyIGRlcGVuZGVuY3kgd2FybmluZ3Mgd2lsbCBub3QgYmUgcHJpbnRlZCBmb3IgcGVlciBkZXBlbmRlbmNpZXMgb2YgdGhlIHNwZWNpZmllZCByYW5nZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMjYWxsb3dlZFZlcnNpb25zXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkVmVyc2lvbnM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEFueSBwZWVyIGRlcGVuZGVuY3kgbWF0Y2hpbmcgdGhlIHBhdHRlcm4gd2lsbCBiZSByZXNvbHZlZCBmcm9tIGFueSB2ZXJzaW9uLCByZWdhcmRsZXNzIG9mIHRoZSByYW5nZSBzcGVjaWZpZWQgaW4gXCJwZWVyRGVwZW5kZW5jaWVzXCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzI2FsbG93QW55XG4gICAqL1xuICByZWFkb25seSBhbGxvd0FueT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpZ25vcmVNaXNzaW5nJzogb2JqLmlnbm9yZU1pc3Npbmc/Lm1hcCh5ID0+IHkpLFxuICAgICdhbGxvd2VkVmVyc2lvbnMnOiBvYmouYWxsb3dlZFZlcnNpb25zLFxuICAgICdhbGxvd0FueSc6IG9iai5hbGxvd0FueT8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUge1xuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcGVuZGVuY3kgbmFtZSBwYXR0ZXJucyB0aGF0IHBucG0gdXBkYXRlIGFuZCBwbnBtIG91dGRhdGVkIHNob3VsZCBza2lwLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlI2lnbm9yZURlcHNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZURlcHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHVwZGF0ZSB3cml0ZXMgYSBjaGFuZ2UgaW50ZW50IGFmdGVyIHVwZGF0aW5nIHdvcmtzcGFjZSBtYW5pZmVzdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUjY2hhbmdlc2V0XG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gdXBkYXRlIGFuZCBwbnBtIG91dGRhdGVkIGFsc28gY2hlY2sgdGhlIEdpdEh1YiBBY3Rpb25zIHJlZmVyZW5jZWQgYnkgdGhlIHJlcG9zaXRvcnkncyB3b3JrZmxvdyBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZSNnaXRodWJBY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBnaXRodWJBY3Rpb25zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGJhc2UgVVJMIG9mIHRoZSBHaXRIdWIgc2VydmVyIHRoYXQgaG9zdHMgdGhlIHJlcG9zaXRvcmllcyBvZiB0aGUgR2l0SHViIEFjdGlvbnMgcmVmZXJlbmNlZCBieSB0aGUgd29ya2Zsb3cgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUjZ2l0aHViQWN0aW9uc1NlcnZlclxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViQWN0aW9uc1NlcnZlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZShvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaWdub3JlRGVwcyc6IG9iai5pZ25vcmVEZXBzPy5tYXAoeSA9PiB5KSxcbiAgICAnY2hhbmdlc2V0Jzogb2JqLmNoYW5nZXNldCxcbiAgICAnZ2l0aHViQWN0aW9ucyc6IG9iai5naXRodWJBY3Rpb25zLFxuICAgICdnaXRodWJBY3Rpb25zU2VydmVyJzogb2JqLmdpdGh1YkFjdGlvbnNTZXJ2ZXIsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcge1xuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBydW5uaW5nIFwicG5wbSBvdXRkYXRlZFwiIG9yIFwicG5wbSB1cGRhdGUgLS1sYXRlc3RcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyNpZ25vcmVEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZURlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpZ25vcmVEZXBlbmRlbmNpZXMnOiBvYmouaWdub3JlRGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQge1xuICAvKipcbiAgICogT25seSBwcmludCBhZHZpc29yaWVzIHdpdGggc2V2ZXJpdHkgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoaXMgbGV2ZWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdCNsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgbGV2ZWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWw7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBHSFNBIGNvZGVzIHRoYXQgd2lsbCBiZSBpZ25vcmVkIGJ5IHBucG0gYXVkaXQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdCNpZ25vcmVcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgYHBucG0gYXVkaXQgLS1maXhgIHJlbW92ZXMgdGhlIGBhdWRpdC5pZ25vcmVgIGVudHJpZXMgd2hvc2UgR0hTQSBubyBsb25nZXIgYXBwZWFycyBpbiB0aGUgYXVkaXQgcmVwb3J0LCBzbyBhIGxpc3Qgb2YgdG9sZXJhdGVkIGFkdmlzb3JpZXMgZG9lc24ndCBhY2N1bXVsYXRlIGVudHJpZXMgZm9yIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBsb25nIGdvbmUuIEFkZGVkIGluOiB2MTEuMjUuMCBhbmQgdjEyLjAuMC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0I2lnbm9yZVBydW5lXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQcnVuZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0KG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2xldmVsJzogb2JqLmxldmVsLFxuICAgICdpZ25vcmUnOiBvYmouaWdub3JlPy5tYXAoeSA9PiB5KSxcbiAgICAnaWdub3JlUHJ1bmUnOiBvYmouaWdub3JlUHJ1bmUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBDVkUgSURzIHRoYXQgd2lsbCBiZSBpZ25vcmVkIGJ5IFwicG5wbSBhdWRpdFwiLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcjaWdub3JlQ3Zlc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ3Zlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgR0hTQSBDb2RlcyB0aGF0IHdpbGwgYmUgaWdub3JlZCBieSBcInBucG0gYXVkaXRcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnI2lnbm9yZUdoc2FzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVHaHNhcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpZ25vcmVDdmVzJzogb2JqLmlnbm9yZUN2ZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdpZ25vcmVHaHNhcyc6IG9iai5pZ25vcmVHaHNhcz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlcyBmb3Igd2hpY2ggeW91J2QgbGlrZSB0byBpbnN0YWxsIG9wdGlvbmFsIGRlcGVuZGVuY2llcywgZXZlbiBpZiB0aGV5IGRvbid0IG1hdGNoIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIHN5c3RlbSBydW5uaW5nIHRoZSBpbnN0YWxsLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzI29zXG4gICAqL1xuICByZWFkb25seSBvcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyNjcHVcbiAgICovXG4gIHJlYWRvbmx5IGNwdT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyNsaWJjXG4gICAqL1xuICByZWFkb25seSBsaWJjPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ29zJzogb2JqLm9zPy5tYXAoeSA9PiB5KSxcbiAgICAnY3B1Jzogb2JqLmNwdT8ubWFwKHkgPT4geSksXG4gICAgJ2xpYmMnOiBvYmoubGliYz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoaWNoIGV4YWN0IE5vZGUuanMgdmVyc2lvbiBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHByb2plY3QncyBydW50aW1lLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52I25vZGVWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudihvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbm9kZVZlcnNpb24nOiBvYmoubm9kZVZlcnNpb24sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBEZWZpbmVzIHdoYXQgbGlua2VyIHNob3VsZCBiZSB1c2VkIGZvciBpbnN0YWxsaW5nIE5vZGUgcGFja2FnZXMuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVMaW5rZXJcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlTGlua2VyIHtcbiAgLyoqIGlzb2xhdGVkICovXG4gIElTT0xBVEVEID0gXCJpc29sYXRlZFwiLFxuICAvKiogaG9pc3RlZCAqL1xuICBIT0lTVEVEID0gXCJob2lzdGVkXCIsXG4gIC8qKiBwbnAgKi9cbiAgUE5QID0gXCJwbnBcIixcbn1cblxuLyoqXG4gKiBDb250cm9scyBob3cgbm9kZV9tb2R1bGVzLy5wYWNrYWdlLW1hcC5qc29uIGlzIGdlbmVyYXRlZC4gc3RhbmRhcmQgLSBvbmx5IGRlY2xhcmVkIGRlcGVuZGVuY2llcyBhcmUgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHBhY2thZ2UgbWFwLiBsb29zZSAtIGFsc28gbWFwcyBwYWNrYWdlcyB0aGF0IGFyZSByZWFjaGFibGUgdGhyb3VnaCB0aGUgaW5zdGFsbGVkIG5vZGVfbW9kdWxlcyBsYXlvdXQsIHdoaWNoIGNhbiBhbGxvdyB1bmRlY2xhcmVkIGhvaXN0ZWQgZGVwZW5kZW5jaWVzIHRvIHJlc29sdmUuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVQYWNrYWdlTWFwVHlwZVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVQYWNrYWdlTWFwVHlwZSB7XG4gIC8qKiBzdGFuZGFyZCAqL1xuICBTVEFOREFSRCA9IFwic3RhbmRhcmRcIixcbiAgLyoqIGxvb3NlICovXG4gIExPT1NFID0gXCJsb29zZVwiLFxufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hlcmUgdGhlIHZpcnR1YWwgc3RvcmUgaXMgbG9jYXRlZC4gV2hlbiBzZXQgdG8gcHJvamVjdCwgYSBzZXBhcmF0ZSB2aXJ0dWFsIHN0b3JlIGlzIGNyZWF0ZWQgaW4gZWFjaCBwcm9qZWN0J3Mgbm9kZV9tb2R1bGVzLy5wbnBtLiBXaGVuIHNldCB0byBnbG9iYWwsIGEgc2luZ2xlIHN0b3JlIGlzIHNoYXJlZCBieSBldmVyeSBwcm9qZWN0IG9uIHRoZSBtYWNoaW5lLCB3aXRoIGVhY2ggcHJvamVjdCdzIG5vZGVfbW9kdWxlcyBob2xkaW5nIG9ubHkgc3ltbGlua3MgaW50byBpdC4gQWRkZWQgaW4gcG5wbSB2MTEuMjMuMC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmlydHVhbFN0b3JlVHlwZVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZpcnR1YWxTdG9yZVR5cGUge1xuICAvKiogcHJvamVjdCAqL1xuICBQUk9KRUNUID0gXCJwcm9qZWN0XCIsXG4gIC8qKiBnbG9iYWwgKi9cbiAgR0xPQkFMID0gXCJnbG9iYWxcIixcbn1cblxuLyoqXG4gKiBDb250cm9scyB0aGUgd2F5IHBhY2thZ2VzIGFyZSBpbXBvcnRlZCBmcm9tIHRoZSBzdG9yZSAoaWYgeW91IHdhbnQgdG8gZGlzYWJsZSBzeW1saW5rcyBpbnNpZGUgbm9kZV9tb2R1bGVzLCB0aGVuIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgbm9kZUxpbmtlciBzZXR0aW5nLCBub3QgdGhpcyBvbmUpLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQYWNrYWdlSW1wb3J0TWV0aG9kXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGFja2FnZUltcG9ydE1ldGhvZCB7XG4gIC8qKiBhdXRvICovXG4gIEFVVE8gPSBcImF1dG9cIixcbiAgLyoqIGhhcmRsaW5rICovXG4gIEhBUkRMSU5LID0gXCJoYXJkbGlua1wiLFxuICAvKiogY29weSAqL1xuICBDT1BZID0gXCJjb3B5XCIsXG4gIC8qKiBjbG9uZSAqL1xuICBDTE9ORSA9IFwiY2xvbmVcIixcbiAgLyoqIGNsb25lLW9yLWNvcHkgKi9cbiAgQ0xPTkVfSFlQSEVOX09SX0hZUEhFTl9DT1BZID0gXCJjbG9uZS1vci1jb3B5XCIsXG59XG5cbi8qKlxuICogQ29udHJvbHMgY29sb3JzIGluIHRoZSBvdXRwdXQuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNvbG9yXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ29sb3Ige1xuICAvKiogYWx3YXlzICovXG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG4gIC8qKiBhdXRvICovXG4gIEFVVE8gPSBcImF1dG9cIixcbiAgLyoqIG5ldmVyICovXG4gIE5FVkVSID0gXCJuZXZlclwiLFxufVxuXG4vKipcbiAqIEFueSBsb2dzIGF0IG9yIGhpZ2hlciB0aGFuIHRoZSBnaXZlbiBsZXZlbCB3aWxsIGJlIHNob3duLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMb2dsZXZlbFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxvZ2xldmVsIHtcbiAgLyoqIGRlYnVnICovXG4gIERFQlVHID0gXCJkZWJ1Z1wiLFxuICAvKiogaW5mbyAqL1xuICBJTkZPID0gXCJpbmZvXCIsXG4gIC8qKiB3YXJuICovXG4gIFdBUk4gPSBcIndhcm5cIixcbiAgLyoqIGVycm9yICovXG4gIEVSUk9SID0gXCJlcnJvclwiLFxufVxuXG4vKipcbiAqIEFsbG93cyB5b3UgdG8gY3VzdG9taXplIHRoZSBvdXRwdXQgc3R5bGUgb2YgdGhlIGxvZ3MuXG4gKiBodHRwczovL3BucG0uaW8vY2xpL2luc3RhbGwjLS1yZXBvcnRlcm5hbWVcbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVwb3J0ZXJcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXBvcnRlciB7XG4gIC8qKiBzaWxlbnQgKi9cbiAgU0lMRU5UID0gXCJzaWxlbnRcIixcbiAgLyoqIGRlZmF1bHQgKi9cbiAgREVGQVVMVCA9IFwiZGVmYXVsdFwiLFxuICAvKiogYXBwZW5kLW9ubHkgKi9cbiAgQVBQRU5EX0hZUEhFTl9PTkxZID0gXCJhcHBlbmQtb25seVwiLFxuICAvKiogbmRqc29uICovXG4gIE5ESlNPTiA9IFwibmRqc29uXCIsXG59XG5cbi8qKlxuICogSWYgdGhpcyBpcyBlbmFibGVkLCBsb2NhbGx5IGF2YWlsYWJsZSBwYWNrYWdlcyBhcmUgbGlua2VkIHRvIG5vZGVfbW9kdWxlcyBpbnN0ZWFkIG9mIGJlaW5nIGRvd25sb2FkZWQgZnJvbSB0aGUgcmVnaXN0cnkuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlc1xuICovXG5leHBvcnQgY2xhc3MgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMaW5rV29ya3NwYWNlUGFja2FnZXMge1xuICBwdWJsaWMgc3RhdGljIGZyb21Cb29sZWFuKHZhbHVlOiBib29sZWFuKTogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMaW5rV29ya3NwYWNlUGFja2FnZXMge1xuICAgIHJldHVybiBuZXcgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMaW5rV29ya3NwYWNlUGFja2FnZXModmFsdWUpO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgZnJvbVN0cmluZyh2YWx1ZTogc3RyaW5nKTogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMaW5rV29ya3NwYWNlUGFja2FnZXMge1xuICAgIHJldHVybiBuZXcgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMaW5rV29ya3NwYWNlUGFja2FnZXModmFsdWUpO1xuICB9XG4gIHByaXZhdGUgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIHNldHRpbmcgY29udHJvbHMgaG93IGRlcGVuZGVuY2llcyB0aGF0IGFyZSBsaW5rZWQgZnJvbSB0aGUgd29ya3NwYWNlIGFyZSBhZGRlZCB0byBwYWNrYWdlLmpzb24uXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbFxuICovXG5leHBvcnQgY2xhc3MgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlV29ya3NwYWNlUHJvdG9jb2wge1xuICBwdWJsaWMgc3RhdGljIGZyb21Cb29sZWFuKHZhbHVlOiBib29sZWFuKTogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlV29ya3NwYWNlUHJvdG9jb2wge1xuICAgIHJldHVybiBuZXcgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlV29ya3NwYWNlUHJvdG9jb2wodmFsdWUpO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgZnJvbVN0cmluZyh2YWx1ZTogc3RyaW5nKTogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlV29ya3NwYWNlUHJvdG9jb2wge1xuICAgIHJldHVybiBuZXcgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlV29ya3NwYWNlUHJvdG9jb2wodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XG4gIH1cbn1cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVGFza3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRhc2tzIHtcbiAgLyoqXG4gICAqIFRhc2tzIHRoaXMgdGFzayBkZXBlbmRzIG9uLiBFYWNoIGVudHJ5IGlzIGVpdGhlciB0aGUgdGFzayBpbiB0aGUgc2FtZSBwcm9qZWN0IChlLmcuIGBidWlsZGApIG9yIHRoZSB0YXNrIGluIGVhY2ggc2VsZWN0ZWQgd29ya3NwYWNlIGRlcGVuZGVuY3kgb2YgdGhlIHByb2plY3QgKGUuZy4gYF5idWlsZGApLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVGFza3MjZGVwZW5kc09uXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRzT24/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBwb3NpdGl2ZSBpbnRlZ2VyIGxpbWl0aW5nIGhvdyBtYW55IGluc3RhbmNlcyBvZiB0aGlzIG5hbWVkIHRhc2sgbWF5IHJ1biBhY3Jvc3Mgd29ya3NwYWNlIHByb2plY3RzIGF0IG9uY2UuIFRoaXMgbGltaXQgaXMgc2VwYXJhdGUgZnJvbSB3b3Jrc3BhY2VDb25jdXJyZW5jeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRhc2tzI2NvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSBjb25jdXJyZW5jeT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFUYXNrcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVGFza3Mob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRhc2tzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZGVwZW5kc09uJzogb2JqLmRlcGVuZHNPbj8ubWFwKHkgPT4geSksXG4gICAgJ2NvbmN1cnJlbmN5Jzogb2JqLmNvbmN1cnJlbmN5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQ29uZmlndXJlIGhvdyB2ZXJzaW9ucyBvZiBwYWNrYWdlcyBpbnN0YWxsZWQgdG8gYSBwYWNrYWdlLmpzb24gZmlsZSBnZXQgcHJlZml4ZWQuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVQcmVmaXhcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4IHtcbiAgLyoqIF4gKi9cbiAgVkFMVUVfQ0FSQVQgPSBcIl5cIixcbiAgLyoqIH4gKi9cbiAgVkFMVUVfVElMREUgPSBcIn5cIixcbiAgLyoqID0gKi9cbiAgVkFMVUVfRVFVQUxTID0gXCI9XCIsXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgcG5wbSByZXNvbHZlcyBkZXBlbmRlbmNpZXMsIFNlZSBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjcmVzb2x1dGlvbm1vZGVcbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVzb2x1dGlvbk1vZGVcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXNvbHV0aW9uTW9kZSB7XG4gIC8qKiBoaWdoZXN0ICovXG4gIEhJR0hFU1QgPSBcImhpZ2hlc3RcIixcbiAgLyoqIHRpbWUtYmFzZWQgKi9cbiAgVElNRV9IWVBIRU5fQkFTRUQgPSBcInRpbWUtYmFzZWRcIixcbiAgLyoqIGxvd2VzdC1kaXJlY3QgKi9cbiAgTE9XRVNUX0hZUEhFTl9ESVJFQ1QgPSBcImxvd2VzdC1kaXJlY3RcIixcbn1cblxuLyoqXG4gKiBWZXJzaW9uaW5nIHNldHRpbmdzIGZvciBwbnBtJ3MgbmF0aXZlIHdvcmtzcGFjZSByZWxlYXNlIG1hbmFnZW1lbnQsIHVzZWQgYnkgYHBucG0gY2hhbmdlYCBhbmQgcmVjdXJzaXZlIGBwbnBtIHZlcnNpb25gLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nIHtcbiAgLyoqXG4gICAqIEdyb3VwcyBvZiB3b3Jrc3BhY2UgcHJvamVjdHMgdGhhdCBhbHdheXMgcmVsZWFzZSB0b2dldGhlciBhdCBvbmUgc2hhcmVkIHZlcnNpb24uIFRoZSBzaGFyZWQgdmVyc2lvbiBpcyB0aGUgaGlnaGVzdCBjdXJyZW50IHZlcnNpb24gaW4gdGhlIGdyb3VwLCBidW1wZWQgYnkgdGhlIGxhcmdlc3QgYnVtcCBhbnkgbWVtYmVyIG5lZWRzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyNmaXhlZFxuICAgKi9cbiAgcmVhZG9ubHkgZml4ZWQ/OiBzdHJpbmdbXVtdO1xuXG4gIC8qKlxuICAgKiBXb3Jrc3BhY2UgcHJvamVjdHMgcGVybWFuZW50bHkgZXhjbHVkZWQgZnJvbSB2ZXJzaW9uaW5nIGFuZCBkZXBlbmRlbnQgcHJvcGFnYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nI2lnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENhcHMgdGhlIGJ1bXAgdGhhdCBhIHJlbGVhc2UgZnJvbSB0aGUgY3VycmVudCBjaGVja291dCBtYXkgYXBwbHksIGFmdGVyIGRlcGVuZGVudCBwcm9wYWdhdGlvbiBhbmQgZml4ZWQtZ3JvdXAgcmVzb2x1dGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcjbWF4QnVtcFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4QnVtcD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ01heEJ1bXA7XG5cbiAgLyoqXG4gICAqIE1hcHMgYSB3b3Jrc3BhY2UgcHJvamVjdCB0byBhIHJlbGVhc2UgbGFuZS4gVW5saXN0ZWQgcHJvamVjdHMgYXJlIG9uIHRoZSByZXNlcnZlZCBgbWFpbmAgbGFuZSBhbmQgcmVsZWFzZSBzdGFibGUgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nI2xhbmVzXG4gICAqL1xuICByZWFkb25seSBsYW5lcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRpZXMgbWVtYmVyIHByb2plY3RzIHRvIGEgbGVhZCBwcm9qZWN0IGFuZCBjb25zdHJhaW5zIHRoZWlyIG1ham9yIHZlcnNpb25zIHRvIHRoZSBsZWFkJ3MgbWFqb3ItdmVyc2lvbiBiYW5kLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyNlcGljc1xuICAgKi9cbiAgcmVhZG9ubHkgZXBpY3M/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljc1tdO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGVyZSByZWxlYXNlIGNoYW5nZWxvZyBjb250ZW50IGlzIHN0b3JlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcjY2hhbmdlbG9nXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2Vsb2c/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2c7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2ZpeGVkJzogb2JqLmZpeGVkPy5tYXAoeSA9PiB5Py5tYXAoeSA9PiB5KSksXG4gICAgJ2lnbm9yZSc6IG9iai5pZ25vcmU/Lm1hcCh5ID0+IHkpLFxuICAgICdtYXhCdW1wJzogb2JqLm1heEJ1bXAsXG4gICAgJ2xhbmVzJzogKChvYmoubGFuZXMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5sYW5lcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ2VwaWNzJzogb2JqLmVwaWNzPy5tYXAoeSA9PiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MoeSkpLFxuICAgICdjaGFuZ2Vsb2cnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nKG9iai5jaGFuZ2Vsb2cpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogV2hlbiBzZXQgdG8gbm8tZG93bmdyYWRlLCBwbnBtIHdpbGwgZmFpbCBpZiBhIHBhY2thZ2UncyB0cnVzdCBsZXZlbCBoYXMgZGVjcmVhc2VkIGNvbXBhcmVkIHRvIHByZXZpb3VzIHJlbGVhc2VzLiBGb3IgZXhhbXBsZSwgaWYgYSBwYWNrYWdlIHdhcyBwcmV2aW91c2x5IHB1Ymxpc2hlZCBieSBhIHRydXN0ZWQgcHVibGlzaGVyIGJ1dCBub3cgb25seSBoYXMgcHJvdmVuYW5jZSBvciBubyB0cnVzdCBldmlkZW5jZSwgaW5zdGFsbGF0aW9uIHdpbGwgZmFpbC4gVGhpcyBoZWxwcyBwcmV2ZW50IGluc3RhbGxpbmcgcG90ZW50aWFsbHkgY29tcHJvbWlzZWQgdmVyc2lvbnMuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRydXN0UG9saWN5XG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVHJ1c3RQb2xpY3kge1xuICAvKiogb2ZmICovXG4gIE9GRiA9IFwib2ZmXCIsXG4gIC8qKiBuby1kb3duZ3JhZGUgKi9cbiAgTk9fSFlQSEVOX0RPV05HUkFERSA9IFwibm8tZG93bmdyYWRlXCIsXG59XG5cbi8qKlxuICogT25seSBwcmludCBhZHZpc29yaWVzIHdpdGggc2V2ZXJpdHkgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoaXMgbGV2ZWwuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWxcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsIHtcbiAgLyoqIGxvdyAqL1xuICBMT1cgPSBcImxvd1wiLFxuICAvKiogbW9kZXJhdGUgKi9cbiAgTU9ERVJBVEUgPSBcIm1vZGVyYXRlXCIsXG4gIC8qKiBoaWdoICovXG4gIEhJR0ggPSBcImhpZ2hcIixcbiAgLyoqIGNyaXRpY2FsICovXG4gIENSSVRJQ0FMID0gXCJjcml0aWNhbFwiLFxufVxuXG4vKipcbiAqIE92ZXJyaWRlcyB0aGUgYG9uRmFpbGAgYmVoYXZpb3Igb2YgYm90aCB0aGUgYHBhY2thZ2VNYW5hZ2VyYCBmaWVsZCBhbmQgYGRldkVuZ2luZXMucGFja2FnZU1hbmFnZXJgIHdoZW4gdGhlIHJ1bm5pbmcgcG5wbSB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHRoZSBkZWNsYXJlZCBvbmUuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBtT25GYWlsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUG1PbkZhaWwge1xuICAvKiogZG93bmxvYWQgKi9cbiAgRE9XTkxPQUQgPSBcImRvd25sb2FkXCIsXG4gIC8qKiBlcnJvciAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbiAgLyoqIHdhcm4gKi9cbiAgV0FSTiA9IFwid2FyblwiLFxuICAvKiogaWdub3JlICovXG4gIElHTk9SRSA9IFwiaWdub3JlXCIsXG59XG5cbi8qKlxuICogT3ZlcnJpZGVzIHRoZSBgb25GYWlsYCBmaWVsZCBvZiBgZGV2RW5naW5lcy5ydW50aW1lYCAoYW5kIGBlbmdpbmVzLnJ1bnRpbWVgKSBpbiB0aGUgcm9vdCBwcm9qZWN0J3MgYHBhY2thZ2UuanNvbmAuIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgYSBkaWZmZXJlbnQgbG9jYWwgYmVoYXZpb3IgdGhhbiB3aGF0IGlzIHdyaXR0ZW4gaW4gdGhlIG1hbmlmZXN0IOKAlCBmb3IgaW5zdGFuY2UsIGZvcmNpbmcgcG5wbSB0byBkb3dubG9hZCB0aGUgZGVjbGFyZWQgcnVudGltZSBldmVuIHdoZW4gdGhlIG1hbmlmZXN0IHNldHMgYG9uRmFpbDogXCJ3YXJuXCJgLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSdW50aW1lT25GYWlsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUnVudGltZU9uRmFpbCB7XG4gIC8qKiBkb3dubG9hZCAqL1xuICBET1dOTE9BRCA9IFwiZG93bmxvYWRcIixcbiAgLyoqIGVycm9yICovXG4gIEVSUk9SID0gXCJlcnJvclwiLFxuICAvKiogd2FybiAqL1xuICBXQVJOID0gXCJ3YXJuXCIsXG4gIC8qKiBpZ25vcmUgKi9cbiAgSUdOT1JFID0gXCJpZ25vcmVcIixcbn1cblxuLyoqXG4gKiBBZGRlZCBhIG5ldyBob2lzdGluZ0xpbWl0cyBzZXR0aW5nIGZvciBgbm9kZUxpbmtlcjogaG9pc3RlZGAgaW5zdGFsbHMsIG1pcnJvcmluZyB5YXJuJ3MgYG5tSG9pc3RpbmdMaW1pdHNgLiBJdCBhY2NlcHRzIGBub25lYCAodGhlIGRlZmF1bHQg4oCUIGhvaXN0IGFzIGZhciBhcyBwb3NzaWJsZSksIHdvcmtzcGFjZXMgKGhvaXN0IG9ubHkgYXMgZmFyIGFzIGVhY2ggd29ya3NwYWNlIHBhY2thZ2UpLCBvciBkZXBlbmRlbmNpZXMgKGhvaXN0IG9ubHkgdXAgdG8gZWFjaCB3b3Jrc3BhY2UgcGFja2FnZSdzIGRpcmVjdCBkZXBlbmRlbmNpZXMpLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFIb2lzdGluZ0xpbWl0c1xuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUhvaXN0aW5nTGltaXRzIHtcbiAgLyoqIG5vbmUgKi9cbiAgTk9ORSA9IFwibm9uZVwiLFxuICAvKiogd29ya3NwYWNlcyAqL1xuICBXT1JLU1BBQ0VTID0gXCJ3b3Jrc3BhY2VzXCIsXG4gIC8qKiBkZXBlbmRlbmNpZXMgKi9cbiAgREVQRU5ERU5DSUVTID0gXCJkZXBlbmRlbmNpZXNcIixcbn1cblxuLyoqXG4gKiBDYXBzIHRoZSBidW1wIHRoYXQgYSByZWxlYXNlIGZyb20gdGhlIGN1cnJlbnQgY2hlY2tvdXQgbWF5IGFwcGx5LCBhZnRlciBkZXBlbmRlbnQgcHJvcGFnYXRpb24gYW5kIGZpeGVkLWdyb3VwIHJlc29sdXRpb24uXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdNYXhCdW1wXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ01heEJ1bXAge1xuICAvKiogcGF0Y2ggKi9cbiAgUEFUQ0ggPSBcInBhdGNoXCIsXG4gIC8qKiBtaW5vciAqL1xuICBNSU5PUiA9IFwibWlub3JcIixcbiAgLyoqIG1ham9yICovXG4gIE1BSk9SID0gXCJtYWpvclwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljcyB7XG4gIC8qKlxuICAgKiBMZWFkIHdvcmtzcGFjZSBwcm9qZWN0IG5hbWUgb3IgYSBgLi9gLXByZWZpeGVkIHdvcmtzcGFjZS1yZWxhdGl2ZSBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MjbGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgbGVhZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcm9qZWN0IHNlbGVjdG9ycyBtYXRjaGVkIGluIG9yZGVyLCBzdXBwb3J0aW5nIG5hbWUgZ2xvYnMsIGAuL2AtcHJlZml4ZWQgZGlyZWN0b3J5IGdsb2JzLCBhbmQgYCFgLXByZWZpeGVkIG5lZ2F0aW9ucy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljcyNwYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0VwaWNzKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdsZWFkJzogb2JqLmxlYWQsXG4gICAgJ3BhY2thZ2VzJzogb2JqLnBhY2thZ2VzPy5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIENvbnRyb2xzIHdoZXJlIHJlbGVhc2UgY2hhbmdlbG9nIGNvbnRlbnQgaXMgc3RvcmVkLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nIHtcbiAgLyoqXG4gICAqIENoYW5nZWxvZyBzdG9yYWdlIG1vZGUuIGByZWdpc3RyeWAgY29tcG9zZXMgY2hhbmdlbG9nIGVudHJpZXMgYXQgcHVibGlzaCB0aW1lLCB3aGlsZSBgcmVwb3NpdG9yeWAgY29tbWl0cyBDSEFOR0VMT0cubWQgZmlsZXMgaW4gcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nI3N0b3JhZ2VcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2U/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2dTdG9yYWdlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2cnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2cob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2cgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdzdG9yYWdlJzogb2JqLnN0b3JhZ2UsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBDaGFuZ2Vsb2cgc3RvcmFnZSBtb2RlLiBgcmVnaXN0cnlgIGNvbXBvc2VzIGNoYW5nZWxvZyBlbnRyaWVzIGF0IHB1Ymxpc2ggdGltZSwgd2hpbGUgYHJlcG9zaXRvcnlgIGNvbW1pdHMgQ0hBTkdFTE9HLm1kIGZpbGVzIGluIHBhY2thZ2VzLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nU3RvcmFnZVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2dTdG9yYWdlIHtcbiAgLyoqIHJlZ2lzdHJ5ICovXG4gIFJFR0lTVFJZID0gXCJyZWdpc3RyeVwiLFxuICAvKiogcmVwb3NpdG9yeSAqL1xuICBSRVBPU0lUT1JZID0gXCJyZXBvc2l0b3J5XCIsXG59XG4iXX0=
|