projen 0.102.0 → 0.103.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/.jsii +1173 -1104
  2. package/README.md +23 -0
  3. package/lib/ai-instructions.js +2 -2
  4. package/lib/awscdk/auto-discover.js +6 -6
  5. package/lib/awscdk/awscdk-app-java.js +1 -1
  6. package/lib/awscdk/awscdk-app-py.js +1 -1
  7. package/lib/awscdk/awscdk-app-ts.js +1 -1
  8. package/lib/awscdk/awscdk-construct.js +1 -1
  9. package/lib/awscdk/awscdk-deps-java.js +1 -1
  10. package/lib/awscdk/awscdk-deps-js.js +1 -1
  11. package/lib/awscdk/awscdk-deps-py.js +1 -1
  12. package/lib/awscdk/awscdk-deps.js +1 -1
  13. package/lib/awscdk/cdk-config.d.ts +4 -0
  14. package/lib/awscdk/cdk-config.js +4 -4
  15. package/lib/awscdk/cdk-tasks.js +1 -1
  16. package/lib/awscdk/integration-test.d.ts +1 -0
  17. package/lib/awscdk/integration-test.js +38 -10
  18. package/lib/awscdk/lambda-extension.js +1 -1
  19. package/lib/awscdk/lambda-function.js +2 -2
  20. package/lib/build/build-workflow.js +4 -3
  21. package/lib/cdk/auto-discover-base.js +2 -2
  22. package/lib/cdk/construct-lib.js +1 -1
  23. package/lib/cdk/integration-test-base.js +17 -3
  24. package/lib/cdk/jsii-build.js +10 -4
  25. package/lib/cdk/jsii-docgen.js +1 -1
  26. package/lib/cdk/jsii-project.d.ts +2 -4
  27. package/lib/cdk/jsii-project.js +10 -11
  28. package/lib/cdk8s/auto-discover.js +2 -2
  29. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  30. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  31. package/lib/cdk8s/cdk8s-construct.js +1 -1
  32. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  33. package/lib/cdk8s/cdk8s-deps.js +1 -1
  34. package/lib/cdk8s/integration-test.js +3 -3
  35. package/lib/cdktf/cdktf-construct.js +1 -1
  36. package/lib/cdktn/cdktn-app-ts.js +1 -1
  37. package/lib/cdktn/cdktn-config.js +1 -1
  38. package/lib/cdktn/cdktn-construct.js +1 -1
  39. package/lib/cdktn/cdktn-deps.js +1 -1
  40. package/lib/cdktn/cdktn-tasks.js +1 -1
  41. package/lib/circleci/circleci.js +1 -1
  42. package/lib/cleanup.js +6 -33
  43. package/lib/cli/task-runtime.js +30 -8
  44. package/lib/clobber.js +11 -6
  45. package/lib/component.js +2 -2
  46. package/lib/dependencies.js +1 -1
  47. package/lib/dev-env.js +1 -1
  48. package/lib/docker-compose/docker-compose-service.js +1 -1
  49. package/lib/docker-compose/docker-compose.js +1 -1
  50. package/lib/file.js +1 -1
  51. package/lib/gitattributes.js +1 -1
  52. package/lib/github/actions-provider.js +1 -1
  53. package/lib/github/auto-approve.d.ts +2 -15
  54. package/lib/github/auto-approve.js +3 -4
  55. package/lib/github/auto-merge.js +1 -1
  56. package/lib/github/auto-queue.d.ts +2 -6
  57. package/lib/github/auto-queue.js +3 -3
  58. package/lib/github/dependabot.js +1 -1
  59. package/lib/github/dependency-review.d.ts +2 -12
  60. package/lib/github/dependency-review.js +3 -4
  61. package/lib/github/github-credentials.js +1 -1
  62. package/lib/github/github-project.js +1 -1
  63. package/lib/github/github.d.ts +26 -0
  64. package/lib/github/github.js +17 -2
  65. package/lib/github/merge-queue.js +1 -1
  66. package/lib/github/mergify.js +1 -1
  67. package/lib/github/pr-template.js +1 -1
  68. package/lib/github/private/util.d.ts +0 -2
  69. package/lib/github/private/util.js +1 -13
  70. package/lib/github/pull-request-backport.d.ts +2 -1
  71. package/lib/github/pull-request-backport.js +3 -3
  72. package/lib/github/pull-request-lint.d.ts +2 -15
  73. package/lib/github/pull-request-lint.js +4 -5
  74. package/lib/github/stale.d.ts +2 -15
  75. package/lib/github/stale.js +3 -4
  76. package/lib/github/task-workflow-job.js +4 -4
  77. package/lib/github/task-workflow.js +1 -1
  78. package/lib/github/workflow-actions.js +4 -3
  79. package/lib/github/workflow-jobs.js +1 -1
  80. package/lib/github/workflow-steps.js +1 -1
  81. package/lib/github/workflows.js +1 -1
  82. package/lib/gitlab/configuration.js +1 -1
  83. package/lib/gitlab/gitlab-configuration.js +1 -1
  84. package/lib/gitlab/nested-configuration.js +1 -1
  85. package/lib/gitpod.d.ts +6 -0
  86. package/lib/gitpod.js +2 -2
  87. package/lib/ignore-file.js +1 -1
  88. package/lib/ini.js +1 -1
  89. package/lib/java/java-project.js +1 -1
  90. package/lib/java/junit.js +1 -1
  91. package/lib/java/maven-compile.js +1 -1
  92. package/lib/java/maven-packaging.js +8 -3
  93. package/lib/java/maven-sample.js +1 -1
  94. package/lib/java/pom.js +2 -2
  95. package/lib/java/projenrc.js +13 -4
  96. package/lib/javascript/biome/biome.js +9 -4
  97. package/lib/javascript/bundler.d.ts +8 -0
  98. package/lib/javascript/bundler.js +13 -13
  99. package/lib/javascript/eslint.d.ts +7 -0
  100. package/lib/javascript/eslint.js +14 -11
  101. package/lib/javascript/jest.d.ts +8 -0
  102. package/lib/javascript/jest.js +17 -11
  103. package/lib/javascript/license-checker.js +1 -1
  104. package/lib/javascript/node-package.d.ts +1 -1
  105. package/lib/javascript/node-package.js +32 -15
  106. package/lib/javascript/node-project.js +38 -25
  107. package/lib/javascript/npm-config.js +1 -1
  108. package/lib/javascript/pnpm-workspace-config.js +2 -2
  109. package/lib/javascript/pnpm-workspace.js +1 -1
  110. package/lib/javascript/prettier.js +1 -1
  111. package/lib/javascript/projenrc.js +1 -1
  112. package/lib/javascript/typescript-config.js +2 -2
  113. package/lib/javascript/upgrade-dependencies.js +9 -6
  114. package/lib/javascript/yarnrc.js +1 -1
  115. package/lib/json-patch.js +1 -1
  116. package/lib/json.js +1 -1
  117. package/lib/license.js +1 -1
  118. package/lib/logger.js +1 -1
  119. package/lib/makefile.d.ts +2 -0
  120. package/lib/makefile.js +2 -2
  121. package/lib/object-file.js +1 -1
  122. package/lib/project-build.js +1 -1
  123. package/lib/project-tree.js +1 -1
  124. package/lib/project.d.ts +4 -0
  125. package/lib/project.js +2 -2
  126. package/lib/projects.js +1 -1
  127. package/lib/projenrc-json.js +1 -1
  128. package/lib/projenrc.js +1 -1
  129. package/lib/python/pip.js +1 -1
  130. package/lib/python/poetry.js +7 -4
  131. package/lib/python/projenrc.js +1 -1
  132. package/lib/python/pyproject-toml-file.js +1 -1
  133. package/lib/python/pytest-sample.js +1 -1
  134. package/lib/python/pytest.d.ts +5 -2
  135. package/lib/python/pytest.js +9 -8
  136. package/lib/python/python-project.js +1 -1
  137. package/lib/python/python-sample.js +1 -1
  138. package/lib/python/requirements-file.js +1 -1
  139. package/lib/python/setuppy.js +1 -1
  140. package/lib/python/setuptools.js +10 -4
  141. package/lib/python/uv-config.js +1 -1
  142. package/lib/python/uv.js +3 -3
  143. package/lib/python/venv.js +1 -1
  144. package/lib/readme.js +1 -1
  145. package/lib/release/publisher.d.ts +5 -0
  146. package/lib/release/publisher.js +90 -37
  147. package/lib/release/release-trigger.d.ts +10 -0
  148. package/lib/release/release-trigger.js +7 -2
  149. package/lib/release/release.d.ts +17 -2
  150. package/lib/release/release.js +16 -10
  151. package/lib/renovatebot.js +1 -1
  152. package/lib/run-task.cjs +13 -4
  153. package/lib/runner-options.d.ts +34 -0
  154. package/lib/runner-options.js +1 -1
  155. package/lib/sample-file.js +2 -2
  156. package/lib/script-runner.js +1 -1
  157. package/lib/source-code.js +1 -1
  158. package/lib/task-model.d.ts +3 -3
  159. package/lib/task-model.js +1 -1
  160. package/lib/task-shell.d.ts +3 -0
  161. package/lib/task-shell.js +5 -2
  162. package/lib/task.d.ts +4 -0
  163. package/lib/task.js +2 -2
  164. package/lib/tasks.js +1 -1
  165. package/lib/testing.js +1 -1
  166. package/lib/textfile.js +1 -1
  167. package/lib/toml.js +1 -1
  168. package/lib/typescript/projenrc-ts.js +1 -1
  169. package/lib/typescript/projenrc.js +1 -1
  170. package/lib/typescript/typescript-runner.js +1 -1
  171. package/lib/typescript/typescript-typedoc.js +1 -1
  172. package/lib/typescript/typescript.js +5 -5
  173. package/lib/util/dax.d.ts +12 -1
  174. package/lib/util/dax.js +17 -4
  175. package/lib/util/path.d.ts +39 -0
  176. package/lib/util/path.js +90 -1
  177. package/lib/version.js +2 -2
  178. package/lib/vscode/devcontainer.js +1 -1
  179. package/lib/vscode/extensions.js +1 -1
  180. package/lib/vscode/launch-config.js +1 -1
  181. package/lib/vscode/settings.js +1 -1
  182. package/lib/vscode/vscode.js +1 -1
  183. package/lib/web/next.js +3 -3
  184. package/lib/web/postcss.js +1 -1
  185. package/lib/web/react.js +3 -3
  186. package/lib/web/tailwind.js +1 -1
  187. package/lib/xmlfile.js +1 -1
  188. package/lib/yaml.js +1 -1
  189. package/package.json +1 -1
  190. package/BREAKING_CHANGES.md +0 -855
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.JsiiProject = exports.Stability = void 0;
4
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const jsii_build_1 = require("./jsii-build");
6
+ const github_1 = require("../github");
6
7
  const typescript_1 = require("../typescript");
7
8
  const util_1 = require("../util");
8
9
  const EMAIL_REGEX = /^[^\s@]+@[^\s@]+$/;
@@ -19,7 +20,7 @@ var Stability;
19
20
  * @pjid jsii
20
21
  */
21
22
  class JsiiProject extends typescript_1.TypeScriptProject {
22
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiProject", version: "0.102.0" };
23
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiProject", version: "0.103.1" };
23
24
  constructor(options) {
24
25
  const { authorEmail, authorUrl } = parseAuthorAddress(options);
25
26
  const defaultOptions = {
@@ -84,17 +85,15 @@ class JsiiProject extends typescript_1.TypeScriptProject {
84
85
  }));
85
86
  }
86
87
  /**
87
- * Generates the runs-on config for Jobs.
88
- * Throws error if 'runsOn' and 'runsOnGroup' are both set.
89
- *
90
- * @param options - 'runsOn' or 'runsOnGroup'.
88
+ * Generates the runs-on config for Jobs, falling back to the project's
89
+ * global GitHub runner selection (if any).
91
90
  */
92
91
  getJobRunsOnConfig(options) {
93
- return options.workflowRunsOnGroup
94
- ? { runsOnGroup: options.workflowRunsOnGroup }
95
- : options.workflowRunsOn
96
- ? { runsOn: options.workflowRunsOn }
97
- : {};
92
+ const github = this.github ?? github_1.GitHub.of(this.root);
93
+ return (github?.runsOnConfig({
94
+ runsOn: options.workflowRunsOn,
95
+ runsOnGroup: options.workflowRunsOnGroup,
96
+ }) ?? {});
98
97
  }
99
98
  }
100
99
  exports.JsiiProject = JsiiProject;
@@ -120,4 +119,4 @@ function parseAuthorAddress(options) {
120
119
  }
121
120
  return { authorEmail, authorUrl };
