projen 0.98.33 → 0.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +201 -182
- package/lib/ai-instructions.js +2 -2
- package/lib/awscdk/auto-discover.js +5 -5
- 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 +2 -2
- 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 +4 -4
- 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.d.ts +13 -1
- package/lib/awscdk/lambda-function.js +47 -5
- package/lib/build/build-workflow.js +6 -7
- 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-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/circleci/circleci.js +1 -1
- package/lib/component.js +1 -1
- 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/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/private/util.d.ts +14 -0
- package/lib/github/private/util.js +20 -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.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-package.js +1 -1
- package/lib/javascript/node-project.d.ts +2 -2
- package/lib/javascript/node-project.js +3 -3
- package/lib/javascript/npm-config.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 +17 -9
- 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/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 +2 -2
- package/lib/projenrc.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.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 +15 -18
- package/lib/renovatebot.js +1 -1
- package/lib/sample-file.js +2 -2
- package/lib/semver.js +1 -1
- package/lib/source-code.js +1 -1
- package/lib/task-runtime.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-typedoc.js +1 -1
- package/lib/typescript/typescript.js +6 -6
- 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 +4 -4
- package/lib/web/tailwind.js +1 -1
- package/lib/xmlfile.js +1 -1
- package/lib/yaml.js +1 -1
- package/package.json +1 -1
|
@@ -170,7 +170,7 @@ class TypescriptConfigExtends {
|
|
|
170
170
|
}
|
|
171
171
|
exports.TypescriptConfigExtends = TypescriptConfigExtends;
|
|
172
172
|
_a = JSII_RTTI_SYMBOL_1;
|
|
173
|
-
TypescriptConfigExtends[_a] = { fqn: "projen.javascript.TypescriptConfigExtends", version: "0.
|
|
173
|
+
TypescriptConfigExtends[_a] = { fqn: "projen.javascript.TypescriptConfigExtends", version: "0.99.0" };
|
|
174
174
|
class TypescriptConfig extends component_1.Component {
|
|
175
175
|
constructor(project, options) {
|
|
176
176
|
super(project);
|
|
@@ -333,5 +333,5 @@ class TypescriptConfig extends component_1.Component {
|
|
|
333
333
|
}
|
|
334
334
|
exports.TypescriptConfig = TypescriptConfig;
|
|
335
335
|
_b = JSII_RTTI_SYMBOL_1;
|
|
336
|
-
TypescriptConfig[_b] = { fqn: "projen.javascript.TypescriptConfig", version: "0.
|
|
336
|
+
TypescriptConfig[_b] = { fqn: "projen.javascript.TypescriptConfig", version: "0.99.0" };
|
|
337
337
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC90eXBlc2NyaXB0LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixpQ0FBaUM7QUFDakMsd0JBQWdDO0FBQ2hDLDRDQUF5QztBQUN6QyxrQ0FBbUM7QUFFbkMsa0NBQWlEO0FBdUNqRDs7OztHQUlHO0FBQ0gsSUFBWSwwQkE2Q1g7QUE3Q0QsV0FBWSwwQkFBMEI7SUFDcEM7Ozs7T0FJRztJQUNILGlEQUFtQixDQUFBO0lBRW5COzs7O09BSUc7SUFDSCwyQ0FBYSxDQUFBO0lBRWI7Ozs7Ozs7T0FPRztJQUNILCtDQUFpQixDQUFBO0lBRWpCOzs7O09BSUc7SUFDSCwrQ0FBaUIsQ0FBQTtJQUVqQjs7OztPQUlHO0lBQ0gsb0RBQXNCLENBQUE7SUFFdEI7Ozs7T0FJRztJQUNILGlEQUFtQixDQUFBO0FBQ3JCLENBQUMsRUE3Q1csMEJBQTBCLDBDQUExQiwwQkFBMEIsUUE2Q3JDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVkseUJBcUJYO0FBckJELFdBQVkseUJBQXlCO0lBQ25DOzs7O09BSUc7SUFDSCwwQ0FBYSxDQUFBO0lBRWI7Ozs7T0FJRztJQUNILDhDQUFpQixDQUFBO0lBRWpCOzs7O09BSUc7SUFDSCw0Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFyQlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUFxQnBDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksZ0NBZ0JYO0FBaEJELFdBQVksZ0NBQWdDO0lBQzFDOztPQUVHO0lBQ0gscURBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCx5REFBcUIsQ0FBQTtJQUVyQjs7O09BR0c7SUFDSCxtREFBZSxDQUFBO0FBQ2pCLENBQUMsRUFoQlcsZ0NBQWdDLGdEQUFoQyxnQ0FBZ0MsUUFnQjNDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksaUJBMkJYO0FBM0JE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QUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksVUFBVSxDQUFDLEtBQXVCO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUMsU0FBUyxDQUFDO1lBQ2hELEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDekIsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSxDQUFDLE9BQWU7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGFBQWEsQ0FBQyxPQUFlO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxhQUFhLENBQUMsT0FBZTtRQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYTtRQUNYLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQzs7QUFwTUgsNENBcU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCB7IE5vZGVQcm9qZWN0IH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IEpzb25GaWxlIH0gZnJvbSBcIi4uL2pzb25cIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplUGVyc2lzdGVkUGF0aCB9IGZyb20gXCIuLi91dGlsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCJ0c2NvbmZpZy5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCYXNlIGB0c2NvbmZpZy5qc29uYCBjb25maWd1cmF0aW9uKHMpIHRvIGluaGVyaXQgZnJvbS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogTXVzdCBwcm92aWRlIGVpdGhlciBgZXh0ZW5kc2Agb3IgYGNvbXBpbGVyT3B0aW9uc2AgKG9yIGJvdGgpLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5kcz86IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBsaXN0IG9mIGdsb2IgcGF0dGVybnMgdGhhdCBtYXRjaCBUeXBlU2NyaXB0IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIGNvbXBpbGF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFsbCAudHMgZmlsZXMgcmVjdXJzaXZlbHlcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsdGVycyByZXN1bHRzIGZyb20gdGhlIFwiaW5jbHVkZVwiIG9wdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub2RlX21vZHVsZXMgaXMgZXhjbHVkZWQgYnkgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDb21waWxlciBvcHRpb25zIHRvIHVzZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogTXVzdCBwcm92aWRlIGVpdGhlciBgZXh0ZW5kc2Agb3IgYGNvbXBpbGVyT3B0aW9uc2AgKG9yIGJvdGgpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGlsZXJPcHRpb25zPzogVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGhvdyBtb2R1bGVzIGdldCByZXNvbHZlZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL21vZHVsZS1yZXNvbHV0aW9uLmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24ge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCdzIGZvcm1lciBkZWZhdWx0IHJlc29sdXRpb24gc3RyYXRlZ3kuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlLXJlc29sdXRpb24uaHRtbCNjbGFzc2ljXG4gICAqL1xuICBDTEFTU0lDID0gXCJjbGFzc2ljXCIsXG5cbiAgLyoqXG4gICAqIFJlc29sdXRpb24gc3RyYXRlZ3kgd2hpY2ggYXR0ZW1wdHMgdG8gbWltaWMgdGhlIE5vZGUuanMgbW9kdWxlIHJlc29sdXRpb24gc3RyYXRlZ3kgYXQgcnVudGltZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGUtcmVzb2x1dGlvbi5odG1sI25vZGVcbiAgICovXG4gIE5PREUgPSBcIm5vZGVcIixcblxuICAvKipcbiAgICogYC0tbW9kdWxlUmVzb2x1dGlvbiBub2RlYCB3YXMgcmVuYW1lZCB0byBgbm9kZTEwYFxuICAgKiAoa2VlcGluZyBgbm9kZWAgYXMgYW4gYWxpYXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIGluIFR5cGVTY3JpcHQgNS4wLlxuICAgKiBJdCByZWZsZWN0cyB0aGUgQ29tbW9uSlMgbW9kdWxlIHJlc29sdXRpb24gYWxnb3JpdGhtIGFzIGl0IGV4aXN0ZWQgaW4gTm9kZS5qcyB2ZXJzaW9uc1xuICAgKiBlYXJsaWVyIHRoYW4gdjEyLiBJdCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlcy9yZWZlcmVuY2UuaHRtbCNub2RlMTAtZm9ybWVybHkta25vd24tYXMtbm9kZVxuICAgKi9cbiAgTk9ERTEwID0gXCJub2RlMTBcIixcblxuICAvKipcbiAgICogTm9kZS5qc+KAmSBFQ01BU2NyaXB0IE1vZHVsZSBTdXBwb3J0IGZyb20gVHlwZVNjcmlwdCA0Ljcgb253YXJkc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNtb2R1bGVSZXNvbHV0aW9uXG4gICAqL1xuICBOT0RFMTYgPSBcIm5vZGUxNlwiLFxuXG4gIC8qKlxuICAgKiBOb2RlLmpz4oCZIEVDTUFTY3JpcHQgTW9kdWxlIFN1cHBvcnQgZnJvbSBUeXBlU2NyaXB0IDQuNyBvbndhcmRzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI21vZHVsZVJlc29sdXRpb25cbiAgICovXG4gIE5PREVfTkVYVCA9IFwibm9kZW5leHRcIixcblxuICAvKipcbiAgICogUmVzb2x1dGlvbiBzdHJhdGVneSB3aGljaCBhdHRlbXB0cyB0byBtaW1pYyByZXNvbHV0aW9uIHBhdHRlcm5zIG9mIG1vZGVybiBidW5kbGVyczsgZnJvbSBUeXBlU2NyaXB0IDUuMCBvbndhcmRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNtb2R1bGVSZXNvbHV0aW9uXG4gICAqL1xuICBCVU5ETEVSID0gXCJidW5kbGVyXCIsXG59XG5cbi8qKlxuICogVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBUeXBlU2NyaXB0IGRldGVybWluZXMgd2hldGhlciBhIGZpbGUgaXMgYSBzY3JpcHQgb3IgYSBtb2R1bGUuXG4gKlxuICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGVzL3RoZW9yeS5odG1sI3NjcmlwdHMtYW5kLW1vZHVsZXMtaW4tamF2YXNjcmlwdFxuICovXG5leHBvcnQgZW51bSBUeXBlU2NyaXB0TW9kdWxlRGV0ZWN0aW9uIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgd2lsbCBub3Qgb25seSBsb29rIGZvciBpbXBvcnQgYW5kIGV4cG9ydCBzdGF0ZW1lbnRzLCBidXQgaXQgd2lsbCBhbHNvIGNoZWNrIHdoZXRoZXIgdGhlIFwidHlwZVwiIGZpZWxkIGluIGEgcGFja2FnZS5qc29uIGlzIHNldCB0byBcIm1vZHVsZVwiIHdoZW4gcnVubmluZyB3aXRoIG1vZHVsZTogbm9kZW5leHQgb3Igbm9kZTE2LCBhbmQgY2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBmaWxlIGlzIGEgSlNYIGZpbGUgd2hlbiBydW5uaW5nIHVuZGVyIGpzeDogcmVhY3QtanN4LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy8jbW9kdWxlRGV0ZWN0aW9uXG4gICAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBzYW1lIGJlaGF2aW9yIGFzIDQuNiBhbmQgcHJpb3IsIHVzaW5ncyBpbXBvcnQgYW5kIGV4cG9ydCBzdGF0ZW1lbnRzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZmlsZSBpcyBhIG1vZHVsZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcvI21vZHVsZURldGVjdGlvblxuICAgKi9cbiAgTEVHQUNZID0gXCJsZWdhY3lcIixcblxuICAvKipcbiAgICogRW5zdXJlcyB0aGF0IGV2ZXJ5IG5vbi1kZWNsYXJhdGlvbiBmaWxlIGlzIHRyZWF0ZWQgYXMgYSBtb2R1bGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnLyNtb2R1bGVEZXRlY3Rpb25cbiAgICovXG4gIEZPUkNFID0gXCJmb3JjZVwiLFxufVxuXG4vKipcbiAqIFRoaXMgZmxhZyBjb250cm9scyBob3cgYGltcG9ydGAgd29ya3MsIHRoZXJlIGFyZSAzIGRpZmZlcmVudCBvcHRpb25zLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2ltcG9ydHNOb3RVc2VkQXNWYWx1ZXNcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdEltcG9ydHNOb3RVc2VkQXNWYWx1ZXMge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgZHJvcHBpbmcgYGltcG9ydGAgc3RhdGVtZW50cyB3aGljaCBvbmx5IHJlZmVyZW5jZSB0eXBlcy5cbiAgICovXG4gIFJFTU9WRSA9IFwicmVtb3ZlXCIsXG5cbiAgLyoqXG4gICAqIFByZXNlcnZlcyBhbGwgYGltcG9ydGAgc3RhdGVtZW50cyB3aG9zZSB2YWx1ZXMgb3IgdHlwZXMgYXJlIG5ldmVyIHVzZWQuIFRoaXMgY2FuIGNhdXNlIGltcG9ydHMvc2lkZS1lZmZlY3RzIHRvIGJlIHByZXNlcnZlZC5cbiAgICovXG4gIFBSRVNFUlZFID0gXCJwcmVzZXJ2ZVwiLFxuXG4gIC8qKlxuICAgKiBUaGlzIHByZXNlcnZlcyBhbGwgaW1wb3J0cyAodGhlIHNhbWUgYXMgdGhlIHByZXNlcnZlIG9wdGlvbiksIGJ1dCB3aWxsIGVycm9yIHdoZW4gYSB2YWx1ZSBpbXBvcnQgaXMgb25seSB1c2VkIGFzIGEgdHlwZS5cbiAgICogVGhpcyBtaWdodCBiZSB1c2VmdWwgaWYgeW91IHdhbnQgdG8gZW5zdXJlIG5vIHZhbHVlcyBhcmUgYmVpbmcgYWNjaWRlbnRhbGx5IGltcG9ydGVkLCBidXQgc3RpbGwgbWFrZSBzaWRlLWVmZmVjdCBpbXBvcnRzIGV4cGxpY2l0LlxuICAgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgSlNYIHNob3VsZCBnZXQgdHJhbnNmb3JtZWQgaW50byB2YWxpZCBKYXZhU2NyaXB0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svanN4Lmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdEpzeE1vZGUge1xuICAvKipcbiAgICogS2VlcHMgdGhlIEpTWCBhcyBwYXJ0IG9mIHRoZSBvdXRwdXQgdG8gYmUgZnVydGhlciBjb25zdW1lZCBieSBhbm90aGVyIHRyYW5zZm9ybSBzdGVwIChlLmcuIEJhYmVsKS5cbiAgICovXG4gIFBSRVNFUlZFID0gXCJwcmVzZXJ2ZVwiLFxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBKU1ggc3ludGF4IGludG8gUmVhY3QuY3JlYXRlRWxlbWVudCwgZG9lcyBub3QgbmVlZCB0byBnbyB0aHJvdWdoIGEgSlNYIHRyYW5zZm9ybWF0aW9uIGJlZm9yZSB1c2UsIGFuZCB0aGUgb3V0cHV0IHdpbGwgaGF2ZSBhIC5qcyBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIFJFQUNUID0gXCJyZWFjdFwiLFxuXG4gIC8qKlxuICAgKiBLZWVwcyBhbGwgSlNYIGxpa2UgJ3ByZXNlcnZlJyBtb2RlLCBidXQgb3V0cHV0IHdpbGwgaGF2ZSBhIC5qcyBleHRlbnNpb24uXG4gICAqL1xuICBSRUFDVF9OQVRJVkUgPSBcInJlYWN0LW5hdGl2ZVwiLFxuXG4gIC8qKlxuICAgKiBQYXNzZXMgYGtleWAgc2VwYXJhdGVseSBmcm9tIHByb3BzIGFuZCBhbHdheXMgcGFzc2VzIGBjaGlsZHJlbmAgYXMgcHJvcHMgKHNpbmNlIFJlYWN0IDE3KS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9yZWxlYXNlLW5vdGVzL3R5cGVzY3JpcHQtNC0xLmh0bWwjcmVhY3QtMTctanN4LWZhY3Rvcmllc1xuICAgKi9cbiAgUkVBQ1RfSlNYID0gXCJyZWFjdC1qc3hcIixcblxuICAvKipcbiAgICogU2FtZSBhcyBgUkVBQ1RfSlNYYCB3aXRoIGFkZGl0aW9uYWwgZGVidWcgZGF0YS5cbiAgICovXG4gIFJFQUNUX0pTWERFViA9IFwicmVhY3QtanN4ZGV2XCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbGxvdyBKYXZhU2NyaXB0IGZpbGVzIHRvIGJlIGNvbXBpbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dKcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93cyBUeXBlU2NyaXB0IGZpbGVzIHRvIGltcG9ydCBlYWNoIG90aGVyIHdpdGggVHlwZVNjcmlwdC1zcGVjaWZpYyBleHRlbnNpb25zIChgLnRzYCwgYC5tdHNgLCBgLnRzeGApLlxuICAgKiBSZXF1aXJlcyBgbm9FbWl0YCBvciBgZW1pdERlY2xhcmF0aW9uT25seWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTdXBwcmVzcyBhcmJpdHJhcnkgZXh0ZW5zaW9uIGltcG9ydCBlcnJvcnMgd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IGEgYnVuZGxlciB3aWxsIGJlIGhhbmRsaW5nIGl0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoYXQgeW91ciBmaWxlcyBhcmUgcGFyc2VkIGluIHRoZSBFQ01BU2NyaXB0IHN0cmljdCBtb2RlLCBhbmQgZW1pdCDigJx1c2Ugc3RyaWN04oCdXG4gICAqIGZvciBlYWNoIHNvdXJjZSBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhbHdheXNTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPZmZlcnMgYSB3YXkgdG8gY29uZmlndXJlIHRoZSByb290IGRpcmVjdG9yeSBmb3Igd2hlcmUgZGVjbGFyYXRpb24gZmlsZXMgYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBkZWNsYXJhdGlvbkRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVG8gYmUgc3BlY2lmaWVkIGFsb25nIHdpdGggdGhlIGFib3ZlXG4gICAqXG4gICAqL1xuICByZWFkb25seSBkZWNsYXJhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHNvdXJjZSBtYXAgZm9yIC5kLnRzIGZpbGVzIHdoaWNoIG1hcCBiYWNrIHRvIHRoZSBvcmlnaW5hbCAudHMgc291cmNlIGZpbGUuXG4gICAqIFRoaXMgd2lsbCBhbGxvdyBlZGl0b3JzIHN1Y2ggYXMgVlMgQ29kZSB0byBnbyB0byB0aGUgb3JpZ2luYWwgLnRzIGZpbGUgd2hlbiB1c2luZyBmZWF0dXJlcyBsaWtlIEdvIHRvIERlZmluaXRpb24uXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNkZWNsYXJhdGlvbk1hcH1cbiAgICovXG4gIHJlYWRvbmx5IGRlY2xhcmF0aW9uTWFwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG93bmxldmVsaW5nIGlzIFR5cGVTY3JpcHTigJlzIHRlcm0gZm9yIHRyYW5zcGlsaW5nIHRvIGFuIG9sZGVyIHZlcnNpb24gb2YgSmF2YVNjcmlwdC5cbiAgICogVGhpcyBmbGFnIGlzIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBhIG1vcmUgYWNjdXJhdGUgaW1wbGVtZW50YXRpb24gb2YgaG93IG1vZGVybiBKYXZhU2NyaXB0IGl0ZXJhdGVzIHRocm91Z2ggbmV3IGNvbmNlcHRzIGluIG9sZGVyIEphdmFTY3JpcHQgcnVudGltZXMuXG4gICAqXG4gICAqIEVDTUFTY3JpcHQgNiBhZGRlZCBzZXZlcmFsIG5ldyBpdGVyYXRpb24gcHJpbWl0aXZlczogdGhlIGZvciAvIG9mIGxvb3AgKGZvciAoZWwgb2YgYXJyKSksIEFycmF5IHNwcmVhZCAoW2EsIC4uLmJdKSwgYXJndW1lbnQgc3ByZWFkIChmbiguLi5hcmdzKSksIGFuZCBTeW1ib2wuaXRlcmF0b3IuXG4gICAqIGRvd25sZXZlbEl0ZXJhdGlvbiBhbGxvd3MgZm9yIHRoZXNlIGl0ZXJhdGlvbiBwcmltaXRpdmVzIHRvIGJlIHVzZWQgbW9yZSBhY2N1cmF0ZWx5IGluIEVTNSBlbnZpcm9ubWVudHMgaWYgYSBTeW1ib2wuaXRlcmF0b3IgaW1wbGVtZW50YXRpb24gaXMgcHJlc2VudC5cbiAgICovXG4gIHJlYWRvbmx5IGRvd25sZXZlbEl0ZXJhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgYWRkaXRpb25hbCBjb25kaXRpb25zIHRoYXQgc2hvdWxkIHN1Y2NlZWQgd2hlbiBUeXBlU2NyaXB0IHJlc29sdmVzIGZyb20gYW4gYGV4cG9ydHNgIG9yIGBpbXBvcnRzYCBmaWVsZCBvZiBhIGBwYWNrYWdlLmpzb25gLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNjdXN0b21Db25kaXRpb25zXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tQ29uZGl0aW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFbWl0IF9faW1wb3J0U3RhciBhbmQgX19pbXBvcnREZWZhdWx0IGhlbHBlcnMgZm9yIHJ1bnRpbWUgYmFiZWxcbiAgICogZWNvc3lzdGVtIGNvbXBhdGliaWxpdHkgYW5kIGVuYWJsZSAtLWFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHMgZm9yXG4gICAqIHR5cGVzeXN0ZW0gY29tcGF0aWJpbGl0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVzTW9kdWxlSW50ZXJvcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIGRlY29yYXRvcnMsIHdoaWNoIGlzIGluIHN0YWdlIDIgb2YgdGhlIFRDMzkgc3RhbmRhcmRpemF0aW9uIHByb2Nlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbERlY29yYXRvcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBkZWNvcmF0b3JzLCB3aGljaCBpcyBpbiBzdGFnZSAyIG9mIHRoZSBUQzM5IHN0YW5kYXJkaXphdGlvbiBwcm9jZXNzLlxuICAgKiBEZWNvcmF0b3JzIGFyZSBhIGxhbmd1YWdlIGZlYXR1cmUgd2hpY2ggaGFzbuKAmXQgeWV0IGJlZW4gZnVsbHkgcmF0aWZpZWQgaW50byB0aGUgSmF2YVNjcmlwdCBzcGVjaWZpY2F0aW9uLlxuICAgKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIHZlcnNpb24gaW4gVHlwZVNjcmlwdCBtYXkgZGlmZmVyIGZyb20gdGhlIGltcGxlbWVudGF0aW9uIGluIEphdmFTY3JpcHQgd2hlbiBpdCBpdCBkZWNpZGVkIGJ5IFRDMzkuXG4gICAqIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCBkZWNvcmF0b3Igc3VwcG9ydCBpbiBUeXBlU2NyaXB0IGluIHRoZSBoYW5kYm9vay5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9kZWNvcmF0b3JzLmh0bWxcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBlbWl0RGVjb3JhdG9yTWV0YWRhdGE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNhbGxvdyBpbmNvbnNpc3RlbnRseS1jYXNlZCByZWZlcmVuY2VzIHRvIHRoZSBzYW1lIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZUNvbnNpc3RlbnRDYXNpbmdJbkZpbGVOYW1lcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNpbXBsaWZpZXMgVHlwZVNjcmlwdCdzIGhhbmRsaW5nIG9mIGltcG9ydC9leHBvcnQgYHR5cGVgIG1vZGlmaWVycy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjdmVyYmF0aW1Nb2R1bGVTeW50YXhcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSB2ZXJiYXRpbU1vZHVsZVN5bnRheD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgZmxhZyB3b3JrcyBiZWNhdXNlIHlvdSBjYW4gdXNlIGBpbXBvcnQgdHlwZWAgdG8gZXhwbGljaXRseSBjcmVhdGUgYW4gYGltcG9ydGAgc3RhdGVtZW50IHdoaWNoIHNob3VsZCBuZXZlciBiZSBlbWl0dGVkIGludG8gSmF2YVNjcmlwdC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRm9yIFR5cGVTY3JpcHQgNS4wKyB1c2UgYHZlcmJhdGltTW9kdWxlU3ludGF4YCBpbnN0ZWFkLlxuICAgKiBQb3NlZCBmb3IgZGVwcmVjYXRpb24gdXBvbiBUeXBlU2NyaXB0IDUuNS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjaW1wb3J0c05vdFVzZWRBc1ZhbHVlc1xuICAgKiBAZGVmYXVsdCBcInJlbW92ZVwiXG4gICAqL1xuICByZWFkb25seSBpbXBvcnRzTm90VXNlZEFzVmFsdWVzPzogVHlwZVNjcmlwdEltcG9ydHNOb3RVc2VkQXNWYWx1ZXM7XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0LCBpbnN0ZWFkIG9mIHdyaXRpbmcgb3V0IGEgLmpzLm1hcCBmaWxlIHRvIHByb3ZpZGUgc291cmNlIG1hcHMsXG4gICAqIFR5cGVTY3JpcHQgd2lsbCBlbWJlZCB0aGUgc291cmNlIG1hcCBjb250ZW50IGluIHRoZSAuanMgZmlsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGlubGluZVNvdXJjZU1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0LCBUeXBlU2NyaXB0IHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luYWwgY29udGVudCBvZiB0aGUgLnRzIGZpbGUgYXMgYW4gZW1iZWRkZWRcbiAgICogc3RyaW5nIGluIHRoZSBzb3VyY2UgbWFwLiBUaGlzIGlzIG9mdGVuIHVzZWZ1bCBpbiB0aGUgc2FtZSBjYXNlcyBhcyBpbmxpbmVTb3VyY2VNYXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGlubGluZVNvdXJjZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIHRoZSBnZW5lcmF0aW9uIG9mIHNvdXJjZW1hcCBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VNYXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBsb2NhdGlvbiB3aGVyZSBhIGRlYnVnZ2VyIHNob3VsZCBsb2NhdGUgVHlwZVNjcmlwdCBmaWxlc1xuICAgKiBpbnN0ZWFkIG9mIHJlbGF0aXZlIHNvdXJjZSBsb2NhdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlUm9vdD86IHN0cmluZztcblxuICAvKipcbiAgICogUGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyB0byBlbnN1cmUgdGhhdCBzZXBhcmF0ZSBjb21waWxhdGlvbiAoc3VjaCBhc1xuICAgKiB3aXRoIHRyYW5zcGlsZU1vZHVsZSBvciBAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS10eXBlc2NyaXB0KSB3b3VsZCBiZSBzYWZlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaXNvbGF0ZWRNb2R1bGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3VwcG9ydCBKU1ggaW4gLnRzeCBmaWxlczogXCJyZWFjdFwiLCBcInByZXNlcnZlXCIsIFwicmVhY3QtbmF0aXZlXCIgZXRjLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGpzeD86IFR5cGVTY3JpcHRKc3hNb2RlO1xuXG4gIC8qKlxuICAgKiBEZWNsYXJlcyB0aGUgbW9kdWxlIHNwZWNpZmllciB0byBiZSB1c2VkIGZvciBpbXBvcnRpbmcgdGhlIGpzeCBhbmQganN4cyBmYWN0b3J5IGZ1bmN0aW9ucyB3aGVuIHVzaW5nIGpzeC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBqc3hJbXBvcnRTb3VyY2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSBmb3IgdHlwZSBkZWZpbml0aW9ucyAvIGxpYnJhcmllcyB0byB1c2UgKGVnLiBFUzIwMTYsIEVTNSwgRVMyMDE4KS5cbiAgICpcbiAgICogQGRlZmF1bHQgWyBcImVzMjAxOFwiIF1cbiAgICovXG4gIHJlYWRvbmx5IGxpYj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNldHRpbmcgY29udHJvbHMgaG93IFR5cGVTY3JpcHQgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgZmlsZSBpcyBhIFtzY3JpcHQgb3IgYSBtb2R1bGVdKGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL21vZHVsZXMvdGhlb3J5Lmh0bWwjc2NyaXB0cy1hbmQtbW9kdWxlcy1pbi1qYXZhc2NyaXB0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJhdXRvXCJcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZURldGVjdGlvbj86IFR5cGVTY3JpcHRNb2R1bGVEZXRlY3Rpb247XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1vZHVsZSBzeXN0ZW0gZm9yIHRoZSBwcm9ncmFtLlxuICAgKiBTZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlcy5odG1sI2FtYmllbnQtbW9kdWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJDb21tb25KU1wiXG4gICAqL1xuICByZWFkb25seSBtb2R1bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZSBob3cgbW9kdWxlcyBnZXQgcmVzb2x2ZWQuIEVpdGhlciBcIk5vZGVcIiBmb3IgTm9kZS5qcy9pby5qcyBzdHlsZSByZXNvbHV0aW9uLCBvciBcIkNsYXNzaWNcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJub2RlXCJcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZVJlc29sdXRpb24/OiBUeXBlU2NyaXB0TW9kdWxlUmVzb2x1dGlvbjtcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgb3V0cHV0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG5vRW1pdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9ubHkgZW1pdCAuZC50cyBmaWxlczsgZG8gbm90IGVtaXQgLmpzIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW1pdERlY2xhcmF0aW9uT25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvIG5vdCBlbWl0IGNvbXBpbGVyIG91dHB1dCBmaWxlcyBsaWtlIEphdmFTY3JpcHQgc291cmNlIGNvZGUsIHNvdXJjZS1tYXBzIG9yXG4gICAqIGRlY2xhcmF0aW9ucyBpZiBhbnkgZXJyb3JzIHdlcmUgcmVwb3J0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vRW1pdE9uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgZXJyb3JzIGZvciBmYWxsdGhyb3VnaCBjYXNlcyBpbiBzd2l0Y2ggc3RhdGVtZW50cy4gRW5zdXJlcyB0aGF0IGFueSBub24tZW1wdHlcbiAgICogY2FzZSBpbnNpZGUgYSBzd2l0Y2ggc3RhdGVtZW50IGluY2x1ZGVzIGVpdGhlciBicmVhayBvciByZXR1cm4uIFRoaXMgbWVhbnMgeW91IHdvbuKAmXRcbiAgICogYWNjaWRlbnRhbGx5IHNoaXAgYSBjYXNlIGZhbGx0aHJvdWdoIGJ1Zy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbiBzb21lIGNhc2VzIHdoZXJlIG5vIHR5cGUgYW5ub3RhdGlvbnMgYXJlIHByZXNlbnQsIFR5cGVTY3JpcHQgd2lsbCBmYWxsIGJhY2sgdG8gYVxuICAgKiB0eXBlIG9mIGFueSBmb3IgYSB2YXJpYWJsZSB3aGVuIGl0IGNhbm5vdCBpbmZlciB0aGUgdHlwZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9JbXBsaWNpdEFueT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVzaW5nIGBub0ltcGxpY2l0T3ZlcnJpZGVgLCB5b3UgY2FuIGVuc3VyZSB0aGF0IHN1Yi1jbGFzc2VzIG5ldmVyIGdvIG91dCBvZiBzeW5jIGFzXG4gICAqIHRoZXkgYXJlIHJlcXVpcmVkIHRvIGV4cGxpY2l0bHkgZGVjbGFyZSB0aGF0IHRoZXkgYXJlIG92ZXJyaWRpbmcgYSBtZW1iZXIgdXNpbmcgdGhlXG4gICAqIGBvdmVycmlkZWAga2V5d29yZC4gVGhpcyBhbHNvIGltcHJvdmVzIHJlYWRhYmlsaXR5IG9mIHRoZSBwcm9ncmFtbWVyJ3MgaW50ZW50LlxuICAgKlxuICAgKiBBdmFpbGFibGUgd2l0aCBUeXBlU2NyaXB0IDQuMyBhbmQgbmV3ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBub0ltcGxpY2l0T3ZlcnJpZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIFR5cGVTY3JpcHQgd2lsbCBjaGVjayBhbGwgY29kZSBwYXRocyBpbiBhIGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGV5XG4gICAqIHJldHVybiBhIHZhbHVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ltcGxpY2l0UmV0dXJucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSYWlzZSBlcnJvciBvbiDigJh0aGlz4oCZIGV4cHJlc3Npb25zIHdpdGggYW4gaW1wbGllZCDigJhhbnnigJkgdHlwZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9JbXBsaWNpdFRoaXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSYWlzZSBlcnJvciBvbiB1c2Ugb2YgdGhlIGRvdCBzeW50YXggdG8gYWNjZXNzIGZpZWxkcyB3aGljaCBhcmUgbm90IGRlZmluZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vUHJvcGVydHlBY2Nlc3NGcm9tSW5kZXhTaWduYXR1cmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSYWlzZSBlcnJvciB3aGVuIGFjY2Vzc2luZyBpbmRleGVzIG9uIG9iamVjdHMgd2l0aCB1bmtub3duIGtleXMgZGVmaW5lZCBpbiBpbmRleCBzaWduYXR1cmVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub1VuY2hlY2tlZEluZGV4ZWRBY2Nlc3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgZXJyb3JzIG9uIHVudXNlZCBsb2NhbCB2YXJpYWJsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vVW51c2VkTG9jYWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVwb3J0IGVycm9ycyBvbiB1bnVzZWQgcGFyYW1ldGVycyBpbiBmdW5jdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vVW51c2VkUGFyYW1ldGVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93cyBpbXBvcnRpbmcgbW9kdWxlcyB3aXRoIGEg4oCYLmpzb27igJkgZXh0ZW5zaW9uLCB3aGljaCBpcyBhIGNvbW1vbiBwcmFjdGljZVxuICAgKiBpbiBub2RlIHByb2plY3RzLiBUaGlzIGluY2x1ZGVzIGdlbmVyYXRpbmcgYSB0eXBlIGZvciB0aGUgaW1wb3J0IGJhc2VkIG9uIHRoZSBzdGF0aWMgSlNPTiBzaGFwZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZUpzb25Nb2R1bGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTa2lwIHR5cGUgY2hlY2tpbmcgb2YgYWxsIGRlY2xhcmF0aW9uIGZpbGVzICgqLmQudHMpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcExpYkNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHN0cmljdCBmbGFnIGVuYWJsZXMgYSB3aWRlIHJhbmdlIG9mIHR5cGUgY2hlY2tpbmcgYmVoYXZpb3IgdGhhdCByZXN1bHRzIGluIHN0cm9uZ2VyIGd1YXJhbnRlZXNcbiAgICogb2YgcHJvZ3JhbSBjb3JyZWN0bmVzcy4gVHVybmluZyB0aGlzIG9uIGlzIGVxdWl2YWxlbnQgdG8gZW5hYmxpbmcgYWxsIG9mIHRoZSBzdHJpY3QgbW9kZSBmYW1pbHlcbiAgICogb3B0aW9ucywgd2hpY2ggYXJlIG91dGxpbmVkIGJlbG93LiBZb3UgY2FuIHRoZW4gdHVybiBvZmYgaW5kaXZpZHVhbCBzdHJpY3QgbW9kZSBmYW1pbHkgY2hlY2tzIGFzXG4gICAqIG5lZWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzdHJpY3ROdWxsQ2hlY2tzIGlzIGZhbHNlLCBudWxsIGFuZCB1bmRlZmluZWQgYXJlIGVmZmVjdGl2ZWx5IGlnbm9yZWQgYnkgdGhlIGxhbmd1YWdlLlxuICAgKiBUaGlzIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgZXJyb3JzIGF0IHJ1bnRpbWUuXG4gICAqIFdoZW4gc3RyaWN0TnVsbENoZWNrcyBpcyB0cnVlLCBudWxsIGFuZCB1bmRlZmluZWQgaGF2ZSB0aGVpciBvd24gZGlzdGluY3QgdHlwZXMgYW5kIHlvdeKAmWxsXG4gICAqIGdldCBhIHR5cGUgZXJyb3IgaWYgeW91IHRyeSB0byB1c2UgdGhlbSB3aGVyZSBhIGNvbmNyZXRlIHZhbHVlIGlzIGV4cGVjdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdHJpY3ROdWxsQ2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgVHlwZVNjcmlwdCB3aWxsIHJhaXNlIGFuIGVycm9yIHdoZW4gYSBjbGFzcyBwcm9wZXJ0eSB3YXMgZGVjbGFyZWQgYnV0XG4gICAqIG5vdCBzZXQgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdHJpY3RQcm9wZXJ0eUluaXRpYWxpemF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgZGVjbGFyYXRpb25zIGZvciBjb2RlIHRoYXQgaGFzIGFuIGBAaW50ZXJuYWxgIGFubm90YXRpb24gaW4gaXTigJlzIEpTRG9jIGNvbW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN0cmlwSW50ZXJuYWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGb3JjZXMgVHlwZVNjcmlwdCB0byBjb25zdWx0IHRoZSBgZXhwb3J0c2AgZmllbGQgb2YgYHBhY2thZ2UuanNvbmAgZmlsZXMgaWYgaXQgZXZlciByZWFkcyBmcm9tIGEgcGFja2FnZSBpbiBgbm9kZV9tb2R1bGVzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZVBhY2thZ2VKc29uRXhwb3J0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZvcmNlcyBUeXBlU2NyaXB0IHRvIGNvbnN1bHQgdGhlIGBpbXBvcnRzYCBmaWVsZCBvZiBgcGFja2FnZS5qc29uYCB3aGVuIHBlcmZvcm1pbmcgYSBsb29rdXAgdGhhdCBiZWdpbnMgd2l0aCBgI2AgZnJvbSBhIGZpbGUgdGhhdCBoYXMgYSBgcGFja2FnZS5qc29uYCBhcyBhbiBhbmNlc3Rvci5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlUGFja2FnZUpzb25JbXBvcnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTW9kZXJuIGJyb3dzZXJzIHN1cHBvcnQgYWxsIEVTNiBmZWF0dXJlcywgc28gRVM2IGlzIGEgZ29vZCBjaG9pY2UuIFlvdSBtaWdodCBjaG9vc2UgdG8gc2V0XG4gICAqIGEgbG93ZXIgdGFyZ2V0IGlmIHlvdXIgY29kZSBpcyBkZXBsb3llZCB0byBvbGRlciBlbnZpcm9ubWVudHMsIG9yIGEgaGlnaGVyIHRhcmdldCBpZiB5b3VyXG4gICAqIGNvZGUgaXMgZ3VhcmFudGVlZCB0byBydW4gaW4gbmV3ZXIgZW52aXJvbm1lbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIkVTMjAxOFwiXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE91dHB1dCBkaXJlY3RvcnkgZm9yIHRoZSBjb21waWxlZCBmaWxlcy5cbiAgICovXG4gIHJlYWRvbmx5IG91dERpcj86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSByb290IGRpcmVjdG9yeSBvZiBpbnB1dCBmaWxlcy5cbiAgICpcbiAgICogT25seSB1c2UgdG8gY29udHJvbCB0aGUgb3V0cHV0IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgd2l0aCBgb3V0RGlyYC5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3REaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93IGRlZmF1bHQgaW1wb3J0cyBmcm9tIG1vZHVsZXMgd2l0aCBubyBkZWZhdWx0IGV4cG9ydC4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgY29kZSBlbWl0LCBqdXN0IHR5cGVjaGVja2luZy5cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhhdCBvcHRpb25hbCBwcm9wZXJ0eSB0eXBlcyBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgZXhhY3RseSBhcyB3cml0dGVuLCBtZWFuaW5nIHRoYXQgYHwgdW5kZWZpbmVkYCBpcyBub3QgYWRkZWQgdG8gdGhlIHR5cGVcbiAgICogQXZhaWxhYmxlIHdpdGggVHlwZVNjcmlwdCA0LjQgYW5kIG5ld2VyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHZhcmlhYmxlIGluIGEgY2F0Y2ggY2xhdXNlIGZyb20gYW55IHRvIHVua25vd25cbiAgICogQXZhaWxhYmxlIHdpdGggVHlwZVNjcmlwdCA0LjQgYW5kIG5ld2VyLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB1c2VVbmtub3duSW5DYXRjaFZhcmlhYmxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExldHMgeW91IHNldCBhIGJhc2UgZGlyZWN0b3J5IHRvIHJlc29sdmUgbm9uLWFic29sdXRlIG1vZHVsZSBuYW1lcy5cbiAgICpcbiAgICogWW91IGNhbiBkZWZpbmUgYSByb290IGZvbGRlciB3aGVyZSB5b3UgY2FuIGRvIGFic29sdXRlIGZpbGUgcmVzb2x1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGJhc2VVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc2VyaWVzIG9mIGVudHJpZXMgd2hpY2ggcmUtbWFwIGltcG9ydHMgdG8gbG9va3VwIGxvY2F0aW9ucyByZWxhdGl2ZSB0byB0aGUgYmFzZVVybCwgdGhlcmUgaXMgYSBsYXJnZXIgY292ZXJhZ2Ugb2YgcGF0aHMgaW4gdGhlIGhhbmRib29rLlxuICAgKlxuICAgKiBwYXRocyBsZXRzIHlvdSBkZWNsYXJlIGhvdyBUeXBlU2NyaXB0IHNob3VsZCByZXNvbHZlIGFuIGltcG9ydCBpbiB5b3VyIHJlcXVpcmUvaW1wb3J0cy5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuXG4gIC8qKlxuICAgKiBJZiB0eXBlUm9vdHMgaXMgc3BlY2lmaWVkLCBvbmx5IHBhY2thZ2VzIHVuZGVyIHR5cGVSb290cyB3aWxsIGJlIGluY2x1ZGVkXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnLyN0eXBlUm9vdHNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVSb290cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiB0eXBlcyBpcyBzcGVjaWZpZWQsIG9ubHkgcGFja2FnZXMgbGlzdGVkIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGdsb2JhbCBzY29wZVxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyN0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGVsbHMgVHlwZVNjcmlwdCB0byBzYXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9qZWN0IGdyYXBoIGZyb20gdGhlIGxhc3QgY29tcGlsYXRpb24gdG8gZmlsZXMgc3RvcmVkIG9uIGRpc2suXG4gICAqIFRoaXMgY3JlYXRlcyBhIHNlcmllcyBvZiAudHNidWlsZGluZm8gZmlsZXMgaW4gdGhlIHNhbWUgZm9sZGVyIGFzIHlvdXIgY29tcGlsYXRpb24gb3V0cHV0LlxuICAgKiBUaGV5IGFyZSBub3QgdXNlZCBieSB5b3VyIEphdmFTY3JpcHQgYXQgcnVudGltZSBhbmQgY2FuIGJlIHNhZmVseSBkZWxldGVkLlxuICAgKiBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCB0aGUgZmxhZyBpbiB0aGUgMy40IHJlbGVhc2Ugbm90ZXMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svcmVsZWFzZS1ub3Rlcy90eXBlc2NyaXB0LTMtNC5odG1sI2Zhc3Rlci1zdWJzZXF1ZW50LWJ1aWxkcy13aXRoLXRoZS0tLWluY3JlbWVudGFsLWZsYWdcbiAgICpcbiAgICogVG8gY29udHJvbCB3aGljaCBmb2xkZXJzIHlvdSB3YW50IHRvIHRoZSBmaWxlcyB0byBiZSBidWlsdCB0bywgdXNlIHRoZSBjb25maWcgb3B0aW9uIHRzQnVpbGRJbmZvRmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IGluY3JlbWVudGFsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBzZXR0aW5nIGxldHMgeW91IHNwZWNpZnkgYSBmaWxlIGZvciBzdG9yaW5nIGluY3JlbWVudGFsIGNvbXBpbGF0aW9uIGluZm9ybWF0aW9uIGFzIGEgcGFydCBvZiBjb21wb3NpdGUgcHJvamVjdHMgd2hpY2ggZW5hYmxlcyBmYXN0ZXIgYnVpbGRpbmcgb2YgbGFyZ2VyIFR5cGVTY3JpcHQgY29kZWJhc2VzLlxuICAgKiBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCBjb21wb3NpdGUgcHJvamVjdHMgaW4gdGhlIGhhbmRib29rLlxuICAgKi9cbiAgcmVhZG9ubHkgdHNCdWlsZEluZm9GaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBVbnVzZWQgTGFiZWxzXG4gICAqXG4gICAqIFdoZW46XG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpIHByb3ZpZGUgc3VnZ2VzdGlvbnMgYXMgd2FybmluZ3MgdG8gZWRpdG9yc1xuICAgKiAtIGB0cnVlYCB1bnVzZWQgbGFiZWxzIGFyZSBpZ25vcmVkXG4gICAqIC0gYGZhbHNlYCByYWlzZXMgY29tcGlsZXIgZXJyb3JzIGFib3V0IHVudXNlZCBsYWJlbHNcbiAgICpcbiAgICogTGFiZWxzIGFyZSB2ZXJ5IHJhcmUgaW4gSmF2YVNjcmlwdCBhbmQgdHlwaWNhbGx5IGluZGljYXRlIGFuIGF0dGVtcHQgdG8gd3JpdGUgYW4gb2JqZWN0IGxpdGVyYWw6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGZ1bmN0aW9uIHZlcmlmeUFnZShhZ2U6IG51bWJlcikge1xuICAgKiAgIC8vIEZvcmdvdCAncmV0dXJuJyBzdGF0ZW1lbnRcbiAgICogICBpZiAoYWdlID4gMTgpIHtcbiAgICogICAgIHZlcmlmaWVkOiB0cnVlO1xuICAgKiAvLyAgXl5eXl5eXl4gVW51c2VkIGxhYmVsLlxuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjYWxsb3dVbnVzZWRMYWJlbHNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93VW51c2VkTGFiZWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3cgVW5yZWFjaGFibGUgQ29kZVxuICAgKlxuICAgKiBXaGVuOlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0KSBwcm92aWRlIHN1Z2dlc3Rpb25zIGFzIHdhcm5pbmdzIHRvIGVkaXRvcnNcbiAgICogLSBgdHJ1ZWAgdW5yZWFjaGFibGUgY29kZSBpcyBpZ25vcmVkXG4gICAqIC0gYGZhbHNlYCByYWlzZXMgY29tcGlsZXIgZXJyb3JzIGFib3V0IHVucmVhY2hhYmxlIGNvZGVcbiAgICpcbiAgICogVGhlc2Ugd2FybmluZ3MgYXJlIG9ubHkgYWJvdXQgY29kZSB3aGljaCBpcyBwcm92YWJseSB1bnJlYWNoYWJsZSBkdWUgdG8gdGhlIHVzZSBvZiBKYXZhU2NyaXB0IHN5bnRheC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjYWxsb3dVbnJlYWNoYWJsZUNvZGVcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93VW5yZWFjaGFibGVDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2sgSlNcbiAgICpcbiAgICogV29ya3MgaW4gdGFuZGVtIHdpdGggW2FsbG93SnNdKGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd0pzKS4gV2hlbiBjaGVja0pzIGlzIGVuYWJsZWQgdGhlblxuICAgKiBlcnJvcnMgYXJlIHJlcG9ydGVkIGluIEphdmFTY3JpcHQgZmlsZXMuIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgaW5jbHVkaW5nIC8vIEB0cy1jaGVjayBhdCB0aGUgdG9wIG9mIGFsbFxuICAgKiBKYXZhU2NyaXB0IGZpbGVzIHdoaWNoIGFyZSBpbmNsdWRlZCBpbiB5b3VyIHByb2plY3QuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2NoZWNrSnNcbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrSnM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnRhaW5lciBmb3IgYFR5cGVzY3JpcHRDb25maWdgIGB0c2NvbmZpZy5qc29uYCBiYXNlIGNvbmZpZ3VyYXRpb24ocykuXG4gKiBFeHRlbmRpbmcgZnJvbSBtb3JlIHRoYW4gb25lIGJhc2UgY29uZmlnIGZpbGUgcmVxdWlyZXMgVHlwZVNjcmlwdCA1LjArLlxuICovXG5leHBvcnQgY2xhc3MgVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHMge1xuICAvKipcbiAgICogRmFjdG9yeSBmb3IgY3JlYXRpb24gZnJvbSBhcnJheSBvZiBmaWxlIHBhdGhzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUeXBlU2NyaXB0IDUuMCsgaXMgcmVxdWlyZWQgdG8gc3BlY2lmeSBtb3JlIHRoYW4gb25lIHZhbHVlIGluIGBwYXRoc2AuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRocyBBYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRocyB0byBiYXNlIGB0c2NvbmZpZy5qc29uYCBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBhdGhzKHBhdGhzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiBuZXcgVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHMocGF0aHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgZm9yIGNyZWF0aW9uIGZyb20gYXJyYXkgb2Ygb3RoZXIgYFR5cGVzY3JpcHRDb25maWdgIGluc3RhbmNlcy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVHlwZVNjcmlwdCA1LjArIGlzIHJlcXVpcmVkIHRvIHNwZWNpZnkgbW9yZSB0aGFuIG9uIHZhbHVlIGluIGBjb25maWdzYC5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ3MgQmFzZSBgVHlwZXNjcmlwdENvbmZpZ2AgaW5zdGFuY2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVHlwZXNjcmlwdENvbmZpZ3MoY29uZmlnczogVHlwZXNjcmlwdENvbmZpZ1tdKSB7XG4gICAgY29uc3QgcGF0aHMgPSBjb25maWdzLm1hcCgoY29uZmlnKSA9PiBjb25maWcuZmlsZS5hYnNvbHV0ZVBhdGgpO1xuICAgIHJldHVybiBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcy5mcm9tUGF0aHMocGF0aHMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlczogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihiYXNlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmJhc2VzID0gYmFzZXM7XG4gIH1cblxuICBwdWJsaWMgdG9KU09OKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwZXNjcmlwdENvbmZpZyBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgX2V4dGVuZHM6IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzO1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcGlsZXJPcHRpb25zPzogVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucztcbiAgcHJpdmF0ZSByZWFkb25seSBpbmNsdWRlU2V0OiBTZXQ8c3RyaW5nPjtcbiAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlU2V0OiBTZXQ8c3RyaW5nPjtcbiAgcHVibGljIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBmaWxlOiBKc29uRmlsZTtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIGNvbnN0IGZpbGVOYW1lID0gb3B0aW9ucy5maWxlTmFtZSA/PyBcInRzY29uZmlnLmpzb25cIjtcblxuICAgIGlmICghb3B0aW9ucy5leHRlbmRzICYmICFvcHRpb25zLmNvbXBpbGVyT3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlR5cGVzY3JpcHRDb25maWc6IE11c3QgcHJvdmlkZSBlaXRoZXIgYGV4dGVuZHNgIG9yIGBjb21waWxlck9wdGlvbnNgIChvciBib3RoKS5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9leHRlbmRzID0gb3B0aW9ucy5leHRlbmRzID8/IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzLmZyb21QYXRocyhbXSk7XG4gICAgdGhpcy5pbmNsdWRlU2V0ID0gb3B0aW9ucy5pbmNsdWRlXG4gICAgICA/IG5ldyBTZXQob3B0aW9ucy5pbmNsdWRlKVxuICAgICAgOiBuZXcgU2V0KFtcIioqLyoudHNcIl0pO1xuICAgIHRoaXMuZXhjbHVkZVNldCA9IG9wdGlvbnMuZXhjbHVkZVxuICAgICAgPyBuZXcgU2V0KG9wdGlvbnMuZXhjbHVkZSlcbiAgICAgIDogbmV3IFNldChbXCJub2RlX21vZHVsZXNcIl0pO1xuICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlTmFtZTtcblxuICAgIHRoaXMuY29tcGlsZXJPcHRpb25zID0gb3B0aW9ucy5jb21waWxlck9wdGlvbnM7XG5cbiAgICB0aGlzLmZpbGUgPSBuZXcgSnNvbkZpbGUocHJvamVjdCwgZmlsZU5hbWUsIHtcbiAgICAgIGFsbG93Q29tbWVudHM6IHRydWUsXG4gICAgICBvYmo6IHtcbiAgICAgICAgZXh0ZW5kczogKCkgPT4gdGhpcy5yZW5kZXJFeHRlbmRzKCksXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczogdGhpcy5jb21waWxlck9wdGlvbnMsXG4gICAgICAgIGluY2x1ZGU6ICgpID0+IHRoaXMuaW5jbHVkZSxcbiAgICAgICAgZXhjbHVkZTogKCkgPT4gdGhpcy5leGNsdWRlLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9qZWN0IGluc3RhbmNlb2YgTm9kZVByb2plY3QpIHtcbiAgICAgIHByb2plY3QubnBtaWdub3JlPy5leGNsdWRlKGAvJHtmaWxlTmFtZX1gKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluY2x1ZGUoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5pbmNsdWRlU2V0XTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXhjbHVkZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmV4Y2x1ZGVTZXRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBhcHByb3ByaWF0ZSB2YWx1ZSBmb3IgYGV4dGVuZHNgIGZpZWxkLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJFeHRlbmRzKCk6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5leHRlbmRzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAvLyByZW5kZXIgc3RyaW5nIHZhbHVlIHdoZW4gb25seSBvbmUgZXh0ZW5zaW9uIChUUzw1LjApO1xuICAgICAgLy8gb21pdCBpZiBubyBleHRlbnNpb25zLlxuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kc1swXTtcbiAgICB9XG4gICAgLy8gcmVuZGVyIG1hbnkgZXh0ZW5zaW9ucyBhcyBhcnJheSAoVFM+PTUuMClcbiAgICByZXR1cm4gdGhpcy5leHRlbmRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdmFsaWQgVHlwZVNjcmlwdCBleHRlbmRzIHBhdGhzIHJlbGF0aXZlIHRvIHRoaXMgY29uZmlnLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIHdpbGwgb25seSByZXNvbHZlIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhpcyBjb25maWcgdG8gYW5vdGhlciBnaXZlblxuICAgKiBhbiBhYnNvbHV0ZSBwYXRoIGFzIGlucHV0LiBBbnkgbm9uLWFic29sdXRlIHBhdGggb3Igb3RoZXIgc3RyaW5nIHdpbGwgYmUgcmV0dXJuZWQgYXMgaXMuXG4gICAqIFRoaXMgaXMgdG8gcHJlc2VydmUgbWFudWFsbHkgc3BlY2lmaWVkIHJlbGF0aXZlIHBhdGhzIGFzIHdlbGwgYXMgbnBtIGltcG9ydCBwYXRocy5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ1BhdGggUGF0aCB0byByZXNvbHZlIGFnYWluc3QuXG4gICAqL1xuICBwdWJsaWMgcmVzb2x2ZUV4dGVuZHNQYXRoKGNvbmZpZ1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gaWYgbm90IGFic29sdXRlIGFzc3VtZSB1c2VyLWRlZmluZWQgcGF0aCAob3IgbnBtIHBhY2thZ2UpLlxuICAgIGlmICghcGF0aC5pc0Fic29sdXRlKGNvbmZpZ1BhdGgpKSByZXR1cm4gY29uZmlnUGF0aDtcbiAgICBjb25zdCByZWxhdGl2ZUNvbmZpZyA9IHBhdGgucmVsYXRpdmUoXG4gICAgICBwYXRoLmRpcm5hbWUodGhpcy5maWxlLmFic29sdXRlUGF0aCksXG4gICAgICBjb25maWdQYXRoXG4gICAgKTtcbiAgICAvLyBlbnN1cmUgaW1tZWRpYXRlIHNpYmxpbmcgZmlsZXMgYXJlIHByZWZpeGVkIHdpdGggJy4vJ1xuICAgIC8vIHR5cGVzY3JpcHQgZmlndXJlcyB0aGlzIG91dCwgYnV0IHNvbWUgdG9vbHMgc2VlbWluZ2x5IGJyZWFrIHdpdGhvdXQgaXQgKGkuZSwgZXNsaW50KS5cbiAgICBjb25zdCB7IGRpciwgLi4ucGF0aFBhcnRzIH0gPSBwYXRoLnBhcnNlKHJlbGF0aXZlQ29uZmlnKTtcbiAgICBjb25zdCBjb25maWdEaXIgPSBkaXJcbiAgICAgID8gcGF0aC5mb3JtYXQoeyBkaXI6IGRpci5zdGFydHNXaXRoKFwiLi5cIikgPyBcIlwiIDogXCIuXCIsIGJhc2U6IGRpciB9KVxuICAgICAgOiBcIi5cIjtcblxuICAgIGNvbnN0IGV4dGVuZHNQYXRoID0gcGF0aC5mb3JtYXQoeyAuLi5wYXRoUGFydHMsIGRpcjogY29uZmlnRGlyIH0pO1xuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGgoZXh0ZW5kc1BhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHVzYWdlIG9mIGBleHRlbmRzYCBhZ2FpbnN0IGN1cnJlbnQgVHlwZVNjcmlwdCB2ZXJzaW9uLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUV4dGVuZHMoKSB7XG4gICAgY29uc3QgcHJvamVjdCA9IHRoaXMucHJvamVjdDtcbiAgICBjb25zdCBoYXNPbmVPck5vbmVFeHRlbmRzID0gdGhpcy5leHRlbmRzLmxlbmd0aCA8PSAxO1xuICAgIGNvbnN0IGlzTm9kZVByb2plY3QgPSBwcm9qZWN0IGluc3RhbmNlb2YgTm9kZVByb2plY3Q7XG4gICAgaWYgKGhhc09uZU9yTm9uZUV4dGVuZHMgfHwgIWlzTm9kZVByb2plY3QpIHtcbiAgICAgIC8vIGFsd2F5cyBhY2NlcHQgbm8gZXh0ZW5kcyBvciBzaW5ndWxhciBleHRlbmRzLlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0c1ZlcnNpb24gPSBzZW12ZXIuY29lcmNlKFxuICAgICAgcHJvamVjdC5wYWNrYWdlLnRyeVJlc29sdmVEZXBlbmRlbmN5VmVyc2lvbihcInR5cGVzY3JpcHRcIiksXG4gICAgICB7IGxvb3NlOiB0cnVlIH1cbiAgICApO1xuICAgIGlmICh0c1ZlcnNpb24gJiYgdHNWZXJzaW9uLm1ham9yIDwgNSkge1xuICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci53YXJuKFxuICAgICAgICBcIlR5cGVTY3JpcHQgPCA1LjAuMCBjYW4gb25seSBleHRlbmQgZnJvbSBhIHNpbmdsZSBiYXNlIGNvbmZpZy5cIixcbiAgICAgICAgYFR5cGVTY3JpcHQgVmVyc2lvbjogJHt0c1ZlcnNpb24uZm9ybWF0KCl9YCxcbiAgICAgICAgYEZpbGU6ICR7dGhpcy5maWxlLmFic29sdXRlUGF0aH1gLFxuICAgICAgICBgRXh0ZW5kczogJHt0aGlzLmV4dGVuZHN9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXJyYXkgb2YgYmFzZSBgdHNjb25maWcuanNvbmAgcGF0aHMuXG4gICAqIEFueSBhYnNvbHV0ZSBwYXRocyBhcmUgcmVzb2x2ZWQgcmVsYXRpdmUgdG8gdGhpcyBpbnN0YW5jZSxcbiAgICogd2hpbGUgYW55IHJlbGF0aXZlIHBhdGhzIGFyZSB1c2VkIGFzIGlzLlxuICAgKi9cbiAgcHVibGljIGdldCBleHRlbmRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0ZW5kc1xuICAgICAgLnRvSlNPTigpXG4gICAgICAubWFwKCh2YWx1ZSkgPT4gdGhpcy5yZXNvbHZlRXh0ZW5kc1BhdGgodmFsdWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgZnJvbSBiYXNlIGBUeXBlc2NyaXB0Q29uZmlnYCBpbnN0YW5jZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVHlwZVNjcmlwdCA1LjArIGlzIHJlcXVpcmVkIHRvIGV4dGVuZCBmcm9tIG1vcmUgdGhhbiBvbmUgYmFzZSBgVHlwZXNjcmlwdENvbmZpZ2AuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBCYXNlIGBUeXBlc2NyaXB0Q29uZmlnYCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBhZGRFeHRlbmRzKHZhbHVlOiBUeXBlc2NyaXB0Q29uZmlnKSB7XG4gICAgdGhpcy5fZXh0ZW5kcyA9IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzLmZyb21QYXRocyhbXG4gICAgICAuLi50aGlzLl9leHRlbmRzLnRvSlNPTigpLFxuICAgICAgdmFsdWUuZmlsZS5hYnNvbHV0ZVBhdGgsXG4gICAgXSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGluY2x1ZGUgcGF0dGVybiB0byB0aGUgYGluY2x1ZGVgIGFycmF5IG9mIHRoZSBUU0NvbmZpZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjaW5jbHVkZVxuICAgKlxuICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkSW5jbHVkZShwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmluY2x1ZGUucHVzaChwYXR0ZXJuKTtcbiAgICB0aGlzLmluY2x1ZGVTZXQuYWRkKHBhdHRlcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBleGNsdWRlIHBhdHRlcm4gdG8gdGhlIGBleGNsdWRlYCBhcnJheSBvZiB0aGUgVFNDb25maWcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2V4Y2x1ZGVcbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZEV4Y2x1ZGUocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5leGNsdWRlLnB1c2gocGF0dGVybik7XG4gICAgdGhpcy5leGNsdWRlU2V0LmFkZChwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gaW5jbHVkZSBwYXR0ZXJuIGZyb20gdGhlIGBpbmNsdWRlYCBhcnJheSBvZiB0aGUgVFNDb25maWcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2luY2x1ZGVcbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVtb3ZlLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUluY2x1ZGUocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5pbmNsdWRlU2V0LmRlbGV0ZShwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZXhjbHVkZSBwYXR0ZXJuIGZyb20gdGhlIGBleGNsdWRlYCBhcnJheSBvZiB0aGUgVFNDb25maWcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2V4Y2x1ZGVcbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVtb3ZlLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUV4Y2x1ZGUocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5leGNsdWRlU2V0LmRlbGV0ZShwYXR0ZXJuKTtcbiAgfVxuXG4gIHByZVN5bnRoZXNpemUoKSB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuICAgIHRoaXMudmFsaWRhdGVFeHRlbmRzKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -6,13 +6,15 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
6
6
|
const component_1 = require("../component");
|
|
7
7
|
const dependencies_1 = require("../dependencies");
|
|
8
8
|
const github_1 = require("../github");
|
|
9
|
+
const util_1 = require("./util");
|
|
9
10
|
const constants_1 = require("../github/constants");
|
|
11
|
+
const util_2 = require("../github/private/util");
|
|
10
12
|
const workflow_actions_1 = require("../github/workflow-actions");
|
|
11
13
|
const workflows_model_1 = require("../github/workflows-model");
|
|
12
14
|
const javascript_1 = require("../javascript");
|
|
13
15
|
const release_1 = require("../release");
|
|
14
16
|
const runner_options_1 = require("../runner-options");
|
|
15
|
-
const
|
|
17
|
+
const name_1 = require("../util/name");
|
|
16
18
|
const CREATE_PATCH_STEP_ID = "create_patch";
|
|
17
19
|
const PATCH_CREATED_OUTPUT = "patch_created";
|
|
18
20
|
/**
|
|
@@ -81,23 +83,25 @@ class UpgradeDependencies extends component_1.Component {
|
|
|
81
83
|
steps: { toJSON: () => this.renderTaskSteps() },
|
|
82
84
|
});
|
|
83
85
|
this.upgradeTask.lock(); // this task is a lazy value, so make it readonly
|
|
84
|
-
|
|
86
|
+
// always use the GitHub of the root project - there can only be one
|
|
87
|
+
const github = github_1.GitHub.of(project.root);
|
|
88
|
+
if (this.upgradeTask && github && (options.workflow ?? true)) {
|
|
85
89
|
if (options.workflowOptions?.branches) {
|
|
86
90
|
for (const branch of options.workflowOptions.branches) {
|
|
87
|
-
this.workflows.push(this.createWorkflow(this.upgradeTask,
|
|
91
|
+
this.workflows.push(this.createWorkflow(this.upgradeTask, github, branch));
|
|
88
92
|
}
|
|
89
93
|
}
|
|
90
94
|
else if (release_1.Release.of(project)) {
|
|
91
95
|
const release = release_1.Release.of(project);
|
|
92
96
|
release._forEachBranch((branch) => {
|
|
93
|
-
this.workflows.push(this.createWorkflow(this.upgradeTask,
|
|
97
|
+
this.workflows.push(this.createWorkflow(this.upgradeTask, github, branch));
|
|
94
98
|
});
|
|
95
99
|
}
|
|
96
100
|
else {
|
|
97
101
|
// represents the default repository branch.
|
|
98
102
|
// just like not specifying anything.
|
|
99
103
|
const defaultBranch = undefined;
|
|
100
|
-
this.workflows.push(this.createWorkflow(this.upgradeTask,
|
|
104
|
+
this.workflows.push(this.createWorkflow(this.upgradeTask, github, defaultBranch));
|
|
101
105
|
}
|
|
102
106
|
}
|
|
103
107
|
}
|
|
@@ -287,7 +291,8 @@ class UpgradeDependencies extends component_1.Component {
|
|
|
287
291
|
createWorkflow(task, github, branch) {
|
|
288
292
|
const schedule = this.options.workflowOptions?.schedule ??
|
|
289
293
|
UpgradeDependenciesSchedule.DAILY;
|
|
290
|
-
const
|
|
294
|
+
const taskBranchName = `${task.name}${branch ? `-${branch.replace(/\//g, "-")}` : ""}`;
|
|
295
|
+
const workflowName = (0, name_1.workflowNameForProject)(taskBranchName, this.project);
|
|
291
296
|
const workflow = github.addWorkflow(workflowName);
|
|
292
297
|
const triggers = {
|
|
293
298
|
workflowDispatch: {},
|
|
@@ -315,6 +320,9 @@ class UpgradeDependencies extends component_1.Component {
|
|
|
315
320
|
{
|
|
316
321
|
name: "Upgrade dependencies",
|
|
317
322
|
run: this.project.runTaskCommand(task),
|
|
323
|
+
workingDirectory: this.project.parent
|
|
324
|
+
? (0, util_2.projectPathRelativeToRepoRoot)(this.project)
|
|
325
|
+
: undefined,
|
|
318
326
|
},
|
|
319
327
|
];
|
|
320
328
|
steps.push(...this.postBuildSteps);
|
|
@@ -368,7 +376,7 @@ class UpgradeDependencies extends component_1.Component {
|
|
|
368
376
|
}
|
|
369
377
|
exports.UpgradeDependencies = UpgradeDependencies;
|
|
370
378
|
_a = JSII_RTTI_SYMBOL_1;
|
|
371
|
-
UpgradeDependencies[_a] = { fqn: "projen.javascript.UpgradeDependencies", version: "0.
|
|
379
|
+
UpgradeDependencies[_a] = { fqn: "projen.javascript.UpgradeDependencies", version: "0.99.0" };
|
|
372
380
|
/**
|
|
373
381
|
* How often to check for new versions and raise pull requests for version upgrades.
|
|
374
382
|
*/
|
|
@@ -385,7 +393,7 @@ class UpgradeDependenciesSchedule {
|
|
|
385
393
|
}
|
|
386
394
|
exports.UpgradeDependenciesSchedule = UpgradeDependenciesSchedule;
|
|
387
395
|
_b = JSII_RTTI_SYMBOL_1;
|
|
388
|
-
UpgradeDependenciesSchedule[_b] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.
|
|
396
|
+
UpgradeDependenciesSchedule[_b] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.99.0" };
|
|
389
397
|
/**
|
|
390
398
|
* Disables automatic upgrades.
|
|
391
399
|
*/
|
|
@@ -430,4 +438,4 @@ function daysToSeconds(days) {
|
|
|
430
438
|
function daysToMilliseconds(days) {
|
|
431
439
|
return days * 86400000;
|
|
432
440
|
}
|
|
433
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBncmFkZS1kZXBlbmRlbmNpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC91cGdyYWRlLWRlcGVuZGVuY2llcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUF5QztBQUN6QyxrREFBaUQ7QUFDakQsc0NBUW1CO0FBQ25CLG1EQUFrRTtBQUNsRSxpRUFBNkQ7QUFDN0QsK0RBS21DO0FBQ25DLDhDQUFnRTtBQUNoRSx3Q0FBcUM7QUFDckMsc0RBQThFO0FBRzlFLGlDQUEyRDtBQUUzRCxNQUFNLG9CQUFvQixHQUFHLGNBQWMsQ0FBQztBQUM1QyxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztBQWdJN0M7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLHFCQUFTO0lBa0NoRCxZQUFZLE9BQW9CLEVBQUUsVUFBc0MsRUFBRTtRQUN4RSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFsQ2pCOztXQUVHO1FBQ2EsY0FBUyxHQUFxQixFQUFFLENBQUM7UUFpQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLG9CQUFvQjtRQUNwQixJQUNFLE9BQU8sQ0FBQyxRQUFRLEtBQUssU0FBUztZQUM5QixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFDN0QsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQ2Isd0VBQXdFLENBQ3pFLENBQUM7UUFDSixDQUFDO1FBRUQsd0NBQXdDO1FBQ3hDLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFBLG9CQUFhLEVBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3RFLE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTREO2dC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QVEsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQge1xuICBHaXRodWJDcmVkZW50aWFscyxcbiAgR2l0SHViLFxuICBHaXRodWJXb3JrZmxvdyxcbiAgR2l0SWRlbnRpdHksXG4gIHdvcmtmbG93cyxcbiAgV29ya2Zsb3dKb2JzLFxuICBXb3JrZmxvd1N0ZXBzLFxufSBmcm9tIFwiLi4vZ2l0aHViXCI7XG5pbXBvcnQgeyBERUZBVUxUX0dJVEhVQl9BQ1RJT05TX1VTRVIgfSBmcm9tIFwiLi4vZ2l0aHViL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgV29ya2Zsb3dBY3Rpb25zIH0gZnJvbSBcIi4uL2dpdGh1Yi93b3JrZmxvdy1hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBDb250YWluZXJPcHRpb25zLFxuICBKb2JTdGVwLFxuICBKb2JQZXJtaXNzaW9uLFxuICBKb2JQZXJtaXNzaW9ucyxcbn0gZnJvbSBcIi4uL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IE5vZGVQYWNrYWdlTWFuYWdlciwgTm9kZVByb2plY3QgfSBmcm9tIFwiLi4vamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgUmVsZWFzZSB9IGZyb20gXCIuLi9yZWxlYXNlXCI7XG5pbXBvcnQgeyBHcm91cFJ1bm5lck9wdGlvbnMsIGZpbHRlcmVkUnVuc09uT3B0aW9ucyB9IGZyb20gXCIuLi9ydW5uZXItb3B0aW9uc1wiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5pbXBvcnQgeyBUYXNrU3RlcCB9IGZyb20gXCIuLi90YXNrLW1vZGVsXCI7XG5pbXBvcnQgeyBpc1lhcm5DbGFzc2ljLCBpc1lhcm5CZXJyeSwgaXNOcG0gfSBmcm9tIFwiLi91dGlsXCI7XG5cbmNvbnN0IENSRUFURV9QQVRDSF9TVEVQX0lEID0gXCJjcmVhdGVfcGF0Y2hcIjtcbmNvbnN0IFBBVENIX0NSRUFURURfT1VUUFVUID0gXCJwYXRjaF9jcmVhdGVkXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFVwZ3JhZGVEZXBlbmRlbmNpZXNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZ3JhZGVEZXBlbmRlbmNpZXNPcHRpb25zIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgcGFja2FnZSBuYW1lcyB0byBleGNsdWRlIGR1cmluZyB0aGUgdXBncmFkZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb3RoaW5nIGlzIGV4Y2x1ZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHBhY2thZ2UgbmFtZXMgdG8gaW5jbHVkZSBkdXJpbmcgdGhlIHVwZ3JhZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRXZlcnl0aGluZyBpcyBpbmNsdWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgdGFyZ2V0IHZlcnNpb24gdG8gdXBncmFkZSBkZXBlbmRlbmNpZXMgdG8uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JhaW5lb3JzaGluZS9ucG0tY2hlY2stdXBkYXRlcyN0YXJnZXRcbiAgICpcbiAgICogQGRlZmF1bHQgXCJtaW5vclwiXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENoZWNrIHBlZXIgZGVwZW5kZW5jaWVzIG9mIGluc3RhbGxlZCBwYWNrYWdlcyBhbmQgZmlsdGVyIHVwZGF0ZXMgdG8gY29tcGF0aWJsZSB2ZXJzaW9ucy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIHVwZ3JhZGUgd29ya2Zsb3cgd2lsbCBhZGhlcmUgdG8gdmVyc2lvbiBjb25zdHJhaW50cyBmcm9tIHBlZXIgZGVwZW5kZW5jaWVzLlxuICAgKiBTb21ldGltZXMgdGhpcyBpcyBub3QgZGVzaXJhYmxlIGFuZCBjYW4gYmUgZGlzYWJsZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JhaW5lb3JzaGluZS9ucG0tY2hlY2stdXBkYXRlcyNwZWVyXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNhdGlzZnlQZWVyRGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5jbHVkZSBkZXByZWNhdGVkIHBhY2thZ2VzLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBkZXByZWNhdGVkIHZlcnNpb25zIHdpbGwgYmUgZXhjbHVkZWQgZnJvbSB1cGdyYWRlcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmFpbmVvcnNoaW5lL25wbS1jaGVjay11cGRhdGVzP3RhYj1yZWFkbWUtb3YtZmlsZSNvcHRpb25zXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlRGVwcmVjYXRlZFZlcnNpb25zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5jbHVkZSBhIGdpdGh1YiB3b3JrZmxvdyBmb3IgY3JlYXRpbmcgUFIncyB0aGF0IHVwZ3JhZGVzIHRoZVxuICAgKiByZXF1aXJlZCBkZXBlbmRlbmNpZXMsIGVpdGhlciBieSBtYW51YWwgZGlzcGF0Y2gsIG9yIGJ5IGEgc2NoZWR1bGUuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYGZhbHNlYCwgb25seSBhIGxvY2FsIHByb2plbiB0YXNrIGlzIGNyZWF0ZWQsIHdoaWNoIGNhbiBiZSBleGVjdXRlZCBtYW51YWxseSB0b1xuICAgKiB1cGdyYWRlIHRoZSBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3Igcm9vdCBwcm9qZWN0cywgZmFsc2UgZm9yIHN1YnByb2plY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3c/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgZ2l0aHViIHdvcmtmbG93LiBPbmx5IGFwcGxpZXMgaWYgYHdvcmtmbG93YCBpcyB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93T3B0aW9ucz86IFVwZ3JhZGVEZXBlbmRlbmNpZXNXb3JrZmxvd09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YXNrIHRoYXQgd2lsbCBiZSBjcmVhdGVkLlxuICAgKiBUaGlzIHdpbGwgYWxzbyBiZSB0aGUgd29ya2Zsb3cgbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ1cGdyYWRlXCIuXG4gICAqL1xuICByZWFkb25seSB0YXNrTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGl0bGUgb2YgdGhlIHB1bGwgcmVxdWVzdCB0byB1c2UgKHNob3VsZCBiZSBhbGwgbG93ZXItY2FzZSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwidXBncmFkZSBkZXBlbmRlbmNpZXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RUaXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNlbWFudGljIGNvbW1pdCB0eXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnY2hvcmUnXG4gICAqL1xuICByZWFkb25seSBzZW1hbnRpY0NvbW1pdD86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkIFNpZ25lZC1vZmYtYnkgbGluZSBieSB0aGUgY29tbWl0dGVyIGF0IHRoZSBlbmQgb2YgdGhlIGNvbW1pdCBsb2cgbWVzc2FnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2lnbm9mZj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hpY2ggZGVwZW5kZW5jeSB0eXBlcyB0aGUgdXBncmFkZSBzaG91bGQgb3BlcmF0ZSBvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgZGVwZW5kZW5jeSB0eXBlcy5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogRGVwZW5kZW5jeVR5cGVbXTtcblxuICAvKipcbiAgICogRXhjbHVkZSBwYWNrYWdlIHZlcnNpb25zIHB1Ymxpc2hlZCB3aXRoaW4gdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cy5cbiAgICpcbiAgICogVGhpcyBtYXkgcHJvdmlkZSBzb21lIHByb3RlY3Rpb24gYWdhaW5zdCBzdXBwbHkgY2hhaW4gYXR0YWNrcywgc2ltcGx5IGJ5IGF2b2lkaW5nXG4gICAqIG5ld2x5IHB1Ymxpc2hlZCBwYWNrYWdlcyB0aGF0IG1heSBiZSBtYWxpY2lvdXMuIEl0IGdpdmVzIHRoZSBlY29zeXN0ZW0gbW9yZSB0aW1lXG4gICAqIHRvIGRldGVjdCBtYWxpY2lvdXMgcGFja2FnZXMuIEhvd2V2ZXIgaXQgY29tZXMgYXQgdGhlIGNvc3Qgb2YgdXBkYXRpbmcgb3RoZXJcbiAgICogcGFja2FnZXMgc2xvd2VyLCB3aGljaCBtaWdodCBhbHNvIGNvbnRhaW4gdnVsbmVyYWJpbGl0aWVzIG9yIGJ1Z3MgaW4gbmVlZCBvZiBhIGZpeC5cbiAgICpcbiAgICogVGhlIGNvb2xkb3duIHBlcmlvZCBhcHBsaWVzIHRvIGJvdGggbnBtLWNoZWNrLXVwZGF0ZXMgZGlzY292ZXJ5XG4gICAqIGFuZCB0aGUgcGFja2FnZSBtYW5hZ2VyIHVwZGF0ZSBjb21tYW5kLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yYWluZW9yc2hpbmUvbnBtLWNoZWNrLXVwZGF0ZXMjY29vbGRvd25cbiAgICogQHNlZSBodHRwczovL2RvY3MubnBtanMuY29tL2NsaS92MTEvY29tbWFuZHMvbnBtLXVwZGF0ZSNiZWZvcmVcbiAgICogQHNlZSBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjbWluaW11bXJlbGVhc2VhZ2VcbiAgICogQHNlZSBodHRwczovL2J1bi5jb20vZG9jcy9wbS9jbGkvaW5zdGFsbCNtaW5pbXVtLXJlbGVhc2UtYWdlXG4gICAqIEBzZWUgaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1NaW5pbWFsQWdlR2F0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGNvb2xkb3duIHBlcmlvZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvb2xkb3duPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFVwZ3JhZGUgbm9kZSBwcm9qZWN0IGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFVwZ3JhZGVEZXBlbmRlbmNpZXMgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIHdvcmtmbG93cyB0aGF0IGV4ZWN1dGUgdGhlIHVwZ3JhZGVzLiBPbmUgd29ya2Zsb3cgcGVyIGJyYW5jaC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3b3JrZmxvd3M6IEdpdGh1YldvcmtmbG93W10gPSBbXTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogTm9kZVByb2plY3Q7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBVcGdyYWRlRGVwZW5kZW5jaWVzT3B0aW9ucztcbiAgcHJpdmF0ZSByZWFkb25seSBwdWxsUmVxdWVzdFRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBkZWZpbml0aW9ucyBmb3IgdGhlIHVwZ3JhZGUgd29ya2Zsb3cuXG4gICAqL1xuICBwdWJsaWMgY29udGFpbmVyT3B0aW9ucz86IENvbnRhaW5lck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSB1cGdyYWRlIHRhc2suXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXBncmFkZVRhc2s6IFRhc2s7XG5cbiAgLyoqXG4gICAqIEEgdGFzayBydW4gYWZ0ZXIgdGhlIHVwZ3JhZGUgdGFzay5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwb3N0VXBncmFkZVRhc2s6IFRhc2s7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBnaXRJZGVudGl0eTogR2l0SWRlbnRpdHk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcG9zdEJ1aWxkU3RlcHM6IEpvYlN0ZXBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBwZXJtaXNzaW9uczogSm9iUGVybWlzc2lvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwVHlwZXM6IERlcGVuZGVuY3lUeXBlW107XG4gIHByaXZhdGUgcmVhZG9ubHkgdXBncmFkZVRhcmdldDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhdGlzZnlQZWVyRGVwZW5kZW5jaWVzOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGluY2x1ZGVEZXByZWNhdGVkVmVyc2lvbnM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IFVwZ3JhZGVEZXBlbmRlbmNpZXNPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMucHJvamVjdCA9IHByb2plY3Q7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIC8vIFZhbGlkYXRlIGNvb2xkb3duXG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy5jb29sZG93biAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoIU51bWJlci5pc0ludGVnZXIob3B0aW9ucy5jb29sZG93bikgfHwgb3B0aW9ucy5jb29sZG93biA8IDApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVGhlICdjb29sZG93bicgb3B0aW9uIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlciByZXByZXNlbnRpbmcgZGF5c1wiXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFlhcm4gY2xhc3NpYyBkb2Vzbid0IHN1cHBvcnQgY29vbGRvd25cbiAgICBpZiAob3B0aW9ucy5jb29sZG93biAmJiBpc1lhcm5DbGFzc2ljKHByb2plY3QucGFja2FnZS5wYWNrYWdlTWFuYWdlcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUaGUgJ2Nvb2xkb3duJyBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCB3aXRoIHlhcm4gY2xhc3NpYy4gXCIgK1xuICAgICAgICAgIFwiQ29uc2lkZXIgdXNpbmcgbnBtLCBwbnBtLCBidW4sIG9yIHlhcm4gYmVycnkgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlcFR5cGVzID0gdGhpcy5vcHRpb25zLnR5cGVzID8/IFtcbiAgICAgIERlcGVuZGVuY3lUeXBlLkJVSUxELFxuICAgICAgRGVwZW5kZW5jeVR5cGUuQlVORExFRCxcbiAgICAgIERlcGVuZGVuY3lUeXBlLkRFVkVOVixcbiAgICAgIERlcGVuZGVuY3lUeXBlLlBFRVIsXG4gICAgICBEZXBlbmRlbmN5VHlwZS5SVU5USU1FLFxuICAgICAgRGVwZW5kZW5jeVR5cGUuVEVTVCxcbiAgICAgIERlcGVuZGVuY3lUeXBlLk9QVElPTkFMLFxuICAgIF07XG4gICAgdGhpcy51cGdyYWRlVGFyZ2V0ID0gdGhpcy5vcHRpb25zLnRhcmdldCA/PyBcIm1pbm9yXCI7XG4gICAgdGhpcy5zYXRpc2Z5UGVlckRlcGVuZGVuY2llcyA9IHRoaXMub3B0aW9ucy5zYXRpc2Z5UGVlckRlcGVuZGVuY2llcyA/PyB0cnVlO1xuICAgIHRoaXMuaW5jbHVkZURlcHJlY2F0ZWRWZXJzaW9ucyA9XG4gICAgICB0aGlzLm9wdGlvbnMuaW5jbHVkZURlcHJlY2F0ZWRWZXJzaW9ucyA/PyBmYWxzZTtcbiAgICB0aGlzLnB1bGxSZXF1ZXN0VGl0bGUgPSBvcHRpb25zLnB1bGxSZXF1ZXN0VGl0bGUgPz8gXCJ1cGdyYWRlIGRlcGVuZGVuY2llc1wiO1xuICAgIHRoaXMuZ2l0SWRlbnRpdHkgPVxuICAgICAgb3B0aW9ucy53b3JrZmxvd09wdGlvbnM/LmdpdElkZW50aXR5ID8/IERFRkFVTFRfR0lUSFVCX0FDVElPTlNfVVNFUjtcbiAgICB0aGlzLnBlcm1pc3Npb25zID0ge1xuICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIC4uLm9wdGlvbnMud29ya2Zsb3dPcHRpb25zPy5wZXJtaXNzaW9ucyxcbiAgICB9O1xuICAgIHRoaXMucG9zdEJ1aWxkU3RlcHMgPSBbXTtcbiAgICB0aGlzLmNvbnRhaW5lck9wdGlvbnMgPSBvcHRpb25zLndvcmtmbG93T3B0aW9ucz8uY29udGFpbmVyO1xuXG4gICAgdGhpcy5wb3N0VXBncmFkZVRhc2sgPVxuICAgICAgcHJvamVjdC50YXNrcy50cnlGaW5kKFwicG9zdC11cGdyYWRlXCIpID8/XG4gICAgICBwcm9qZWN0LnRhc2tzLmFkZFRhc2soXCJwb3N0LXVwZ3JhZGVcIiwge1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJSdW5zIGFmdGVyIHVwZ3JhZGluZyBkZXBlbmRlbmNpZXNcIixcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgdGFza0VudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgQ0k6IFwiMFwiIH07XG5cbiAgICAvLyBTZXQgeWFybiBiZXJyeSBjb29sZG93biB2aWEgZW52aXJvbm1lbnQgdmFyaWFibGUsIGV4cGVjdHMgbWludXRlc1xuICAgIGlmIChvcHRpb25zLmNvb2xkb3duICYmIGlzWWFybkJlcnJ5KHByb2plY3QucGFja2FnZS5wYWNrYWdlTWFuYWdlcikpIHtcbiAgICAgIHRhc2tFbnYuWUFSTl9OUE1fTUlOSU1BTF9BR0VfR0FURSA9IFN0cmluZyhcbiAgICAgICAgZGF5c1RvTWludXRlcyhvcHRpb25zLmNvb2xkb3duKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgbnBtIGNvb2xkb3duIGRhdGUgdmlhIGVudmlyb25tZW50IHZhcmlhYmxlIChjYWxjdWxhdGVkIGF0IHJ1bnRpbWUpLCBleHBlY3RzIGEgZGF0ZSBpbiBJU08gZm9ybWF0XG4gICAgaWYgKG9wdGlvbnMuY29vbGRvd24gJiYgaXNOcG0ocHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyKSkge1xuICAgICAgdGFza0Vudi5OUE1fQ09ORklHX0JFRk9SRSA9IGAkKG5vZGUgLXAgXCJuZXcgRGF0ZShEYXRlLm5vdygpLSR7ZGF5c1RvTWlsbGlzZWNvbmRzKFxuICAgICAgICBvcHRpb25zLmNvb2xkb3duXG4gICAgICApfSkudG9JU09TdHJpbmcoKVwiKWA7XG4gICAgfVxuXG4gICAgdGhpcy51cGdyYWRlVGFzayA9IHByb2plY3QuYWRkVGFzayhvcHRpb25zLnRhc2tOYW1lID8/IFwidXBncmFkZVwiLCB7XG4gICAgICAvLyB0aGlzIHRhc2sgc2hvdWxkIG5vdCBydW4gaW4gQ0kgbW9kZSBiZWNhdXNlIGl0cyBkZXNpZ25lZCB0b1xuICAgICAgLy8gdXBkYXRlIHBhY2thZ2UuanNvbiBhbmQgbG9jayBmaWxlcy5cbiAgICAgIGVudjogdGFza0VudixcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnB1bGxSZXF1ZXN0VGl0bGUsXG4gICAgICBzdGVwczogeyB0b0pTT046ICgpID0+IHRoaXMucmVuZGVyVGFza1N0ZXBzKCkgfSBhcyBhbnksXG4gICAgfSk7XG4gICAgdGhpcy51cGdyYWRlVGFzay5sb2NrKCk7IC8vIHRoaXMgdGFzayBpcyBhIGxhenkgdmFsdWUsIHNvIG1ha2UgaXQgcmVhZG9ubHlcblxuICAgIGlmICh0aGlzLnVwZ3JhZGVUYXNrICYmIHByb2plY3QuZ2l0aHViICYmIChvcHRpb25zLndvcmtmbG93ID8/IHRydWUpKSB7XG4gICAgICBpZiAob3B0aW9ucy53b3JrZmxvd09wdGlvbnM/LmJyYW5jaGVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIG9wdGlvbnMud29ya2Zsb3dPcHRpb25zLmJyYW5jaGVzKSB7XG4gICAgICAgICAgdGhpcy53b3JrZmxvd3MucHVzaChcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlV29ya2Zsb3codGhpcy51cGdyYWRlVGFzaywgcHJvamVjdC5naXRodWIsIGJyYW5jaClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFJlbGVhc2Uub2YocHJvamVjdCkpIHtcbiAgICAgICAgY29uc3QgcmVsZWFzZSA9IFJlbGVhc2Uub2YocHJvamVjdCkhO1xuICAgICAgICByZWxlYXNlLl9mb3JFYWNoQnJhbmNoKChicmFuY2g6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMud29ya2Zsb3dzLnB1c2goXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVdvcmtmbG93KHRoaXMudXBncmFkZVRhc2ssIHByb2plY3QuZ2l0aHViISwgYnJhbmNoKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcmVwcmVzZW50cyB0aGUgZGVmYXVsdCByZXBvc2l0b3J5IGJyYW5jaC5cbiAgICAgICAgLy8ganVzdCBsaWtlIG5vdCBzcGVjaWZ5aW5nIGFueXRoaW5nLlxuICAgICAgICBjb25zdCBkZWZhdWx0QnJhbmNoID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLndvcmtmbG93cy5wdXNoKFxuICAgICAgICAgIHRoaXMuY3JlYXRlV29ya2Zsb3codGhpcy51cGdyYWRlVGFzaywgcHJvamVjdC5naXRodWIsIGRlZmF1bHRCcmFuY2gpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBzdGVwcyB0byBleGVjdXRlIGEgc3VjY2Vzc2Z1bCBidWlsZC5cbiAgICogQHBhcmFtIHN0ZXBzIHdvcmtmbG93IHN0ZXBzXG4gICAqL1xuICBwdWJsaWMgYWRkUG9zdEJ1aWxkU3RlcHMoLi4uc3RlcHM6IEpvYlN0ZXBbXSkge1xuICAgIHRoaXMucG9zdEJ1aWxkU3RlcHMucHVzaCguLi5zdGVwcyk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclRhc2tTdGVwcygpOiBUYXNrU3RlcFtdIHtcbiAgICBjb25zdCBzdGVwcyA9IG5ldyBBcnJheTxUYXNrU3RlcD4oKTtcblxuICAgIC8vIFBhY2thZ2UgTWFuYWdlciB1cGdyYWRlIHNob3VsZCBhbHdheXMgaW5jbHVkZSBhbGwgZGVwc1xuICAgIGNvbnN0IGluY2x1ZGVGb3JQYWNrYWdlTWFuYWdlclVwZ3JhZGUgPSB0aGlzLmJ1aWxkRGVwZW5kZW5jeUxpc3QodHJ1ZSk7XG4gICAgaWYgKGluY2x1ZGVGb3JQYWNrYWdlTWFuYWdlclVwZ3JhZGUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW3sgZXhlYzogXCJlY2hvIE5vIGRlcGVuZGVuY2llcyB0byB1cGdyYWRlLlwiIH1dO1xuICAgIH1cblxuICAgIC8vIFJlbW92aW5nIGBucG0tY2hlY2stdXBkYXRlc2AgZnJvbSBvdXIgZGVwZW5kZW5jeSB0cmVlIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBhIHBhY2thZ2VcbiAgICAvLyB0aGF0IHVzZXMgYW4gbnBtLXNwZWNpZmljIGZlYXR1cmUgdGhhdCBjYXVzZXMgYW4gaW52YWxpZCBkZXBlbmRlbmN5IHRyZWUgd2hlbiB1c2luZyBZYXJuIDEuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZW4vcHJvamVuL3B1bGwvMzEzNiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIGNvbnN0IGluY2x1ZGVGb3JOY3UgPSB0aGlzLmJ1aWxkRGVwZW5kZW5jeUxpc3QoZmFsc2UpO1xuXG4gICAgLy8gYnVtcCB2ZXJzaW9ucyBpbiBwYWNrYWdlLmpzb25cbiAgICBpZiAoaW5jbHVkZUZvck5jdS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5jdUNvbW1hbmQgPSB0aGlzLmJ1aWxkTmN1Q29tbWFuZChpbmNsdWRlRm9yTmN1LCB7XG4gICAgICAgIHVwZ3JhZGU6IHRydWUsXG4gICAgICAgIHRhcmdldDogdGhpcy51cGdyYWRlVGFyZ2V0LFxuICAgICAgfSk7XG4gICAgICBzdGVwcy5wdXNoKHsgZXhlYzogbmN1Q29tbWFuZCB9KTtcbiAgICB9XG5cbiAgICAvLyBydW4gXCJ5YXJuL25wbSBpbnN0YWxsXCIgdG8gdXBkYXRlIHRoZSBsb2NrZmlsZSBhbmQgaW5zdGFsbCBhbnkgZGVwcyAoc3VjaCBhcyBwcm9qZW4pXG4gICAgc3RlcHMucHVzaCh7IGV4ZWM6IHRoaXMucHJvamVjdC5wYWNrYWdlLmluc3RhbGxBbmRVcGRhdGVMb2NrZmlsZUNvbW1hbmQgfSk7XG5cbiAgICAvLyBydW4gdXBncmFkZSBjb21tYW5kIHRvIHVwZ3JhZGUgdHJhbnNpdGl2ZSBkZXBzIGFzIHdlbGxcbiAgICBzdGVwcy5wdXNoKHtcbiAgICAgIGV4ZWM6IHRoaXMucmVuZGVyVXBncmFkZVBhY2thZ2VzQ29tbWFuZChpbmNsdWRlRm9yUGFja2FnZU1hbmFnZXJVcGdyYWRlKSxcbiAgICB9KTtcblxuICAgIC8vIHJ1biBcInByb2plblwiIHRvIGdpdmUgcHJvamVuIGEgY2hhbmNlIHRvIHVwZGF0ZSBkZXBlbmRlbmNpZXMgKGl0IHdpbGwgYWxzbyBydW4gXCJ5YXJuIGluc3RhbGxcIilcbiAgICBzdGVwcy5wdXNoKHsgZXhlYzogdGhpcy5wcm9qZWN0LnByb2plbkNvbW1hbmQgfSk7XG4gICAgc3RlcHMucHVzaCh7IHNwYXduOiB0aGlzLnBvc3RVcGdyYWRlVGFzay5uYW1lIH0pO1xuXG4gICAgcmV0dXJuIHN0ZXBzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIG5wbS1jaGVjay11cGRhdGVzIGNvbW1hbmQgd2l0aCBjb21tb24gb3B0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgYnVpbGROY3VDb21tYW5kKFxuICAgIGluY2x1ZGVQYWNrYWdlczogc3RyaW5nW10sXG4gICAgb3B0aW9uczoge1xuICAgICAgdXBncmFkZT86IGJvb2xlYW47XG4gICAgICB0YXJnZXQ/OiBzdHJpbmc7XG4gICAgICBmb3JtYXQ/OiBzdHJpbmc7XG4gICAgICByZW1vdmVSYW5nZT86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IHN0cmluZyB7XG4gICAgZnVuY3Rpb24gZXhlY3V0ZUNvbW1hbmQocGFja2FnZU1hbmFnZXI6IE5vZGVQYWNrYWdlTWFuYWdlcik6IHN0cmluZyB7XG4gICAgICBzd2l0Y2ggKHBhY2thZ2VNYW5hZ2VyKSB7XG4gICAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLk5QTTpcbiAgICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTjpcbiAgICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTl9DTEFTU0lDOlxuICAgICAgICAgIHJldHVybiBcIm5weFwiO1xuICAgICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNOlxuICAgICAgICAgIHJldHVybiBcInBucG0gZGx4XCI7XG4gICAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk4yOlxuICAgICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0JFUlJZOlxuICAgICAgICAgIHJldHVybiBcInlhcm4gZGx4XCI7XG4gICAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLkJVTjpcbiAgICAgICAgICByZXR1cm4gXCJidW54XCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tbWFuZCA9IFtcbiAgICAgIGAke2V4ZWN1dGVDb21tYW5kKFxuICAgICAgICB0aGlzLnByb2plY3QucGFja2FnZS5wYWNrYWdlTWFuYWdlclxuICAgICAgKX0gbnBtLWNoZWNrLXVwZGF0ZXNAMThgLFxuICAgIF07XG5cbiAgICBpZiAob3B0aW9ucy51cGdyYWRlKSB7XG4gICAgICBjb21tYW5kLnB1c2goXCItLXVwZ3JhZGVcIik7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRhcmdldCkge1xuICAgICAgY29tbWFuZC5wdXNoKGAtLXRhcmdldD0ke29wdGlvbnMudGFyZ2V0fWApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5mb3JtYXQpIHtcbiAgICAgIGNvbW1hbmQucHVzaChgLS1mb3JtYXQ9JHtvcHRpb25zLmZvcm1hdH1gKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMucmVtb3ZlUmFuZ2UpIHtcbiAgICAgIGNvbW1hbmQucHVzaChcIi0tcmVtb3ZlUmFuZ2VcIik7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuY29vbGRvd24pIHtcbiAgICAgIGNvbW1hbmQucHVzaChgLS1jb29sZG93bj0ke3RoaXMub3B0aW9ucy5jb29sZG93bn1gKTtcbiAgICB9XG5cbiAgICBjb21tYW5kLnB1c2goYC0tJHt0aGlzLnNhdGlzZnlQZWVyRGVwZW5kZW5jaWVzID8gXCJwZWVyXCIgOiBcIm5vLXBlZXJcIn1gKTtcbiAgICBjb21tYW5kLnB1c2goXG4gICAgICBgLS0ke3RoaXMuaW5jbHVkZURlcHJlY2F0ZWRWZXJzaW9ucyA/IFwiZGVwcmVjYXRlZFwiIDogXCJuby1kZXByZWNhdGVkXCJ9YFxuICAgICk7XG4gICAgY29tbWFuZC5wdXNoKGAtLWRlcD0ke3RoaXMucmVuZGVyTmN1RGVwZW5kZW5jeVR5cGVzKHRoaXMuZGVwVHlwZXMpfWApO1xuICAgIGNvbW1hbmQucHVzaChgLS1maWx0ZXI9JHtpbmNsdWRlUGFja2FnZXMuam9pbihcIixcIil9YCk7XG5cbiAgICByZXR1cm4gY29tbWFuZC5qb2luKFwiIFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgcHJvamVuIGRlcGVuZGVuY2llcyB0eXBlcyB0byBhIGxpc3Qgb2YgbmN1IGNvbXBhdGlibGUgdHlwZXNcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyTmN1RGVwZW5kZW5jeVR5cGVzKHR5cGVzOiBEZXBlbmRlbmN5VHlwZVtdKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFxuICAgICAgICB0eXBlc1xuICAgICAgICAgIC5tYXAoKHR5cGUpID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIERlcGVuZGVuY3lUeXBlLlBFRVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwicGVlclwiO1xuICAgICAgICAgICAgICBjYXNlIERlcGVuZGVuY3lUeXBlLlJVTlRJTUU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwicHJvZFwiO1xuICAgICAgICAgICAgICBjYXNlIERlcGVuZGVuY3lUeXBlLk9QVElPTkFMOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm9wdGlvbmFsXCI7XG5cbiAgICAgICAgICAgICAgY2FzZSBEZXBlbmRlbmN5VHlwZS5URVNUOlxuICAgICAgICAgICAgICBjYXNlIERlcGVuZGVuY3lUeXBlLkRFVkVOVjpcbiAgICAgICAgICAgICAgY2FzZSBEZXBlbmRlbmN5VHlwZS5CVUlMRDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJkZXZcIjtcblxuICAgICAgICAgICAgICBjYXNlIERlcGVuZGVuY3lUeXBlLkJVTkRMRUQ6XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbHRlcigodHlwZSkgPT4gQm9vbGVhbih0eXBlKSlcbiAgICAgIClcbiAgICApLmpvaW4oXCIsXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBhIHBhY2thZ2UgbWFuYWdlciBzcGVjaWZpYyBjb21tYW5kIHRvIHVwZ3JhZGUgYWxsIHJlcXVlc3RlZCBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBwcml2YXRlIHJlbmRlclVwZ3JhZGVQYWNrYWdlc0NvbW1hbmQoaW5jbHVkZTogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGZ1bmN0aW9uIHVwZ3JhZGVQYWNrYWdlcyhjb21tYW5kOiBzdHJpbmcsIGNvb2xkb3duRmxhZz86IHN0cmluZykge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3QgcGFydHMgPSBbY29tbWFuZCwgLi4uaW5jbHVkZV07XG4gICAgICAgIGlmIChjb29sZG93bkZsYWcpIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKGNvb2xkb3duRmxhZyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oXCIgXCIpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlTWFuYWdlciA9IHRoaXMucHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyO1xuICAgIGNvbnN0IGNvb2xkb3duID0gdGhpcy5vcHRpb25zLmNvb2xkb3duO1xuXG4gICAgbGV0IGxhenkgPSB1bmRlZmluZWQ7XG4gICAgc3dpdGNoIChwYWNrYWdlTWFuYWdlcikge1xuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTjpcbiAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQ0xBU1NJQzpcbiAgICAgICAgbGF6eSA9IHVwZ3JhZGVQYWNrYWdlcyhcInlhcm4gdXBncmFkZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOMjpcbiAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQkVSUlk6XG4gICAgICAgIC8vIFlhcm4gQmVycnkgY29vbGRvd24gc2V0IHZpYSB0YXNrIGVudlxuICAgICAgICBsYXp5ID0gdXBncmFkZVBhY2thZ2VzKFwieWFybiB1cFwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5OUE06XG4gICAgICAgIC8vIG5wbSBjb29sZG93biBzZXQgdmlhIE5QTV9DT05GSUdfQkVGT1JFIGVudlxuICAgICAgICBsYXp5ID0gdXBncmFkZVBhY2thZ2VzKFwibnBtIHVwZGF0ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNOlxuICAgICAgICAvLyBwbnBtIGV4cGVjdHMgbWludXRlc1xuICAgICAgICBsYXp5ID0gdXBncmFkZVBhY2thZ2VzKFxuICAgICAgICAgIFwicG5wbSB1cGRhdGVcIixcbiAgICAgICAgICBjb29sZG93biAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGAtLWNvbmZpZy5taW5pbXVtLXJlbGVhc2UtYWdlPSR7ZGF5c1RvTWludXRlcyhjb29sZG93bil9YFxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5CVU46XG4gICAgICAgIC8vIGJ1biBleHBlY3RzIHNlY29uZHNcbiAgICAgICAgbGF6eSA9IHVwZ3JhZGVQYWNrYWdlcyhcbiAgICAgICAgICBcImJ1biB1cGRhdGVcIixcbiAgICAgICAgICBjb29sZG93blxuICAgICAgICAgICAgPyBgLS1taW5pbXVtLXJlbGVhc2UtYWdlPSR7ZGF5c1RvU2Vjb25kcyhjb29sZG93bil9YFxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgcGFja2FnZSBtYW5hZ2VyICR7cGFja2FnZU1hbmFnZXJ9YCk7XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuIGEgbGF6eSBmdW5jdGlvbiBzbyB0aGF0IGRlcGVuZGVuY2llcyBpbmNsdWRlIG9uZXMgdGhhdCB3ZXJlXG4gICAgLy8gYWRkZWQgcG9zdCBwcm9qZWN0IGluc3RhbnRpYXRpb24gKGkuZSB1c2luZyBwcm9qZWN0LmFkZERlcHMpXG4gICAgcmV0dXJuIGxhenkgYXMgdW5rbm93biBhcyBzdHJpbmc7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRGVwZW5kZW5jeUxpc3QoaW5jbHVkZURlcGVuZGVuY2llc1dpdGhDb25zdHJhaW50OiBib29sZWFuKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFxuICAgICAgICB0aGlzLm9wdGlvbnMuaW5jbHVkZSA/P1xuICAgICAgICAgIHRoaXMuZmlsdGVyRGVwZW5kZW5jaWVzKGluY2x1ZGVEZXBlbmRlbmNpZXNXaXRoQ29uc3RyYWludClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJEZXBlbmRlbmNpZXMoaW5jbHVkZUNvbnN0cmFpbnQ6IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gW107XG5cbiAgICBjb25zdCBkZXBzID0gdGhpcy5wcm9qZWN0LmRlcHMuYWxsXG4gICAgICAvLyByZW1vdmUgdGhvc2UgdGhhdCBoYXZlIGEgY29uc3RyYWludCB2ZXJzaW9uICh1bmxlc3MgaW5jbHVkZUNvbnN0cmFpbnQgaXMgdHJ1ZSlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChkKSA9PlxuICAgICAgICAgIGluY2x1ZGVDb25zdHJhaW50IHx8IHRoaXMucGFja2FnZUNhbkJlVXBncmFkZWRJblBhY2thZ2VKc29uKGQudmVyc2lvbilcbiAgICAgIClcbiAgICAgIC8vIHJlbW92ZSBvdmVycmlkZSBkZXBlbmRlbmNpZXNcbiAgICAgIC5maWx0ZXIoKGQpID0+IGQudHlwZSAhPT0gRGVwZW5kZW5jeVR5cGUuT1ZFUlJJREUpO1xuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHRoaXMuZGVwVHlwZXMpIHtcbiAgICAgIGRlcGVuZGVuY2llcy5wdXNoKFxuICAgICAgICAuLi5kZXBzXG4gICAgICAgICAgLmZpbHRlcigoZCkgPT4gZC50eXBlID09PSB0eXBlKVxuICAgICAgICAgIC5maWx0ZXIoKGQpID0+ICEodGhpcy5vcHRpb25zLmV4Y2x1ZGUgPz8gW10pLmluY2x1ZGVzKGQubmFtZSkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBkZXBlbmRlbmNpZXMubWFwKChkKSA9PiBkLm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2plbiBjYW4gYWx0ZXIgYSBwYWNrYWdlJ3MgdmVyc2lvbiBpbiBwYWNrYWdlLmpzb24gd2hlbiBlaXRoZXIgdGhlIHZlcnNpb24gaXMgb21pdHRlZCwgb3Igc2V0IHRvIFwiKlwiLlxuICAgKiBPdGhlcndpc2UsIHRoZSBleGFjdCB2ZXJzaW9uIHNlbGVjdGVkIGlzIHBsYWNlZCBpbiB0aGUgcGFja2FnZS5qc29uIGZpbGUgYW5kIHVwZ3JhZGluZyBpcyBoYW5kbGVkIHRocm91Z2ggdGhlIHBhY2thZ2UgbWFuYWdlclxuICAgKiByYXRoZXIgdGhhbiBucG0tY2hlY2stdXBkYXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHZlcnNpb24gc2VtdmVyIGZyb20gRGVwZW5kZW5jeUNvb3JkaW5hdGVzLnZlcnNpb24sIG1heSBiZSB1bmRlZmluZWRcbiAgICogQHJldHVybnMgd2hldGhlciB0aGUgdmVyc2lvbiBpcyB0aGUgZGVmYXVsdCB2ZXJzaW9uaW5nIGJlaGF2aW9yXG4gICAqL1xuICBwcml2YXRlIHBhY2thZ2VDYW5CZVVwZ3JhZGVkSW5QYWNrYWdlSnNvbihcbiAgICB2ZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgKTogYm9vbGVhbiB7XG4gICAgLy8gTm8gdmVyc2lvbiBtZWFucyBcImxhdGVzdFwiXG4gICAgcmV0dXJuICF2ZXJzaW9uIHx8IHZlcnNpb24gPT09IFwiKlwiO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVXb3JrZmxvdyhcbiAgICB0YXNrOiBUYXNrLFxuICAgIGdpdGh1YjogR2l0SHViLFxuICAgIGJyYW5jaD86IHN0cmluZ1xuICApOiBHaXRodWJXb3JrZmxvdyB7XG4gICAgY29uc3Qgc2NoZWR1bGUgPVxuICAgICAgdGhpcy5vcHRpb25zLndvcmtmbG93T3B0aW9ucz8uc2NoZWR1bGUgPz9cbiAgICAgIFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZS5EQUlMWTtcblxuICAgIGNvbnN0IHdvcmtmbG93TmFtZSA9IGAke3Rhc2submFtZX0ke1xuICAgICAgYnJhbmNoID8gYC0ke2JyYW5jaC5yZXBsYWNlKC9cXC8vZywgXCItXCIpfWAgOiBcIlwiXG4gICAgfWA7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSBnaXRodWIuYWRkV29ya2Zsb3cod29ya2Zsb3dOYW1lKTtcbiAgICBjb25zdCB0cmlnZ2Vyczogd29ya2Zsb3dzLlRyaWdnZXJzID0ge1xuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgICBzY2hlZHVsZTpcbiAgICAgICAgc2NoZWR1bGUuY3Jvbi5sZW5ndGggPiAwXG4gICAgICAgICAgPyBzY2hlZHVsZS5jcm9uLm1hcCgoZSkgPT4gKHsgY3JvbjogZSB9KSlcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICAgIHdvcmtmbG93Lm9uKHRyaWdnZXJzKTtcblxuICAgIGNvbnN0IHVwZ3JhZGUgPSB0aGlzLmNyZWF0ZVVwZ3JhZGUodGFzaywgZ2l0aHViLCBicmFuY2gpO1xuICAgIGNvbnN0IHByID0gdGhpcy5jcmVhdGVQcih3b3JrZmxvdywgdXBncmFkZSk7XG5cbiAgICBjb25zdCBqb2JzOiBSZWNvcmQ8c3RyaW5nLCB3b3JrZmxvd3MuSm9iPiA9IHt9O1xuICAgIGpvYnNbdXBncmFkZS5qb2JJZF0gPSB1cGdyYWRlLmpvYjtcbiAgICBqb2JzW3ByLmpvYklkXSA9IHByLmpvYjtcblxuICAgIHdvcmtmbG93LmFkZEpvYnMoam9icyk7XG4gICAgcmV0dXJuIHdvcmtmbG93O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVVcGdyYWRlKHRhc2s6IFRhc2ssIGdpdGh1YjogR2l0SHViLCBicmFuY2g/OiBzdHJpbmcpOiBVcGdyYWRlIHtcbiAgICBjb25zdCB3aXRoXyA9IHtcbiAgICAgIC4uLihicmFuY2ggPyB7IHJlZjogYnJhbmNoIH0gOiB7fSksXG4gICAgICAuLi4oZ2l0aHViLmRvd25sb2FkTGZzID8geyBsZnM6IHRydWUgfSA6IHt9KSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RlcHM6IHdvcmtmbG93cy5Kb2JTdGVwW10gPSBbXG4gICAgICBXb3JrZmxvd1N0ZXBzLmNoZWNrb3V0KHsgd2l0aDogd2l0aF8gfSksXG4gICAgICAuLi50aGlzLnByb2plY3QucmVuZGVyV29ya2Zsb3dTZXR1cCh7IG11dGFibGU6IGZhbHNlIH0pLFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIlVwZ3JhZGUgZGVwZW5kZW5jaWVzXCIsXG4gICAgICAgIHJ1bjogdGhpcy5wcm9qZWN0LnJ1blRhc2tDb21tYW5kKHRhc2spLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgc3RlcHMucHVzaCguLi50aGlzLnBvc3RCdWlsZFN0ZXBzKTtcbiAgICBzdGVwcy5wdXNoKFxuICAgICAgLi4uV29ya2Zsb3dBY3Rpb25zLnVwbG9hZEdpdFBhdGNoKHtcbiAgICAgICAgc3RlcElkOiBDUkVBVEVfUEFUQ0hfU1RFUF9JRCxcbiAgICAgICAgb3V0cHV0TmFtZTogUEFUQ0hfQ1JFQVRFRF9PVVRQVVQsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgam9iOiB7XG4gICAgICAgIG5hbWU6IFwiVXBncmFkZVwiLFxuICAgICAgICBjb250YWluZXI6IHRoaXMuY29udGFpbmVyT3B0aW9ucyxcbiAgICAgICAgcGVybWlzc2lvbnM6IHRoaXMucGVybWlzc2lvbnMsXG4gICAgICAgIGVudjogdGhpcy5vcHRpb25zLndvcmtmbG93T3B0aW9ucz8uZW52LFxuICAgICAgICAuLi5maWx0ZXJlZFJ1bnNPbk9wdGlvbnMoXG4gICAgICAgICAgdGhpcy5vcHRpb25zLndvcmtmbG93T3B0aW9ucz8ucnVuc09uLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy53b3JrZmxvd09wdGlvbnM/LnJ1bnNPbkdyb3VwXG4gICAgICAgICksXG4gICAgICAgIHN0ZXBzOiBzdGVwcyxcbiAgICAgICAgb3V0cHV0czoge1xuICAgICAgICAgIFtQQVRDSF9DUkVBVEVEX09VVFBVVF06IHtcbiAgICAgICAgICAgIHN0ZXBJZDogQ1JFQVRFX1BBVENIX1NURVBfSUQsXG4gICAgICAgICAgICBvdXRwdXROYW1lOiBQQVRDSF9DUkVBVEVEX09VVFBVVCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGpvYklkOiBcInVwZ3JhZGVcIixcbiAgICAgIHJlZjogYnJhbmNoLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVByKHdvcmtmbG93OiBHaXRodWJXb3JrZmxvdywgdXBncmFkZTogVXBncmFkZSk6IFBSIHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9XG4gICAgICB0aGlzLm9wdGlvbnMud29ya2Zsb3dPcHRpb25zPy5wcm9qZW5DcmVkZW50aWFscyA/P1xuICAgICAgd29ya2Zsb3cucHJvamVuQ3JlZGVudGlhbHM7XG5cbiAgICBjb25zdCBzZW1hbnRpY0NvbW1pdCA9IHRoaXMub3B0aW9ucy5zZW1hbnRpY0NvbW1pdCA/PyBcImNob3JlXCI7XG5cbiAgICByZXR1cm4ge1xuICAgICAgam9iOiBXb3JrZmxvd0pvYnMucHVsbFJlcXVlc3RGcm9tUGF0Y2goe1xuICAgICAgICBwYXRjaDoge1xuICAgICAgICAgIGpvYklkOiB1cGdyYWRlLmpvYklkLFxuICAgICAgICAgIG91dHB1dE5hbWU6IFBBVENIX0NSRUFURURfT1VUUFVULFxuICAgICAgICAgIHJlZjogdXBncmFkZS5yZWYsXG4gICAgICAgIH0sXG4gICAgICAgIHdvcmtmbG93TmFtZTogd29ya2Zsb3cubmFtZSxcbiAgICAgICAgY3JlZGVudGlhbHMsXG4gICAgICAgIC4uLmZpbHRlcmVkUnVuc09uT3B0aW9ucyhcbiAgICAgICAgICB0aGlzLm9wdGlvbnMud29ya2Zsb3dPcHRpb25zPy5ydW5zT24sXG4gICAgICAgICAgdGhpcy5vcHRpb25zLndvcmtmbG93T3B0aW9ucz8ucnVuc09uR3JvdXBcbiAgICAgICAgKSxcbiAgICAgICAgcHVsbFJlcXVlc3RUaXRsZTogYCR7c2VtYW50aWNDb21taXR9KGRlcHMpOiAke3RoaXMucHVsbFJlcXVlc3RUaXRsZX1gLFxuICAgICAgICBwdWxsUmVxdWVzdERlc2NyaXB0aW9uOiBcIlVwZ3JhZGVzIHByb2plY3QgZGVwZW5kZW5jaWVzLlwiLFxuICAgICAgICBnaXRJZGVudGl0eTogdGhpcy5naXRJZGVudGl0eSxcbiAgICAgICAgYXNzaWduZWVzOiB0aGlzLm9wdGlvbnMud29ya2Zsb3dPcHRpb25zPy5hc3NpZ25lZXMsXG4gICAgICAgIGxhYmVsczogdGhpcy5vcHRpb25zLndvcmtmbG93T3B0aW9ucz8ubGFiZWxzLFxuICAgICAgICBzaWdub2ZmOiB0aGlzLm9wdGlvbnMuc2lnbm9mZixcbiAgICAgIH0pLFxuICAgICAgam9iSWQ6IFwicHJcIixcbiAgICB9O1xuICB9XG59XG5cbmludGVyZmFjZSBVcGdyYWRlIHtcbiAgcmVhZG9ubHkgcmVmPzogc3RyaW5nO1xuICByZWFkb25seSBqb2I6IHdvcmtmbG93cy5Kb2I7XG4gIHJlYWRvbmx5IGpvYklkOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQUiB7XG4gIHJlYWRvbmx5IGpvYjogd29ya2Zsb3dzLkpvYjtcbiAgcmVhZG9ubHkgam9iSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgVXBncmFkZURlcGVuZGVuY2llcy53b3JrZmxvd09wdGlvbnNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZ3JhZGVEZXBlbmRlbmNpZXNXb3JrZmxvd09wdGlvbnMge1xuICAvKipcbiAgICogU2NoZWR1bGUgdG8gcnVuIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuREFJTFlcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBDaG9vc2UgYSBtZXRob2QgZm9yIGF1dGhlbnRpY2F0aW5nIHdpdGggR2l0SHViIGZvciBjcmVhdGluZyB0aGUgUFIuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgZ2l0aHViIHRva2VuLCBQUidzIGNyZWF0ZWQgYnkgdGhpcyB3b3JrZmxvd1xuICAgKiB3aWxsIG5vdCB0cmlnZ2VyIGFueSBzdWJzZXF1ZW50IHdvcmtmbG93cyAoaS5lIHRoZSBidWlsZCB3b3JrZmxvdyksIHNvXG4gICAqIHByb2plbiByZXF1aXJlcyBBUEkgYWNjZXNzIHRvIGJlIHByb3ZpZGVkIHRocm91Z2ggZS5nLiBhIHBlcnNvbmFsXG4gICAqIGFjY2VzcyB0b2tlbiBvciBvdGhlciBtZXRob2QuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BldGVyLWV2YW5zL2NyZWF0ZS1wdWxsLXJlcXVlc3QvaXNzdWVzLzQ4XG4gICAqIEBkZWZhdWx0IC0gcGVyc29uYWwgYWNjZXNzIHRva2VuIG5hbWVkIFBST0pFTl9HSVRIVUJfVE9LRU5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plbkNyZWRlbnRpYWxzPzogR2l0aHViQ3JlZGVudGlhbHM7XG5cbiAgLyoqXG4gICAqIExhYmVscyB0byBhcHBseSBvbiB0aGUgUFIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbGFiZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWxzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFzc2lnbmVlcyB0byBhZGQgb24gdGhlIFBSLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFzc2lnbmVlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXNzaWduZWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEpvYiBjb250YWluZXIgb3B0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0c1xuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyPzogd29ya2Zsb3dzLkNvbnRhaW5lck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgYnJhbmNoZXMgdG8gY3JlYXRlIFBSJ3MgZm9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEFsbCByZWxlYXNlIGJyYW5jaGVzIGNvbmZpZ3VyZWQgZm9yIHRoZSBwcm9qZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGdpdCBpZGVudGl0eSB0byB1c2UgZm9yIGNvbW1pdHMuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBHaXRIdWIgQWN0aW9ucyB1c2VyXG4gICAqL1xuICByZWFkb25seSBnaXRJZGVudGl0eT86IEdpdElkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBHaXRodWIgUnVubmVyIHNlbGVjdGlvbiBsYWJlbHNcbiAgICogQGRlZmF1bHQgW1widWJ1bnR1LWxhdGVzdFwiXVxuICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyBhIHRhcmdldCBSdW5uZXIgYnkgbGFiZWxzXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBpZiBib3RoIGBydW5zT25gIGFuZCBgcnVuc09uR3JvdXBgIGFyZSBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnNPbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBHaXRodWIgUnVubmVyIEdyb3VwIHNlbGVjdGlvbiBvcHRpb25zXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIGEgdGFyZ2V0IFJ1bm5lciBHcm91cCBieSBuYW1lIGFuZC9vciBsYWJlbHNcbiAgICogQHRocm93cyB7RXJyb3J9IGlmIGJvdGggYHJ1bnNPbmAgYW5kIGBydW5zT25Hcm91cGAgYXJlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgcnVuc09uR3JvdXA/OiBHcm91cFJ1bm5lck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFBlcm1pc3Npb25zIGdyYW50ZWQgdG8gdGhlIHVwZ3JhZGUgam9iXG4gICAqIFRvIGxpbWl0IGpvYiBwZXJtaXNzaW9ucyBmb3IgYGNvbnRlbnRzYCwgdGhlIGRlc2lyZWQgcGVybWlzc2lvbnMgaGF2ZSB0byBiZSBleHBsaWNpdGx5IHNldCwgZS5nLjogYHsgY29udGVudHM6IEpvYlBlcm1pc3Npb24uTk9ORSB9YFxuICAgKiBAZGVmYXVsdCBgeyBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFEIH1gXG4gICAqL1xuICByZWFkb25seSBwZXJtaXNzaW9ucz86IEpvYlBlcm1pc3Npb25zO1xuXG4gIC8qKlxuICAgKiBCdWlsZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSB1cGdyYWRlIGpvYi5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IGVudj86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogSG93IG9mdGVuIHRvIGNoZWNrIGZvciBuZXcgdmVyc2lvbnMgYW5kIHJhaXNlIHB1bGwgcmVxdWVzdHMgZm9yIHZlcnNpb24gdXBncmFkZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUge1xuICAvKipcbiAgICogRGlzYWJsZXMgYXV0b21hdGljIHVwZ3JhZGVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBORVZFUiA9IG5ldyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUoW10pO1xuXG4gIC8qKlxuICAgKiBBdCAwMDowMC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREFJTFkgPSBuZXcgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlKFtcIjAgMCAqICogKlwiXSk7XG5cbiAgLyoqXG4gICAqIEF0IDAwOjAwIG9uIGV2ZXJ5IGRheS1vZi13ZWVrIGZyb20gTW9uZGF5IHRocm91Z2ggRnJpZGF5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBXRUVLREFZID0gbmV3IFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZShbXG4gICAgXCIwIDAgKiAqIDEtNVwiLFxuICBdKTtcblxuICAvKipcbiAgICogQXQgMDA6MDAgb24gTW9uZGF5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBXRUVLTFkgPSBuZXcgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlKFtcbiAgICBcIjAgMCAqICogMVwiLFxuICBdKTtcblxuICAvKipcbiAgICogQXQgMDA6MDAgb24gZGF5LW9mLW1vbnRoIDEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1PTlRITFkgPSBuZXcgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlKFtcbiAgICBcIjAgMCAxICogKlwiLFxuICBdKTtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgc2NoZWR1bGUgZnJvbSBhIHJhdyBjcm9uIGV4cHJlc3Npb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4cHJlc3Npb25zKGNyb246IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIG5ldyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUoY3Jvbik7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjcm9uOiBzdHJpbmdbXSkge31cbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRheXMgdG8gbWludXRlcy5cbiAqL1xuZnVuY3Rpb24gZGF5c1RvTWludXRlcyhkYXlzOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gZGF5cyAqIDE0NDA7XG59XG5cbi8qKlxuICogQ29udmVydCBkYXlzIHRvIHNlY29uZHMuXG4gKi9cbmZ1bmN0aW9uIGRheXNUb1NlY29uZHMoZGF5czogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGRheXMgKiA4NjQwMDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRheXMgdG8gbWlsbGlzZWNvbmRzLlxuICovXG5mdW5jdGlvbiBkYXlzVG9NaWxsaXNlY29uZHMoZGF5czogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGRheXMgKiA4NjQwMDAwMDtcbn1cbiJdfQ==
|
|
441
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBncmFkZS1kZXBlbmRlbmNpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC91cGdyYWRlLWRlcGVuZGVuY2llcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUF5QztBQUN6QyxrREFBaUQ7QUFDakQsc0NBUW1CO0FBQ25CLGlDQUEyRDtBQUMzRCxtREFBa0U7QUFDbEUsaURBQXVFO0FBQ3ZFLGlFQUE2RDtBQUM3RCwrREFLbUM7QUFDbkMsOENBQWdFO0FBQ2hFLHdDQUFxQztBQUNyQyxzREFBOEU7QUFHOUUsdUNBQXNEO0FBRXRELE1BQU0sb0JBQW9CLEdBQUcsY0FBYyxDQUFDO0FBQzVDLE1BQU0sb0JBQW9CLEdBQUcsZUFBZSxDQUFDO0FBZ0k3Qzs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEscUJBQVM7SUFrQ2hELFlBQVksT0FBb0IsRUFBRSxVQUFzQyxFQUFFO1FBQ3hFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQWxDakI7O1dBRUc7UUFDYSxjQUFTLEdBQXFCLEVBQUUsQ0FBQztRQWlDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsb0JBQW9CO1FBQ3BCLElBQ0UsT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTO1lBQzlCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUM3RCxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYix3RUFBd0UsQ0FDekUsQ0FBQztRQUNKLENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUEsb0JBQWEsRUFBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdEUsTUFB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SSwyQkFBMkIsQ0FBQztJQUMvRCxXQUFXO0NBQ1osQ0FBQyxDQUFDO0FBWUw7O0dBRUc7QUFDSCxTQUFTLGFBQWEsQ0FBQyxJQUFZO0lBQ2pDLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGFBQWEsQ0FBQyxJQUFZO0lBQ2pDLE9BQU8sSUFBSSxHQUFHLEtBQUssQ0FBQztBQUN0QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLElBQVk7SUFDdEMsT0FBTyxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7XG4gIEdpdGh1YkNyZWRlbnRpYWxzLFxuICBHaXRIdWIsXG4gIEdpdGh1YldvcmtmbG93LFxuICBHaXRJZGVudGl0eSxcbiAgd29ya2Zsb3dzLFxuICBXb3JrZmxvd0pvYnMsXG4gIFdvcmtmbG93U3RlcHMsXG59IGZyb20gXCIuLi9naXRodWJcIjtcbmltcG9ydCB7IGlzWWFybkNsYXNzaWMsIGlzWWFybkJlcnJ5LCBpc05wbSB9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IERFRkFVTFRfR0lUSFVCX0FDVElPTlNfVVNFUiB9IGZyb20gXCIuLi9naXRodWIvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBwcm9qZWN0UGF0aFJlbGF0aXZlVG9SZXBvUm9vdCB9IGZyb20gXCIuLi9naXRodWIvcHJpdmF0ZS91dGlsXCI7XG5pbXBvcnQgeyBXb3JrZmxvd0FjdGlvbnMgfSBmcm9tIFwiLi4vZ2l0aHViL3dvcmtmbG93LWFjdGlvbnNcIjtcbmltcG9ydCB7XG4gIENvbnRhaW5lck9wdGlvbnMsXG4gIEpvYlN0ZXAsXG4gIEpvYlBlcm1pc3Npb24sXG4gIEpvYlBlcm1pc3Npb25zLFxufSBmcm9tIFwiLi4vZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgTm9kZVBhY2thZ2VNYW5hZ2VyLCBOb2RlUHJvamVjdCB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBSZWxlYXNlIH0gZnJvbSBcIi4uL3JlbGVhc2VcIjtcbmltcG9ydCB7IEdyb3VwUnVubmVyT3B0aW9ucywgZmlsdGVyZWRSdW5zT25PcHRpb25zIH0gZnJvbSBcIi4uL3J1bm5lci1vcHRpb25zXCI7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSBcIi4uL3Rhc2tcIjtcbmltcG9ydCB7IFRhc2tTdGVwIH0gZnJvbSBcIi4uL3Rhc2stbW9kZWxcIjtcbmltcG9ydCB7IHdvcmtmbG93TmFtZUZvclByb2plY3QgfSBmcm9tIFwiLi4vdXRpbC9uYW1lXCI7XG5cbmNvbnN0IENSRUFURV9QQVRDSF9TVEVQX0lEID0gXCJjcmVhdGVfcGF0Y2hcIjtcbmNvbnN0IFBBVENIX0NSRUFURURfT1VUUFVUID0gXCJwYXRjaF9jcmVhdGVkXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFVwZ3JhZGVEZXBlbmRlbmNpZXNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZ3JhZGVEZXBlbmRlbmNpZXNPcHRpb25zIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgcGFja2FnZSBuYW1lcyB0byBleGNsdWRlIGR1cmluZyB0aGUgdXBncmFkZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb3RoaW5nIGlzIGV4Y2x1ZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHBhY2thZ2UgbmFtZXMgdG8gaW5jbHVkZSBkdXJpbmcgdGhlIHVwZ3JhZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRXZlcnl0aGluZyBpcyBpbmNsdWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgdGFyZ2V0IHZlcnNpb24gdG8gdXBncmFkZSBkZXBlbmRlbmNpZXMgdG8uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JhaW5lb3JzaGluZS9ucG0tY2hlY2stdXBkYXRlcyN0YXJnZXRcbiAgICpcbiAgICogQGRlZmF1bHQgXCJtaW5vclwiXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENoZWNrIHBlZXIgZGVwZW5kZW5jaWVzIG9mIGluc3RhbGxlZCBwYWNrYWdlcyBhbmQgZmlsdGVyIHVwZGF0ZXMgdG8gY29tcGF0aWJsZSB2ZXJzaW9ucy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIHVwZ3JhZGUgd29ya2Zsb3cgd2lsbCBhZGhlcmUgdG8gdmVyc2lvbiBjb25zdHJhaW50cyBmcm9tIHBlZXIgZGVwZW5kZW5jaWVzLlxuICAgKiBTb21ldGltZXMgdGhpcyBpcyBub3QgZGVzaXJhYmxlIGFuZCBjYW4gYmUgZGlzYWJsZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JhaW5lb3JzaGluZS9ucG0tY2hlY2stdXBkYXRlcyNwZWVyXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNhdGlzZnlQZWVyRGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5jbHVkZSBkZXByZWNhdGVkIHBhY2thZ2VzLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBkZXByZWNhdGVkIHZlcnNpb25zIHdpbGwgYmUgZXhjbHVkZWQgZnJvbSB1cGdyYWRlcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmFpbmVvcnNoaW5lL25wbS1jaGVjay11cGRhdGVzP3RhYj1yZWFkbWUtb3YtZmlsZSNvcHRpb25zXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlRGVwcmVjYXRlZFZlcnNpb25zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5jbHVkZSBhIGdpdGh1YiB3b3JrZmxvdyBmb3IgY3JlYXRpbmcgUFIncyB0aGF0IHVwZ3JhZGVzIHRoZVxuICAgKiByZXF1aXJlZCBkZXBlbmRlbmNpZXMsIGVpdGhlciBieSBtYW51YWwgZGlzcGF0Y2gsIG9yIGJ5IGEgc2NoZWR1bGUuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYGZhbHNlYCwgb25seSBhIGxvY2FsIHByb2plbiB0YXNrIGlzIGNyZWF0ZWQsIHdoaWNoIGNhbiBiZSBleGVjdXRlZCBtYW51YWxseSB0b1xuICAgKiB1cGdyYWRlIHRoZSBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3Igcm9vdCBwcm9qZWN0cywgZmFsc2UgZm9yIHN1YnByb2plY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3c/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgZ2l0aHViIHdvcmtmbG93LiBPbmx5IGFwcGxpZXMgaWYgYHdvcmtmbG93YCBpcyB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93T3B0aW9ucz86IFVwZ3JhZGVEZXBlbmRlbmNpZXNXb3JrZmxvd09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YXNrIHRoYXQgd2lsbCBiZSBjcmVhdGVkLlxuICAgKiBUaGlzIHdpbGwgYWxzbyBiZSB0aGUgd29ya2Zsb3cgbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ1cGdyYWRlXCIuXG4gICAqL1xuICByZWFkb25seSB0YXNrTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGl0bGUgb2YgdGhlIHB1bGwgcmVxdWVzdCB0byB1c2UgKHNob3VsZCBiZSBhbGwgbG93ZXItY2FzZSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwidXBncmFkZSBkZXBlbmRlbmNpZXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RUaXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNlbWFudGljIGNvbW1pdCB0eXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnY2hvcmUnXG4gICAqL1xuICByZWFkb25seSBzZW1hbnRpY0NvbW1pdD86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkIFNpZ25lZC1vZmYtYnkgbGluZSBieSB0aGUgY29tbWl0dGVyIGF0IHRoZSBlbmQgb2YgdGhlIGNvbW1pdCBsb2cgbWVzc2FnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2lnbm9mZj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hpY2ggZGVwZW5kZW5jeSB0eXBlcyB0aGUgdXBncmFkZSBzaG91bGQgb3BlcmF0ZSBvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgZGVwZW5kZW5jeSB0eXBlcy5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogRGVwZW5kZW5jeVR5cGVbXTtcblxuICAvKipcbiAgICogRXhjbHVkZSBwYWNrYWdlIHZlcnNpb25zIHB1Ymxpc2hlZCB3aXRoaW4gdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cy5cbiAgICpcbiAgICogVGhpcyBtYXkgcHJvdmlkZSBzb21lIHByb3RlY3Rpb24gYWdhaW5zdCBzdXBwbHkgY2hhaW4gYXR0YWNrcywgc2ltcGx5IGJ5IGF2b2lkaW5nXG4gICAqIG5ld2x5IHB1Ymxpc2hlZCBwYWNrYWdlcyB0aGF0IG1heSBiZSBtYWxpY2lvdXMuIEl0IGdpdmVzIHRoZSBlY29zeXN0ZW0gbW9yZSB0aW1lXG4gICAqIHRvIGRldGVjdCBtYWxpY2lvdXMgcGFja2FnZXMuIEhvd2V2ZXIgaXQgY29tZXMgYXQgdGhlIGNvc3Qgb2YgdXBkYXRpbmcgb3RoZXJcbiAgICogcGFja2FnZXMgc2xvd2VyLCB3aGljaCBtaWdodCBhbHNvIGNvbnRhaW4gdnVsbmVyYWJpbGl0aWVzIG9yIGJ1Z3MgaW4gbmVlZCBvZiBhIGZpeC5cbiAgICpcbiAgICogVGhlIGNvb2xkb3duIHBlcmlvZCBhcHBsaWVzIHRvIGJvdGggbnBtLWNoZWNrLXVwZGF0ZXMgZGlzY292ZXJ5XG4gICAqIGFuZCB0aGUgcGFja2FnZSBtYW5hZ2VyIHVwZGF0ZSBjb21tYW5kLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yYWluZW9yc2hpbmUvbnBtLWNoZWNrLXVwZGF0ZXMjY29vbGRvd25cbiAgICogQHNlZSBodHRwczovL2RvY3MubnBtanMuY29tL2NsaS92MTEvY29tbWFuZHMvbnBtLXVwZGF0ZSNiZWZvcmVcbiAgICogQHNlZSBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjbWluaW11bXJlbGVhc2VhZ2VcbiAgICogQHNlZSBodHRwczovL2J1bi5jb20vZG9jcy9wbS9jbGkvaW5zdGFsbCNtaW5pbXVtLXJlbGVhc2UtYWdlXG4gICAqIEBzZWUgaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1NaW5pbWFsQWdlR2F0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGNvb2xkb3duIHBlcmlvZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvb2xkb3duPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFVwZ3JhZGUgbm9kZSBwcm9qZWN0IGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFVwZ3JhZGVEZXBlbmRlbmNpZXMgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIHdvcmtmbG93cyB0aGF0IGV4ZWN1dGUgdGhlIHVwZ3JhZGVzLiBPbmUgd29ya2Zsb3cgcGVyIGJyYW5jaC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3b3JrZmxvd3M6IEdpdGh1YldvcmtmbG93W10gPSBbXTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogTm9kZVByb2plY3Q7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBVcGdyYWRlRGVwZW5kZW5jaWVzT3B0aW9ucztcbiAgcHJpdmF0ZSByZWFkb25seSBwdWxsUmVxdWVzdFRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBkZWZpbml0aW9ucyBmb3IgdGhlIHVwZ3JhZGUgd29ya2Zsb3cuXG4gICAqL1xuICBwdWJsaWMgY29udGFpbmVyT3B0aW9ucz86IENvbnRhaW5lck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSB1cGdyYWRlIHRhc2suXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXBncmFkZVRhc2s6IFRhc2s7XG5cbiAgLyoqXG4gICAqIEEgdGFzayBydW4gYWZ0ZXIgdGhlIHVwZ3JhZGUgdGFzay5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwb3N0VXBncmFkZVRhc2s6IFRhc2s7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBnaXRJZGVudGl0eTogR2l0SWRlbnRpdHk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcG9zdEJ1aWxkU3RlcHM6IEpvYlN0ZXBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBwZXJtaXNzaW9uczogSm9iUGVybWlzc2lvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwVHlwZXM6IERlcGVuZGVuY3lUeXBlW107XG4gIHByaXZhdGUgcmVhZG9ubHkgdXBncmFkZVRhcmdldDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhdGlzZnlQZWVyRGVwZW5kZW5jaWVzOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGluY2x1ZGVEZXByZWNhdGVkVmVyc2lvbnM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IFVwZ3JhZGVEZXBlbmRlbmNpZXNPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMucHJvamVjdCA9IHByb2plY3Q7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIC8vIFZhbGlkYXRlIGNvb2xkb3duXG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy5jb29sZG93biAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoIU51bWJlci5pc0ludGVnZXIob3B0aW9ucy5jb29sZG93bikgfHwgb3B0aW9ucy5jb29sZG93biA8IDApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVGhlICdjb29sZG93bicgb3B0aW9uIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlciByZXByZXNlbnRpbmcgZGF5c1wiXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFlhcm4gY2xhc3NpYyBkb2Vzbid0IHN1cHBvcnQgY29vbGRvd25cbiAgICBpZiAob3B0aW9ucy5jb29sZG93biAmJiBpc1lhcm5DbGFzc2ljKHByb2plY3QucGFja2FnZS5wYWNrYWdlTWFuYWdlcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUaGUgJ2Nvb2xkb3duJyBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCB3aXRoIHlhcm4gY2xhc3NpYy4gXCIgK1xuICAgICAgICAgIFwiQ29uc2lkZXIgdXNpbmcgbnBtLCBwbnBtLCBidW4sIG9yIHlhcm4gYmVycnkgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlcFR5cGVzID0gdGhpcy5vcHRpb25zLnR5cGVzID8/IFtcbiAgICAgIERlcGVuZGVuY3lUeXBlLkJVSUxELFxuICAgICAgRGVwZW5kZW5jeVR5cGUuQlVORExFRCxcbiAgICAgIERlcGVuZGVuY3lUeXBlLkRFVkVOVixcbiAgICAgIERlcGVuZGVuY3lUeXBlLlBFRVIsXG4gICAgICBEZXBlbmRlbmN5VHlwZS5SVU5USU1FLFxuICAgICAgRGVwZW5kZW5jeVR5cGUuVEVTVCxcbiAgICAgIERlcGVuZGVuY3lUeXBlLk9QVElPTkFMLFxuICAgIF07XG4gICAgdGhpcy51cGdyYWRlVGFyZ2V0ID0gdGhpcy5vcHRpb25zLnRhcmdldCA/PyBcIm1pbm9yXCI7XG4gICAgdGhpcy5zYXRpc2Z5UGVlckRlcGVuZGVuY2llcyA9IHRoaXMub3B0aW9ucy5zYXRpc2Z5UGVlckRlcGVuZGVuY2llcyA/PyB0cnVlO1xuICAgIHRoaXMuaW5jbHVkZURlcHJlY2F0ZWRWZXJzaW9ucyA9XG4gICAgICB0aGlzLm9wdGlvbnMuaW5jbHVkZURlcHJlY2F0ZWRWZXJzaW9ucyA/PyBmYWxzZTtcbiAgICB0aGlzLnB1bGxSZXF1ZXN0VGl0bGUgPSBvcHRpb25zLnB1bGxSZXF1ZXN0VGl0bGUgPz8gXCJ1cGdyYWRlIGRlcGVuZGVuY2llc1wiO1xuICAgIHRoaXMuZ2l0SWRlbnRpdHkgPVxuICAgICAgb3B0aW9ucy53b3JrZmxvd09wdGlvbnM/LmdpdElkZW50aXR5ID8/IERFRkFVTFRfR0lUSFVCX0FDVElPTlNfVVNFUjtcbiAgICB0aGlzLnBlcm1pc3Npb25zID0ge1xuICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIC4uLm9wdGlvbnMud29ya2Zsb3dPcHRpb25zPy5wZXJtaXNzaW9ucyxcbiAgICB9O1xuICAgIHRoaXMucG9zdEJ1aWxkU3RlcHMgPSBbXTtcbiAgICB0aGlzLmNvbnRhaW5lck9wdGlvbnMgPSBvcHRpb25zLndvcmtmbG93T3B0aW9ucz8uY29udGFpbmVyO1xuXG4gICAgdGhpcy5wb3N0VXBncmFkZVRhc2sgPVxuICAgICAgcHJvamVjdC50YXNrcy50cnlGaW5kKFwicG9zdC11cGdyYWRlXCIpID8/XG4gICAgICBwcm9qZWN0LnRhc2tzLmFkZFRhc2soXCJwb3N0LXVwZ3JhZGVcIiwge1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJSdW5zIGFmdGVyIHVwZ3JhZGluZyBkZXBlbmRlbmNpZXNcIixcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgdGFza0VudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgQ0k6IFwiMFwiIH07XG5cbiAgICAvLyBTZXQgeWFybiBiZXJyeSBjb29sZG93biB2aWEgZW52aXJvbm1lbnQgdmFyaWFibGUsIGV4cGVjdHMgbWludXRlc1xuICAgIGlmIChvcHRpb25zLmNvb2xkb3duICYmIGlzWWFybkJlcnJ5KHByb2plY3QucGFja2FnZS5wYWNrYWdlTWFuYWdlcikpIHtcbiAgICAgIHRhc2tFbnYuWUFSTl9OUE1fTUlOSU1BTF9BR0VfR0FURSA9IFN0cmluZyhcbiAgICAgICAgZGF5c1RvTWludXRlcyhvcHRpb25zLmNvb2xkb3duKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgbnBtIGNvb2xkb3duIGRhdGUgdmlhIGVudmlyb25tZW50IHZhcmlhYmxlIChjYWxjdWxhdGVkIGF0IHJ1bnRpbWUpLCBleHBlY3RzIGEgZGF0ZSBpbiBJU08gZm9ybWF0XG4gICAgaWYgKG9wdGlvbnMuY29vbGRvd24gJiYgaXNOcG0ocHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyKSkge1xuICAgICAgdGFza0Vudi5OUE1fQ09ORklHX0JFRk9SRSA9IGAkKG5vZGUgLXAgXCJuZXcgRGF0ZShEYXRlLm5vdygpLSR7ZGF5c1RvTWlsbGlzZWNvbmRzKFxuICAgICAgICBvcHRpb25zLmNvb2xkb3duXG4gICAgICApfSkudG9JU09TdHJpbmcoKVwiKWA7XG4gICAgfVxuXG4gICAgdGhpcy51cGdyYWRlVGFzayA9IHByb2plY3QuYWRkVGFzayhvcHRpb25zLnRhc2tOYW1lID8/IFwidXBncmFkZVwiLCB7XG4gICAgICAvLyB0aGlzIHRhc2sgc2hvdWxkIG5vdCBydW4gaW4gQ0kgbW9kZSBiZWNhdXNlIGl0cyBkZXNpZ25lZCB0b1xuICAgICAgLy8gdXBkYXRlIHBhY2thZ2UuanNvbiBhbmQgbG9jayBmaWxlcy5cbiAgICAgIGVudjogdGFza0VudixcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnB1bGxSZXF1ZXN0VGl0bGUsXG4gICAgICBzdGVwczogeyB0b0pTT046ICgpID0+IHRoaXMucmVuZGVyVGFza1N0ZXBzKCkgfSBhcyBhbnksXG4gICAgfSk7XG4gICAgdGhpcy51cGdyYWRlVGFzay5sb2NrKCk7IC8vIHRoaXMgdGFzayBpcyBhIGxhenkgdmFsdWUsIHNvIG1ha2UgaXQgcmVhZG9ubHlcblxuICAgIC8vIGFsd2F5cyB1c2UgdGhlIEdpdEh1YiBvZiB0aGUgcm9vdCBwcm9qZWN0IC0gdGhlcmUgY2FuIG9ubHkgYmUgb25lXG4gICAgY29uc3QgZ2l0aHViID0gR2l0SHViLm9mKHByb2plY3Qucm9vdCk7XG5cbiAgICBpZiAodGhpcy51cGdyYWRlVGFzayAmJiBnaXRodWIgJiYgKG9wdGlvbnMud29ya2Zsb3cgPz8gdHJ1ZSkpIHtcbiAgICAgIGlmIChvcHRpb25zLndvcmtmbG93T3B0aW9ucz8uYnJhbmNoZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2Ygb3B0aW9ucy53b3JrZmxvd09wdGlvbnMuYnJhbmNoZXMpIHtcbiAgICAgICAgICB0aGlzLndvcmtmbG93cy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5jcmVhdGVXb3JrZmxvdyh0aGlzLnVwZ3JhZGVUYXNrLCBnaXRodWIsIGJyYW5jaClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFJlbGVhc2Uub2YocHJvamVjdCkpIHtcbiAgICAgICAgY29uc3QgcmVsZWFzZSA9IFJlbGVhc2Uub2YocHJvamVjdCkhO1xuICAgICAgICByZWxlYXNlLl9mb3JFYWNoQnJhbmNoKChicmFuY2g6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMud29ya2Zsb3dzLnB1c2goXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVdvcmtmbG93KHRoaXMudXBncmFkZVRhc2ssIGdpdGh1YiwgYnJhbmNoKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcmVwcmVzZW50cyB0aGUgZGVmYXVsdCByZXBvc2l0b3J5IGJyYW5jaC5cbiAgICAgICAgLy8ganVzdCBsaWtlIG5vdCBzcGVjaWZ5aW5nIGFueXRoaW5nLlxuICAgICAgICBjb25zdCBkZWZhdWx0QnJhbmNoID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLndvcmtmbG93cy5wdXNoKFxuICAgICAgICAgIHRoaXMuY3JlYXRlV29ya2Zsb3codGhpcy51cGdyYWRlVGFzaywgZ2l0aHViLCBkZWZhdWx0QnJhbmNoKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgc3RlcHMgdG8gZXhlY3V0ZSBhIHN1Y2Nlc3NmdWwgYnVpbGQuXG4gICAqIEBwYXJhbSBzdGVwcyB3b3JrZmxvdyBzdGVwc1xuICAgKi9cbiAgcHVibGljIGFkZFBvc3RCdWlsZFN0ZXBzKC4uLnN0ZXBzOiBKb2JTdGVwW10pIHtcbiAgICB0aGlzLnBvc3RCdWlsZFN0ZXBzLnB1c2goLi4uc3RlcHMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJUYXNrU3RlcHMoKTogVGFza1N0ZXBbXSB7XG4gICAgY29uc3Qgc3RlcHMgPSBuZXcgQXJyYXk8VGFza1N0ZXA+KCk7XG5cbiAgICAvLyBQYWNrYWdlIE1hbmFnZXIgdXBncmFkZSBzaG91bGQgYWx3YXlzIGluY2x1ZGUgYWxsIGRlcHNcbiAgICBjb25zdCBpbmNsdWRlRm9yUGFja2FnZU1hbmFnZXJVcGdyYWRlID0gdGhpcy5idWlsZERlcGVuZGVuY3lMaXN0KHRydWUpO1xuICAgIGlmIChpbmNsdWRlRm9yUGFja2FnZU1hbmFnZXJVcGdyYWRlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFt7IGV4ZWM6IFwiZWNobyBObyBkZXBlbmRlbmNpZXMgdG8gdXBncmFkZS5cIiB9XTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmluZyBgbnBtLWNoZWNrLXVwZGF0ZXNgIGZyb20gb3VyIGRlcGVuZGVuY3kgdHJlZSBiZWNhdXNlIGl0IGRlcGVuZHMgb24gYSBwYWNrYWdlXG4gICAgLy8gdGhhdCB1c2VzIGFuIG5wbS1zcGVjaWZpYyBmZWF0dXJlIHRoYXQgY2F1c2VzIGFuIGludmFsaWQgZGVwZW5kZW5jeSB0cmVlIHdoZW4gdXNpbmcgWWFybiAxLlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi9wdWxsLzMxMzYgZm9yIG1vcmUgZGV0YWlscy5cbiAgICBjb25zdCBpbmNsdWRlRm9yTmN1ID0gdGhpcy5idWlsZERlcGVuZGVuY3lMaXN0KGZhbHNlKTtcblxuICAgIC8vIGJ1bXAgdmVyc2lvbnMgaW4gcGFja2FnZS5qc29uXG4gICAgaWYgKGluY2x1ZGVGb3JOY3UubGVuZ3RoKSB7XG4gICAgICBjb25zdCBuY3VDb21tYW5kID0gdGhpcy5idWlsZE5jdUNvbW1hbmQoaW5jbHVkZUZvck5jdSwge1xuICAgICAgICB1cGdyYWRlOiB0cnVlLFxuICAgICAgICB0YXJnZXQ6IHRoaXMudXBncmFkZVRhcmdldCxcbiAgICAgIH0pO1xuICAgICAgc3RlcHMucHVzaCh7IGV4ZWM6IG5jdUNvbW1hbmQgfSk7XG4gICAgfVxuXG4gICAgLy8gcnVuIFwieWFybi9ucG0gaW5zdGFsbFwiIHRvIHVwZGF0ZSB0aGUgbG9ja2ZpbGUgYW5kIGluc3RhbGwgYW55IGRlcHMgKHN1Y2ggYXMgcHJvamVuKVxuICAgIHN0ZXBzLnB1c2goeyBleGVjOiB0aGlzLnByb2plY3QucGFja2FnZS5pbnN0YWxsQW5kVXBkYXRlTG9ja2ZpbGVDb21tYW5kIH0pO1xuXG4gICAgLy8gcnVuIHVwZ3JhZGUgY29tbWFuZCB0byB1cGdyYWRlIHRyYW5zaXRpdmUgZGVwcyBhcyB3ZWxsXG4gICAgc3RlcHMucHVzaCh7XG4gICAgICBleGVjOiB0aGlzLnJlbmRlclVwZ3JhZGVQYWNrYWdlc0NvbW1hbmQoaW5jbHVkZUZvclBhY2thZ2VNYW5hZ2VyVXBncmFkZSksXG4gICAgfSk7XG5cbiAgICAvLyBydW4gXCJwcm9qZW5cIiB0byBnaXZlIHByb2plbiBhIGNoYW5jZSB0byB1cGRhdGUgZGVwZW5kZW5jaWVzIChpdCB3aWxsIGFsc28gcnVuIFwieWFybiBpbnN0YWxsXCIpXG4gICAgc3RlcHMucHVzaCh7IGV4ZWM6IHRoaXMucHJvamVjdC5wcm9qZW5Db21tYW5kIH0pO1xuICAgIHN0ZXBzLnB1c2goeyBzcGF3bjogdGhpcy5wb3N0VXBncmFkZVRhc2submFtZSB9KTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBucG0tY2hlY2stdXBkYXRlcyBjb21tYW5kIHdpdGggY29tbW9uIG9wdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTmN1Q29tbWFuZChcbiAgICBpbmNsdWRlUGFja2FnZXM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIHVwZ3JhZGU/OiBib29sZWFuO1xuICAgICAgdGFyZ2V0Pzogc3RyaW5nO1xuICAgICAgZm9ybWF0Pzogc3RyaW5nO1xuICAgICAgcmVtb3ZlUmFuZ2U/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBzdHJpbmcge1xuICAgIGZ1bmN0aW9uIGV4ZWN1dGVDb21tYW5kKHBhY2thZ2VNYW5hZ2VyOiBOb2RlUGFja2FnZU1hbmFnZXIpOiBzdHJpbmcge1xuICAgICAgc3dpdGNoIChwYWNrYWdlTWFuYWdlcikge1xuICAgICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5OUE06XG4gICAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk46XG4gICAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQ0xBU1NJQzpcbiAgICAgICAgICByZXR1cm4gXCJucHhcIjtcbiAgICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTTpcbiAgICAgICAgICByZXR1cm4gXCJwbnBtIGRseFwiO1xuICAgICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOMjpcbiAgICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTl9CRVJSWTpcbiAgICAgICAgICByZXR1cm4gXCJ5YXJuIGRseFwiO1xuICAgICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5CVU46XG4gICAgICAgICAgcmV0dXJuIFwiYnVueFwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbW1hbmQgPSBbXG4gICAgICBgJHtleGVjdXRlQ29tbWFuZChcbiAgICAgICAgdGhpcy5wcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXJcbiAgICAgICl9IG5wbS1jaGVjay11cGRhdGVzQDE4YCxcbiAgICBdO1xuXG4gICAgaWYgKG9wdGlvbnMudXBncmFkZSkge1xuICAgICAgY29tbWFuZC5wdXNoKFwiLS11cGdyYWRlXCIpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy50YXJnZXQpIHtcbiAgICAgIGNvbW1hbmQucHVzaChgLS10YXJnZXQ9JHtvcHRpb25zLnRhcmdldH1gKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZm9ybWF0KSB7XG4gICAgICBjb21tYW5kLnB1c2goYC0tZm9ybWF0PSR7b3B0aW9ucy5mb3JtYXR9YCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnJlbW92ZVJhbmdlKSB7XG4gICAgICBjb21tYW5kLnB1c2goXCItLXJlbW92ZVJhbmdlXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmNvb2xkb3duKSB7XG4gICAgICBjb21tYW5kLnB1c2goYC0tY29vbGRvd249JHt0aGlzLm9wdGlvbnMuY29vbGRvd259YCk7XG4gICAgfVxuXG4gICAgY29tbWFuZC5wdXNoKGAtLSR7dGhpcy5zYXRpc2Z5UGVlckRlcGVuZGVuY2llcyA/IFwicGVlclwiIDogXCJuby1wZWVyXCJ9YCk7XG4gICAgY29tbWFuZC5wdXNoKFxuICAgICAgYC0tJHt0aGlzLmluY2x1ZGVEZXByZWNhdGVkVmVyc2lvbnMgPyBcImRlcHJlY2F0ZWRcIiA6IFwibm8tZGVwcmVjYXRlZFwifWBcbiAgICApO1xuICAgIGNvbW1hbmQucHVzaChgLS1kZXA9JHt0aGlzLnJlbmRlck5jdURlcGVuZGVuY3lUeXBlcyh0aGlzLmRlcFR5cGVzKX1gKTtcbiAgICBjb21tYW5kLnB1c2goYC0tZmlsdGVyPSR7aW5jbHVkZVBhY2thZ2VzLmpvaW4oXCIsXCIpfWApO1xuXG4gICAgcmV0dXJuIGNvbW1hbmQuam9pbihcIiBcIik7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHByb2plbiBkZXBlbmRlbmNpZXMgdHlwZXMgdG8gYSBsaXN0IG9mIG5jdSBjb21wYXRpYmxlIHR5cGVzXG4gICAqL1xuICBwcml2YXRlIHJlbmRlck5jdURlcGVuZGVuY3lUeXBlcyh0eXBlczogRGVwZW5kZW5jeVR5cGVbXSkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKFxuICAgICAgbmV3IFNldChcbiAgICAgICAgdHlwZXNcbiAgICAgICAgICAubWFwKCh0eXBlKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSBEZXBlbmRlbmN5VHlwZS5QRUVSOlxuICAgICAgICAgICAgICAgIHJldHVybiBcInBlZXJcIjtcbiAgICAgICAgICAgICAgY2FzZSBEZXBlbmRlbmN5VHlwZS5SVU5USU1FOlxuICAgICAgICAgICAgICAgIHJldHVybiBcInByb2RcIjtcbiAgICAgICAgICAgICAgY2FzZSBEZXBlbmRlbmN5VHlwZS5PUFRJT05BTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJvcHRpb25hbFwiO1xuXG4gICAgICAgICAgICAgIGNhc2UgRGVwZW5kZW5jeVR5cGUuVEVTVDpcbiAgICAgICAgICAgICAgY2FzZSBEZXBlbmRlbmN5VHlwZS5ERVZFTlY6XG4gICAgICAgICAgICAgIGNhc2UgRGVwZW5kZW5jeVR5cGUuQlVJTEQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiZGV2XCI7XG5cbiAgICAgICAgICAgICAgY2FzZSBEZXBlbmRlbmN5VHlwZS5CVU5ETEVEOlxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maWx0ZXIoKHR5cGUpID0+IEJvb2xlYW4odHlwZSkpXG4gICAgICApXG4gICAgKS5qb2luKFwiLFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgYSBwYWNrYWdlIG1hbmFnZXIgc3BlY2lmaWMgY29tbWFuZCB0byB1cGdyYWRlIGFsbCByZXF1ZXN0ZWQgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJVcGdyYWRlUGFja2FnZXNDb21tYW5kKGluY2x1ZGU6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBmdW5jdGlvbiB1cGdyYWRlUGFja2FnZXMoY29tbWFuZDogc3RyaW5nLCBjb29sZG93bkZsYWc/OiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gW2NvbW1hbmQsIC4uLmluY2x1ZGVdO1xuICAgICAgICBpZiAoY29vbGRvd25GbGFnKSB7XG4gICAgICAgICAgcGFydHMucHVzaChjb29sZG93bkZsYWcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJ0cy5qb2luKFwiIFwiKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZU1hbmFnZXIgPSB0aGlzLnByb2plY3QucGFja2FnZS5wYWNrYWdlTWFuYWdlcjtcbiAgICBjb25zdCBjb29sZG93biA9IHRoaXMub3B0aW9ucy5jb29sZG93bjtcblxuICAgIGxldCBsYXp5ID0gdW5kZWZpbmVkO1xuICAgIHN3aXRjaCAocGFja2FnZU1hbmFnZXIpIHtcbiAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk46XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0NMQVNTSUM6XG4gICAgICAgIGxhenkgPSB1cGdyYWRlUGFja2FnZXMoXCJ5YXJuIHVwZ3JhZGVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTjI6XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0JFUlJZOlxuICAgICAgICAvLyBZYXJuIEJlcnJ5IGNvb2xkb3duIHNldCB2aWEgdGFzayBlbnZcbiAgICAgICAgbGF6eSA9IHVwZ3JhZGVQYWNrYWdlcyhcInlhcm4gdXBcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuTlBNOlxuICAgICAgICAvLyBucG0gY29vbGRvd24gc2V0IHZpYSBOUE1fQ09ORklHX0JFRk9SRSBlbnZcbiAgICAgICAgbGF6eSA9IHVwZ3JhZGVQYWNrYWdlcyhcIm5wbSB1cGRhdGVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTTpcbiAgICAgICAgLy8gcG5wbSBleHBlY3RzIG1pbnV0ZXNcbiAgICAgICAgbGF6eSA9IHVwZ3JhZGVQYWNrYWdlcyhcbiAgICAgICAgICBcInBucG0gdXBkYXRlXCIsXG4gICAgICAgICAgY29vbGRvd24gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBgLS1jb25maWcubWluaW11bS1yZWxlYXNlLWFnZT0ke2RheXNUb01pbnV0ZXMoY29vbGRvd24pfWBcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuQlVOOlxuICAgICAgICAvLyBidW4gZXhwZWN0cyBzZWNvbmRzXG4gICAgICAgIGxhenkgPSB1cGdyYWRlUGFja2FnZXMoXG4gICAgICAgICAgXCJidW4gdXBkYXRlXCIsXG4gICAgICAgICAgY29vbGRvd25cbiAgICAgICAgICAgID8gYC0tbWluaW11bS1yZWxlYXNlLWFnZT0ke2RheXNUb1NlY29uZHMoY29vbGRvd24pfWBcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHBhY2thZ2UgbWFuYWdlciAke3BhY2thZ2VNYW5hZ2VyfWApO1xuICAgIH1cblxuICAgIC8vIHJldHVybiBhIGxhenkgZnVuY3Rpb24gc28gdGhhdCBkZXBlbmRlbmNpZXMgaW5jbHVkZSBvbmVzIHRoYXQgd2VyZVxuICAgIC8vIGFkZGVkIHBvc3QgcHJvamVjdCBpbnN0YW50aWF0aW9uIChpLmUgdXNpbmcgcHJvamVjdC5hZGREZXBzKVxuICAgIHJldHVybiBsYXp5IGFzIHVua25vd24gYXMgc3RyaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZERlcGVuZGVuY3lMaXN0KGluY2x1ZGVEZXBlbmRlbmNpZXNXaXRoQ29uc3RyYWludDogYm9vbGVhbikge1xuICAgIHJldHVybiBBcnJheS5mcm9tKFxuICAgICAgbmV3IFNldChcbiAgICAgICAgdGhpcy5vcHRpb25zLmluY2x1ZGUgPz9cbiAgICAgICAgICB0aGlzLmZpbHRlckRlcGVuZGVuY2llcyhpbmNsdWRlRGVwZW5kZW5jaWVzV2l0aENvbnN0cmFpbnQpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyRGVwZW5kZW5jaWVzKGluY2x1ZGVDb25zdHJhaW50OiBib29sZWFuKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IFtdO1xuXG4gICAgY29uc3QgZGVwcyA9IHRoaXMucHJvamVjdC5kZXBzLmFsbFxuICAgICAgLy8gcmVtb3ZlIHRob3NlIHRoYXQgaGF2ZSBhIGNvbnN0cmFpbnQgdmVyc2lvbiAodW5sZXNzIGluY2x1ZGVDb25zdHJhaW50IGlzIHRydWUpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoZCkgPT5cbiAgICAgICAgICBpbmNsdWRlQ29uc3RyYWludCB8fCB0aGlzLnBhY2thZ2VDYW5CZVVwZ3JhZGVkSW5QYWNrYWdlSnNvbihkLnZlcnNpb24pXG4gICAgICApXG4gICAgICAvLyByZW1vdmUgb3ZlcnJpZGUgZGVwZW5kZW5jaWVzXG4gICAgICAuZmlsdGVyKChkKSA9PiBkLnR5cGUgIT09IERlcGVuZGVuY3lUeXBlLk9WRVJSSURFKTtcblxuICAgIGZvciAoY29uc3QgdHlwZSBvZiB0aGlzLmRlcFR5cGVzKSB7XG4gICAgICBkZXBlbmRlbmNpZXMucHVzaChcbiAgICAgICAgLi4uZGVwc1xuICAgICAgICAgIC5maWx0ZXIoKGQpID0+IGQudHlwZSA9PT0gdHlwZSlcbiAgICAgICAgICAuZmlsdGVyKChkKSA9PiAhKHRoaXMub3B0aW9ucy5leGNsdWRlID8/IFtdKS5pbmNsdWRlcyhkLm5hbWUpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVwZW5kZW5jaWVzLm1hcCgoZCkgPT4gZC5uYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9qZW4gY2FuIGFsdGVyIGEgcGFja2FnZSdzIHZlcnNpb24gaW4gcGFja2FnZS5qc29uIHdoZW4gZWl0aGVyIHRoZSB2ZXJzaW9uIGlzIG9taXR0ZWQsIG9yIHNldCB0byBcIipcIi5cbiAgICogT3RoZXJ3aXNlLCB0aGUgZXhhY3QgdmVyc2lvbiBzZWxlY3RlZCBpcyBwbGFjZWQgaW4gdGhlIHBhY2thZ2UuanNvbiBmaWxlIGFuZCB1cGdyYWRpbmcgaXMgaGFuZGxlZCB0aHJvdWdoIHRoZSBwYWNrYWdlIG1hbmFnZXJcbiAgICogcmF0aGVyIHRoYW4gbnBtLWNoZWNrLXVwZGF0ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB2ZXJzaW9uIHNlbXZlciBmcm9tIERlcGVuZGVuY3lDb29yZGluYXRlcy52ZXJzaW9uLCBtYXkgYmUgdW5kZWZpbmVkXG4gICAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIHZlcnNpb24gaXMgdGhlIGRlZmF1bHQgdmVyc2lvbmluZyBiZWhhdmlvclxuICAgKi9cbiAgcHJpdmF0ZSBwYWNrYWdlQ2FuQmVVcGdyYWRlZEluUGFja2FnZUpzb24oXG4gICAgdmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICk6IGJvb2xlYW4ge1xuICAgIC8vIE5vIHZlcnNpb24gbWVhbnMgXCJsYXRlc3RcIlxuICAgIHJldHVybiAhdmVyc2lvbiB8fCB2ZXJzaW9uID09PSBcIipcIjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlV29ya2Zsb3coXG4gICAgdGFzazogVGFzayxcbiAgICBnaXRodWI6IEdpdEh1YixcbiAgICBicmFuY2g/OiBzdHJpbmdcbiAgKTogR2l0aHViV29ya2Zsb3cge1xuICAgIGNvbnN0IHNjaGVkdWxlID1cbiAgICAgIHRoaXMub3B0aW9ucy53b3JrZmxvd09wdGlvbnM/LnNjaGVkdWxlID8/XG4gICAgICBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuREFJTFk7XG5cbiAgICBjb25zdCB0YXNrQnJhbmNoTmFtZSA9IGAke3Rhc2submFtZX0ke1xuICAgICAgYnJhbmNoID8gYC0ke2JyYW5jaC5yZXBsYWNlKC9cXC8vZywgXCItXCIpfWAgOiBcIlwiXG4gICAgfWA7XG4gICAgY29uc3Qgd29ya2Zsb3dOYW1lID0gd29ya2Zsb3dOYW1lRm9yUHJvamVjdCh0YXNrQnJhbmNoTmFtZSwgdGhpcy5wcm9qZWN0KTtcblxuICAgIGNvbnN0IHdvcmtmbG93ID0gZ2l0aHViLmFkZFdvcmtmbG93KHdvcmtmbG93TmFtZSk7XG4gICAgY29uc3QgdHJpZ2dlcnM6IHdvcmtmbG93cy5UcmlnZ2VycyA9IHtcbiAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgICAgc2NoZWR1bGU6XG4gICAgICAgIHNjaGVkdWxlLmNyb24ubGVuZ3RoID4gMFxuICAgICAgICAgID8gc2NoZWR1bGUuY3Jvbi5tYXAoKGUpID0+ICh7IGNyb246IGUgfSkpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgICB3b3JrZmxvdy5vbih0cmlnZ2Vycyk7XG5cbiAgICBjb25zdCB1cGdyYWRlID0gdGhpcy5jcmVhdGVVcGdyYWRlKHRhc2ssIGdpdGh1YiwgYnJhbmNoKTtcbiAgICBjb25zdCBwciA9IHRoaXMuY3JlYXRlUHIod29ya2Zsb3csIHVwZ3JhZGUpO1xuXG4gICAgY29uc3Qgam9iczogUmVjb3JkPHN0cmluZywgd29ya2Zsb3dzLkpvYj4gPSB7fTtcbiAgICBqb2JzW3VwZ3JhZGUuam9iSWRdID0gdXBncmFkZS5qb2I7XG4gICAgam9ic1twci5qb2JJZF0gPSBwci5qb2I7XG5cbiAgICB3b3JrZmxvdy5hZGRKb2JzKGpvYnMpO1xuICAgIHJldHVybiB3b3JrZmxvdztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVXBncmFkZSh0YXNrOiBUYXNrLCBnaXRodWI6IEdpdEh1YiwgYnJhbmNoPzogc3RyaW5nKTogVXBncmFkZSB7XG4gICAgY29uc3Qgd2l0aF8gPSB7XG4gICAgICAuLi4oYnJhbmNoID8geyByZWY6IGJyYW5jaCB9IDoge30pLFxuICAgICAgLi4uKGdpdGh1Yi5kb3dubG9hZExmcyA/IHsgbGZzOiB0cnVlIH0gOiB7fSksXG4gICAgfTtcblxuICAgIGNvbnN0IHN0ZXBzOiB3b3JrZmxvd3MuSm9iU3RlcFtdID0gW1xuICAgICAgV29ya2Zsb3dTdGVwcy5jaGVja291dCh7IHdpdGg6IHdpdGhfIH0pLFxuICAgICAgLi4udGhpcy5wcm9qZWN0LnJlbmRlcldvcmtmbG93U2V0dXAoeyBtdXRhYmxlOiBmYWxzZSB9KSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJVcGdyYWRlIGRlcGVuZGVuY2llc1wiLFxuICAgICAgICBydW46IHRoaXMucHJvamVjdC5ydW5UYXNrQ29tbWFuZCh0YXNrKSxcbiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogdGhpcy5wcm9qZWN0LnBhcmVudFxuICAgICAgICAgID8gcHJvamVjdFBhdGhSZWxhdGl2ZVRvUmVwb1Jvb3QodGhpcy5wcm9qZWN0KVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgc3RlcHMucHVzaCguLi50aGlzLnBvc3RCdWlsZFN0ZXBzKTtcbiAgICBzdGVwcy5wdXNoKFxuICAgICAgLi4uV29ya2Zsb3dBY3Rpb25zLnVwbG9hZEdpdFBhdGNoKHtcbiAgICAgICAgc3RlcElkOiBDUkVBVEVfUEFUQ0hfU1RFUF9JRCxcbiAgICAgICAgb3V0cHV0TmFtZTogUEFUQ0hfQ1JFQVRFRF9PVVRQVVQsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgam9iOiB7XG4gICAgICAgIG5hbWU6IFwiVXBncmFkZVwiLFxuICAgICAgICBjb250YWluZXI6IHRoaXMuY29udGFpbmVyT3B0aW9ucyxcbiAgICAgICAgcGVybWlzc2lvbnM6IHRoaXMucGVybWlzc2lvbnMsXG4gICAgICAgIGVudjogdGhpcy5vcHRpb25zLndvcmtmbG93T3B0aW9ucz8uZW52LFxuICAgICAgICAuLi5maWx0ZXJlZFJ1bnNPbk9wdGlvbnMoXG4gICAgICAgICAgdGhpcy5vcHRpb25zLndvcmtmbG93T3B0aW9ucz8ucnVuc09uLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy53b3JrZmxvd09wdGlvbnM/LnJ1bnNPbkdyb3VwXG4gICAgICAgICksXG4gICAgICAgIHN0ZXBzOiBzdGVwcyxcbiAgICAgICAgb3V0cHV0czoge1xuICAgICAgICAgIFtQQVRDSF9DUkVBVEVEX09VVFBVVF06IHtcbiAgICAgICAgICAgIHN0ZXBJZDogQ1JFQVRFX1BBVENIX1NURVBfSUQsXG4gICAgICAgICAgICBvdXRwdXROYW1lOiBQQVRDSF9DUkVBVEVEX09VVFBVVCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGpvYklkOiBcInVwZ3JhZGVcIixcbiAgICAgIHJlZjogYnJhbmNoLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVByKHdvcmtmbG93OiBHaXRodWJXb3JrZmxvdywgdXBncmFkZTogVXBncmFkZSk6IFBSIHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9XG4gICAgICB0aGlzLm9wdGlvbnMud29ya2Zsb3dPcHRpb25zPy5wcm9qZW5DcmVkZW50aWFscyA/P1xuICAgICAgd29ya2Zsb3cucHJvamVuQ3JlZGVudGlhbHM7XG5cbiAgICBjb25zdCBzZW1hbnRpY0NvbW1pdCA9IHRoaXMub3B0aW9ucy5zZW1hbnRpY0NvbW1pdCA/PyBcImNob3JlXCI7XG5cbiAgICByZXR1cm4ge1xuICAgICAgam9iOiBXb3JrZmxvd0pvYnMucHVsbFJlcXVlc3RGcm9tUGF0Y2goe1xuICAgICAgICBwYXRjaDoge1xuICAgICAgICAgIGpvYklkOiB1cGdyYWRlLmpvYklkLFxuICAgICAgICAgIG91dHB1dE5hbWU6IFBBVENIX0NSRUFURURfT1VUUFVULFxuICAgICAgICAgIHJlZjogdXBncmFkZS5yZWYsXG4gICAgICAgIH0sXG4gICAgICAgIHdvcmtmbG93TmFtZTogd29ya2Zsb3cubmFtZSxcbiAgICAgICAgY3JlZGVudGlhbHMsXG4gICAgICAgIC4uLmZpbHRlcmVkUnVuc09uT3B0aW9ucyhcbiAgICAgICAgICB0aGlzLm9wdGlvbnMud29ya2Zsb3dPcHRpb25zPy5ydW5zT24sXG4gICAgICAgICAgdGhpcy5vcHRpb25zLndvcmtmbG93T3B0aW9ucz8ucnVuc09uR3JvdXBcbiAgICAgICAgKSxcbiAgICAgICAgcHVsbFJlcXVlc3RUaXRsZTogYCR7c2VtYW50aWNDb21taXR9KGRlcHMpOiAke3RoaXMucHVsbFJlcXVlc3RUaXRsZX1gLFxuICAgICAgICBwdWxsUmVxdWVzdERlc2NyaXB0aW9uOiBcIlVwZ3JhZGVzIHByb2plY3QgZGVwZW5kZW5jaWVzLlwiLFxuICAgICAgICBnaXRJZGVudGl0eTogdGhpcy5naXRJZGVudGl0eSxcbiAgICAgICAgYXNzaWduZWVzOiB0aGlzLm9wdGlvbnMud29ya2Zsb3dPcHRpb25zPy5hc3NpZ25lZXMsXG4gICAgICAgIGxhYmVsczogdGhpcy5vcHRpb25zLndvcmtmbG93T3B0aW9ucz8ubGFiZWxzLFxuICAgICAgICBzaWdub2ZmOiB0aGlzLm9wdGlvbnMuc2lnbm9mZixcbiAgICAgIH0pLFxuICAgICAgam9iSWQ6IFwicHJcIixcbiAgICB9O1xuICB9XG59XG5cbmludGVyZmFjZSBVcGdyYWRlIHtcbiAgcmVhZG9ubHkgcmVmPzogc3RyaW5nO1xuICByZWFkb25seSBqb2I6IHdvcmtmbG93cy5Kb2I7XG4gIHJlYWRvbmx5IGpvYklkOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQUiB7XG4gIHJlYWRvbmx5IGpvYjogd29ya2Zsb3dzLkpvYjtcbiAgcmVhZG9ubHkgam9iSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgVXBncmFkZURlcGVuZGVuY2llcy53b3JrZmxvd09wdGlvbnNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZ3JhZGVEZXBlbmRlbmNpZXNXb3JrZmxvd09wdGlvbnMge1xuICAvKipcbiAgICogU2NoZWR1bGUgdG8gcnVuIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuREFJTFlcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBDaG9vc2UgYSBtZXRob2QgZm9yIGF1dGhlbnRpY2F0aW5nIHdpdGggR2l0SHViIGZvciBjcmVhdGluZyB0aGUgUFIuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgZ2l0aHViIHRva2VuLCBQUidzIGNyZWF0ZWQgYnkgdGhpcyB3b3JrZmxvd1xuICAgKiB3aWxsIG5vdCB0cmlnZ2VyIGFueSBzdWJzZXF1ZW50IHdvcmtmbG93cyAoaS5lIHRoZSBidWlsZCB3b3JrZmxvdyksIHNvXG4gICAqIHByb2plbiByZXF1aXJlcyBBUEkgYWNjZXNzIHRvIGJlIHByb3ZpZGVkIHRocm91Z2ggZS5nLiBhIHBlcnNvbmFsXG4gICAqIGFjY2VzcyB0b2tlbiBvciBvdGhlciBtZXRob2QuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BldGVyLWV2YW5zL2NyZWF0ZS1wdWxsLXJlcXVlc3QvaXNzdWVzLzQ4XG4gICAqIEBkZWZhdWx0IC0gcGVyc29uYWwgYWNjZXNzIHRva2VuIG5hbWVkIFBST0pFTl9HSVRIVUJfVE9LRU5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plbkNyZWRlbnRpYWxzPzogR2l0aHViQ3JlZGVudGlhbHM7XG5cbiAgLyoqXG4gICAqIExhYmVscyB0byBhcHBseSBvbiB0aGUgUFIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbGFiZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWxzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFzc2lnbmVlcyB0byBhZGQgb24gdGhlIFBSLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFzc2lnbmVlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXNzaWduZWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEpvYiBjb250YWluZXIgb3B0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0c1xuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyPzogd29ya2Zsb3dzLkNvbnRhaW5lck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgYnJhbmNoZXMgdG8gY3JlYXRlIFBSJ3MgZm9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEFsbCByZWxlYXNlIGJyYW5jaGVzIGNvbmZpZ3VyZWQgZm9yIHRoZSBwcm9qZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGdpdCBpZGVudGl0eSB0byB1c2UgZm9yIGNvbW1pdHMuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBHaXRIdWIgQWN0aW9ucyB1c2VyXG4gICAqL1xuICByZWFkb25seSBnaXRJZGVudGl0eT86IEdpdElkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBHaXRodWIgUnVubmVyIHNlbGVjdGlvbiBsYWJlbHNcbiAgICogQGRlZmF1bHQgW1widWJ1bnR1LWxhdGVzdFwiXVxuICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyBhIHRhcmdldCBSdW5uZXIgYnkgbGFiZWxzXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBpZiBib3RoIGBydW5zT25gIGFuZCBgcnVuc09uR3JvdXBgIGFyZSBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnNPbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBHaXRodWIgUnVubmVyIEdyb3VwIHNlbGVjdGlvbiBvcHRpb25zXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIGEgdGFyZ2V0IFJ1bm5lciBHcm91cCBieSBuYW1lIGFuZC9vciBsYWJlbHNcbiAgICogQHRocm93cyB7RXJyb3J9IGlmIGJvdGggYHJ1bnNPbmAgYW5kIGBydW5zT25Hcm91cGAgYXJlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgcnVuc09uR3JvdXA/OiBHcm91cFJ1bm5lck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFBlcm1pc3Npb25zIGdyYW50ZWQgdG8gdGhlIHVwZ3JhZGUgam9iXG4gICAqIFRvIGxpbWl0IGpvYiBwZXJtaXNzaW9ucyBmb3IgYGNvbnRlbnRzYCwgdGhlIGRlc2lyZWQgcGVybWlzc2lvbnMgaGF2ZSB0byBiZSBleHBsaWNpdGx5IHNldCwgZS5nLjogYHsgY29udGVudHM6IEpvYlBlcm1pc3Npb24uTk9ORSB9YFxuICAgKiBAZGVmYXVsdCBgeyBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFEIH1gXG4gICAqL1xuICByZWFkb25seSBwZXJtaXNzaW9ucz86IEpvYlBlcm1pc3Npb25zO1xuXG4gIC8qKlxuICAgKiBCdWlsZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSB1cGdyYWRlIGpvYi5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IGVudj86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogSG93IG9mdGVuIHRvIGNoZWNrIGZvciBuZXcgdmVyc2lvbnMgYW5kIHJhaXNlIHB1bGwgcmVxdWVzdHMgZm9yIHZlcnNpb24gdXBncmFkZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUge1xuICAvKipcbiAgICogRGlzYWJsZXMgYXV0b21hdGljIHVwZ3JhZGVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBORVZFUiA9IG5ldyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUoW10pO1xuXG4gIC8qKlxuICAgKiBBdCAwMDowMC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREFJTFkgPSBuZXcgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlKFtcIjAgMCAqICogKlwiXSk7XG5cbiAgLyoqXG4gICAqIEF0IDAwOjAwIG9uIGV2ZXJ5IGRheS1vZi13ZWVrIGZyb20gTW9uZGF5IHRocm91Z2ggRnJpZGF5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBXRUVLREFZID0gbmV3IFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZShbXG4gICAgXCIwIDAgKiAqIDEtNVwiLFxuICBdKTtcblxuICAvKipcbiAgICogQXQgMDA6MDAgb24gTW9uZGF5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBXRUVLTFkgPSBuZXcgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlKFtcbiAgICBcIjAgMCAqICogMVwiLFxuICBdKTtcblxuICAvKipcbiAgICogQXQgMDA6MDAgb24gZGF5LW9mLW1vbnRoIDEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1PTlRITFkgPSBuZXcgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlKFtcbiAgICBcIjAgMCAxICogKlwiLFxuICBdKTtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgc2NoZWR1bGUgZnJvbSBhIHJhdyBjcm9uIGV4cHJlc3Npb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4cHJlc3Npb25zKGNyb246IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIG5ldyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUoY3Jvbik7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjcm9uOiBzdHJpbmdbXSkge31cbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRheXMgdG8gbWludXRlcy5cbiAqL1xuZnVuY3Rpb24gZGF5c1RvTWludXRlcyhkYXlzOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gZGF5cyAqIDE0NDA7XG59XG5cbi8qKlxuICogQ29udmVydCBkYXlzIHRvIHNlY29uZHMuXG4gKi9cbmZ1bmN0aW9uIGRheXNUb1NlY29uZHMoZGF5czogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGRheXMgKiA4NjQwMDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRheXMgdG8gbWlsbGlzZWNvbmRzLlxuICovXG5mdW5jdGlvbiBkYXlzVG9NaWxsaXNlY29uZHMoZGF5czogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGRheXMgKiA4NjQwMDAwMDtcbn1cbiJdfQ==
|
package/lib/javascript/yarnrc.js
CHANGED
|
@@ -153,5 +153,5 @@ class Yarnrc extends component_1.Component {
|
|
|
153
153
|
}
|
|
154
154
|
exports.Yarnrc = Yarnrc;
|
|
155
155
|
_a = JSII_RTTI_SYMBOL_1;
|
|
156
|
-
Yarnrc[_a] = { fqn: "projen.javascript.Yarnrc", version: "0.
|
|
156
|
+
Yarnrc[_a] = { fqn: "projen.javascript.Yarnrc", version: "0.99.0" };
|
|
157
157
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFybnJjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQveWFybnJjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLDRDQUF5QztBQUV6QyxrQ0FBbUM7QUFFbkMsZ0VBQWdFO0FBQ2hFLElBQVksb0JBS1g7QUFMRCxXQUFZLG9CQUFvQjtJQUM5Qix1Q0FBZSxDQUFBO0lBQ2YseUNBQWlCLENBQUE7SUFDakIsdUNBQWUsQ0FBQTtJQUNmLHlDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQUsvQjtBQUVELHdFQUF3RTtBQUN4RSxJQUFZLDRCQUlYO0FBSkQsV0FBWSw0QkFBNEI7SUFDdEMsMkNBQVcsQ0FBQTtJQUNYLDJDQUFXLENBQUE7SUFDWCxpREFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsNEJBQTRCLDRDQUE1Qiw0QkFBNEIsUUFJdkM7QUFFRCxxRUFBcUU7QUFDckUsSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLG1DQUFhLENBQUE7SUFDYix5Q0FBbUIsQ0FBQTtJQUNuQixxQ0FBZSxDQUFBO0lBQ2YseUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLGtCQUFrQixrQ0FBbEIsa0JBQWtCLFFBSzdCO0FBc0JELGdFQUFnRTtBQUNoRSxJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDN0Isb0RBQTZCLENBQUE7SUFDN0Isb0NBQWEsQ0FBQTtJQUNiLGdEQUF5QixDQUFBO0FBQzNCLENBQUMsRUFKVyxtQkFBbUIsbUNBQW5CLG1CQUFtQixRQUk5QjtBQUVELHNEQUFzRDtBQUN0RCxJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsaUNBQW1CLENBQUE7SUFDbkIsaURBQW1DLENBQUE7SUFDbkMsbURBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQUVELDBEQUEw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QUNILENBQUM7SUFDSCxDQUFDOztBQXBGSCx3QkFxRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBZYW1sRmlsZSB9IGZyb20gXCIuLi95YW1sXCI7XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2NoZWNrc3VtQmVoYXZpb3IgKi9cbmV4cG9ydCBlbnVtIFlhcm5DaGVja3N1bUJlaGF2aW9yIHtcbiAgVEhST1cgPSBcInRocm93XCIsXG4gIFVQREFURSA9IFwidXBkYXRlXCIsXG4gIFJFU0VUID0gXCJyZXNldFwiLFxuICBJR05PUkUgPSBcImlnbm9yZVwiLFxufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNkZWZhdWx0U2VtdmVyUmFuZ2VQcmVmaXggKi9cbmV4cG9ydCBlbnVtIFlhcm5EZWZhdWx0U2VtdmVyUmFuZ2VQcmVmaXgge1xuICBDQVJFVCA9IFwiXlwiLFxuICBUSUxERSA9IFwiflwiLFxuICBFTVBUWV9TVFJJTkcgPSBcIlwiLFxufVxuXG4vKiogaHR0cHM6Ly92My55YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNsb2dGaWx0ZXJzLjAubGV2ZWwgKi9cbmV4cG9ydCBlbnVtIFlhcm5Mb2dGaWx0ZXJMZXZlbCB7XG4gIElORk8gPSBcImluZm9cIixcbiAgV0FSTklORyA9IFwid2FybmluZ1wiLFxuICBFUlJPUiA9IFwiZXJyb3JcIixcbiAgRElTQ0FSRCA9IFwiZGlzY2FyZFwiLFxufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNsb2dGaWx0ZXJzICovXG5leHBvcnQgaW50ZXJmYWNlIFlhcm5Mb2dGaWx0ZXIge1xuICByZWFkb25seSBjb2RlPzogc3RyaW5nO1xuICByZWFkb25seSB0ZXh0Pzogc3RyaW5nO1xuICByZWFkb25seSBsZXZlbD86IFlhcm5Mb2dGaWx0ZXJMZXZlbDtcbiAgcmVhZG9ubHkgcGF0dGVybj86IHN0cmluZztcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbmV0d29ya1NldHRpbmdzICovXG5leHBvcnQgaW50ZXJmYWNlIFlhcm5OZXR3b3JrU2V0dGluZyB7XG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSBodHRwc0NhRmlsZVBhdGggaW4gWWFybiB2NCBhbmQgbmV3ZXIgKi9cbiAgcmVhZG9ubHkgY2FGaWxlUGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgaHR0cHNDYUZpbGVQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBlbmFibGVOZXR3b3JrPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaHR0cFByb3h5Pzogc3RyaW5nO1xuICByZWFkb25seSBodHRwc1Byb3h5Pzogc3RyaW5nO1xuICByZWFkb25seSBodHRwc0tleUZpbGVQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBodHRwc0NlcnRGaWxlUGF0aD86IHN0cmluZztcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbm1Ib2lzdGluZ0xpbWl0cyAqL1xuZXhwb3J0IGVudW0gWWFybk5tSG9pc3RpbmdMaW1pdCB7XG4gIERFUEVOREVOQ0lFUyA9IFwiZGVwZW5kZW5jaWVzXCIsXG4gIE5PTkUgPSBcIm5vbmVcIixcbiAgV09SS1NQQUNFUyA9IFwid29ya3NwYWNlc1wiLFxufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNubU1vZGUgKi9cbmV4cG9ydCBlbnVtIFlhcm5ObU1vZGUge1xuICBDTEFTU0lDID0gXCJjbGFzc2ljXCIsXG4gIEhBUkRMSU5LU19MT0NBTCA9IFwiaGFyZGxpbmtzLWxvY2FsXCIsXG4gIEhBUkRMSU5LU19HTE9CQUwgPSBcImhhcmRsaW5rcy1nbG9iYWxcIixcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbm9kZUxpbmtlciAqL1xuZXhwb3J0IGVudW0gWWFybk5vZGVMaW5rZXIge1xuICBQTlAgPSBcInBucFwiLFxuICBQTlBNID0gXCJwbnBtXCIsXG4gIE5PREVfTU9EVUxFUyA9IFwibm9kZS1tb2R1bGVzXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVB1Ymxpc2hBY2Nlc3MgKi9cbmV4cG9ydCBlbnVtIFlhcm5OcG1QdWJsaXNoQWNjZXNzIHtcbiAgUFVCTElDID0gXCJwdWJsaWNcIixcbiAgUkVTVFJJQ1RFRCA9IFwicmVzdHJpY3RlZFwiLFxufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1SZWdpc3RyaWVzICovXG5leHBvcnQgaW50ZXJmYWNlIFlhcm5OcG1SZWdpc3RyeSB7XG4gIHJlYWRvbmx5IG5wbUFsd2F5c0F1dGg/OiBib29sZWFuO1xuICByZWFkb25seSBucG1BdXRoSWRlbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5wbUF1dGhUb2tlbj86IHN0cmluZztcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbnBtU2NvcGVzICovXG5leHBvcnQgaW50ZXJmYWNlIFlhcm5OcG1TY29wZSB7XG4gIHJlYWRvbmx5IG5wbVB1Ymxpc2hSZWdpc3RyeT86IHN0cmluZztcbiAgcmVhZG9ubHkgbnBtUmVnaXN0cnlTZXJ2ZXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5wbUFsd2F5c0F1dGg/OiBib29sZWFuO1xuICByZWFkb25seSBucG1BdXRoSWRlbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5wbUF1dGhUb2tlbj86IHN0cmluZztcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcGFja2FnZUV4dGVuc2lvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgWWFyblBlZXJEZXBlbmRlbmN5TWV0YSB7XG4gIHJlYWRvbmx5IG9wdGlvbmFsPzogYm9vbGVhbjtcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcGFja2FnZUV4dGVuc2lvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgWWFyblBhY2thZ2VFeHRlbnNpb24ge1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICByZWFkb25seSBwZWVyRGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZG9ubHkgcGVlckRlcGVuZGVuY2llc01ldGE/OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIFJlY29yZDxzdHJpbmcsIFlhcm5QZWVyRGVwZW5kZW5jeU1ldGE+XG4gID47XG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3BucEZhbGxiYWNrTW9kZSAqL1xuZXhwb3J0IGVudW0gWWFyblBucEZhbGxiYWNrTW9kZSB7XG4gIE5PTkUgPSBcIm5vbmVcIixcbiAgREVQRU5ERU5DSUVTX09OTFkgPSBcImRlcGVuZGVuY2llcy1vbmx5XCIsXG4gIEFMTCA9IFwiYWxsXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3BucE1vZGUgKi9cbmV4cG9ydCBlbnVtIFlhcm5QbnBNb2RlIHtcbiAgU1RSSUNUID0gXCJzdHJpY3RcIixcbiAgTE9PU0UgPSBcImxvb3NlXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3Byb2dyZXNzQmFyU3R5bGUgKi9cbmV4cG9ydCBlbnVtIFlhcm5Qcm9ncmVzc0JhclN0eWxlIHtcbiAgUEFUUklDSyA9IFwicGF0cmlja1wiLFxuICBTSU1CQSA9IFwic2ltYmFcIixcbiAgSkFDSyA9IFwiamFja1wiLFxuICBIT0dTRkFUSEVSID0gXCJob2dzZmF0aGVyXCIsXG4gIERFRkFVTFQgPSBcImRlZmF1bHRcIixcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBZYXJuU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyB7XG4gIHJlYWRvbmx5IG9zPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IGNwdT86IHN0cmluZ1tdO1xuICByZWFkb25seSBsaWJjPzogc3RyaW5nW107XG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2NhY2hlTWlncmF0aW9uTW9kZSAqL1xuZXhwb3J0IGVudW0gWWFybkNhY2hlTWlncmF0aW9uTW9kZSB7XG4gIFJFUVVJUkVEX09OTFkgPSBcInJlcXVpZWQtb25seVwiLFxuICBNQVRDSF9TUEVDID0gXCJtYXRjaC1zcGVjXCIsXG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3dpbkxpbmtUeXBlICovXG5leHBvcnQgZW51bSBZYXJuV2luTGlua1R5cGUge1xuICBKVU5DVElPTlMgPSBcImp1bmN0aW9uc1wiLFxuICBTWU1MSU5LUyA9IFwic3ltbGlua3NcIixcbn1cblxuZXhwb3J0IGVudW0gWWFybldvcmtlclBvb2xNb2RlIHtcbiAgQVNZTkMgPSBcImFzeW5jXCIsXG4gIFdPUktFUlMgPSBcIndvcmtlcnNcIixcbn1cblxuLyoqIENvbmZpZ3VyYXRpb24gZm9yIC55YXJucmMueW1sIGluIFlhcm4gQmVycnkgdjQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgWWFybnJjT3B0aW9ucyB7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2NhY2hlRm9sZGVyICovXG4gIHJlYWRvbmx5IGNhY2hlRm9sZGVyPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNjYWNoZU1pZ3JhdGlvbk1vZGUgKi9cbiAgcmVhZG9ubHkgY2FjaGVNaWdyYXRpb25Nb2RlPzogWWFybkNhY2hlTWlncmF0aW9uTW9kZTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaHR0cHNDYUZpbGVQYXRoICovXG4gIHJlYWRvbmx5IGh0dHBzQ2FGaWxlUGF0aD86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY2hhbmdlc2V0QmFzZVJlZnMgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc2V0QmFzZVJlZnM/OiBzdHJpbmdbXTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY2hhbmdlc2V0SWdub3JlUGF0dGVybnMgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc2V0SWdub3JlUGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY2hlY2tzdW1CZWhhdmlvciAqL1xuICByZWFkb25seSBjaGVja3N1bUJlaGF2aW9yPzogWWFybkNoZWNrc3VtQmVoYXZpb3I7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2Nsb25lQ29uY3VycmVuY3kgKi9cbiAgcmVhZG9ubHkgY2xvbmVDb25jdXJyZW5jeT86IG51bWJlcjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY29tcHJlc3Npb25MZXZlbCAqL1xuICByZWFkb25seSBjb21wcmVzc2lvbkxldmVsPzogbnVtYmVyIHwgc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNjb25zdHJhaW50c1BhdGggKi9cbiAgcmVhZG9ubHkgY29uc3RyYWludHNQYXRoPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNkZWZhdWx0TGFuZ3VhZ2VOYW1lICovXG4gIHJlYWRvbmx5IGRlZmF1bHRMYW5ndWFnZU5hbWU/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2RlZmF1bHRQcm90b2NvbCAqL1xuICByZWFkb25seSBkZWZhdWx0UHJvdG9jb2w/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2RlZmF1bHRTZW12ZXJSYW5nZVByZWZpeCAqL1xuICByZWFkb25seSBkZWZhdWx0U2VtdmVyUmFuZ2VQcmVmaXg/OiBZYXJuRGVmYXVsdFNlbXZlclJhbmdlUHJlZml4O1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNkZWZlcnJlZFZlcnNpb25Gb2xkZXIgKi9cbiAgcmVhZG9ubHkgZGVmZXJyZWRWZXJzaW9uRm9sZGVyPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVDb2xvcnMgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQ29sb3JzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlQ29uc3RyYWludHNDaGVjayAqL1xuICByZWFkb25seSBlbmFibGVDb25zdHJhaW50c0NoZWNrPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlR2xvYmFsQ2FjaGUgKi9cbiAgcmVhZG9ubHkgZW5hYmxlR2xvYmFsQ2FjaGU/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVIYXJkZW5lZE1vZGUgKi9cbiAgcmVhZG9ubHkgZW5hYmxlSGFyZGVuZWRNb2RlPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlSHlwZXJsaW5rcyAqL1xuICByZWFkb25seSBlbmFibGVIeXBlcmxpbmtzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlSW1tdXRhYmxlQ2FjaGUgKi9cbiAgcmVhZG9ubHkgZW5hYmxlSW1tdXRhYmxlQ2FjaGU/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVJbW11dGFibGVJbnN0YWxscyAqL1xuICByZWFkb25seSBlbmFibGVJbW11dGFibGVJbnN0YWxscz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZUlubGluZUJ1aWxkcyAqL1xuICByZWFkb25seSBlbmFibGVJbmxpbmVCdWlsZHM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVJbmxpbmVIdW5rcyAqL1xuICByZWFkb25seSBlbmFibGVJbmxpbmVIdW5rcz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZU1lc3NhZ2VOYW1lcyAqL1xuICByZWFkb25seSBlbmFibGVNZXNzYWdlTmFtZXM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVNaXJyb3IgKi9cbiAgcmVhZG9ubHkgZW5hYmxlTWlycm9yPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlTmV0d29yayAqL1xuICByZWFkb25seSBlbmFibGVOZXR3b3JrPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlT2ZmbGluZU1vZGUgKi9cbiAgcmVhZG9ubHkgZW5hYmxlT2ZmbGluZU1vZGU/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVQcm9ncmVzc0JhcnMgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUHJvZ3Jlc3NCYXJzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlU2NyaXB0cyAqL1xuICByZWFkb25seSBlbmFibGVTY3JpcHRzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlU3RyaWN0U3NsICovXG4gIHJlYWRvbmx5IGVuYWJsZVN0cmljdFNzbD86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZVRlbGVtZXRyeSAqL1xuICByZWFkb25seSBlbmFibGVUZWxlbWV0cnk/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVUaW1lcnMgKi9cbiAgcmVhZG9ubHkgZW5hYmxlVGltZXJzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlVHJhbnNwYXJlbnRXb3Jrc3BhY2VzICovXG4gIHJlYWRvbmx5IGVuYWJsZVRyYW5zcGFyZW50V29ya3NwYWNlcz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2dsb2JhbEZvbGRlciAqL1xuICByZWFkb25seSBnbG9iYWxGb2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2h0dHBQcm94eSAqL1xuICByZWFkb25seSBodHRwUHJveHk/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2h0dHBSZXRyeSAqL1xuICByZWFkb25seSBodHRwUmV0cnk/OiBudW1iZXI7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2h0dHBUaW1lb3V0ICovXG4gIHJlYWRvbmx5IGh0dHBUaW1lb3V0PzogbnVtYmVyO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNodHRwc0NlcnRGaWxlUGF0aCAqL1xuICByZWFkb25seSBodHRwc0NlcnRGaWxlUGF0aD86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaHR0cHNLZXlGaWxlUGF0aCAqL1xuICByZWFkb25seSBodHRwc0tleUZpbGVQYXRoPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNodHRwc1Byb3h5ICovXG4gIHJlYWRvbmx5IGh0dHBzUHJveHk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBodHRwczovL3YzLnlhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2lnbm9yZUN3ZFxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAtIHJlbW92ZWQgaW4gWWFybiB2NCBhbmQgbmV3ZXJcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUN3ZD86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2lnbm9yZVBhdGggKi9cbiAgcmVhZG9ubHkgaWdub3JlUGF0aD86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2ltbXV0YWJsZVBhdHRlcm5zICovXG4gIHJlYWRvbmx5IGltbXV0YWJsZVBhdHRlcm5zPzogc3RyaW5nW107XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2luaXRTY29wZSAqL1xuICByZWFkb25seSBpbml0U2NvcGU/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2luaXRGaWVsZHMgKi9cbiAgcmVhZG9ubHkgaW5pdEZpZWxkcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2luamVjdEVudmlyb25tZW50RmlsZXMgKi9cbiAgcmVhZG9ubHkgaW5qZWN0RW52aXJvbm1lbnRGaWxlcz86IHN0cmluZ1tdO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNpbnN0YWxsU3RhdGVQYXRoICovXG4gIHJlYWRvbmx5IGluc3RhbGxTdGF0ZVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2xvZ0ZpbHRlcnMgKi9cbiAgcmVhZG9ubHkgbG9nRmlsdGVycz86IFlhcm5Mb2dGaWx0ZXJbXTtcbiAgLyoqXG4gICAqIGh0dHBzOi8vdjMueWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbG9ja2ZpbGVGaWxlbmFtZVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAtIHJlbW92ZWQgaW4gWWFybiB2NCBhbmQgbmV3ZXJcbiAgICovXG4gIHJlYWRvbmx5IGxvY2tmaWxlRmlsZW5hbWU/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25ldHdvcmtDb25jdXJyZW5jeSAqL1xuICByZWFkb25seSBuZXR3b3JrQ29uY3VycmVuY3k/OiBudW1iZXI7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25ldHdvcmtTZXR0aW5ncyAqL1xuICByZWFkb25seSBuZXR3b3JrU2V0dGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBZYXJuTmV0d29ya1NldHRpbmc+O1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNubUhvaXN0aW5nTGltaXRzICovXG4gIHJlYWRvbmx5IG5tSG9pc3RpbmdMaW1pdHM/OiBZYXJuTm1Ib2lzdGluZ0xpbWl0O1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNubVNlbGZSZWZlcmVuY2VzICovXG4gIHJlYWRvbmx5IG5tU2VsZlJlZmVyZW5jZXM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNubU1vZGUgKi9cbiAgcmVhZG9ubHkgbm1Nb2RlPzogWWFybk5tTW9kZTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbm9kZUxpbmtlciAqL1xuICByZWFkb25seSBub2RlTGlua2VyPzogWWFybk5vZGVMaW5rZXI7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3dpbkxpbmtUeXBlICovXG4gIHJlYWRvbmx5IHdpbkxpbmtUeXBlPzogWWFybldpbkxpbmtUeXBlO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1BbHdheXNBdXRoICovXG4gIHJlYWRvbmx5IG5wbUFsd2F5c0F1dGg/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1BdWRpdFJlZ2lzdHJ5ICovXG4gIHJlYWRvbmx5IG5wbUF1ZGl0UmVnaXN0cnk/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbUF1dGhJZGVudCAqL1xuICByZWFkb25seSBucG1BdXRoSWRlbnQ/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbUF1dGhUb2tlbiAqL1xuICByZWFkb25seSBucG1BdXRoVG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVB1Ymxpc2hBY2Nlc3MgKi9cbiAgcmVhZG9ubHkgbnBtUHVibGlzaEFjY2Vzcz86IFlhcm5OcG1QdWJsaXNoQWNjZXNzO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1BdWRpdEV4Y2x1ZGVQYWNrYWdlcyAqL1xuICByZWFkb25seSBucG1BdWRpdEV4Y2x1ZGVQYWNrYWdlcz86IHN0cmluZ1tdO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1BdWRpdElnbm9yZUFkdmlzb3JpZXMgKi9cbiAgcmVhZG9ubHkgbnBtQXVkaXRJZ25vcmVBZHZpc29yaWVzPzogc3RyaW5nW107XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVB1Ymxpc2hSZWdpc3RyeSAqL1xuICByZWFkb25seSBucG1QdWJsaXNoUmVnaXN0cnk/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVJlZ2lzdHJpZXMgKi9cbiAgcmVhZG9ubHkgbnBtUmVnaXN0cmllcz86IFJlY29yZDxzdHJpbmcsIFlhcm5OcG1SZWdpc3RyeT47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVJlZ2lzdHJ5U2VydmVyICovXG4gIHJlYWRvbmx5IG5wbVJlZ2lzdHJ5U2VydmVyPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1TY29wZXMgKi9cbiAgcmVhZG9ubHkgbnBtU2NvcGVzPzogUmVjb3JkPHN0cmluZywgWWFybk5wbVNjb3BlPjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcGFja2FnZUV4dGVuc2lvbnMgKi9cbiAgcmVhZG9ubHkgcGFja2FnZUV4dGVuc2lvbnM/OiBSZWNvcmQ8c3RyaW5nLCBZYXJuUGFja2FnZUV4dGVuc2lvbj47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3BhdGNoRm9sZGVyICovXG4gIHJlYWRvbmx5IHBhdGNoRm9sZGVyPzogc3RyaW5nO1xuICAvKipcbiAgICogaHR0cHM6Ly92My55YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwbnBEYXRhUGF0aFxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAtIHJlbW92ZWQgaW4gWWFybiB2NCBhbmQgbmV3ZXJcbiAgICovXG4gIHJlYWRvbmx5IHBucERhdGFQYXRoPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwbnBFbmFibGVFc21Mb2FkZXIgKi9cbiAgcmVhZG9ubHkgcG5wRW5hYmxlRXNtTG9hZGVyPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcG5wRW5hYmxlSW5saW5pbmcgKi9cbiAgcmVhZG9ubHkgcG5wRW5hYmxlSW5saW5pbmc/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwbnBGYWxsYmFja01vZGUgKi9cbiAgcmVhZG9ubHkgcG5wRmFsbGJhY2tNb2RlPzogWWFyblBucEZhbGxiYWNrTW9kZTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcG5wSWdub3JlUGF0dGVybnMgKi9cbiAgcmVhZG9ubHkgcG5wSWdub3JlUGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcG5wTW9kZSAqL1xuICByZWFkb25seSBwbnBNb2RlPzogWWFyblBucE1vZGU7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3BucFNoZWJhbmcgKi9cbiAgcmVhZG9ubHkgcG5wU2hlYmFuZz86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcG5wVW5wbHVnZ2VkRm9sZGVyICovXG4gIHJlYWRvbmx5IHBucFVucGx1Z2dlZEZvbGRlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIGh0dHBzOi8vdjMueWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcHJlZmVyQWdncmVnYXRlQ2FjaGVJbmZvXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIC0gcmVtb3ZlZCBpbiBZYXJuIHY0IGFuZCBuZXdlclxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVyQWdncmVnYXRlQ2FjaGVJbmZvPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcHJlZmVyRGVmZXJyZWRWZXJzaW9ucyAqL1xuICByZWFkb25seSBwcmVmZXJEZWZlcnJlZFZlcnNpb25zPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcHJlZmVySW50ZXJhY3RpdmUgKi9cbiAgcmVhZG9ubHkgcHJlZmVySW50ZXJhY3RpdmU/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwcmVmZXJSZXVzZSAqL1xuICByZWFkb25seSBwcmVmZXJSZXVzZT86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3ByZWZlclRydW5jYXRlZExpbmVzICovXG4gIHJlYWRvbmx5IHByZWZlclRydW5jYXRlZExpbmVzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcHJvZ3Jlc3NCYXJTdHlsZSAqL1xuICByZWFkb25seSBwcm9ncmVzc0JhclN0eWxlPzogWWFyblByb2dyZXNzQmFyU3R5bGU7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3JjRmlsZW5hbWUgKi9cbiAgcmVhZG9ubHkgcmNGaWxlbmFtZT86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyAqL1xuICByZWFkb25seSBzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzPzogWWFyblN1cHBvcnRlZEFyY2hpdGVjdHVyZXM7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3Rhc2tQb29sQ29uY3VycmVuY3kgKi9cbiAgcmVhZG9ubHkgdGFza1Bvb2xDb25jdXJyZW5jeT86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjd29ya2VyUG9vbE1vZGUgKi9cbiAgcmVhZG9ubHkgd29ya2VyUG9vbE1vZGU/OiBZYXJuV29ya2VyUG9vbE1vZGU7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3RlbGVtZXRyeUludGVydmFsICovXG4gIHJlYWRvbmx5IHRlbGVtZXRyeUludGVydmFsPzogbnVtYmVyO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyN0ZWxlbWV0cnlVc2VySWQgKi9cbiAgcmVhZG9ubHkgdGVsZW1ldHJ5VXNlcklkPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyN0c0VuYWJsZUF1dG9UeXBlcyAqL1xuICByZWFkb25seSB0c0VuYWJsZUF1dG9UeXBlcz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3Vuc2FmZUh0dHBXaGl0ZWxpc3QgKi9cbiAgcmVhZG9ubHkgdW5zYWZlSHR0cFdoaXRlbGlzdD86IHN0cmluZ1tdO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyN2aXJ0dWFsRm9sZGVyICovXG4gIHJlYWRvbmx5IHZpcnR1YWxGb2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3lhcm5QYXRoICovXG4gIHJlYWRvbmx5IHlhcm5QYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgWWFybnJjIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgdmVyc2lvbjogc3RyaW5nLCBvcHRpb25zOiBZYXJucmNPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMudmFsaWRhdGVPcHRpb25zRm9yVmVyc2lvbihzZW12ZXIubWFqb3IodmVyc2lvbiksIG9wdGlvbnMpO1xuICAgIHRoaXMudXBkYXRlR2l0QXR0cmlidXRlcygpO1xuXG4gICAgbmV3IFlhbWxGaWxlKHByb2plY3QsIFwiLnlhcm5yYy55bWxcIiwge1xuICAgICAgb2JqOiBvcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVHaXRBdHRyaWJ1dGVzKCkge1xuICAgIGNvbnN0IHsgcHJvamVjdCB9ID0gdGhpcztcblxuICAgIHByb2plY3QuZ2l0YXR0cmlidXRlcy5hZGRBdHRyaWJ1dGVzKFwiLy55YXJuLyoqXCIsIFwibGluZ3Vpc3QtdmVuZG9yZWRcIik7XG4gICAgcHJvamVjdC5naXRhdHRyaWJ1dGVzLmFkZEF0dHJpYnV0ZXMoXCIvLnlhcm4vcmVsZWFzZXMvKlwiLCBcImJpbmFyeVwiKTtcbiAgICBwcm9qZWN0LmdpdGF0dHJpYnV0ZXMuYWRkQXR0cmlidXRlcyhcIi8ueWFybi9wbHVnaW5zLyoqLypcIiwgXCJiaW5hcnlcIik7XG4gICAgcHJvamVjdC5naXRhdHRyaWJ1dGVzLmFkZEF0dHJpYnV0ZXMoXG4gICAgICBcIi8ucG5wLipcIixcbiAgICAgIFwiYmluYXJ5XCIsXG4gICAgICBcImxpbmd1aXN0LXZlbmRvcmVkXCJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9wdGlvbnNGb3JWZXJzaW9uKFxuICAgIG1ham9yVmVyc2lvbjogbnVtYmVyLFxuICAgIG9wdGlvbnM6IFlhcm5yY09wdGlvbnNcbiAgKSB7XG4gICAgY29uc3QgcmVtb3ZlZEluVjQ6IEFycmF5PGtleW9mIFlhcm5yY09wdGlvbnM+ID0gW1xuICAgICAgXCJpZ25vcmVDd2RcIixcbiAgICAgIFwibG9ja2ZpbGVGaWxlbmFtZVwiLFxuICAgICAgXCJwbnBEYXRhUGF0aFwiLFxuICAgICAgXCJwcmVmZXJBZ2dyZWdhdGVDYWNoZUluZm9cIixcbiAgICBdO1xuICAgIGNvbnN0IG5ld0luVjQ6IEFycmF5PGtleW9mIFlhcm5yY09wdGlvbnM+ID0gW1xuICAgICAgXCJjYWNoZU1pZ3JhdGlvbk1vZGVcIixcbiAgICAgIFwiaHR0cHNDYUZpbGVQYXRoXCIsXG4gICAgICBcImVuYWJsZUNvbnN0cmFpbnRzQ2hlY2tcIixcbiAgICAgIFwiZW5hYmxlSGFyZGVuZWRNb2RlXCIsXG4gICAgICBcImVuYWJsZUlubGluZUh1bmtzXCIsXG4gICAgICBcImVuYWJsZU9mZmxpbmVNb2RlXCIsXG4gICAgICBcImluamVjdEVudmlyb25tZW50RmlsZXNcIixcbiAgICAgIFwid2luTGlua1R5cGVcIixcbiAgICAgIFwicHJlZmVyUmV1c2VcIixcbiAgICAgIFwidGFza1Bvb2xDb25jdXJyZW5jeVwiLFxuICAgICAgXCJ3b3JrZXJQb29sTW9kZVwiLFxuICAgICAgXCJ0c0VuYWJsZUF1dG9UeXBlc1wiLFxuICAgIF07XG5cbiAgICBpZiAobWFqb3JWZXJzaW9uID49IDQpIHtcbiAgICAgIGNvbnN0IGludmFsaWRPcHRpb25zID0gT2JqZWN0LmtleXMob3B0aW9ucykuZmlsdGVyKChvcHRpb24pID0+XG4gICAgICAgIChyZW1vdmVkSW5WNCBhcyBzdHJpbmdbXSkuaW5jbHVkZXMob3B0aW9uKVxuICAgICAgKTtcblxuICAgICAgaWYgKGludmFsaWRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIG5vdCBhdmFpbGFibGUgaW4gWWFybiA+PSA0OiAke2ludmFsaWRPcHRpb25zLmpvaW4oXG4gICAgICAgICAgICBcIiwgXCJcbiAgICAgICAgICApfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW52YWxpZE9wdGlvbnMgPSBPYmplY3Qua2V5cyhvcHRpb25zKS5maWx0ZXIoKG9wdGlvbikgPT5cbiAgICAgICAgKG5ld0luVjQgYXMgc3RyaW5nW10pLmluY2x1ZGVzKG9wdGlvbilcbiAgICAgICk7XG5cbiAgICAgIGlmIChpbnZhbGlkT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBZYXJuIHY0IGFuZCBuZXdlcjogJHtpbnZhbGlkT3B0aW9ucy5qb2luKFxuICAgICAgICAgICAgXCIsIFwiXG4gICAgICAgICAgKX1gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucy5jaGVja3N1bUJlaGF2aW9yICYmXG4gICAgICAgIG9wdGlvbnMuY2hlY2tzdW1CZWhhdmlvciA9PT0gWWFybkNoZWNrc3VtQmVoYXZpb3IuUkVTRVRcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJUaGUgWWFybkNoZWNrc3VtQmVoYXZpb3IuUkVTRVQgaXMgb25seSBhdmFpbGFibGUgaW4gWWFybiB2NCBhbmQgbmV3ZXIuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/lib/json-patch.js
CHANGED
|
@@ -152,5 +152,5 @@ class JsonPatch {
|
|
|
152
152
|
}
|
|
153
153
|
exports.JsonPatch = JsonPatch;
|
|
154
154
|
_a = JSII_RTTI_SYMBOL_1;
|
|
155
|
-
JsonPatch[_a] = { fqn: "projen.JsonPatch", version: "0.
|
|
155
|
+
JsonPatch[_a] = { fqn: "projen.JsonPatch", version: "0.99.0" };
|
|
156
156
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1wYXRjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uLXBhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0ZBQWtGO0FBQ2xGLDJCQUEyQjtBQUMzQixxREFZeUI7QUFFekIsSUFBWSxtQkFTWDtBQVRELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsb0NBQWEsQ0FBQTtJQUNiOztPQUVHO0lBQ0gsOENBQXVCLENBQUE7QUFDekIsQ0FBQyxFQVRXLG1CQUFtQixtQ0FBbkIsbUJBQW1CLFFBUzlCO0FBRUQsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFdkU7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFhLFNBQVM7SUFDcEI7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQWEsRUFBRSxHQUFHLEdBQWdCO1FBQ3BELElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUEsNEJBQVUsRUFDdkIsUUFBUSxFQUNSLElBQUEsMkJBQVMsRUFBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUN2QyxDQUFDO1lBQ0YsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQzVCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFlBQVksZ0NBQWMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLHVCQUF1QixFQUFFLENBQUM7Z0JBQ3RFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBTSxDQUFDLENBQUM7Z0JBQ3pCLElBQUksNEJBQTRCLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO29CQUN6RCxJQUFJLGVBQWUsS0FBSyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDakQsT0FBTyxRQUFRLENBQUM7b0JBQ2xCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUN4QyxPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLEVBQUUsRUFBRSxLQUFLO1lBQ1QsSUFBSTtZQUNKLEtBQUs7U0FDc0IsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWTtRQUMvQixPQUFPLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQTRCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBWSxFQUFFLEtBQVU7UUFDNUMsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixFQUFFLEVBQUUsU0FBUztZQUNiLElBQUk7WUFDSixLQUFLO1NBQzBCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQVksRUFBRSxJQUFZO1FBQzNDLE9BQU8sSUFBSSxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQTBCLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDM0MsT0FBTyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBMEIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLElBQVksRUFDWixLQUFVLEVBQ1Ysa0JBQXVDLG1CQUFtQixDQUFDLElBQUk7UUFFL0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDMUIsRUFBRSxFQUFFLE1BQU07WUFDVixJQUFJO1lBQ0osS0FBSztTQUN1QixDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsNEJBQTRCLEVBQUU7WUFDekQsUUFBUSxFQUFFLEtBQUs7WUFDZixLQUFLLEVBQUUsZUFBZTtTQUN2QixDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQ25DLE9BQU8sSUFBQSxxQ0FBbUIsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBcUMsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUFHLENBQUM7SUFFN0Q7Ozs7T0FJRztJQUNJLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQzs7QUE5SEgsOEJBK0hDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2NkazhzLXRlYW0vY2RrOHMtY29yZS9ibG9iLzIueC9zcmMvanNvbi1wYXRjaC50c1xuLy8gdW5kZXIgQXBhY2hlIDIuMCBsaWNlbnNlXG5pbXBvcnQge1xuICBhcHBseVBhdGNoLFxuICBkZWVwQ2xvbmUsXG4gIE9wZXJhdGlvbixcbiAgQWRkT3BlcmF0aW9uLFxuICBSZW1vdmVPcGVyYXRpb24sXG4gIFJlcGxhY2VPcGVyYXRpb24sXG4gIE1vdmVPcGVyYXRpb24sXG4gIENvcHlPcGVyYXRpb24sXG4gIFRlc3RPcGVyYXRpb24sXG4gIGVzY2FwZVBhdGhDb21wb25lbnQsXG4gIEpzb25QYXRjaEVycm9yLFxufSBmcm9tIFwiZmFzdC1qc29uLXBhdGNoXCI7XG5cbmV4cG9ydCBlbnVtIFRlc3RGYWlsdXJlQmVoYXZpb3Ige1xuICAvKipcbiAgICogU2tpcCB0aGUgY3VycmVudCBwYXRjaCBvcGVyYXRpb24gYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb3BlcmF0aW9uLlxuICAgKi9cbiAgU0tJUCA9IFwic2tpcFwiLFxuICAvKipcbiAgICogRmFpbCB0aGUgd2hvbGUgZmlsZSBzeW50aGVzaXMuXG4gICAqL1xuICBGQUlMX1NZTlRIRVNJUyA9IFwiZmFpbFwiLFxufVxuXG5jb25zdCBURVNUX0ZBSUxVUkVfQkVIQVZJT1JfU1lNQk9MID0gU3ltYm9sLmZvcihcInRlc3RGYWlsdXJlQmVoYXZpb3JcIik7XG5cbi8qKlxuICogVXRpbGl0eSBmb3IgYXBwbHlpbmcgUkZDLTY5MDIgSlNPTi1QYXRjaCB0byBhIGRvY3VtZW50LlxuICpcbiAqIFVzZSB0aGUgdGhlIGBKc29uUGF0Y2guYXBwbHkoZG9jLCAuLi5vcHMpYCBmdW5jdGlvbiB0byBhcHBseSBhIHNldCBvZlxuICogb3BlcmF0aW9ucyB0byBhIEpTT04gZG9jdW1lbnQgYW5kIHJldHVybiB0aGUgcmVzdWx0LlxuICpcbiAqIE9wZXJhdGlvbnMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdGhlIGZhY3RvcnkgbWV0aG9kcyBgSnNvblBhdGNoLmFkZCgpYCxcbiAqIGBKc29uUGF0Y2gucmVtb3ZlKClgLCBldGMuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKmNvbnN0IG91dHB1dCA9IEpzb25QYXRjaC5hcHBseShpbnB1dCxcbiAqICBKc29uUGF0Y2gucmVwbGFjZSgnL3dvcmxkL2hpL3RoZXJlJywgJ2dvb2RieWUnKSxcbiAqICBKc29uUGF0Y2guYWRkKCcvd29ybGQvZm9vLycsICdib29tJyksXG4gKiAgSnNvblBhdGNoLnJlbW92ZSgnL2hlbGxvJykpO1xuICpcbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25QYXRjaCB7XG4gIC8qKlxuICAgKiBBcHBsaWVzIGEgc2V0IG9mIEpTT04tUGF0Y2ggKFJGQy02OTAyKSBvcGVyYXRpb25zIHRvIGBkb2N1bWVudGAgYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cbiAgICogQHBhcmFtIGRvY3VtZW50IFRoZSBkb2N1bWVudCB0byBwYXRjaFxuICAgKiBAcGFyYW0gb3BzIFRoZSBvcGVyYXRpb25zIHRvIGFwcGx5XG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgZG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXBwbHkoZG9jdW1lbnQ6IGFueSwgLi4ub3BzOiBKc29uUGF0Y2hbXSk6IGFueSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGFwcGx5UGF0Y2goXG4gICAgICAgIGRvY3VtZW50LFxuICAgICAgICBkZWVwQ2xvbmUob3BzLm1hcCgobykgPT4gby5fdG9Kc29uKCkpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXN1bHQubmV3RG9jdW1lbnQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBKc29uUGF0Y2hFcnJvciAmJiBlLm5hbWUgPT09IFwiVEVTVF9PUEVSQVRJT05fRkFJTEVEXCIpIHtcbiAgICAgICAgY29uc3Qgb3AgPSBvcHNbZS5pbmRleCFdO1xuICAgICAgICBpZiAoVEVTVF9GQUlMVVJFX0JFSEFWSU9SX1NZTUJPTCBpbiBvcCkge1xuICAgICAgICAgIGNvbnN0IGZhaWx1cmVCZWhhdmlvciA9IG9wW1RFU1RfRkFJTFVSRV9CRUhBVklPUl9TWU1CT0xdO1xuICAgICAgICAgIGlmIChmYWlsdXJlQmVoYXZpb3IgPT09IFRlc3RGYWlsdXJlQmVoYXZpb3IuU0tJUCkge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHZhbHVlIHRvIGFuIG9iamVjdCBvciBpbnNlcnRzIGl0IGludG8gYW4gYXJyYXkuIEluIHRoZSBjYXNlIG9mIGFuXG4gICAqIGFycmF5LCB0aGUgdmFsdWUgaXMgaW5zZXJ0ZWQgYmVmb3JlIHRoZSBnaXZlbiBpbmRleC4gVGhlIC0gY2hhcmFjdGVyIGNhbiBiZVxuICAgKiB1c2VkIGluc3RlYWQgb2YgYW4gaW5kZXggdG8gaW5zZXJ0IGF0IHRoZSBlbmQgb2YgYW4gYXJyYXkuXG4gICAqXG4gICAqIEBleGFtcGxlIEpzb25QYXRjaC5hZGQoJy9iaXNjdWl0cy8xJywgeyBcIm5hbWVcIjogXCJHaW5nZXIgTnV0XCIgfSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWRkKHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGNoKHtcbiAgICAgIG9wOiBcImFkZFwiLFxuICAgICAgcGF0aCxcbiAgICAgIHZhbHVlLFxuICAgIH0gc2F0aXNmaWVzIEFkZE9wZXJhdGlvbjxhbnk+KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgdmFsdWUgZnJvbSBhbiBvYmplY3Qgb3IgYXJyYXkuXG4gICAqXG4gICAqIEBleGFtcGxlIEpzb25QYXRjaC5yZW1vdmUoJy9iaXNjdWl0cycpXG4gICAqIEBleGFtcGxlIEpzb25QYXRjaC5yZW1vdmUoJy9iaXNjdWl0cy8wJylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVtb3ZlKHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGNoKHsgb3A6IFwicmVtb3ZlXCIsIHBhdGggfSBzYXRpc2ZpZXMgUmVtb3ZlT3BlcmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhIHZhbHVlLiBFcXVpdmFsZW50IHRvIGEg4oCccmVtb3Zl4oCdIGZvbGxvd2VkIGJ5IGFuIOKAnGFkZOKAnS5cbiAgICpcbiAgICogQGV4YW1wbGUgSnNvblBhdGNoLnJlcGxhY2UoJy9iaXNjdWl0cy8wL25hbWUnLCAnQ2hvY29sYXRlIERpZ2VzdGl2ZScpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlcGxhY2UocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0Y2goe1xuICAgICAgb3A6IFwicmVwbGFjZVwiLFxuICAgICAgcGF0aCxcbiAgICAgIHZhbHVlLFxuICAgIH0gc2F0aXNmaWVzIFJlcGxhY2VPcGVyYXRpb248YW55Pik7XG4gIH1cblxuICAvKipcbiAgICogQ29waWVzIGEgdmFsdWUgZnJvbSBvbmUgbG9jYXRpb24gdG8gYW5vdGhlciB3aXRoaW4gdGhlIEpTT04gZG9jdW1lbnQuIEJvdGhcbiAgICogZnJvbSBhbmQgcGF0aCBhcmUgSlNPTiBQb2ludGVycy5cbiAgICpcbiAgICogQGV4YW1wbGUgSnNvblBhdGNoLmNvcHkoJy9iaXNjdWl0cy8wJywgJy9iZXN0X2Jpc2N1aXQnKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb3B5KGZyb206IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0Y2goeyBvcDogXCJjb3B5XCIsIGZyb20sIHBhdGggfSBzYXRpc2ZpZXMgQ29weU9wZXJhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogTW92ZXMgYSB2YWx1ZSBmcm9tIG9uZSBsb2NhdGlvbiB0byB0aGUgb3RoZXIuIEJvdGggZnJvbSBhbmQgcGF0aCBhcmUgSlNPTiBQb2ludGVycy5cbiAgICpcbiAgICogQGV4YW1wbGUgSnNvblBhdGNoLm1vdmUoJy9iaXNjdWl0cycsICcvY29va2llcycpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1vdmUoZnJvbTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRjaCh7IG9wOiBcIm1vdmVcIiwgZnJvbSwgcGF0aCB9IHNhdGlzZmllcyBNb3ZlT3BlcmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyB0aGF0IHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgc2V0IGluIHRoZSBkb2N1bWVudC4gSWYgdGhlIHRlc3QgZmFpbHMsXG4gICAqIHRoZW4gdGhlIHBhdGNoIGFzIGEgd2hvbGUgc2hvdWxkIG5vdCBhcHBseS5cbiAgICpcbiAgICogQGV4YW1wbGUgSnNvblBhdGNoLnRlc3QoJy9iZXN0X2Jpc2N1aXQvbmFtZScsICdDaG9jbyBMZWlibml6JylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdGVzdChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueSxcbiAgICBmYWlsdXJlQmVoYXZpb3I6IFRlc3RGYWlsdXJlQmVoYXZpb3IgPSBUZXN0RmFpbHVyZUJlaGF2aW9yLlNLSVBcbiAgKSB7XG4gICAgY29uc3QgcGF0Y2ggPSBuZXcgSnNvblBhdGNoKHtcbiAgICAgIG9wOiBcInRlc3RcIixcbiAgICAgIHBhdGgsXG4gICAgICB2YWx1ZSxcbiAgICB9IHNhdGlzZmllcyBUZXN0T3BlcmF0aW9uPGFueT4pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwYXRjaCwgVEVTVF9GQUlMVVJFX0JFSEFWSU9SX1NZTUJPTCwge1xuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IGZhaWx1cmVCZWhhdmlvcixcbiAgICB9KTtcbiAgICByZXR1cm4gcGF0Y2g7XG4gIH1cblxuICAvKipcbiAgICogRXNjYXBlcyBhIGpzb24gcG9pbnRlciBwYXRoXG4gICAqIEBwYXJhbSBwYXRoIFRoZSByYXcgcG9pbnRlclxuICAgKiBAcmV0dXJuIHRoZSBFc2NhcGVkIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZXNjYXBlUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBlc2NhcGVQYXRoQ29tcG9uZW50KHBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG9wZXJhdGlvbjogT3BlcmF0aW9uKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSlNPTiBwYXRjaCBvcGVyYXRpb24uXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb247XG4gIH1cbn1cbiJdfQ==
|
package/lib/json.js
CHANGED
|
@@ -48,5 +48,5 @@ class JsonFile extends object_file_1.ObjectFile {
|
|
|
48
48
|
}
|
|
49
49
|
exports.JsonFile = JsonFile;
|
|
50
50
|
_a = JSII_RTTI_SYMBOL_1;
|
|
51
|
-
JsonFile[_a] = { fqn: "projen.JsonFile", version: "0.
|
|
51
|
+
JsonFile[_a] = { fqn: "projen.JsonFile", version: "0.99.0" };
|
|
52
52
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsK0NBQThEO0FBbUI5RDs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLHdCQUFVO0lBSXRDLFlBQVksS0FBaUIsRUFBRSxRQUFnQixFQUFFLE9BQXdCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQjtZQUNuQixPQUFPLENBQUMsYUFBYTtnQkFDckIsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztvQkFDdkMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTlDLHFGQUFxRjtRQUNyRixtRUFBbUU7UUFDbkUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixNQUFNLFNBQVMsR0FDYixPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQztZQUM1RCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDdEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQ2Ysc0NBQXNDLENBQ3ZDLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRVMsaUJBQWlCLENBQUMsUUFBbUI7UUFDN0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDNUMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDbEIsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O0FBckRILDRCQXNEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSVJlc29sdmVyIH0gZnJvbSBcIi4vZmlsZVwiO1xuaW1wb3J0IHsgT2JqZWN0RmlsZSwgT2JqZWN0RmlsZU9wdGlvbnMgfSBmcm9tIFwiLi9vYmplY3QtZmlsZVwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBKc29uRmlsZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkZpbGVPcHRpb25zIGV4dGVuZHMgT2JqZWN0RmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogQWRkcyBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbmV3bGluZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93IHRoZSB1c2Ugb2YgY29tbWVudHMgaW4gdGhpcyBmaWxlLlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlIGZvciAuanNvbiBmaWxlcywgdHJ1ZSBmb3IgLmpzb241IGFuZCAuanNvbmMgZmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93Q29tbWVudHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBKU09OIGZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBKc29uRmlsZSBleHRlbmRzIE9iamVjdEZpbGUge1xuICBwcml2YXRlIHJlYWRvbmx5IG5ld2xpbmU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHN1cHBvcnRzQ29tbWVudHM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IElDb25zdHJ1Y3QsIGZpbGVQYXRoOiBzdHJpbmcsIG9wdGlvbnM6IEpzb25GaWxlT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBmaWxlUGF0aCwgb3B0aW9ucyk7XG5cbiAgICB0aGlzLm5ld2xpbmUgPSBvcHRpb25zLm5ld2xpbmUgPz8gdHJ1ZTtcbiAgICB0aGlzLnN1cHBvcnRzQ29tbWVudHMgPVxuICAgICAgb3B0aW9ucy5hbGxvd0NvbW1lbnRzID8/XG4gICAgICAoZmlsZVBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChcImpzb241XCIpIHx8XG4gICAgICAgIGZpbGVQYXRoLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoXCJqc29uY1wiKSk7XG5cbiAgICAvLyBBZGQgbGluZ3Vpc3QtbGFuZ3VhZ2U9SlNPTi13aXRoLUNvbW1lbnRzIGF0dHJpYnV0ZSBmb3IgZmlsZXMgdGhhdCBzdXBwb3J0IGNvbW1lbnRzXG4gICAgLy8gVGhpcyBoZWxwcyBHaXRIdWIgcmVuZGVyIHRoZW0gY29ycmVjdGx5IHdpdGggc3ludGF4IGhpZ2hsaWdodGluZ1xuICAgIGlmICh0aGlzLnN1cHBvcnRzQ29tbWVudHMpIHtcbiAgICAgIGNvbnN0IGNvbW1pdHRlZCA9XG4gICAgICAgIG9wdGlvbnMuY29tbWl0dGVkID8/IHRoaXMucHJvamVjdC5jb21taXRHZW5lcmF0ZWQgPz8gdHJ1ZTtcbiAgICAgIGlmIChjb21taXR0ZWQpIHtcbiAgICAgICAgdGhpcy5wcm9qZWN0LmdpdGF0dHJpYnV0ZXMuYWRkQXR0cmlidXRlcyhcbiAgICAgICAgICBgLyR7dGhpcy5wYXRofWAsXG4gICAgICAgICAgXCJsaW5ndWlzdC1sYW5ndWFnZT1KU09OLXdpdGgtQ29tbWVudHNcIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5vYmopIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCJvYmpcIiBjYW5ub3QgYmUgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVDb250ZW50KHJlc29sdmVyOiBJUmVzb2x2ZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlci5zeW50aGVzaXplQ29udGVudChyZXNvbHZlcik7XG4gICAgaWYgKCFqc29uKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHNhbml0aXplZCA9IEpTT04ucGFyc2UoanNvbik7XG5cbiAgICBpZiAodGhpcy5tYXJrZXIgJiYgIXRoaXMuc3VwcG9ydHNDb21tZW50cykge1xuICAgICAgc2FuaXRpemVkW1wiLy9cIl0gPSB0aGlzLm1hcmtlcjtcbiAgICB9XG5cbiAgICBsZXQgY29udGVudCA9IEpTT04uc3RyaW5naWZ5KHNhbml0aXplZCwgdW5kZWZpbmVkLCAyKTtcbiAgICBpZiAodGhpcy5tYXJrZXIgJiYgdGhpcy5zdXBwb3J0c0NvbW1lbnRzKSB7XG4gICAgICBjb250ZW50ID0gYC8vICR7dGhpcy5tYXJrZXJ9XFxuJHtjb250ZW50fWA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmV3bGluZSkge1xuICAgICAgY29udGVudCArPSBcIlxcblwiO1xuICAgIH1cblxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG59XG4iXX0=
|
package/lib/license.js
CHANGED
|
@@ -36,5 +36,5 @@ class License extends file_1.FileBase {
|
|
|
36
36
|
}
|
|
37
37
|
exports.License = License;
|
|
38
38
|
_a = JSII_RTTI_SYMBOL_1;
|
|
39
|
-
License[_a] = { fqn: "projen.License", version: "0.
|
|
39
|
+
License[_a] = { fqn: "projen.License", version: "0.99.0" };
|
|
40
40
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9saWNlbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLGlDQUE2QztBQThCN0MsTUFBYSxPQUFRLFNBQVEsZUFBUTtJQUduQyxZQUFZLE9BQWdCLEVBQUUsT0FBdUI7UUFDbkQsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDeEIsTUFBTSxFQUFFLEtBQUs7WUFDYix5REFBeUQ7WUFDekQsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUUxQixNQUFNLFFBQVEsR0FBRyxHQUFHLFNBQVMsb0JBQW9CLElBQUksTUFBTSxDQUFDO1FBQzVELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQ1QsT0FBTyxDQUFDLGVBQWUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFFckMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFOUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFaEQsb0ZBQW9GO1FBQ3BGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE1BQU0sSUFBSSxLQUFLLENBQ2IsT0FBTyxJQUFJLG9EQUFvRCxDQUNoRSxDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRVMsaUJBQWlCLENBQUMsQ0FBWTtRQUN0QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQzs7QUF6Q0gsMEJBMENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBGaWxlQmFzZSwgSVJlc29sdmVyIH0gZnJvbSBcIi4vZmlsZVwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMaWNlbnNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMaWNlbnNlIHR5cGUgKFNQRFgpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZW4vcHJvamVuL3RyZWUvbWFpbi9saWNlbnNlLXRleHQgZm9yIGxpc3Qgb2Ygc3VwcG9ydGVkIGxpY2Vuc2VzXG4gICAqL1xuICByZWFkb25seSBzcGR4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvcHlyaWdodCBvd25lci5cbiAgICpcbiAgICogSWYgdGhlIGxpY2Vuc2UgdGV4dCBoYXMgJGNvcHlyaWdodF9vd25lciwgdGhpcyBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC1cbiAgICovXG4gIHJlYWRvbmx5IGNvcHlyaWdodE93bmVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJpb2Qgb2YgbGljZW5zZSAoZS5nLiBcIjE5OTgtMjAyM1wiKVxuICAgKlxuICAgKiBUaGUgc3RyaW5nIGAkY29weXJpZ2h0X3BlcmlvZGAgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoaXMgc3RyaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgeWVhciAoZS5nLiBcIjIwMjBcIilcbiAgICovXG4gIHJlYWRvbmx5IGNvcHlyaWdodFBlcmlvZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIExpY2Vuc2UgZXh0ZW5kcyBGaWxlQmFzZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IExpY2Vuc2VPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgXCJMSUNFTlNFXCIsIHtcbiAgICAgIG1hcmtlcjogZmFsc2UsXG4gICAgICAvLyBBbGxvdyB0aGUgbGljZW5zZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlcG9zaXRvcmllcy5cbiAgICAgIGNvbW1pdHRlZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNwZHggPSBvcHRpb25zLnNwZHg7XG5cbiAgICBjb25zdCB0ZXh0RmlsZSA9IGAke19fZGlybmFtZX0vLi4vbGljZW5zZS10ZXh0LyR7c3BkeH0udHh0YDtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGV4dEZpbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIGxpY2Vuc2UgJHtzcGR4fWApO1xuICAgIH1cblxuICAgIGNvbnN0IHllYXJzID1cbiAgICAgIG9wdGlvbnMuY29weXJpZ2h0UGVyaW9kID8/IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpO1xuICAgIGNvbnN0IG93bmVyID0gb3B0aW9ucy5jb3B5cmlnaHRPd25lcjtcblxuICAgIGxldCB0ZXh0ID0gZnMucmVhZEZpbGVTeW5jKHRleHRGaWxlLCBcInV0Zi04XCIpO1xuXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZShcIiRjb3B5cmlnaHRfcGVyaW9kXCIsIHllYXJzKTtcblxuICAgIC8vIGlmIHRoZSBsaWNlbnNlIHRleHQgaW5jbHVkZXMgJGNvcHlyaWdodF9vd25lciwgdGhlbiBgY29weXJpZ2h0T3duZXJgIGlzIHJlcXVpcmVkLlxuICAgIGlmICh0ZXh0LmluZGV4T2YoXCIkY29weXJpZ2h0X293bmVyXCIpICE9PSAtMSkge1xuICAgICAgaWYgKCFvd25lcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFRoZSAke3NwZHh9IGxpY2Vuc2UgcmVxdWlyZXMgXCJjb3B5cmlnaHRPd25lclwiIHRvIGJlIHNwZWNpZmllZGBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShcIiRjb3B5cmlnaHRfb3duZXJcIiwgb3duZXIpO1xuICAgIH1cblxuICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUNvbnRlbnQoXzogSVJlc29sdmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0O1xuICB9XG59XG4iXX0=
|
package/lib/logger.js
CHANGED
|
@@ -98,7 +98,7 @@ class Logger extends component_1.Component {
|
|
|
98
98
|
}
|
|
99
99
|
exports.Logger = Logger;
|
|
100
100
|
_a = JSII_RTTI_SYMBOL_1;
|
|
101
|
-
Logger[_a] = { fqn: "projen.Logger", version: "0.
|
|
101
|
+
Logger[_a] = { fqn: "projen.Logger", version: "0.99.0" };
|
|
102
102
|
/**
|
|
103
103
|
* Logging verbosity.
|
|
104
104
|
*/
|