122
121
  }
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Nkay9qc2lpLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLDZDQUF5QztBQVF6Qyw4Q0FBa0Q7QUFDbEQsa0NBQW9DO0FBRXBDLE1BQU0sV0FBVyxHQUFHLG1CQUFtQixDQUFDO0FBQ3hDLE1BQU0sU0FBUyxHQUNiLHNMQUFzTCxDQUFDO0FBbUh6TCxJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDbkIsMENBQTZCLENBQUE7SUFDN0IsOEJBQWlCLENBQUE7SUFDakIsc0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUpXLFNBQVMseUJBQVQsU0FBUyxRQUlwQjtBQW1ERDs7OztHQUlHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsOEJBQWlCOztJQUNoRCxZQUFZLE9BQTJCO1FBQ3JDLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFL0QsTUFBTSxjQUFjLEdBQXNDO1lBQ3hELFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYTtZQUNqQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDMUIsV0FBVztZQUNYLFNBQVM7WUFDVCxRQUFRLEVBQUU7Z0JBQ1IsZUFBZSxFQUFFO29CQUNmLHNDQUFzQztvQkFDdEMsTUFBTSxFQUFFLFFBQVE7b0JBQ2hCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDZixNQUFNLEVBQUUsUUFBUTtvQkFDaEIsZUFBZSxFQUFFLElBQUk7b0JBQ3JCLFlBQVksRUFBRSxJQUFJO29CQUNsQixhQUFhLEVBQUUsSUFBSTtvQkFDbkIsYUFBYSxFQUFFLEtBQUs7aUJBQ3JCO2FBQ0Y7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsZUFBZSxFQUFFO29CQUNmLGFBQWEsRUFBRSxJQUFJO29CQUNuQixlQUFlLEVBQUUsSUFBSTtpQkFDdEI7YUFDRjtTQUNGLENBQUM7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QUFPLENBQUMsYUFBYSxDQUFDO1FBQ3RDLENBQUM7YUFBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDakQsU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDcEMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxPQUFPLENBQUMsYUFBYSxFQUFFLENBQ25GLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVmFsaWRhdGVUc2NvbmZpZyB9IGZyb20gXCIuL2pzaWktYnVpbGRcIjtcbmltcG9ydCB7IEpzaWlCdWlsZCB9IGZyb20gXCIuL2pzaWktYnVpbGRcIjtcbmltcG9ydCB0eXBlIHtcbiAgR29QdWJsaXNoT3B0aW9ucyxcbiAgTWF2ZW5QdWJsaXNoT3B0aW9ucyxcbiAgTnVnZXRQdWJsaXNoT3B0aW9ucyxcbiAgUHlQaVB1Ymxpc2hPcHRpb25zLFxufSBmcm9tIFwiLi4vcmVsZWFzZVwiO1xuaW1wb3J0IHR5cGUgeyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdFByb2plY3QgfSBmcm9tIFwiLi4vdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIi4uL3V0aWxcIjtcblxuY29uc3QgRU1BSUxfUkVHRVggPSAvXlteXFxzQF0rQFteXFxzQF0rJC87XG5jb25zdCBVUkxfUkVHRVggPVxuICAvKCgoW0EtWmEtel17Myw5fTooPzpcXC9cXC8pPykoPzpbXFwtOzomPVxcK1xcJCxcXHddK0ApP1tBLVphLXowLTlcXC5cXC1dK3woPzp3d3dcXC58W1xcLTs6Jj1cXCtcXCQsXFx3XStAKVtBLVphLXowLTlcXC5cXC1dKykoKD86XFwvW1xcK34lXFwvXFwuXFx3XFwtX10qKT9cXD8/KD86W1xcLVxcKz0mOyVAXFwuXFx3X10qKSM/KD86W1xcLlxcIVxcL1xcXFxcXHddKikpPykvO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlQcm9qZWN0T3B0aW9ucyBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCBcIi5cIlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdGRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0IHJlcG9zaXRvcnkgVVJMLlxuICAgKiBAZGVmYXVsdCAkR0lUX1JFTU9URVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeVVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbGlicmFyeSBhdXRob3IuXG4gICAqIEBkZWZhdWx0ICRHSVRfVVNFUl9OQU1FXG4gICAqL1xuICByZWFkb25seSBhdXRob3I6IHN0cmluZztcblxuICAvKipcbiAgICogRW1haWwgb3IgVVJMIG9mIHRoZSBsaWJyYXJ5IGF1dGhvci5cbiAgICogQGRlZmF1bHQgJEdJVF9VU0VSX0VNQUlMXG4gICAqL1xuICByZWFkb25seSBhdXRob3JBZGRyZXNzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggdG8gbWF2ZW5cbiAgICogQGRlZmF1bHQgLSBubyBwdWJsaXNoaW5nXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9NYXZlbj86IEpzaWlKYXZhVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIHRvIHB5cGlcbiAgICogQGRlZmF1bHQgLSBubyBwdWJsaXNoaW5nXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9QeXBpPzogSnNpaVB5dGhvblRhcmdldDtcblxuICAvKipcbiAgICogUHVibGlzaCBHbyBiaW5kaW5ncyB0byBhIGdpdCByZXBvc2l0b3J5LlxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb0dvPzogSnNpaUdvVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIHRvIE51R2V0XG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvTnVnZXQ/OiBKc2lpRG90TmV0VGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHJ1biBBUEkgY29tcGF0aWJpbGl0eSB0ZXN0IGFnYWluc3QgdGhlIGxhdGVzdCB2ZXJzaW9uIHB1Ymxpc2hlZCB0byBucG0gYWZ0ZXIgY29tcGlsYXRpb24uXG4gICAqXG4gICAqIC0gWW91IGNhbiBtYW51YWxseSBydW4gY29tcGF0aWJpbGl0eSB0ZXN0cyB1c2luZyBgeWFybiBjb21wYXRgIGlmIHRoaXMgZmVhdHVyZSBpcyBkaXNhYmxlZC5cbiAgICogLSBZb3UgY2FuIGlnbm9yZSBjb21wYXRpYmlsaXR5IGZhaWx1cmVzIGJ5IGFkZGluZyBsaW5lcyB0byBhIFwiLmNvbXBhdGlnbm9yZVwiIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjb21wYXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBpZ25vcmUgZmlsZSBmb3IgQVBJIGNvbXBhdGliaWxpdHkgdGVzdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiLmNvbXBhdGlnbm9yZVwiXG4gICAqL1xuICByZWFkb25seSBjb21wYXRJZ25vcmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFjY2VwdHMgYSBsaXN0IG9mIGdsb2IgcGF0dGVybnMuIEZpbGVzIG1hdGNoaW5nIGFueSBvZiB0aG9zZSBwYXR0ZXJucyB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIgaW5wdXQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGpzaWkgd2lsbCBpbmNsdWRlIGFsbCAqLnRzIGZpbGVzIChleGNlcHQgLmQudHMgZmlsZXMpIGluIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGlucHV0LlxuICAgKiBUaGlzIGNhbiBiZSBwcm9ibGVtYXRpYyBmb3IgZXhhbXBsZSB3aGVuIHRoZSBwYWNrYWdlJ3MgYnVpbGQgb3IgdGVzdCBwcm9jZWR1cmUgZ2VuZXJhdGVzIC50cyBmaWxlc1xuICAgKiB0aGF0IGNhbm5vdCBiZSBjb21waWxlZCB3aXRoIGpzaWkncyBjb21waWxlciBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGVUeXBlc2NyaXB0Pzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEZpbGUgcGF0aCBmb3IgZ2VuZXJhdGVkIGRvY3MuXG4gICAqIEBkZWZhdWx0IFwiQVBJLm1kXCJcbiAgICovXG4gIHJlYWRvbmx5IGRvY2dlbkZpbGVQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWl0IGEgY29tcHJlc3NlZCB2ZXJzaW9uIG9mIHRoZSBhc3NlbWJseVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcHJlc3NBc3NlbWJseT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIGpzaWkgY29tcGlsZXIgdG8gdXNlLlxuICAgKlxuICAgKiBTZXQgdG8gXCIqXCIgaWYgeW91IHdhbnQgdG8gbWFudWFsbHkgbWFuYWdlIHRoZSB2ZXJzaW9uIG9mIGpzaWkgaW4geW91clxuICAgKiBwcm9qZWN0IGJ5IG1hbmFnaW5nIHVwZGF0ZXMgdG8gYHBhY2thZ2UuanNvbmAgb24geW91ciBvd24uXG4gICAqXG4gICAqIE5PVEU6IFRoZSBqc2lpIGNvbXBpbGVyIHJlbGVhc2VzIHNpbmNlIDUuMC4wIGFyZSBub3Qgc2VtYW50aWNhbGx5IHZlcnNpb25lZFxuICAgKiBhbmQgc2hvdWxkIHJlbWFpbiBvbiB0aGUgc2FtZSBtaW5vciwgc28gd2UgcmVjb21tZW5kIHVzaW5nIGEgYH5gIGRlcGVuZGVuY3lcbiAgICogKGUuZy4gYH41LjAuMGApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIn41LjkuMFwiXG4gICAqIEBwam5ldyBcIn42LjAuMFwiXG4gICAqL1xuICByZWFkb25seSBqc2lpVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogTGV2ZWwgb2YgdHNjb25maWcgdmFsaWRhdGlvbiBqc2lpIHNob3VsZCBwZXJmb3JtIG9uIHRoZSB1c2VyLXByb3ZpZGVkIHRzY29uZmlnLlxuICAgKlxuICAgKiBPbmx5IHJlbGV2YW50IHdoZW4gdGhlIHByb2plY3Qgc3ludGhlc2l6ZXMgaXRzIG93biB0c2NvbmZpZ1xuICAgKiAoaS5lLiBgZGlzYWJsZVRzY29uZmlnYCBpcyBub3Qgc2V0IG9uIHRoZSBUeXBlU2NyaXB0UHJvamVjdCkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9hd3MuZ2l0aHViLmlvL2pzaWkvdXNlci1ndWlkZXMvbGliLWF1dGhvci9jb25maWd1cmF0aW9uLyN2YWxpZGF0ZXRzY29uZmlnXG4gICAqIEBkZWZhdWx0IFZhbGlkYXRlVHNjb25maWcuU1RSSUNUXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZVRzY29uZmlnPzogVmFsaWRhdGVUc2NvbmZpZztcbn1cblxuZXhwb3J0IGVudW0gU3RhYmlsaXR5IHtcbiAgRVhQRVJJTUVOVEFMID0gXCJleHBlcmltZW50YWxcIixcbiAgU1RBQkxFID0gXCJzdGFibGVcIixcbiAgREVQUkVDQVRFRCA9IFwiZGVwcmVjYXRlZFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlKYXZhVGFyZ2V0IGV4dGVuZHMgTWF2ZW5QdWJsaXNoT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGphdmFQYWNrYWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1hdmVuR3JvdXBJZDogc3RyaW5nO1xuICByZWFkb25seSBtYXZlbkFydGlmYWN0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc2lpUHl0aG9uVGFyZ2V0IGV4dGVuZHMgUHlQaVB1Ymxpc2hPcHRpb25zIHtcbiAgcmVhZG9ubHkgZGlzdE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbW9kdWxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaURvdE5ldFRhcmdldCBleHRlbmRzIE51Z2V0UHVibGlzaE9wdGlvbnMge1xuICByZWFkb25seSBkb3ROZXROYW1lc3BhY2U6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFja2FnZUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGljb25Vcmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogR28gdGFyZ2V0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc2lpR29UYXJnZXQgZXh0ZW5kcyBHb1B1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgcmVwb3NpdG9yeSBpbiB3aGljaCB0aGlzIG1vZHVsZSB3aWxsIGJlIHB1Ymxpc2hlZCAoZS5nLiBnaXRodWIuY29tL293bmVyL3JlcG8pLlxuICAgKlxuICAgKiBUaGUgbW9kdWxlIGl0c2VsZiB3aWxsIGFsd2F5cyBiZSBwdWJsaXNoZWQgdW5kZXIgYSBzdWJkaXJlY3RvcnkgbmFtZWQgYWNjb3JkaW5nXG4gICAqIHRvIHRoZSBgcGFja2FnZU5hbWVgIG9mIHRoZSBtb2R1bGUgKGUuZy4gZ2l0aHViLmNvbS9mb28vYmFyL3BrZykuXG4gICAqXG4gICAqIEBleGFtcGxlIGdpdGh1Yi5jb20vb3duZXIvcmVwb1xuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgR28gcGFja2FnZSBuYW1lLlxuICAgKlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBwYWNrYWdlIG5hbWUgd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlIEphdmFTY3JpcHQgbW9kdWxlIG5hbWVcbiAgICogYnkgcmVtb3Zpbmcgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIChlLmcuIEBwcm9qZW4vZm9vLWJhciB3aWxsIGJlIHByb2plbmZvb2JhcikuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHRoZSBKYXZhU2NyaXB0IG1vZHVsZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdWZmaXggYXBwZW5kZWQgYXQgdGhlIGVuZCBvZiB0aGUgbW9kdWxlIHZlcnNpb24gKGUuZyBgXCItZGV2cHJlZml4XCJgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uU3VmZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE11bHRpLWxhbmd1YWdlIGpzaWkgbGlicmFyeSBwcm9qZWN0XG4gKlxuICogQHBqaWQganNpaVxuICovXG5leHBvcnQgY2xhc3MgSnNpaVByb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEpzaWlQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IHsgYXV0aG9yRW1haWwsIGF1dGhvclVybCB9ID0gcGFyc2VBdXRob3JBZGRyZXNzKG9wdGlvbnMpO1xuXG4gICAgY29uc3QgZGVmYXVsdE9wdGlvbnM6IFBhcnRpYWw8VHlwZVNjcmlwdFByb2plY3RPcHRpb25zPiA9IHtcbiAgICAgIHJlcG9zaXRvcnk6IG9wdGlvbnMucmVwb3NpdG9yeVVybCxcbiAgICAgIGF1dGhvck5hbWU6IG9wdGlvbnMuYXV0aG9yLFxuICAgICAgYXV0aG9yRW1haWwsXG4gICAgICBhdXRob3JVcmwsXG4gICAgICB0c2NvbmZpZzoge1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAvLyBqc2lpIHN0cmljdCB2YWxpZGF0aW9uIHJlcXVpcmVtZW50c1xuICAgICAgICAgIHRhcmdldDogXCJFUzIwMjJcIixcbiAgICAgICAgICBsaWI6IFtcImVzMjAyMlwiXSxcbiAgICAgICAgICBtb2R1bGU6IFwibm9kZTE2XCIsXG4gICAgICAgICAgZXNNb2R1bGVJbnRlcm9wOiB0cnVlLFxuICAgICAgICAgIHNraXBMaWJDaGVjazogdHJ1ZSxcbiAgICAgICAgICBub0VtaXRPbkVycm9yOiB0cnVlLFxuICAgICAgICAgIHN0cmlwSW50ZXJuYWw6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRzY29uZmlnRGV2OiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHN0cmlwSW50ZXJuYWw6IHRydWUsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgZm9yY2VkT3B0aW9ucyA9IHtcbiAgICAgIHJlbGVhc2VUb05wbTogZmFsc2UsIC8vIHdlIGhhdmUgYSBqc2lpIHJlbGVhc2Ugd29ya2Zsb3dcbiAgICAgIGRvY2dlbjogZmFsc2UsIC8vIHdlIHVzZSBqc2lpLWRvY2dlbiBoZXJlIHNvIGRpc2FibGUgdHlwZXNjcmlwdCBkb2NnZW5cbiAgICB9O1xuXG4gICAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IGRlZXBNZXJnZShbXG4gICAgICBkZWZhdWx0T3B0aW9ucyxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBmb3JjZWRPcHRpb25zLFxuICAgIF0pIGFzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucztcblxuICAgIHN1cGVyKG1lcmdlZE9wdGlvbnMpO1xuXG4gICAgLy8gQXBwbHkgdGhlIGpzaWkgbWl4aW4gdXNpbmcgdGhlIGNvbnN0cnVjdHMgLndpdGgoKSBwYXR0ZXJuXG4gICAgdGhpcy53aXRoKFxuICAgICAgbmV3IEpzaWlCdWlsZChcbiAgICAgICAge1xuICAgICAgICAgIHB1Ymxpc2hUb01hdmVuOiBvcHRpb25zLnB1Ymxpc2hUb01hdmVuLFxuICAgICAgICAgIHB1Ymxpc2hUb1B5cGk6IG9wdGlvbnMucHVibGlzaFRvUHlwaSxcbiAgICAgICAgICBwdWJsaXNoVG9Hbzogb3B0aW9ucy5wdWJsaXNoVG9HbyxcbiAgICAgICAgICBwdWJsaXNoVG9OdWdldDogb3B0aW9ucy5wdWJsaXNoVG9OdWdldCxcbiAgICAgICAgICBjb21wYXQ6IG9wdGlvbnMuY29tcGF0LFxuICAgICAgICAgIGNvbXBhdElnbm9yZTogb3B0aW9ucy5jb21wYXRJZ25vcmUsXG4gICAgICAgICAgZXhjbHVkZVR5cGVzY3JpcHQ6IG9wdGlvbnMuZXhjbHVkZVR5cGVzY3JpcHQsXG4gICAgICAgICAgZG9jZ2VuRmlsZVBhdGg6IG9wdGlvbnMuZG9jZ2VuRmlsZVBhdGgsXG4gICAgICAgICAgY29tcHJlc3NBc3NlbWJseTogb3B0aW9ucy5jb21wcmVzc0Fzc2VtYmx5LFxuICAgICAgICAgIGpzaWlWZXJzaW9uOiBvcHRpb25zLmpzaWlWZXJzaW9uLFxuICAgICAgICAgIHZhbGlkYXRlVHNjb25maWc6IG9wdGlvbnMudmFsaWRhdGVUc2NvbmZpZyxcbiAgICAgICAgICBzdGFiaWxpdHk6IG9wdGlvbnMuc3RhYmlsaXR5LFxuICAgICAgICAgIGRvY2dlbjogb3B0aW9ucy5kb2NnZW4sXG4gICAgICAgICAgcmVsZWFzZVRvTnBtOiBvcHRpb25zLnJlbGVhc2VUb05wbSxcbiAgICAgICAgICBucG1UcnVzdGVkUHVibGlzaGluZzogb3B0aW9ucy5ucG1UcnVzdGVkUHVibGlzaGluZyxcbiAgICAgICAgICBjb2RlQXJ0aWZhY3RPcHRpb25zOiBvcHRpb25zLmNvZGVBcnRpZmFjdE9wdGlvbnMsXG4gICAgICAgICAgd29ya2Zsb3dOb2RlVmVyc2lvbjogdGhpcy5ub2RlVmVyc2lvbixcbiAgICAgICAgICB3b3JrZmxvd0Jvb3RzdHJhcFN0ZXBzOiB0aGlzLndvcmtmbG93Qm9vdHN0cmFwU3RlcHMsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLmdldEpvYlJ1bnNPbkNvbmZpZyhvcHRpb25zKSxcbiAgICAgICAgICAuLi4ob3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlXG4gICAgICAgICAgICA/IHsgY29udGFpbmVyOiB7IGltYWdlOiBvcHRpb25zLndvcmtmbG93Q29udGFpbmVySW1hZ2UgfSB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIHJ1bnMtb24gY29uZmlnIGZvciBKb2JzLlxuICAgKiBUaHJvd3MgZXJyb3IgaWYgJ3J1bnNPbicgYW5kICdydW5zT25Hcm91cCcgYXJlIGJvdGggc2V0LlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtICdydW5zT24nIG9yICdydW5zT25Hcm91cCcuXG4gICAqL1xuICBwcml2YXRlIGdldEpvYlJ1bnNPbkNvbmZpZyhvcHRpb25zOiBKc2lpUHJvamVjdE9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucy53b3JrZmxvd1J1bnNPbkdyb3VwXG4gICAgICA/IHsgcnVuc09uR3JvdXA6IG9wdGlvbnMud29ya2Zsb3dSdW5zT25Hcm91cCB9XG4gICAgICA6IG9wdGlvbnMud29ya2Zsb3dSdW5zT25cbiAgICAgICAgPyB7IHJ1bnNPbjogb3B0aW9ucy53b3JrZmxvd1J1bnNPbiB9XG4gICAgICAgIDoge307XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VBdXRob3JBZGRyZXNzKG9wdGlvbnM6IEpzaWlQcm9qZWN0T3B0aW9ucykge1xuICBsZXQgYXV0aG9yRW1haWwgPSBvcHRpb25zLmF1dGhvckVtYWlsO1xuICBsZXQgYXV0aG9yVXJsID0gb3B0aW9ucy5hdXRob3JVcmw7XG4gIGlmIChvcHRpb25zLmF1dGhvckFkZHJlc3MpIHtcbiAgICBpZiAob3B0aW9ucy5hdXRob3JFbWFpbCAmJiBvcHRpb25zLmF1dGhvckVtYWlsICE9PSBvcHRpb25zLmF1dGhvckFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJhdXRob3JFbWFpbCBpcyBkZXByZWNhdGVkIGFuZCBjYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGF1dGhvckFkZHJlc3NcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuYXV0aG9yVXJsICYmIG9wdGlvbnMuYXV0aG9yVXJsICE9PSBvcHRpb25zLmF1dGhvckFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJhdXRob3JVcmwgaXMgZGVwcmVjYXRlZCBhbmQgY2Fubm90IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhdXRob3JBZGRyZXNzLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoRU1BSUxfUkVHRVgudGVzdChvcHRpb25zLmF1dGhvckFkZHJlc3MpKSB7XG4gICAgICBhdXRob3JFbWFpbCA9IG9wdGlvbnMuYXV0aG9yQWRkcmVzcztcbiAgICB9IGVsc2UgaWYgKFVSTF9SRUdFWC50ZXN0KG9wdGlvbnMuYXV0aG9yQWRkcmVzcykpIHtcbiAgICAgIGF1dGhvclVybCA9IG9wdGlvbnMuYXV0aG9yQWRkcmVzcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgYXV0aG9yQWRkcmVzcyBtdXN0IGJlIGVpdGhlciBhbiBlbWFpbCBhZGRyZXNzIG9yIGEgVVJMOiAke29wdGlvbnMuYXV0aG9yQWRkcmVzc31gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgYXV0aG9yRW1haWwsIGF1dGhvclVybCB9O1xufVxuIl19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Nkay9qc2lpLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLDZDQUF5QztBQUN6QyxzQ0FBbUM7QUFRbkMsOENBQWtEO0FBQ2xELGtDQUFvQztBQUVwQyxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FDYixzTEFBc0wsQ0FBQztBQW1IekwsSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLDBDQUE2QixDQUFBO0lBQzdCLDhCQUFpQixDQUFBO0lBQ2pCLHNDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFKVyxTQUFTLHlCQUFULFNBQVMsUUFJcEI7QUFtREQ7Ozs7R0FJRztBQUNILE1BQWEsV0FBWSxTQUFRLDhCQUFpQjs7SUFDaEQsWUFBWSxPQUEyQjtRQUNyQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRS9ELE1BQU0sY0FBYyxHQUFzQztZQUN4RCxVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDakMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQzFCLFdBQVc7WUFDWCxTQUFTO1lBQ1QsUUFBUSxFQUFFO2dCQUNSLGVBQWUsRUFBRTtvQkFDZixzQ0FBc0M7b0JBQ3RDLE1BQU0sRUFBRSxRQUFRO29CQUNoQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7b0JBQ2YsTUFBTSxFQUFFLFFBQVE7b0JBQ2hCLGVBQWUsRUFBRSxJQUFJO29CQUNyQixZQUFZLEVBQUUsSUFBSTtvQkFDbEIsYUFBYSxFQUFFLElBQUk7b0JBQ25CLGFBQWEsRUFBRSxLQUFLO2lCQUNyQjthQUNGO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLGVBQWUsRUFBRTtvQkFDZixhQUFhLEVBQUUsSUFBSTtvQkFDbkIsZUFBZSxFQUFFLElBQUk7aUJBQ3RCO2FB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YUFBYSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxXQUFXLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUN0QyxDQUFDO2FBQU0sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ2pELFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FDYiwyREFBMkQsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUNuRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFZhbGlkYXRlVHNjb25maWcgfSBmcm9tIFwiLi9qc2lpLWJ1aWxkXCI7XG5pbXBvcnQgeyBKc2lpQnVpbGQgfSBmcm9tIFwiLi9qc2lpLWJ1aWxkXCI7XG5pbXBvcnQgeyBHaXRIdWIgfSBmcm9tIFwiLi4vZ2l0aHViXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEdvUHVibGlzaE9wdGlvbnMsXG4gIE1hdmVuUHVibGlzaE9wdGlvbnMsXG4gIE51Z2V0UHVibGlzaE9wdGlvbnMsXG4gIFB5UGlQdWJsaXNoT3B0aW9ucyxcbn0gZnJvbSBcIi4uL3JlbGVhc2VcIjtcbmltcG9ydCB0eXBlIHsgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzY3JpcHRcIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRQcm9qZWN0IH0gZnJvbSBcIi4uL3R5cGVzY3JpcHRcIjtcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCIuLi91dGlsXCI7XG5cbmNvbnN0IEVNQUlMX1JFR0VYID0gL15bXlxcc0BdK0BbXlxcc0BdKyQvO1xuY29uc3QgVVJMX1JFR0VYID1cbiAgLygoKFtBLVphLXpdezMsOX06KD86XFwvXFwvKT8pKD86W1xcLTs6Jj1cXCtcXCQsXFx3XStAKT9bQS1aYS16MC05XFwuXFwtXSt8KD86d3d3XFwufFtcXC07OiY9XFwrXFwkLFxcd10rQClbQS1aYS16MC05XFwuXFwtXSspKCg/OlxcL1tcXCt+JVxcL1xcLlxcd1xcLV9dKik/XFw/Pyg/OltcXC1cXCs9JjslQFxcLlxcd19dKikjPyg/OltcXC5cXCFcXC9cXFxcXFx3XSopKT8pLztcblxuZXhwb3J0IGludGVyZmFjZSBKc2lpUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCIuXCJcbiAgICovXG4gIHJlYWRvbmx5IHJvb3RkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdCByZXBvc2l0b3J5IFVSTC5cbiAgICogQGRlZmF1bHQgJEdJVF9SRU1PVEVcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnlVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgYXV0aG9yLlxuICAgKiBAZGVmYXVsdCAkR0lUX1VTRVJfTkFNRVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVtYWlsIG9yIFVSTCBvZiB0aGUgbGlicmFyeSBhdXRob3IuXG4gICAqIEBkZWZhdWx0ICRHSVRfVVNFUl9FTUFJTFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yQWRkcmVzczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIHRvIG1hdmVuXG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvTWF2ZW4/OiBKc2lpSmF2YVRhcmdldDtcblxuICAvKipcbiAgICogUHVibGlzaCB0byBweXBpXG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvUHlwaT86IEpzaWlQeXRob25UYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggR28gYmluZGluZ3MgdG8gYSBnaXQgcmVwb3NpdG9yeS5cbiAgICogQGRlZmF1bHQgLSBubyBwdWJsaXNoaW5nXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9Hbz86IEpzaWlHb1RhcmdldDtcblxuICAvKipcbiAgICogUHVibGlzaCB0byBOdUdldFxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb051Z2V0PzogSnNpaURvdE5ldFRhcmdldDtcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBydW4gQVBJIGNvbXBhdGliaWxpdHkgdGVzdCBhZ2FpbnN0IHRoZSBsYXRlc3QgdmVyc2lvbiBwdWJsaXNoZWQgdG8gbnBtIGFmdGVyIGNvbXBpbGF0aW9uLlxuICAgKlxuICAgKiAtIFlvdSBjYW4gbWFudWFsbHkgcnVuIGNvbXBhdGliaWxpdHkgdGVzdHMgdXNpbmcgYHlhcm4gY29tcGF0YCBpZiB0aGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQuXG4gICAqIC0gWW91IGNhbiBpZ25vcmUgY29tcGF0aWJpbGl0eSBmYWlsdXJlcyBieSBhZGRpbmcgbGluZXMgdG8gYSBcIi5jb21wYXRpZ25vcmVcIiBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGF0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaWdub3JlIGZpbGUgZm9yIEFQSSBjb21wYXRpYmlsaXR5IHRlc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIi5jb21wYXRpZ25vcmVcIlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGF0SWdub3JlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgbGlzdCBvZiBnbG9iIHBhdHRlcm5zLiBGaWxlcyBtYXRjaGluZyBhbnkgb2YgdGhvc2UgcGF0dGVybnMgd2lsbCBiZSBleGNsdWRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGlucHV0LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBqc2lpIHdpbGwgaW5jbHVkZSBhbGwgKi50cyBmaWxlcyAoZXhjZXB0IC5kLnRzIGZpbGVzKSBpbiB0aGUgVHlwZVNjcmlwdCBjb21waWxlciBpbnB1dC5cbiAgICogVGhpcyBjYW4gYmUgcHJvYmxlbWF0aWMgZm9yIGV4YW1wbGUgd2hlbiB0aGUgcGFja2FnZSdzIGJ1aWxkIG9yIHRlc3QgcHJvY2VkdXJlIGdlbmVyYXRlcyAudHMgZmlsZXNcbiAgICogdGhhdCBjYW5ub3QgYmUgY29tcGlsZWQgd2l0aCBqc2lpJ3MgY29tcGlsZXIgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBleGNsdWRlVHlwZXNjcmlwdD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBGaWxlIHBhdGggZm9yIGdlbmVyYXRlZCBkb2NzLlxuICAgKiBAZGVmYXVsdCBcIkFQSS5tZFwiXG4gICAqL1xuICByZWFkb25seSBkb2NnZW5GaWxlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogRW1pdCBhIGNvbXByZXNzZWQgdmVyc2lvbiBvZiB0aGUgYXNzZW1ibHlcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNvbXByZXNzQXNzZW1ibHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBqc2lpIGNvbXBpbGVyIHRvIHVzZS5cbiAgICpcbiAgICogU2V0IHRvIFwiKlwiIGlmIHlvdSB3YW50IHRvIG1hbnVhbGx5IG1hbmFnZSB0aGUgdmVyc2lvbiBvZiBqc2lpIGluIHlvdXJcbiAgICogcHJvamVjdCBieSBtYW5hZ2luZyB1cGRhdGVzIHRvIGBwYWNrYWdlLmpzb25gIG9uIHlvdXIgb3duLlxuICAgKlxuICAgKiBOT1RFOiBUaGUganNpaSBjb21waWxlciByZWxlYXNlcyBzaW5jZSA1LjAuMCBhcmUgbm90IHNlbWFudGljYWxseSB2ZXJzaW9uZWRcbiAgICogYW5kIHNob3VsZCByZW1haW4gb24gdGhlIHNhbWUgbWlub3IsIHNvIHdlIHJlY29tbWVuZCB1c2luZyBhIGB+YCBkZXBlbmRlbmN5XG4gICAqIChlLmcuIGB+NS4wLjBgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ+NS45LjBcIlxuICAgKiBAcGpuZXcgXCJ+Ni4wLjBcIlxuICAgKi9cbiAgcmVhZG9ubHkganNpaVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExldmVsIG9mIHRzY29uZmlnIHZhbGlkYXRpb24ganNpaSBzaG91bGQgcGVyZm9ybSBvbiB0aGUgdXNlci1wcm92aWRlZCB0c2NvbmZpZy5cbiAgICpcbiAgICogT25seSByZWxldmFudCB3aGVuIHRoZSBwcm9qZWN0IHN5bnRoZXNpemVzIGl0cyBvd24gdHNjb25maWdcbiAgICogKGkuZS4gYGRpc2FibGVUc2NvbmZpZ2AgaXMgbm90IHNldCBvbiB0aGUgVHlwZVNjcmlwdFByb2plY3QpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vYXdzLmdpdGh1Yi5pby9qc2lpL3VzZXItZ3VpZGVzL2xpYi1hdXRob3IvY29uZmlndXJhdGlvbi8jdmFsaWRhdGV0c2NvbmZpZ1xuICAgKiBAZGVmYXVsdCBWYWxpZGF0ZVRzY29uZmlnLlNUUklDVFxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGVUc2NvbmZpZz86IFZhbGlkYXRlVHNjb25maWc7XG59XG5cbmV4cG9ydCBlbnVtIFN0YWJpbGl0eSB7XG4gIEVYUEVSSU1FTlRBTCA9IFwiZXhwZXJpbWVudGFsXCIsXG4gIFNUQUJMRSA9IFwic3RhYmxlXCIsXG4gIERFUFJFQ0FURUQgPSBcImRlcHJlY2F0ZWRcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc2lpSmF2YVRhcmdldCBleHRlbmRzIE1hdmVuUHVibGlzaE9wdGlvbnMge1xuICByZWFkb25seSBqYXZhUGFja2FnZTogc3RyaW5nO1xuICByZWFkb25seSBtYXZlbkdyb3VwSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbWF2ZW5BcnRpZmFjdElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaVB5dGhvblRhcmdldCBleHRlbmRzIFB5UGlQdWJsaXNoT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGRpc3ROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1vZHVsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlEb3ROZXRUYXJnZXQgZXh0ZW5kcyBOdWdldFB1Ymxpc2hPcHRpb25zIHtcbiAgcmVhZG9ubHkgZG90TmV0TmFtZXNwYWNlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VJZDogc3RyaW5nO1xuICByZWFkb25seSBpY29uVXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdvIHRhcmdldCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaUdvVGFyZ2V0IGV4dGVuZHMgR29QdWJsaXNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGFyZ2V0IHJlcG9zaXRvcnkgaW4gd2hpY2ggdGhpcyBtb2R1bGUgd2lsbCBiZSBwdWJsaXNoZWQgKGUuZy4gZ2l0aHViLmNvbS9vd25lci9yZXBvKS5cbiAgICpcbiAgICogVGhlIG1vZHVsZSBpdHNlbGYgd2lsbCBhbHdheXMgYmUgcHVibGlzaGVkIHVuZGVyIGEgc3ViZGlyZWN0b3J5IG5hbWVkIGFjY29yZGluZ1xuICAgKiB0byB0aGUgYHBhY2thZ2VOYW1lYCBvZiB0aGUgbW9kdWxlIChlLmcuIGdpdGh1Yi5jb20vZm9vL2Jhci9wa2cpLlxuICAgKlxuICAgKiBAZXhhbXBsZSBnaXRodWIuY29tL293bmVyL3JlcG9cbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEdvIHBhY2thZ2UgbmFtZS5cbiAgICpcbiAgICogSWYgbm90IHNwZWNpZmllZCwgcGFja2FnZSBuYW1lIHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZSBKYXZhU2NyaXB0IG1vZHVsZSBuYW1lXG4gICAqIGJ5IHJlbW92aW5nIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyAoZS5nLiBAcHJvamVuL2Zvby1iYXIgd2lsbCBiZSBwcm9qZW5mb29iYXIpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB0aGUgSmF2YVNjcmlwdCBtb2R1bGUgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3VmZml4IGFwcGVuZGVkIGF0IHRoZSBlbmQgb2YgdGhlIG1vZHVsZSB2ZXJzaW9uIChlLmcgYFwiLWRldnByZWZpeFwiYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvblN1ZmZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBNdWx0aS1sYW5ndWFnZSBqc2lpIGxpYnJhcnkgcHJvamVjdFxuICpcbiAqIEBwamlkIGpzaWlcbiAqL1xuZXhwb3J0IGNsYXNzIEpzaWlQcm9qZWN0IGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBKc2lpUHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCB7IGF1dGhvckVtYWlsLCBhdXRob3JVcmwgfSA9IHBhcnNlQXV0aG9yQWRkcmVzcyhvcHRpb25zKTtcblxuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBQYXJ0aWFsPFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucz4gPSB7XG4gICAgICByZXBvc2l0b3J5OiBvcHRpb25zLnJlcG9zaXRvcnlVcmwsXG4gICAgICBhdXRob3JOYW1lOiBvcHRpb25zLmF1dGhvcixcbiAgICAgIGF1dGhvckVtYWlsLFxuICAgICAgYXV0aG9yVXJsLFxuICAgICAgdHNjb25maWc6IHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgLy8ganNpaSBzdHJpY3QgdmFsaWRhdGlvbiByZXF1aXJlbWVudHNcbiAgICAgICAgICB0YXJnZXQ6IFwiRVMyMDIyXCIsXG4gICAgICAgICAgbGliOiBbXCJlczIwMjJcIl0sXG4gICAgICAgICAgbW9kdWxlOiBcIm5vZGUxNlwiLFxuICAgICAgICAgIGVzTW9kdWxlSW50ZXJvcDogdHJ1ZSxcbiAgICAgICAgICBza2lwTGliQ2hlY2s6IHRydWUsXG4gICAgICAgICAgbm9FbWl0T25FcnJvcjogdHJ1ZSxcbiAgICAgICAgICBzdHJpcEludGVybmFsOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0c2NvbmZpZ0Rldjoge1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICBzdHJpcEludGVybmFsOiB0cnVlLFxuICAgICAgICAgIGlzb2xhdGVkTW9kdWxlczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IGZvcmNlZE9wdGlvbnMgPSB7XG4gICAgICByZWxlYXNlVG9OcG06IGZhbHNlLCAvLyB3ZSBoYXZlIGEganNpaSByZWxlYXNlIHdvcmtmbG93XG4gICAgICBkb2NnZW46IGZhbHNlLCAvLyB3ZSB1c2UganNpaS1kb2NnZW4gaGVyZSBzbyBkaXNhYmxlIHR5cGVzY3JpcHQgZG9jZ2VuXG4gICAgfTtcblxuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBkZWVwTWVyZ2UoW1xuICAgICAgZGVmYXVsdE9wdGlvbnMsXG4gICAgICBvcHRpb25zLFxuICAgICAgZm9yY2VkT3B0aW9ucyxcbiAgICBdKSBhcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnM7XG5cbiAgICBzdXBlcihtZXJnZWRPcHRpb25zKTtcblxuICAgIC8vIEFwcGx5IHRoZSBqc2lpIG1peGluIHVzaW5nIHRoZSBjb25zdHJ1Y3RzIC53aXRoKCkgcGF0dGVyblxuICAgIHRoaXMud2l0aChcbiAgICAgIG5ldyBKc2lpQnVpbGQoXG4gICAgICAgIHtcbiAgICAgICAgICBwdWJsaXNoVG9NYXZlbjogb3B0aW9ucy5wdWJsaXNoVG9NYXZlbixcbiAgICAgICAgICBwdWJsaXNoVG9QeXBpOiBvcHRpb25zLnB1Ymxpc2hUb1B5cGksXG4gICAgICAgICAgcHVibGlzaFRvR286IG9wdGlvbnMucHVibGlzaFRvR28sXG4gICAgICAgICAgcHVibGlzaFRvTnVnZXQ6IG9wdGlvbnMucHVibGlzaFRvTnVnZXQsXG4gICAgICAgICAgY29tcGF0OiBvcHRpb25zLmNvbXBhdCxcbiAgICAgICAgICBjb21wYXRJZ25vcmU6IG9wdGlvbnMuY29tcGF0SWdub3JlLFxuICAgICAgICAgIGV4Y2x1ZGVUeXBlc2NyaXB0OiBvcHRpb25zLmV4Y2x1ZGVUeXBlc2NyaXB0LFxuICAgICAgICAgIGRvY2dlbkZpbGVQYXRoOiBvcHRpb25zLmRvY2dlbkZpbGVQYXRoLFxuICAgICAgICAgIGNvbXByZXNzQXNzZW1ibHk6IG9wdGlvbnMuY29tcHJlc3NBc3NlbWJseSxcbiAgICAgICAgICBqc2lpVmVyc2lvbjogb3B0aW9ucy5qc2lpVmVyc2lvbixcbiAgICAgICAgICB2YWxpZGF0ZVRzY29uZmlnOiBvcHRpb25zLnZhbGlkYXRlVHNjb25maWcsXG4gICAgICAgICAgc3RhYmlsaXR5OiBvcHRpb25zLnN0YWJpbGl0eSxcbiAgICAgICAgICBkb2NnZW46IG9wdGlvbnMuZG9jZ2VuLFxuICAgICAgICAgIHJlbGVhc2VUb05wbTogb3B0aW9ucy5yZWxlYXNlVG9OcG0sXG4gICAgICAgICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmc6IG9wdGlvbnMubnBtVHJ1c3RlZFB1Ymxpc2hpbmcsXG4gICAgICAgICAgY29kZUFydGlmYWN0T3B0aW9uczogb3B0aW9ucy5jb2RlQXJ0aWZhY3RPcHRpb25zLFxuICAgICAgICAgIHdvcmtmbG93Tm9kZVZlcnNpb246IHRoaXMubm9kZVZlcnNpb24sXG4gICAgICAgICAgd29ya2Zsb3dCb290c3RyYXBTdGVwczogdGhpcy53b3JrZmxvd0Jvb3RzdHJhcFN0ZXBzLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLi4udGhpcy5nZXRKb2JSdW5zT25Db25maWcob3B0aW9ucyksXG4gICAgICAgICAgLi4uKG9wdGlvbnMud29ya2Zsb3dDb250YWluZXJJbWFnZVxuICAgICAgICAgICAgPyB7IGNvbnRhaW5lcjogeyBpbWFnZTogb3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlIH0gfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBydW5zLW9uIGNvbmZpZyBmb3IgSm9icywgZmFsbGluZyBiYWNrIHRvIHRoZSBwcm9qZWN0J3NcbiAgICogZ2xvYmFsIEdpdEh1YiBydW5uZXIgc2VsZWN0aW9uIChpZiBhbnkpLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRKb2JSdW5zT25Db25maWcob3B0aW9uczogSnNpaVByb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgZ2l0aHViID0gdGhpcy5naXRodWIgPz8gR2l0SHViLm9mKHRoaXMucm9vdCk7XG4gICAgcmV0dXJuIChcbiAgICAgIGdpdGh1Yj8ucnVuc09uQ29uZmlnKHtcbiAgICAgICAgcnVuc09uOiBvcHRpb25zLndvcmtmbG93UnVuc09uLFxuICAgICAgICBydW5zT25Hcm91cDogb3B0aW9ucy53b3JrZmxvd1J1bnNPbkdyb3VwLFxuICAgICAgfSkgPz8ge31cbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXV0aG9yQWRkcmVzcyhvcHRpb25zOiBKc2lpUHJvamVjdE9wdGlvbnMpIHtcbiAgbGV0IGF1dGhvckVtYWlsID0gb3B0aW9ucy5hdXRob3JFbWFpbDtcbiAgbGV0IGF1dGhvclVybCA9IG9wdGlvbnMuYXV0aG9yVXJsO1xuICBpZiAob3B0aW9ucy5hdXRob3JBZGRyZXNzKSB7XG4gICAgaWYgKG9wdGlvbnMuYXV0aG9yRW1haWwgJiYgb3B0aW9ucy5hdXRob3JFbWFpbCAhPT0gb3B0aW9ucy5hdXRob3JBZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiYXV0aG9yRW1haWwgaXMgZGVwcmVjYXRlZCBhbmQgY2Fubm90IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhdXRob3JBZGRyZXNzXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmF1dGhvclVybCAmJiBvcHRpb25zLmF1dGhvclVybCAhPT0gb3B0aW9ucy5hdXRob3JBZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiYXV0aG9yVXJsIGlzIGRlcHJlY2F0ZWQgYW5kIGNhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYXV0aG9yQWRkcmVzcy5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKEVNQUlMX1JFR0VYLnRlc3Qob3B0aW9ucy5hdXRob3JBZGRyZXNzKSkge1xuICAgICAgYXV0aG9yRW1haWwgPSBvcHRpb25zLmF1dGhvckFkZHJlc3M7XG4gICAgfSBlbHNlIGlmIChVUkxfUkVHRVgudGVzdChvcHRpb25zLmF1dGhvckFkZHJlc3MpKSB7XG4gICAgICBhdXRob3JVcmwgPSBvcHRpb25zLmF1dGhvckFkZHJlc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGF1dGhvckFkZHJlc3MgbXVzdCBiZSBlaXRoZXIgYW4gZW1haWwgYWRkcmVzcyBvciBhIFVSTDogJHtvcHRpb25zLmF1dGhvckFkZHJlc3N9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7IGF1dGhvckVtYWlsLCBhdXRob3JVcmwgfTtcbn1cbiJdfQ==
@@ -10,7 +10,7 @@ const component_1 = require("../component");
10
10
  * found in the test tree.
11
11
  */
12
12
  class AutoDiscover extends component_1.Component {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.AutoDiscover", version: "0.102.0" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.AutoDiscover", version: "0.103.1" };
14
14
  constructor(project, options) {
15
15
  super(project);
16
16
  if (options.integrationTestAutoDiscover ?? true) {
@@ -23,7 +23,7 @@ exports.AutoDiscover = AutoDiscover;
23
23
  * Discovers and creates integration tests from files in the test root.
24
24
  */
25
25
  class IntegrationTestAutoDiscover extends cdk_1.IntegrationTestAutoDiscoverBase {
26
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTestAutoDiscover", version: "0.102.0" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTestAutoDiscover", version: "0.103.1" };
27
27
  constructor(project, options) {
28
28
  super(project, options);
29
29
  for (const entrypoint of this.entrypoints) {
@@ -12,7 +12,7 @@ const python_project_1 = require("../python/python-project");
12
12
  * @pjid cdk8s-app-py
13
13
  */
14
14
  class Cdk8sPythonApp extends python_project_1.PythonProject {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sPythonApp", version: "0.102.0" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sPythonApp", version: "0.103.1" };
16
16
  /**
17
17
  * The CDK8s app entrypoint
18
18
  */
@@ -50,7 +50,7 @@ const yaml_1 = require("../yaml");
50
50
  * @pjid cdk8s-app-ts
51
51
  */
52
52
  class Cdk8sTypeScriptApp extends typescript_1.TypeScriptAppProject {
53
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sTypeScriptApp", version: "0.102.0" };
53
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sTypeScriptApp", version: "0.103.1" };
54
54
  /**
55
55
  * The CDK8s app entrypoint
56
56
  */
@@ -48,7 +48,7 @@ const cdk_1 = require("../cdk");
48
48
  * @pjid cdk8s-construct
49
49
  */
50
50
  class ConstructLibraryCdk8s extends cdk_1.ConstructLibrary {
51
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.ConstructLibraryCdk8s", version: "0.102.0" };
51
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.ConstructLibraryCdk8s", version: "0.103.1" };
52
52
  /**
53
53
  * The CDK8s version this app is using.
54
54
  */
@@ -4,7 +4,7 @@ exports.Cdk8sDepsPy = void 0;
4
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const cdk8s_deps_1 = require("./cdk8s-deps");
6
6
  class Cdk8sDepsPy extends cdk8s_deps_1.Cdk8sDeps {
7
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDepsPy", version: "0.102.0" };
7
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDepsPy", version: "0.103.1" };
8
8
  packageNames() {
9
9
  return {
10
10
  cdk8s: "cdk8s",
@@ -42,7 +42,7 @@ const dependencies_1 = require("../dependencies");
42
42
  * Manages dependencies on the CDK8s.
43
43
  */
44
44
  class Cdk8sDeps extends component_1.Component {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDeps", version: "0.102.0" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDeps", version: "0.103.1" };
46
46
  /**
47
47
  * The dependency requirement for CDK8s.
48
48
  */
@@ -9,7 +9,7 @@ const dependencies_1 = require("../dependencies");
9
9
  * CDK8S integration test.
10
10
  */
11
11
  class IntegrationTest extends cdk_1.IntegrationTestBase {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTest", version: "0.102.0" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTest", version: "0.103.1" };
13
13
  constructor(project, options) {
14
14
  super(project, options);
15
15
  project.deps.requestDependency({
@@ -41,9 +41,9 @@ class IntegrationTest extends cdk_1.IntegrationTestBase {
41
41
  this.snapshotDir,
42
42
  ]);
43
43
  // Assert that the snapshot has not changed (run during tests)
44
- this.assertTask.exec(`cdk8s synth --app "${app}" -o ${assertDir} > /dev/null`);
44
+ this.assertTask.execArgs(["cdk8s", "synth", "--app", app, "-o", assertDir]);
45
45
  this.assertTask.execArgs(["diff", `${this.snapshotDir}/`, `${assertDir}/`]);
46
46
  }
47
47
  }
48
48
  exports.IntegrationTest = IntegrationTest;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGs4cy9pbnRlZ3JhdGlvbi10ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxzQ0FBa0M7QUFFbEMsZ0NBQTZDO0FBQzdDLGtEQUFpRDtBQVFqRDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSx5QkFBbUI7O0lBQ3RELFlBQVksT0FBZ0IsRUFBRSxPQUErQjtRQUMzRCxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhCLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDN0IsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLDZCQUFjLENBQUMsS0FBSztTQUMzQixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQzdCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLDZCQUFjLENBQUMsS0FBSztTQUMzQixDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFBLFlBQUksRUFBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsTUFBTSxTQUFTLEdBQUcsSUFBQSxZQUFJLEVBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sR0FBRyxHQUFHLGNBQWMsT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFdkUsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNoRSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUU5RCxpQkFBaUI7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQ3pCLE9BQU87WUFDUCxPQUFPO1lBQ1AsT0FBTztZQUNQLEdBQUc7WUFDSCxJQUFJO1lBQ0osSUFBSSxDQUFDLFdBQVc7U0FDakIsQ0FBQyxDQUFDO1FBRUgsOERBQThEO1FBQzlELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNsQixzQkFBc0IsR0FBRyxRQUFRLFNBQVMsY0FBYyxDQUN6RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQzs7QUExQ0gsMENBMkNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gXCJwYXRoL3Bvc2l4XCI7XG5pbXBvcnQgdHlwZSB7IEludGVncmF0aW9uVGVzdEJhc2VPcHRpb25zIH0gZnJvbSBcIi4uL2Nka1wiO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25UZXN0QmFzZSB9IGZyb20gXCIuLi9jZGtcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBJbnRlZ3JhdGlvblRlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvblRlc3RPcHRpb25zIGV4dGVuZHMgSW50ZWdyYXRpb25UZXN0QmFzZU9wdGlvbnMge31cblxuLyoqXG4gKiBDREs4UyBpbnRlZ3JhdGlvbiB0ZXN0LlxuICovXG5leHBvcnQgY2xhc3MgSW50ZWdyYXRpb25UZXN0IGV4dGVuZHMgSW50ZWdyYXRpb25UZXN0QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEludGVncmF0aW9uVGVzdE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBvcHRpb25zKTtcblxuICAgIHByb2plY3QuZGVwcy5yZXF1ZXN0RGVwZW5kZW5jeSh7XG4gICAgICBuYW1lOiBcImNkazhzLWNsaVwiLFxuICAgICAgdHlwZTogRGVwZW5kZW5jeVR5cGUuQlVJTEQsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmRlcHMucmVxdWVzdERlcGVuZGVuY3koe1xuICAgICAgbmFtZTogXCJ0cy1ub2RlXCIsXG4gICAgICB0eXBlOiBEZXBlbmRlbmN5VHlwZS5CVUlMRCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRlcGxveURpciA9IGpvaW4odGhpcy50bXBEaXIsIFwiZGVwbG95LmNkay5vdXRcIik7XG4gICAgY29uc3QgYXNzZXJ0RGlyID0gam9pbih0aGlzLnRtcERpciwgXCJhc3NlcnQuY2RrLm91dFwiKTtcbiAgICBjb25zdCBhcHAgPSBgdHMtbm9kZSAtUCAke29wdGlvbnMudHNjb25maWdQYXRofSAke29wdGlvbnMuZW50cnlwb2ludH1gO1xuXG4gICAgLy8gU3ludGgsIGRlcGxveSwgYW5kIGNhcHR1cmUgdGhlIHNuYXBzaG90XG4gICAgdGhpcy5kZXBsb3lUYXNrLmV4ZWNBcmdzKFtcInJtXCIsIFwiLWZyXCIsIGRlcGxveURpcl0pO1xuICAgIHRoaXMuZGVwbG95VGFzay5leGVjQXJncyhbXCJjZGs4c1wiLCBcInN5bnRoXCIsIFwiLS1hcHBcIiwgYXBwLCBcIi1vXCIsIGRlcGxveURpcl0pO1xuICAgIHRoaXMuZGVwbG95VGFzay5leGVjQXJncyhbXCJrdWJlY3RsXCIsIFwiYXBwbHlcIiwgXCItZlwiLCBkZXBsb3lEaXJdKTtcbiAgICAvLyBJZiBkZXBsb3ltZW50IHdhcyBzdWNjZXNzZnVsLCBjb3B5IHRoZSBkZXBsb3kgZGlyIHRvIHRoZSBleHBlY3RlZCBkaXJcbiAgICB0aGlzLmRlcGxveVRhc2suZXhlY0FyZ3MoW1wicm1cIiwgXCItZnJcIiwgdGhpcy5zbmFwc2hvdERpcl0pO1xuICAgIHRoaXMuZGVwbG95VGFzay5leGVjQXJncyhbXCJtdlwiLCBkZXBsb3lEaXIsIHRoaXMuc25hcHNob3REaXJdKTtcblxuICAgIC8vIFJ1biBhIHNuYXBzaG90XG4gICAgdGhpcy5zbmFwc2hvdFRhc2suZXhlY0FyZ3MoW1wicm1cIiwgXCItZnJcIiwgdGhpcy5zbmFwc2hvdERpcl0pO1xuICAgIHRoaXMuc25hcHNob3RUYXNrLmV4ZWNBcmdzKFtcbiAgICAgIFwiY2RrOHNcIixcbiAgICAgIFwic3ludGhcIixcbiAgICAgIFwiLS1hcHBcIixcbiAgICAgIGFwcCxcbiAgICAgIFwiLW9cIixcbiAgICAgIHRoaXMuc25hcHNob3REaXIsXG4gICAgXSk7XG5cbiAgICAvLyBBc3NlcnQgdGhhdCB0aGUgc25hcHNob3QgaGFzIG5vdCBjaGFuZ2VkIChydW4gZHVyaW5nIHRlc3RzKVxuICAgIHRoaXMuYXNzZXJ0VGFzay5leGVjKFxuICAgICAgYGNkazhzIHN5bnRoIC0tYXBwIFwiJHthcHB9XCIgLW8gJHthc3NlcnREaXJ9ID4gL2Rldi9udWxsYCxcbiAgICApO1xuICAgIHRoaXMuYXNzZXJ0VGFzay5leGVjQXJncyhbXCJkaWZmXCIsIGAke3RoaXMuc25hcHNob3REaXJ9L2AsIGAke2Fzc2VydERpcn0vYF0pO1xuICB9XG59XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGs4cy9pbnRlZ3JhdGlvbi10ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxzQ0FBa0M7QUFFbEMsZ0NBQTZDO0FBQzdDLGtEQUFpRDtBQVFqRDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSx5QkFBbUI7O0lBQ3RELFlBQVksT0FBZ0IsRUFBRSxPQUErQjtRQUMzRCxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhCLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDN0IsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLDZCQUFjLENBQUMsS0FBSztTQUMzQixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQzdCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLDZCQUFjLENBQUMsS0FBSztTQUMzQixDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFBLFlBQUksRUFBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsTUFBTSxTQUFTLEdBQUcsSUFBQSxZQUFJLEVBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sR0FBRyxHQUFHLGNBQWMsT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFdkUsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNoRSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUU5RCxpQkFBaUI7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQ3pCLE9BQU87WUFDUCxPQUFPO1lBQ1AsT0FBTztZQUNQLEdBQUc7WUFDSCxJQUFJO1lBQ0osSUFBSSxDQUFDLFdBQVc7U0FDakIsQ0FBQyxDQUFDO1FBRUgsOERBQThEO1FBQzlELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7O0FBeENILDBDQXlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aC9wb3NpeFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlZ3JhdGlvblRlc3RCYXNlT3B0aW9ucyB9IGZyb20gXCIuLi9jZGtcIjtcbmltcG9ydCB7IEludGVncmF0aW9uVGVzdEJhc2UgfSBmcm9tIFwiLi4vY2RrXCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgSW50ZWdyYXRpb25UZXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdyYXRpb25UZXN0T3B0aW9ucyBleHRlbmRzIEludGVncmF0aW9uVGVzdEJhc2VPcHRpb25zIHt9XG5cbi8qKlxuICogQ0RLOFMgaW50ZWdyYXRpb24gdGVzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEludGVncmF0aW9uVGVzdCBleHRlbmRzIEludGVncmF0aW9uVGVzdEJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBJbnRlZ3JhdGlvblRlc3RPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgb3B0aW9ucyk7XG5cbiAgICBwcm9qZWN0LmRlcHMucmVxdWVzdERlcGVuZGVuY3koe1xuICAgICAgbmFtZTogXCJjZGs4cy1jbGlcIixcbiAgICAgIHR5cGU6IERlcGVuZGVuY3lUeXBlLkJVSUxELFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5kZXBzLnJlcXVlc3REZXBlbmRlbmN5KHtcbiAgICAgIG5hbWU6IFwidHMtbm9kZVwiLFxuICAgICAgdHlwZTogRGVwZW5kZW5jeVR5cGUuQlVJTEQsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZXBsb3lEaXIgPSBqb2luKHRoaXMudG1wRGlyLCBcImRlcGxveS5jZGsub3V0XCIpO1xuICAgIGNvbnN0IGFzc2VydERpciA9IGpvaW4odGhpcy50bXBEaXIsIFwiYXNzZXJ0LmNkay5vdXRcIik7XG4gICAgY29uc3QgYXBwID0gYHRzLW5vZGUgLVAgJHtvcHRpb25zLnRzY29uZmlnUGF0aH0gJHtvcHRpb25zLmVudHJ5cG9pbnR9YDtcblxuICAgIC8vIFN5bnRoLCBkZXBsb3ksIGFuZCBjYXB0dXJlIHRoZSBzbmFwc2hvdFxuICAgIHRoaXMuZGVwbG95VGFzay5leGVjQXJncyhbXCJybVwiLCBcIi1mclwiLCBkZXBsb3lEaXJdKTtcbiAgICB0aGlzLmRlcGxveVRhc2suZXhlY0FyZ3MoW1wiY2RrOHNcIiwgXCJzeW50aFwiLCBcIi0tYXBwXCIsIGFwcCwgXCItb1wiLCBkZXBsb3lEaXJdKTtcbiAgICB0aGlzLmRlcGxveVRhc2suZXhlY0FyZ3MoW1wia3ViZWN0bFwiLCBcImFwcGx5XCIsIFwiLWZcIiwgZGVwbG95RGlyXSk7XG4gICAgLy8gSWYgZGVwbG95bWVudCB3YXMgc3VjY2Vzc2Z1bCwgY29weSB0aGUgZGVwbG95IGRpciB0byB0aGUgZXhwZWN0ZWQgZGlyXG4gICAgdGhpcy5kZXBsb3lUYXNrLmV4ZWNBcmdzKFtcInJtXCIsIFwiLWZyXCIsIHRoaXMuc25hcHNob3REaXJdKTtcbiAgICB0aGlzLmRlcGxveVRhc2suZXhlY0FyZ3MoW1wibXZcIiwgZGVwbG95RGlyLCB0aGlzLnNuYXBzaG90RGlyXSk7XG5cbiAgICAvLyBSdW4gYSBzbmFwc2hvdFxuICAgIHRoaXMuc25hcHNob3RUYXNrLmV4ZWNBcmdzKFtcInJtXCIsIFwiLWZyXCIsIHRoaXMuc25hcHNob3REaXJdKTtcbiAgICB0aGlzLnNuYXBzaG90VGFzay5leGVjQXJncyhbXG4gICAgICBcImNkazhzXCIsXG4gICAgICBcInN5bnRoXCIsXG4gICAgICBcIi0tYXBwXCIsXG4gICAgICBhcHAsXG4gICAgICBcIi1vXCIsXG4gICAgICB0aGlzLnNuYXBzaG90RGlyLFxuICAgIF0pO1xuXG4gICAgLy8gQXNzZXJ0IHRoYXQgdGhlIHNuYXBzaG90IGhhcyBub3QgY2hhbmdlZCAocnVuIGR1cmluZyB0ZXN0cylcbiAgICB0aGlzLmFzc2VydFRhc2suZXhlY0FyZ3MoW1wiY2RrOHNcIiwgXCJzeW50aFwiLCBcIi0tYXBwXCIsIGFwcCwgXCItb1wiLCBhc3NlcnREaXJdKTtcbiAgICB0aGlzLmFzc2VydFRhc2suZXhlY0FyZ3MoW1wiZGlmZlwiLCBgJHt0aGlzLnNuYXBzaG90RGlyfS9gLCBgJHthc3NlcnREaXJ9L2BdKTtcbiAgfVxufVxuIl19
@@ -49,7 +49,7 @@ const cdk_1 = require("../cdk");
49
49
  * @pjid cdktf-construct
50
50
  */
51
51
  class ConstructLibraryCdktf extends cdk_1.ConstructLibrary {
52
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktf.ConstructLibraryCdktf", version: "0.102.0" };
52
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktf.ConstructLibraryCdktf", version: "0.103.1" };
53
53
  constructor(options) {
54
54
  super(options);
55
55
  if (!options.cdktfVersion) {
@@ -54,7 +54,7 @@ const fs_1 = require("../util/fs");
54
54
  * @pjid cdktn-app-ts
55
55
  */
56
56
  class CdktnTypeScriptApp extends typescript_1.TypeScriptAppProject {
57
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnTypeScriptApp", version: "0.102.0" };
57
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnTypeScriptApp", version: "0.103.1" };
58
58
  /**
59
59
  * The CDKTN app entrypoint.
60
60
  */
@@ -46,7 +46,7 @@ const json_1 = require("../json");
46
46
  * backwards compatibility with its CDKTF origins.
47
47
  */
48
48
  class CdktnConfig extends component_1.Component {
49
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnConfig", version: "0.102.0" };
49
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnConfig", version: "0.103.1" };
50
50
  /**
51
51
  * Represents the JSON file.
52
52
  */
@@ -17,7 +17,7 @@ const dependencies_1 = require("../dependencies");
17
17
  * @pjid cdktn-construct
18
18
  */
19
19
  class ConstructLibraryCdktn extends cdk_1.ConstructLibrary {
20
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.ConstructLibraryCdktn", version: "0.102.0" };
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.ConstructLibraryCdktn", version: "0.103.1" };
21
21
  cdktnDeps;
22
22
  constructor(options) {
23
23
  super(options);
@@ -42,7 +42,7 @@ const dependencies_1 = require("../dependencies");
42
42
  * Manages dependencies on CDK Terrain (CDKTN).
43
43
  */
44
44
  class CdktnDeps extends component_1.Component {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnDeps", version: "0.102.0" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnDeps", version: "0.103.1" };
46
46
  /**
47
47
  * The dependency requirement for CDKTN (e.g. `^0.24.0`).
48
48
  */
@@ -7,7 +7,7 @@ const component_1 = require("../component");
7
7
  * Adds standard CDKTN tasks to your project.
8
8
  */
9
9
  class CdktnTasks extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnTasks", version: "0.102.0" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnTasks", version: "0.103.1" };
11
11
  /**
12
12
  * Gets/updates Terraform providers and modules.
13
13
  */
@@ -12,7 +12,7 @@ const yaml_1 = require("../yaml");
12
12
  * @see https://circleci.com/docs/2.0/configuration-reference/
13
13
  */
14
14
  class Circleci extends component_1.Component {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.circleci.Circleci", version: "0.102.0" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.circleci.Circleci", version: "0.103.1" };
16
16
  /**
17
17
  * The yaml file for the Circleci pipeline
18
18
  * */
package/lib/cleanup.js CHANGED
@@ -40,6 +40,7 @@ const path = __importStar(require("path"));
40
40
  const glob = __importStar(require("fast-glob"));
41
41
  const common_1 = require("./common");
42
42
  const logging = __importStar(require("./logging"));
43
+ const path_1 = require("./util/path");
43
44
  exports.FILE_MANIFEST = `${common_1.PROJEN_DIR}/files.json`;
44
45
  function cleanup(dir, newFiles, exclude) {
45
46
  try {
@@ -118,49 +119,21 @@ function resolveWithinDir(dir, file) {
118
119
  if (path.isAbsolute(file)) {
119
120
  return skip("it is an absolute path instead of a path in your project");
120
121
  }
121
- const baseDir = realpathOfClosestExisting(dir);
122
+ const baseDir = (0, path_1.realpathOfClosestExisting)(dir);
122
123
  const resolved = path.resolve(baseDir, file);
123
- if (!isPathInside(baseDir, resolved)) {
124
+ if (!(0, path_1.isPathInside)(baseDir, resolved)) {
124
125
  return skip("it points outside of your project directory");
125
126
  }
126
127
  // the entry might traverse outside of the project through a symlinked
127
128
  // directory, which `path.resolve` cannot detect. The last path segment is
128
129
  // intentionally kept as-is: removing a symlink inside the project only
129
130
  // deletes the link itself, not its target.
130
- const realParent = realpathOfClosestExisting(path.dirname(resolved));
131
- if (!isPathInside(baseDir, path.join(realParent, path.basename(resolved)))) {
131
+ const realParent = (0, path_1.realpathOfClosestExisting)(path.dirname(resolved));
132
+ if (!(0, path_1.isPathInside)(baseDir, path.join(realParent, path.basename(resolved)))) {
132
133
  return skip("it points outside of your project directory through a symlink");
133
134
  }
134
135
  return resolved;
135
136
  }
136
- function isPathInside(dir, file) {
137
- const relative = path.relative(dir, file);
138
- return (relative !== "" &&
139
- !relative.startsWith(`..${path.sep}`) &&
140
- relative !== ".." &&
141
- !path.isAbsolute(relative));
142
- }
143
- /**
144
- * Resolves symlinks in `p`, falling back to the closest existing ancestor for
145
- * paths that do not exist (yet).
146
- */
147
- function realpathOfClosestExisting(p) {
148
- const missing = new Array();
149
- let current = path.resolve(p);
150
- while (true) {
151
- try {
152
- return path.join(fs.realpathSync(current), ...missing);
153
- }
154
- catch {
155
- const parent = path.dirname(current);
156
- if (parent === current) {
157
- return path.resolve(p);
158
- }
159
- missing.unshift(path.basename(current));
160
- current = parent;
161
- }
162
- }
163
- }
164
137
  function getFilesFromManifest(dir) {
165
138
  try {
166
139
  const fileManifestPath = path.resolve(dir, exports.FILE_MANIFEST);
@@ -195,4 +168,4 @@ function readGitIgnore(dir) {
195
168
  .join("\n")
196
169
  .split("\n");
197
170
  }
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW51cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGVhbnVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLDBCQWdCQztBQXhCRCx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGdEQUFrQztBQUNsQyxxQ0FBcUQ7QUFDckQsbURBQXFDO0FBRXhCLFFBQUEsYUFBYSxHQUFHLEdBQUcsbUJBQVUsYUFBYSxDQUFDO0FBRXhELFNBQWdCLE9BQU8sQ0FBQyxHQUFXLEVBQUUsUUFBa0IsRUFBRSxPQUFpQjtJQUN4RSxJQUFJLENBQUM7UUFDSCxNQUFNLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsMkVBQTJFO1lBQzNFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTix1REFBdUQ7WUFDdkQsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztRQUNoQixPQUFPLENBQUMsSUFBSSxDQUNWLHVHQUF1RztZQUNyRyx5RUFBeUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUNyRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUFlO0lBQ2xDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7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Q1osQ0FBQztJQUVELE9BQU8sRUFBRTtTQUNOLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDO1NBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDL0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7U0FDckQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ1YsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCAqIGFzIGdsb2IgZnJvbSBcImZhc3QtZ2xvYlwiO1xuaW1wb3J0IHsgUFJPSkVOX0RJUiwgUFJPSkVOX01BUktFUiB9IGZyb20gXCIuL2NvbW1vblwiO1xuaW1wb3J0ICogYXMgbG9nZ2luZyBmcm9tIFwiLi9sb2dnaW5nXCI7XG5cbmV4cG9ydCBjb25zdCBGSUxFX01BTklGRVNUID0gYCR7UFJPSkVOX0RJUn0vZmlsZXMuanNvbmA7XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwKGRpcjogc3RyaW5nLCBuZXdGaWxlczogc3RyaW5nW10sIGV4Y2x1ZGU6IHN0cmluZ1tdKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3RGaWxlcyA9IGdldEZpbGVzRnJvbU1hbmlmZXN0KGRpcik7XG4gICAgaWYgKG1hbmlmZXN0RmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gVXNlIGBGSUxFX01BTklGRVNUYCB0byByZW1vdmUgZmlsZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIG1hbmFnZWQgYnkgcHJvamVuXG4gICAgICByZW1vdmVGaWxlcyhmaW5kT3JwaGFuZWRGaWxlcyhkaXIsIG1hbmlmZXN0RmlsZXMsIG5ld0ZpbGVzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlbW92ZSBhbGwgZmlsZXMgbWFuYWdlZCBieSBwcm9qZW4gd2l0aCBsZWdhY3kgbG9naWNcbiAgICAgIHJlbW92ZUZpbGVzKGZpbmRHZW5lcmF0ZWRGaWxlcyhkaXIsIGV4Y2x1ZGUpKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIGxvZ2dpbmcud2FybihcbiAgICAgIGBDb3VsZCBub3QgY2xlYW4gdXAgcHJldmlvdXNseSBnZW5lcmF0ZWQgZmlsZXMsIHNvIG91dGRhdGVkIGZpbGVzIG1heSBiZSBsZWZ0IGJlaGluZCBpbiB5b3VyIHByb2plY3QuIGAgK1xuICAgICAgICBgU3ludGhlc2lzIGNvbnRpbnVlcywgYnV0IHlvdSBtYXkgbmVlZCB0byBkZWxldGUgdGhlbSB5b3Vyc2VsZi4gRXJyb3I6ICR7ZS5zdGFja31gLFxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRmlsZXMoZmlsZXM6IHN0cmluZ1tdKSB7XG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGZzLnJtU3luYyhmaWxlLCB7IGZvcmNlOiB0cnVlLCByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEdlbmVyYXRlZEZpbGVzKGRpcjogc3RyaW5nLCBleGNsdWRlOiBzdHJpbmdbXSkge1xuICBjb25zdCBpZ25vcmUgPSBbXG4gICAgLi4ucmVhZEdpdElnbm9yZShkaXIpLFxuICAgIFwibm9kZV9tb2R1bGVzLyoqXCIsXG4gICAgLi4uZXhjbHVkZSxcbiAgICBcIi5naXQvKipcIixcbiAgXTtcblxuICBjb25zdCBmaWxlcyA9IGdsb2Iuc3luYyhcIioqXCIsIHtcbiAgICBpZ25vcmUsXG4gICAgY3dkOiBkaXIsXG4gICAgZG90OiB0cnVlLFxuICAgIG9ubHlGaWxlczogdHJ1ZSxcbiAgICBmb2xsb3dTeW1ib2xpY0xpbmtzOiBmYWxzZSxcbiAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3QgZ2VuZXJhdGVkID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBjb25zdCBjb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhmaWxlLCBcInV0Zi04XCIpO1xuXG4gICAgaWYgKGNvbnRlbnRzLmluY2x1ZGVzKFBST0pFTl9NQVJLRVIpKSB7XG4gICAgICBnZW5lcmF0ZWQucHVzaChmaWxlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZ2VuZXJhdGVkO1xufVxuXG5mdW5jdGlvbiBmaW5kT3JwaGFuZWRGaWxlcyhcbiAgZGlyOiBzdHJpbmcsXG4gIG9sZEZpbGVzOiBzdHJpbmdbXSxcbiAgbmV3RmlsZXM6IHN0cmluZ1tdLFxuKSB7XG4gIHJldHVybiBvbGRGaWxlc1xuICAgIC5maWx0ZXIoKG9sZCkgPT4gIW5ld0ZpbGVzLmluY2x1ZGVzKG9sZCkpXG4gICAgLm1hcCgoZjogc3RyaW5nKSA9PiByZXNvbHZlV2l0aGluRGlyKGRpciwgZikpXG4gICAgLmZpbHRlcigoZik6IGYgaXMgc3RyaW5nID0+IGYgIT09IHVuZGVmaW5lZCk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBmaWxlIHBhdGggdGFrZW4gZnJvbSB0aGUgZmlsZSBtYW5pZmVzdCBhZ2FpbnN0IHRoZSBwcm9qZWN0XG4gKiBkaXJlY3RvcnksIG1ha2luZyBzdXJlIHRoZSByZXN1bHQgc3RheXMgaW5zaWRlIG9mIGl0LlxuICpcbiAqIFRoZSBmaWxlIG1hbmlmZXN0IGlzIGNoZWNrZWQgaW50byB0aGUgcmVwb3NpdG9yeSBhbmQgaXMgdGhlcmVmb3JlIHVudHJ1c3RlZFxuICogaW5wdXQ6IHdpdGhvdXQgdGhpcyBjaGVjaywgYSBtYW5pZmVzdCBjb250YWluaW5nIGAuLi9gIG9yIGFic29sdXRlIHBhdGhcbiAqIGVudHJpZXMgd291bGQgbWFrZSBjbGVhbnVwIGRlbGV0ZSBmaWxlcyBvdXRzaWRlIG9mIHRoZSBwcm9qZWN0IGRpcmVjdG9yeS5cbiAqXG4gKiBAcmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCB0byBkZWxldGUsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBlbnRyeSBkb2VzIG5vdFxuICogcmVzb2x2ZSB0byBhIGxvY2F0aW9uIGluc2lkZSBgZGlyYC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVdpdGhpbkRpcihkaXI6IHN0cmluZywgZmlsZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc2tpcCA9IChyZWFzb246IHN0cmluZykgPT4ge1xuICAgIGxvZ2dpbmcud2FybihcbiAgICAgIGBOb3QgZGVsZXRpbmcgJHtKU09OLnN0cmluZ2lmeShmaWxlKX0gZHVyaW5nIGNsZWFudXAgYmVjYXVzZSAke3JlYXNvbn0uIGAgK1xuICAgICAgICBgcHJvamVuIG9ubHkgcmVtb3ZlcyBnZW5lcmF0ZWQgZmlsZXMgaW5zaWRlIHlvdXIgcHJvamVjdCBkaXJlY3RvcnkuIGAgK1xuICAgICAgICBgVGhpcyBlbnRyeSBpbiAke0ZJTEVfTUFOSUZFU1R9IHNob3VsZCBub3QgYmUgdGhlcmUgLSByZXZpZXcgaXQgKGFuZCB3aG8gY2hhbmdlZCBpdCkgaW4gdmVyc2lvbiBjb250cm9sLCBgICtcbiAgICAgICAgYGFuZCBkZWxldGUgdGhlIGZpbGUgeW91cnNlbGYgaWYgeW91IHJlYWxseSBubyBsb25nZXIgbmVlZCBpdC5gLFxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfTtcblxuICBpZiAodHlwZW9mIGZpbGUgIT09IFwic3RyaW5nXCIgfHwgZmlsZS50cmltKCkgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gc2tpcChcIml0IGlzIG5vdCBhIGZpbGUgcGF0aFwiKTtcbiAgfVxuXG4gIGlmIChwYXRoLmlzQWJzb2x1dGUoZmlsZSkpIHtcbiAgICByZXR1cm4gc2tpcChcIml0IGlzIGFuIGFic29sdXRlIHBhdGggaW5zdGVhZCBvZiBhIHBhdGggaW4geW91ciBwcm9qZWN0XCIpO1xuICB9XG5cbiAgY29uc3QgYmFzZURpciA9IHJlYWxwYXRoT2ZDbG9zZXN0RXhpc3RpbmcoZGlyKTtcbiAgY29uc3QgcmVzb2x2ZWQgPSBwYXRoLnJlc29sdmUoYmFzZURpciwgZmlsZSk7XG5cbiAgaWYgKCFpc1BhdGhJbnNpZGUoYmFzZURpciwgcmVzb2x2ZWQpKSB7XG4gICAgcmV0dXJuIHNraXAoXCJpdCBwb2ludHMgb3V0c2lkZSBvZiB5b3VyIHByb2plY3QgZGlyZWN0b3J5XCIpO1xuICB9XG5cbiAgLy8gdGhlIGVudHJ5IG1pZ2h0IHRyYXZlcnNlIG91dHNpZGUgb2YgdGhlIHByb2plY3QgdGhyb3VnaCBhIHN5bWxpbmtlZFxuICAvLyBkaXJlY3RvcnksIHdoaWNoIGBwYXRoLnJlc29sdmVgIGNhbm5vdCBkZXRlY3QuIFRoZSBsYXN0IHBhdGggc2VnbWVudCBpc1xuICAvLyBpbnRlbnRpb25hbGx5IGtlcHQgYXMtaXM6IHJlbW92aW5nIGEgc3ltbGluayBpbnNpZGUgdGhlIHByb2plY3Qgb25seVxuICAvLyBkZWxldGVzIHRoZSBsaW5rIGl0c2VsZiwgbm90IGl0cyB0YXJnZXQuXG4gIGNvbnN0IHJlYWxQYXJlbnQgPSByZWFscGF0aE9mQ2xvc2VzdEV4aXN0aW5nKHBhdGguZGlybmFtZShyZXNvbHZlZCkpO1xuICBpZiAoIWlzUGF0aEluc2lkZShiYXNlRGlyLCBwYXRoLmpvaW4ocmVhbFBhcmVudCwgcGF0aC5iYXNlbmFtZShyZXNvbHZlZCkpKSkge1xuICAgIHJldHVybiBza2lwKFxuICAgICAgXCJpdCBwb2ludHMgb3V0c2lkZSBvZiB5b3VyIHByb2plY3QgZGlyZWN0b3J5IHRocm91Z2ggYSBzeW1saW5rXCIsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiByZXNvbHZlZDtcbn1cblxuZnVuY3Rpb24gaXNQYXRoSW5zaWRlKGRpcjogc3RyaW5nLCBmaWxlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgcmVsYXRpdmUgPSBwYXRoLnJlbGF0aXZlKGRpciwgZmlsZSk7XG4gIHJldHVybiAoXG4gICAgcmVsYXRpdmUgIT09IFwiXCIgJiZcbiAgICAhcmVsYXRpdmUuc3RhcnRzV2l0aChgLi4ke3BhdGguc2VwfWApICYmXG4gICAgcmVsYXRpdmUgIT09IFwiLi5cIiAmJlxuICAgICFwYXRoLmlzQWJzb2x1dGUocmVsYXRpdmUpXG4gICk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgc3ltbGlua3MgaW4gYHBgLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGNsb3Nlc3QgZXhpc3RpbmcgYW5jZXN0b3IgZm9yXG4gKiBwYXRocyB0aGF0IGRvIG5vdCBleGlzdCAoeWV0KS5cbiAqL1xuZnVuY3Rpb24gcmVhbHBhdGhPZkNsb3Nlc3RFeGlzdGluZyhwOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtaXNzaW5nID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgbGV0IGN1cnJlbnQgPSBwYXRoLnJlc29sdmUocCk7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHBhdGguam9pbihmcy5yZWFscGF0aFN5bmMoY3VycmVudCksIC4uLm1pc3NpbmcpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5kaXJuYW1lKGN1cnJlbnQpO1xuICAgICAgaWYgKHBhcmVudCA9PT0gY3VycmVudCkge1xuICAgICAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHApO1xuICAgICAgfVxuICAgICAgbWlzc2luZy51bnNoaWZ0KHBhdGguYmFzZW5hbWUoY3VycmVudCkpO1xuICAgICAgY3VycmVudCA9IHBhcmVudDtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RmlsZXNGcm9tTWFuaWZlc3QoZGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIHRyeSB7XG4gICAgY29uc3QgZmlsZU1hbmlmZXN0UGF0aCA9IHBhdGgucmVzb2x2ZShkaXIsIEZJTEVfTUFOSUZFU1QpO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGZpbGVNYW5pZmVzdFBhdGgpKSB7XG4gICAgICBjb25zdCBmaWxlTWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgICBmcy5yZWFkRmlsZVN5bmMoZmlsZU1hbmlmZXN0UGF0aCwgXCJ1dGYtOFwiKSxcbiAgICAgICk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWxlTWFuaWZlc3QuZmlsZXMpKSB7XG4gICAgICAgIHJldHVybiBmaWxlTWFuaWZlc3QuZmlsZXM7XG4gICAgICB9XG4gICAgICBpZiAoZmlsZU1hbmlmZXN0LmZpbGVzKSB7XG4gICAgICAgIGxvZ2dpbmcuZGVidWcoXG4gICAgICAgICAgYFwiZmlsZXNcIiBpbiAke0ZJTEVfTUFOSUZFU1R9IGlzIG5vdCBhIGxpc3Qgb2YgZmlsZXMsIHNvIGl0IGNhbm5vdCBiZSB1c2VkIHRvIGZpbmQgZmlsZXMgdG8gY2xlYW4gdXAuIEZhbGxpbmcgYmFjayB0byBzY2FubmluZyB5b3VyIHByb2plY3QgZm9yIHByb2plbi1nZW5lcmF0ZWQgZmlsZXMuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIGxvZ2dpbmcud2FybihcbiAgICAgIGBDb3VsZCBub3QgcmVhZCB0aGUgbGlzdCBvZiBnZW5lcmF0ZWQgZmlsZXMgZnJvbSAke0ZJTEVfTUFOSUZFU1R9LCBzbyBwcm9qZW4gd2lsbCBzY2FuIHlvdXIgcHJvamVjdCBmb3IgZ2VuZXJhdGVkIGZpbGVzIGluc3RlYWQuIGAgK1xuICAgICAgICBgQ2hlY2sgdGhhdCB0aGUgZmlsZSBleGlzdHMgaW4gdmVyc2lvbiBjb250cm9sIGFuZCBjb250YWlucyB2YWxpZCBKU09OLiBFcnJvcjogJHtlLnN0YWNrfWAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBbXTtcbn1cblxuZnVuY3Rpb24gcmVhZEdpdElnbm9yZShkaXI6IHN0cmluZykge1xuICBjb25zdCBmaWxlcGF0aCA9IHBhdGguam9pbihkaXIsIFwiLmdpdGlnbm9yZVwiKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGVwYXRoKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBmc1xuICAgIC5yZWFkRmlsZVN5bmMoZmlsZXBhdGgsIFwidXRmLThcIilcbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAuZmlsdGVyKCh4KSA9PiB4Py50cmltKCkgIT09IFwiXCIpXG4gICAgLmZpbHRlcigoeCkgPT4gIXguc3RhcnRzV2l0aChcIiNcIikgJiYgIXguc3RhcnRzV2l0aChcIiFcIikpXG4gICAgLm1hcCgoeCkgPT4geC5yZXBsYWNlKC9eXFwvLywgXCJcIikpIC8vIHJlbW92ZSBcIi9cIiBwcmVmaXhcbiAgICAubWFwKCh4KSA9PiBgJHt4fVxcbiR7eH0vKipgKVxuICAgIC5qb2luKFwiXFxuXCIpXG4gICAgLnNwbGl0KFwiXFxuXCIpO1xufVxuIl19
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW51cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGVhbnVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBLDBCQWdCQztBQXpCRCx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGdEQUFrQztBQUNsQyxxQ0FBcUQ7QUFDckQsbURBQXFDO0FBQ3JDLHNDQUFzRTtBQUV6RCxRQUFBLGFBQWEsR0FBRyxHQUFHLG1CQUFVLGFBQWEsQ0FBQztBQUV4RCxTQUFnQixPQUFPLENBQUMsR0FBVyxFQUFFLFFBQWtCLEVBQUUsT0FBaUI7SUFDeEUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxhQUFhLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLDJFQUEyRTtZQUMzRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7YUFBTSxDQUFDO1lBQ04sdURBQXVEO1lBQ3ZELFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLElBQUksQ0FDVix1R0FBdUc7WUFDckcseUVBQXlFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FDckYsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBZTtJQUNsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FB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RyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxFQUFFO1NBQ04sWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7U0FDL0IsS0FBSyxDQUFDLElBQUksQ0FBQztTQUNYLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUMvQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtTQUNyRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQzNCLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDVixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgZ2xvYiBmcm9tIFwiZmFzdC1nbG9iXCI7XG5pbXBvcnQgeyBQUk9KRU5fRElSLCBQUk9KRU5fTUFSS0VSIH0gZnJvbSBcIi4vY29tbW9uXCI7XG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gXCIuL2xvZ2dpbmdcIjtcbmltcG9ydCB7IGlzUGF0aEluc2lkZSwgcmVhbHBhdGhPZkNsb3Nlc3RFeGlzdGluZyB9IGZyb20gXCIuL3V0aWwvcGF0aFwiO1xuXG5leHBvcnQgY29uc3QgRklMRV9NQU5JRkVTVCA9IGAke1BST0pFTl9ESVJ9L2ZpbGVzLmpzb25gO1xuXG5leHBvcnQgZnVuY3Rpb24gY2xlYW51cChkaXI6IHN0cmluZywgbmV3RmlsZXM6IHN0cmluZ1tdLCBleGNsdWRlOiBzdHJpbmdbXSkge1xuICB0cnkge1xuICAgIGNvbnN0IG1hbmlmZXN0RmlsZXMgPSBnZXRGaWxlc0Zyb21NYW5pZmVzdChkaXIpO1xuICAgIGlmIChtYW5pZmVzdEZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIFVzZSBgRklMRV9NQU5JRkVTVGAgdG8gcmVtb3ZlIGZpbGVzIHRoYXQgYXJlIG5vIGxvbmdlciBtYW5hZ2VkIGJ5IHByb2plblxuICAgICAgcmVtb3ZlRmlsZXMoZmluZE9ycGhhbmVkRmlsZXMoZGlyLCBtYW5pZmVzdEZpbGVzLCBuZXdGaWxlcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZW1vdmUgYWxsIGZpbGVzIG1hbmFnZWQgYnkgcHJvamVuIHdpdGggbGVnYWN5IGxvZ2ljXG4gICAgICByZW1vdmVGaWxlcyhmaW5kR2VuZXJhdGVkRmlsZXMoZGlyLCBleGNsdWRlKSk7XG4gICAgfVxuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBsb2dnaW5nLndhcm4oXG4gICAgICBgQ291bGQgbm90IGNsZWFuIHVwIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGZpbGVzLCBzbyBvdXRkYXRlZCBmaWxlcyBtYXkgYmUgbGVmdCBiZWhpbmQgaW4geW91ciBwcm9qZWN0LiBgICtcbiAgICAgICAgYFN5bnRoZXNpcyBjb250aW51ZXMsIGJ1dCB5b3UgbWF5IG5lZWQgdG8gZGVsZXRlIHRoZW0geW91cnNlbGYuIEVycm9yOiAke2Uuc3RhY2t9YCxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUZpbGVzKGZpbGVzOiBzdHJpbmdbXSkge1xuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBmcy5ybVN5bmMoZmlsZSwgeyBmb3JjZTogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRHZW5lcmF0ZWRGaWxlcyhkaXI6IHN0cmluZywgZXhjbHVkZTogc3RyaW5nW10pIHtcbiAgY29uc3QgaWdub3JlID0gW1xuICAgIC4uLnJlYWRHaXRJZ25vcmUoZGlyKSxcbiAgICBcIm5vZGVfbW9kdWxlcy8qKlwiLFxuICAgIC4uLmV4Y2x1ZGUsXG4gICAgXCIuZ2l0LyoqXCIsXG4gIF07XG5cbiAgY29uc3QgZmlsZXMgPSBnbG9iLnN5bmMoXCIqKlwiLCB7XG4gICAgaWdub3JlLFxuICAgIGN3ZDogZGlyLFxuICAgIGRvdDogdHJ1ZSxcbiAgICBvbmx5RmlsZXM6IHRydWUsXG4gICAgZm9sbG93U3ltYm9saWNMaW5rczogZmFsc2UsXG4gICAgYWJzb2x1dGU6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGdlbmVyYXRlZCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgY29uc3QgY29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZSwgXCJ1dGYtOFwiKTtcblxuICAgIGlmIChjb250ZW50cy5pbmNsdWRlcyhQUk9KRU5fTUFSS0VSKSkge1xuICAgICAgZ2VuZXJhdGVkLnB1c2goZmlsZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGdlbmVyYXRlZDtcbn1cblxuZnVuY3Rpb24gZmluZE9ycGhhbmVkRmlsZXMoXG4gIGRpcjogc3RyaW5nLFxuICBvbGRGaWxlczogc3RyaW5nW10sXG4gIG5ld0ZpbGVzOiBzdHJpbmdbXSxcbikge1xuICByZXR1cm4gb2xkRmlsZXNcbiAgICAuZmlsdGVyKChvbGQpID0+ICFuZXdGaWxlcy5pbmNsdWRlcyhvbGQpKVxuICAgIC5tYXAoKGY6IHN0cmluZykgPT4gcmVzb2x2ZVdpdGhpbkRpcihkaXIsIGYpKVxuICAgIC5maWx0ZXIoKGYpOiBmIGlzIHN0cmluZyA9PiBmICE9PSB1bmRlZmluZWQpO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGEgZmlsZSBwYXRoIHRha2VuIGZyb20gdGhlIGZpbGUgbWFuaWZlc3QgYWdhaW5zdCB0aGUgcHJvamVjdFxuICogZGlyZWN0b3J5LCBtYWtpbmcgc3VyZSB0aGUgcmVzdWx0IHN0YXlzIGluc2lkZSBvZiBpdC5cbiAqXG4gKiBUaGUgZmlsZSBtYW5pZmVzdCBpcyBjaGVja2VkIGludG8gdGhlIHJlcG9zaXRvcnkgYW5kIGlzIHRoZXJlZm9yZSB1bnRydXN0ZWRcbiAqIGlucHV0OiB3aXRob3V0IHRoaXMgY2hlY2ssIGEgbWFuaWZlc3QgY29udGFpbmluZyBgLi4vYCBvciBhYnNvbHV0ZSBwYXRoXG4gKiBlbnRyaWVzIHdvdWxkIG1ha2UgY2xlYW51cCBkZWxldGUgZmlsZXMgb3V0c2lkZSBvZiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuXG4gKlxuICogQHJldHVybnMgdGhlIGFic29sdXRlIHBhdGggdG8gZGVsZXRlLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgZW50cnkgZG9lcyBub3RcbiAqIHJlc29sdmUgdG8gYSBsb2NhdGlvbiBpbnNpZGUgYGRpcmAuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVXaXRoaW5EaXIoZGlyOiBzdHJpbmcsIGZpbGU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHNraXAgPSAocmVhc29uOiBzdHJpbmcpID0+IHtcbiAgICBsb2dnaW5nLndhcm4oXG4gICAgICBgTm90IGRlbGV0aW5nICR7SlNPTi5zdHJpbmdpZnkoZmlsZSl9IGR1cmluZyBjbGVhbnVwIGJlY2F1c2UgJHtyZWFzb259LiBgICtcbiAgICAgICAgYHByb2plbiBvbmx5IHJlbW92ZXMgZ2VuZXJhdGVkIGZpbGVzIGluc2lkZSB5b3VyIHByb2plY3QgZGlyZWN0b3J5LiBgICtcbiAgICAgICAgYFRoaXMgZW50cnkgaW4gJHtGSUxFX01BTklGRVNUfSBzaG91bGQgbm90IGJlIHRoZXJlIC0gcmV2aWV3IGl0IChhbmQgd2hvIGNoYW5nZWQgaXQpIGluIHZlcnNpb24gY29udHJvbCwgYCArXG4gICAgICAgIGBhbmQgZGVsZXRlIHRoZSBmaWxlIHlvdXJzZWxmIGlmIHlvdSByZWFsbHkgbm8gbG9uZ2VyIG5lZWQgaXQuYCxcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgaWYgKHR5cGVvZiBmaWxlICE9PSBcInN0cmluZ1wiIHx8IGZpbGUudHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIHNraXAoXCJpdCBpcyBub3QgYSBmaWxlIHBhdGhcIik7XG4gIH1cblxuICBpZiAocGF0aC5pc0Fic29sdXRlKGZpbGUpKSB7XG4gICAgcmV0dXJuIHNraXAoXCJpdCBpcyBhbiBhYnNvbHV0ZSBwYXRoIGluc3RlYWQgb2YgYSBwYXRoIGluIHlvdXIgcHJvamVjdFwiKTtcbiAgfVxuXG4gIGNvbnN0IGJhc2VEaXIgPSByZWFscGF0aE9mQ2xvc2VzdEV4aXN0aW5nKGRpcik7XG4gIGNvbnN0IHJlc29sdmVkID0gcGF0aC5yZXNvbHZlKGJhc2VEaXIsIGZpbGUpO1xuXG4gIGlmICghaXNQYXRoSW5zaWRlKGJhc2VEaXIsIHJlc29sdmVkKSkge1xuICAgIHJldHVybiBza2lwKFwiaXQgcG9pbnRzIG91dHNpZGUgb2YgeW91ciBwcm9qZWN0IGRpcmVjdG9yeVwiKTtcbiAgfVxuXG4gIC8vIHRoZSBlbnRyeSBtaWdodCB0cmF2ZXJzZSBvdXRzaWRlIG9mIHRoZSBwcm9qZWN0IHRocm91Z2ggYSBzeW1saW5rZWRcbiAgLy8gZGlyZWN0b3J5LCB3aGljaCBgcGF0aC5yZXNvbHZlYCBjYW5ub3QgZGV0ZWN0LiBUaGUgbGFzdCBwYXRoIHNlZ21lbnQgaXNcbiAgLy8gaW50ZW50aW9uYWxseSBrZXB0IGFzLWlzOiByZW1vdmluZyBhIHN5bWxpbmsgaW5zaWRlIHRoZSBwcm9qZWN0IG9ubHlcbiAgLy8gZGVsZXRlcyB0aGUgbGluayBpdHNlbGYsIG5vdCBpdHMgdGFyZ2V0LlxuICBjb25zdCByZWFsUGFyZW50ID0gcmVhbHBhdGhPZkNsb3Nlc3RFeGlzdGluZyhwYXRoLmRpcm5hbWUocmVzb2x2ZWQpKTtcbiAgaWYgKCFpc1BhdGhJbnNpZGUoYmFzZURpciwgcGF0aC5qb2luKHJlYWxQYXJlbnQsIHBhdGguYmFzZW5hbWUocmVzb2x2ZWQpKSkpIHtcbiAgICByZXR1cm4gc2tpcChcbiAgICAgIFwiaXQgcG9pbnRzIG91dHNpZGUgb2YgeW91ciBwcm9qZWN0IGRpcmVjdG9yeSB0aHJvdWdoIGEgc3ltbGlua1wiLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEZpbGVzRnJvbU1hbmlmZXN0KGRpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICB0cnkge1xuICAgIGNvbnN0IGZpbGVNYW5pZmVzdFBhdGggPSBwYXRoLnJlc29sdmUoZGlyLCBGSUxFX01BTklGRVNUKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhmaWxlTWFuaWZlc3RQYXRoKSkge1xuICAgICAgY29uc3QgZmlsZU1hbmlmZXN0ID0gSlNPTi5wYXJzZShcbiAgICAgICAgZnMucmVhZEZpbGVTeW5jKGZpbGVNYW5pZmVzdFBhdGgsIFwidXRmLThcIiksXG4gICAgICApO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsZU1hbmlmZXN0LmZpbGVzKSkge1xuICAgICAgICByZXR1cm4gZmlsZU1hbmlmZXN0LmZpbGVzO1xuICAgICAgfVxuICAgICAgaWYgKGZpbGVNYW5pZmVzdC5maWxlcykge1xuICAgICAgICBsb2dnaW5nLmRlYnVnKFxuICAgICAgICAgIGBcImZpbGVzXCIgaW4gJHtGSUxFX01BTklGRVNUfSBpcyBub3QgYSBsaXN0IG9mIGZpbGVzLCBzbyBpdCBjYW5ub3QgYmUgdXNlZCB0byBmaW5kIGZpbGVzIHRvIGNsZWFuIHVwLiBGYWxsaW5nIGJhY2sgdG8gc2Nhbm5pbmcgeW91ciBwcm9qZWN0IGZvciBwcm9qZW4tZ2VuZXJhdGVkIGZpbGVzLmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBsb2dnaW5nLndhcm4oXG4gICAgICBgQ291bGQgbm90IHJlYWQgdGhlIGxpc3Qgb2YgZ2VuZXJhdGVkIGZpbGVzIGZyb20gJHtGSUxFX01BTklGRVNUfSwgc28gcHJvamVuIHdpbGwgc2NhbiB5b3VyIHByb2plY3QgZm9yIGdlbmVyYXRlZCBmaWxlcyBpbnN0ZWFkLiBgICtcbiAgICAgICAgYENoZWNrIHRoYXQgdGhlIGZpbGUgZXhpc3RzIGluIHZlcnNpb24gY29udHJvbCBhbmQgY29udGFpbnMgdmFsaWQgSlNPTi4gRXJyb3I6ICR7ZS5zdGFja31gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIHJlYWRHaXRJZ25vcmUoZGlyOiBzdHJpbmcpIHtcbiAgY29uc3QgZmlsZXBhdGggPSBwYXRoLmpvaW4oZGlyLCBcIi5naXRpZ25vcmVcIik7XG4gIGlmICghZnMuZXhpc3RzU3luYyhmaWxlcGF0aCkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gZnNcbiAgICAucmVhZEZpbGVTeW5jKGZpbGVwYXRoLCBcInV0Zi04XCIpXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLmZpbHRlcigoeCkgPT4geD8udHJpbSgpICE9PSBcIlwiKVxuICAgIC5maWx0ZXIoKHgpID0+ICF4LnN0YXJ0c1dpdGgoXCIjXCIpICYmICF4LnN0YXJ0c1dpdGgoXCIhXCIpKVxuICAgIC5tYXAoKHgpID0+IHgucmVwbGFjZSgvXlxcLy8sIFwiXCIpKSAvLyByZW1vdmUgXCIvXCIgcHJlZml4XG4gICAgLm1hcCgoeCkgPT4gYCR7eH1cXG4ke3h9LyoqYClcbiAgICAuam9pbihcIlxcblwiKVxuICAgIC5zcGxpdChcIlxcblwiKTtcbn1cbiJdfQ==