projen 0.99.79 → 0.100.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.
Files changed (220) hide show
  1. package/.jsii +1677 -3664
  2. package/BREAKING_CHANGES.md +855 -0
  3. package/lib/ai-instructions.d.ts +0 -1
  4. package/lib/ai-instructions.js +6 -12
  5. package/lib/awscdk/auto-discover.js +7 -14
  6. package/lib/awscdk/awscdk-app-java.d.ts +0 -7
  7. package/lib/awscdk/awscdk-app-java.js +28 -21
  8. package/lib/awscdk/awscdk-app-py.d.ts +0 -12
  9. package/lib/awscdk/awscdk-app-py.js +27 -24
  10. package/lib/awscdk/awscdk-app-ts.d.ts +0 -5
  11. package/lib/awscdk/awscdk-app-ts.js +57 -31
  12. package/lib/awscdk/awscdk-construct.d.ts +0 -26
  13. package/lib/awscdk/awscdk-construct.js +4 -44
  14. package/lib/awscdk/awscdk-deps-java.js +2 -6
  15. package/lib/awscdk/awscdk-deps-js.js +2 -7
  16. package/lib/awscdk/awscdk-deps-py.js +2 -7
  17. package/lib/awscdk/awscdk-deps.d.ts +1 -90
  18. package/lib/awscdk/awscdk-deps.js +68 -114
  19. package/lib/awscdk/cdk-config.d.ts +0 -21
  20. package/lib/awscdk/cdk-config.js +44 -51
  21. package/lib/awscdk/cdk-tasks.js +26 -4
  22. package/lib/awscdk/integration-test.js +10 -15
  23. package/lib/awscdk/internal.js +5 -2
  24. package/lib/awscdk/lambda-extension.js +4 -16
  25. package/lib/awscdk/lambda-function.d.ts +0 -10
  26. package/lib/awscdk/lambda-function.js +88 -78
  27. package/lib/awscdk/private/feature-flags-v2.const.d.ts +1 -1
  28. package/lib/awscdk/private/feature-flags-v2.const.js +2 -2
  29. package/lib/build/build-workflow.js +51 -6
  30. package/lib/builtin-example.task.d.ts +1 -0
  31. package/lib/builtin-example.task.js +2 -1
  32. package/lib/cdk/auto-discover-base.js +43 -8
  33. package/lib/cdk/construct-lib.js +2 -4
  34. package/lib/cdk/integration-test-base.js +26 -4
  35. package/lib/cdk/jsii-build.d.ts +0 -1
  36. package/lib/cdk/jsii-build.js +15 -7
  37. package/lib/cdk/jsii-docgen.js +2 -4
  38. package/lib/cdk/jsii-project.d.ts +12 -9
  39. package/lib/cdk/jsii-project.js +22 -7
  40. package/lib/cdk8s/auto-discover.js +3 -6
  41. package/lib/cdk8s/cdk8s-app-py.js +7 -4
  42. package/lib/cdk8s/cdk8s-app-ts.js +43 -6
  43. package/lib/cdk8s/cdk8s-construct.js +44 -5
  44. package/lib/cdk8s/cdk8s-deps-py.js +2 -4
  45. package/lib/cdk8s/cdk8s-deps.js +50 -5
  46. package/lib/cdk8s/integration-test.js +2 -4
  47. package/lib/cdktf/cdktf-construct.js +36 -5
  48. package/lib/circleci/circleci.js +66 -44
  49. package/lib/cleanup.js +38 -5
  50. package/lib/cli/cmds/new.js +51 -20
  51. package/lib/cli/cmds/run-task.js +107 -0
  52. package/lib/cli/{synth.d.ts → cmds/synth.d.ts} +0 -5
  53. package/lib/cli/cmds/synth.js +90 -0
  54. package/lib/cli/index.js +47 -22
  55. package/lib/cli/macros.js +35 -2
  56. package/lib/{task-runtime.d.ts → cli/task-runtime.d.ts} +13 -2
  57. package/lib/cli/task-runtime.js +411 -0
  58. package/lib/cli/util.js +37 -4
  59. package/lib/component.js +3 -4
  60. package/lib/dependencies.js +43 -12
  61. package/lib/dev-env.js +10 -4
  62. package/lib/docker-compose/docker-compose-service.js +54 -4
  63. package/lib/docker-compose/docker-compose.js +8 -4
  64. package/lib/file.js +60 -5
  65. package/lib/gitattributes.js +7 -5
  66. package/lib/github/actions-provider.js +3 -7
  67. package/lib/github/auto-approve.js +3 -4
  68. package/lib/github/auto-merge.js +3 -5
  69. package/lib/github/auto-queue.js +36 -5
  70. package/lib/github/dependabot.js +13 -4
  71. package/lib/github/dependency-review.js +2 -4
  72. package/lib/github/github-credentials.js +37 -5
  73. package/lib/github/github-project.d.ts +1 -32
  74. package/lib/github/github-project.js +30 -8
  75. package/lib/github/github.d.ts +0 -9
  76. package/lib/github/github.js +27 -14
  77. package/lib/github/index.js +24 -2
  78. package/lib/github/merge-queue.js +3 -4
  79. package/lib/github/mergify.d.ts +0 -7
  80. package/lib/github/mergify.js +6 -13
  81. package/lib/github/pr-template.js +2 -4
  82. package/lib/github/pull-request-backport.js +4 -4
  83. package/lib/github/pull-request-lint.js +4 -4
  84. package/lib/github/stale.js +2 -4
  85. package/lib/github/task-workflow-job.js +20 -4
  86. package/lib/github/task-workflow.js +4 -4
  87. package/lib/github/workflow-actions.d.ts +0 -8
  88. package/lib/github/workflow-actions.js +2 -14
  89. package/lib/github/workflow-jobs.js +2 -4
  90. package/lib/github/workflow-steps.js +2 -4
  91. package/lib/github/workflows-model.d.ts +0 -8
  92. package/lib/github/workflows-model.js +1 -1
  93. package/lib/github/workflows.js +39 -6
  94. package/lib/gitlab/configuration-model.d.ts +0 -4
  95. package/lib/gitlab/configuration-model.js +1 -1
  96. package/lib/gitlab/configuration.js +125 -41
  97. package/lib/gitlab/gitlab-configuration.js +3 -5
  98. package/lib/gitlab/nested-configuration.js +3 -4
  99. package/lib/gitpod.js +11 -7
  100. package/lib/ignore-file.js +5 -4
  101. package/lib/index.d.ts +1 -2
  102. package/lib/index.js +38 -18
  103. package/lib/ini.js +36 -5
  104. package/lib/inventory.d.ts +32 -23
  105. package/lib/inventory.js +37 -4
  106. package/lib/java/java-project.js +26 -4
  107. package/lib/java/junit.js +2 -4
  108. package/lib/java/maven-compile.js +2 -4
  109. package/lib/java/maven-packaging.js +6 -4
  110. package/lib/java/maven-sample.js +2 -4
  111. package/lib/java/pom.js +45 -12
  112. package/lib/java/projenrc.js +10 -4
  113. package/lib/javascript/biome/biome.js +48 -6
  114. package/lib/javascript/bundler.d.ts +0 -8
  115. package/lib/javascript/bundler.js +48 -11
  116. package/lib/javascript/eslint.d.ts +0 -13
  117. package/lib/javascript/eslint.js +38 -37
  118. package/lib/javascript/index.js +24 -2
  119. package/lib/javascript/jest.d.ts +0 -20
  120. package/lib/javascript/jest.js +71 -15
  121. package/lib/javascript/license-checker.js +3 -4
  122. package/lib/javascript/node-package.d.ts +0 -28
  123. package/lib/javascript/node-package.js +137 -38
  124. package/lib/javascript/node-project.d.ts +6 -76
  125. package/lib/javascript/node-project.js +90 -82
  126. package/lib/javascript/npm-config.js +7 -9
  127. package/lib/javascript/prettier.js +16 -4
  128. package/lib/javascript/projenrc.js +3 -4
  129. package/lib/javascript/render-options.d.ts +2 -2
  130. package/lib/javascript/render-options.js +36 -5
  131. package/lib/javascript/typescript-config.js +45 -8
  132. package/lib/javascript/upgrade-dependencies.js +56 -36
  133. package/lib/javascript/util.js +35 -2
  134. package/lib/javascript/yarnrc.d.ts +1 -28
  135. package/lib/javascript/yarnrc.js +3 -45
  136. package/lib/json-patch.js +3 -4
  137. package/lib/json.js +4 -5
  138. package/lib/license.js +37 -5
  139. package/lib/logger.js +14 -11
  140. package/lib/logging.js +10 -7
  141. package/lib/makefile.js +7 -4
  142. package/lib/object-file.js +19 -4
  143. package/lib/project-build.js +26 -4
  144. package/lib/project-tree.js +3 -4
  145. package/lib/project.d.ts +0 -35
  146. package/lib/project.js +105 -58
  147. package/lib/projects.js +37 -6
  148. package/lib/projenrc-json.d.ts +0 -10
  149. package/lib/projenrc-json.js +4 -13
  150. package/lib/projenrc.js +2 -4
  151. package/lib/python/index.js +24 -2
  152. package/lib/python/pip.js +5 -4
  153. package/lib/python/poetry.js +63 -7
  154. package/lib/python/projenrc.js +10 -4
  155. package/lib/python/pyproject-toml-file.js +2 -4
  156. package/lib/python/pytest-sample.js +2 -4
  157. package/lib/python/pytest.d.ts +0 -12
  158. package/lib/python/pytest.js +3 -5
  159. package/lib/python/python-project.js +33 -10
  160. package/lib/python/python-sample.js +2 -4
  161. package/lib/python/requirements-file.js +4 -5
  162. package/lib/python/setuppy.d.ts +0 -8
  163. package/lib/python/setuppy.js +3 -4
  164. package/lib/python/setuptools.js +8 -4
  165. package/lib/python/uv.js +11 -4
  166. package/lib/python/venv.js +45 -6
  167. package/lib/readme.js +2 -4
  168. package/lib/release/bump-version.js +36 -3
  169. package/lib/release/bump-version.task.js +35 -2
  170. package/lib/release/commit-tag-version.js +39 -3
  171. package/lib/release/publisher.d.ts +0 -49
  172. package/lib/release/publisher.js +24 -22
  173. package/lib/release/release-trigger.js +33 -4
  174. package/lib/release/release.d.ts +0 -24
  175. package/lib/release/release.js +66 -31
  176. package/lib/release/tag-version.js +35 -2
  177. package/lib/release/update-changelog.js +36 -3
  178. package/lib/renovatebot.js +14 -4
  179. package/lib/run-projenrc-json.task.js +35 -2
  180. package/lib/run-task.cjs +12567 -271
  181. package/lib/sample-file.js +43 -9
  182. package/lib/smithy/smithy-build.js +46 -1
  183. package/lib/source-code.js +6 -5
  184. package/lib/task-runner.d.ts +25 -0
  185. package/lib/task-runner.js +92 -0
  186. package/lib/task.d.ts +0 -7
  187. package/lib/task.js +13 -13
  188. package/lib/tasks.d.ts +5 -9
  189. package/lib/tasks.js +64 -23
  190. package/lib/testing.js +2 -4
  191. package/lib/textfile.js +3 -4
  192. package/lib/toml.js +36 -5
  193. package/lib/typescript/projenrc-ts.js +8 -4
  194. package/lib/typescript/projenrc.js +6 -4
  195. package/lib/typescript/typescript-typedoc.js +2 -4
  196. package/lib/typescript/typescript.d.ts +0 -10
  197. package/lib/typescript/typescript.js +75 -29
  198. package/lib/util/synth.js +39 -6
  199. package/lib/util.js +38 -5
  200. package/lib/version.d.ts +0 -4
  201. package/lib/version.js +24 -10
  202. package/lib/vscode/devcontainer.js +11 -4
  203. package/lib/vscode/extensions.js +17 -18
  204. package/lib/vscode/launch-config.js +5 -6
  205. package/lib/vscode/settings.js +4 -4
  206. package/lib/vscode/vscode.js +5 -4
  207. package/lib/web/next.js +38 -8
  208. package/lib/web/postcss.js +5 -4
  209. package/lib/web/react.d.ts +0 -14
  210. package/lib/web/react.js +51 -25
  211. package/lib/web/tailwind.js +4 -4
  212. package/lib/xmlfile.js +2 -4
  213. package/lib/yaml.js +40 -5
  214. package/package.json +9 -10
  215. package/lib/cli/synth.js +0 -105
  216. package/lib/cli/tasks.js +0 -71
  217. package/lib/semver.d.ts +0 -34
  218. package/lib/semver.js +0 -56
  219. package/lib/task-runtime.js +0 -317
  220. /package/lib/cli/{tasks.d.ts → cmds/run-task.d.ts} +0 -0
package/lib/java/pom.js CHANGED
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a, _b;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.Pom = exports.ChecksumPolicy = exports.UpdatePolicy = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -14,6 +13,10 @@ const POM_XML_ATTRS = {
14
13
  "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
15
14
  };
16
15
  class UpdatePolicy {
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.UpdatePolicy", version: "0.100.0" };
17
+ static ALWAYS = "always";
18
+ static DAILY = "daily";
19
+ static NEVER = "never";
17
20
  /**
18
21
  * Updates at an interval of X minutes.
19
22
  */
@@ -22,11 +25,6 @@ class UpdatePolicy {
22
25
  }
23
26
  }
24
27
  exports.UpdatePolicy = UpdatePolicy;
25
- _a = JSII_RTTI_SYMBOL_1;
26
- UpdatePolicy[_a] = { fqn: "projen.java.UpdatePolicy", version: "0.99.79" };
27
- UpdatePolicy.ALWAYS = "always";
28
- UpdatePolicy.DAILY = "daily";
29
- UpdatePolicy.NEVER = "never";
30
28
  var ChecksumPolicy;
31
29
  (function (ChecksumPolicy) {
32
30
  ChecksumPolicy["IGNORE"] = "ignore";
@@ -39,11 +37,48 @@ var ChecksumPolicy;
39
37
  * details used by Maven to build the project.
40
38
  */
41
39
  class Pom extends component_1.Component {
40
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.Pom", version: "0.100.0" };
41
+ /**
42
+ * The name of the pom file.
43
+ */
44
+ fileName;
45
+ /**
46
+ * Maven group ID.
47
+ */
48
+ groupId;
49
+ /**
50
+ * Maven artifact ID.
51
+ */
52
+ artifactId;
53
+ /**
54
+ * Project version.
55
+ */
56
+ version;
57
+ /**
58
+ * Maven packaging format.
59
+ */
60
+ packaging;
61
+ /**
62
+ * Project display name.
63
+ */
64
+ name;
65
+ /**
66
+ * Project description.
67
+ */
68
+ description;
69
+ /**
70
+ * Project URL.
71
+ */
72
+ url;
73
+ /*
74
+ * Project Parent POM
75
+ */
76
+ parentPom;
77
+ properties = {};
78
+ repositories = [];
79
+ pluginRepositories = [];
42
80
  constructor(project, options) {
43
81
  super(project);
44
- this.properties = {};
45
- this.repositories = [];
46
- this.pluginRepositories = [];
47
82
  this.fileName = "pom.xml";
48
83
  this.groupId = options.groupId;
49
84
  this.artifactId = options.artifactId;
@@ -180,8 +215,6 @@ class Pom extends component_1.Component {
180
215
  }
181
216
  }
182
217
  exports.Pom = Pom;
183
- _b = JSII_RTTI_SYMBOL_1;
184
- Pom[_b] = { fqn: "projen.java.Pom", version: "0.99.79" };
185
218
  /**
186
219
  * Parses maven groupId and artifactId from a dependency name.
187
220
  *
@@ -218,4 +251,4 @@ function pluginConfig(options = {}) {
218
251
  },
219
252
  };
220
253
  }
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvcG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMENBQXNDO0FBQ3RDLDRDQUF5QztBQUV6QyxrREFBK0Q7QUFFL0QsMkNBQXFEO0FBQ3JELHdDQUFxQztBQUVyQyxNQUFNLGFBQWEsR0FBRztJQUNwQixxQkFBcUIsRUFDbkIsK0VBQStFO0lBQ2pGLFFBQVEsRUFBRSxtQ0FBbUM7SUFDN0MsWUFBWSxFQUFFLDJDQUEyQztDQUMxRCxDQUFDO0FBeUtGLE1BQWEsWUFBWTtJQUt2Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBZTtRQUM3QixPQUFPLFlBQVksT0FBTyxFQUFFLENBQUM7SUFDL0IsQ0FBQzs7QUFWSCxvQ0FXQzs7O0FBVmlCLG1CQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLGtCQUFLLEdBQUcsT0FBTyxDQUFDO0FBQ2hCLGtCQUFLLEdBQUcsT0FBTyxDQUFDO0FBVWxDLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtJQUNqQiwrQkFBYSxDQUFBO0lBQ2IsK0JBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxjQUFjLDhCQUFkLGNBQWMsUUFJekI7QUFFRDs7OztHQUlHO0FBQ0gsTUFBYSxHQUFJLFNBQVEscUJBQVM7SUFvRGhDLFlBQVksT0FBZ0IsRUFBRSxPQUFtQjtRQUMvQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFQQSxlQUFVLEdBQXdCLEVBQUUsQ0FBQztRQUVyQyxpQkFBWSxHQUFzQixFQUFFLENBQUM7UUFFckMsdUJBQWtCLEdBQXNCLEVBQUUsQ0FBQztRQUsxRCxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFD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RUFBRTtJQUMvQyxPQUFPO1FBQ0wsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1FBQ3BDLFlBQVksRUFDVixPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDckQsQ0FBQyxDQUFDO2dCQUNFLFVBQVUsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQzFDLFdBQVcsQ0FBQywyQkFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM3QzthQUNGO1lBQ0gsQ0FBQyxDQUFDLFNBQVM7UUFDZixVQUFVLEVBQUU7WUFDVixTQUFTLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3pDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDUixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2QsYUFBYSxFQUFFLENBQUMsQ0FBQyxhQUFhO2FBQy9CLENBQUMsQ0FBQztTQUNKO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIi4uL19yZXNvbHZlXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IERlcGVuZGVuY3lDb29yZGluYXRlcyB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IERlcGVuZGVuY2llcywgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgdG9NYXZlblZlcnNpb25SYW5nZSB9IGZyb20gXCIuLi91dGlsL3NlbXZlclwiO1xuaW1wb3J0IHsgWG1sRmlsZSB9IGZyb20gXCIuLi94bWxmaWxlXCI7XG5cbmNvbnN0IFBPTV9YTUxfQVRUUlMgPSB7XG4gIFwiQHhzaTpzY2hlbWFMb2NhdGlvblwiOlxuICAgIFwiaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL3hzZC9tYXZlbi00LjAuMC54c2RcIixcbiAgXCJAeG1sbnNcIjogXCJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjBcIixcbiAgXCJAeG1sbnM6eHNpXCI6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIixcbn07XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFBvbWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9tT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGlzIGlzIGdlbmVyYWxseSB1bmlxdWUgYW1vbmdzdCBhbiBvcmdhbml6YXRpb24gb3IgYSBwcm9qZWN0LiBGb3IgZXhhbXBsZSxcbiAgICogYWxsIGNvcmUgTWF2ZW4gYXJ0aWZhY3RzIGRvICh3ZWxsLCBzaG91bGQpIGxpdmUgdW5kZXIgdGhlIGdyb3VwSWRcbiAgICogb3JnLmFwYWNoZS5tYXZlbi4gR3JvdXAgSUQncyBkbyBub3QgbmVjZXNzYXJpbHkgdXNlIHRoZSBkb3Qgbm90YXRpb24sIGZvclxuICAgKiBleGFtcGxlLCB0aGUganVuaXQgcHJvamVjdC4gTm90ZSB0aGF0IHRoZSBkb3Qtbm90YXRlZCBncm91cElkIGRvZXMgbm90IGhhdmVcbiAgICogdG8gY29ycmVzcG9uZCB0byB0aGUgcGFja2FnZSBzdHJ1Y3R1cmUgdGhhdCB0aGUgcHJvamVjdCBjb250YWlucy4gSXQgaXMsXG4gICAqIGhvd2V2ZXIsIGEgZ29vZCBwcmFjdGljZSB0byBmb2xsb3cuIFdoZW4gc3RvcmVkIHdpdGhpbiBhIHJlcG9zaXRvcnksIHRoZVxuICAgKiBncm91cCBhY3RzIG11Y2ggbGlrZSB0aGUgSmF2YSBwYWNrYWdpbmcgc3RydWN0dXJlIGRvZXMgaW4gYW4gb3BlcmF0aW5nXG4gICAqIHN5c3RlbS4gVGhlIGRvdHMgYXJlIHJlcGxhY2VkIGJ5IE9TIHNwZWNpZmljIGRpcmVjdG9yeSBzZXBhcmF0b3JzIChzdWNoIGFzXG4gICAqICcvJyBpbiBVbml4KSB3aGljaCBiZWNvbWVzIGEgcmVsYXRpdmUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmcm9tIHRoZSBiYXNlXG4gICAqIHJlcG9zaXRvcnkuIEluIHRoZSBleGFtcGxlIGdpdmVuLCB0aGUgb3JnLmNvZGVoYXVzLm1vam8gZ3JvdXAgbGl2ZXMgd2l0aGluXG4gICAqIHRoZSBkaXJlY3RvcnkgJE0yX1JFUE8vb3JnL2NvZGVoYXVzL21vam8uXG4gICAqIEBkZWZhdWx0IFwib3JnLmFjbWVcIlxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IGdyb3VwSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFydGlmYWN0SWQgaXMgZ2VuZXJhbGx5IHRoZSBuYW1lIHRoYXQgdGhlIHByb2plY3QgaXMga25vd24gYnkuIEFsdGhvdWdoXG4gICAqIHRoZSBncm91cElkIGlzIGltcG9ydGFudCwgcGVvcGxlIHdpdGhpbiB0aGUgZ3JvdXAgd2lsbCByYXJlbHkgbWVudGlvbiB0aGVcbiAgICogZ3JvdXBJZCBpbiBkaXNjdXNzaW9uICh0aGV5IGFyZSBvZnRlbiBhbGwgYmUgdGhlIHNhbWUgSUQsIHN1Y2ggYXMgdGhlXG4gICAqIE1vam9IYXVzIHByb2plY3QgZ3JvdXBJZDogb3JnLmNvZGVoYXVzLm1vam8pLiBJdCwgYWxvbmcgd2l0aCB0aGUgZ3JvdXBJZCxcbiAgICogY3JlYXRlcyBhIGtleSB0aGF0IHNlcGFyYXRlcyB0aGlzIHByb2plY3QgZnJvbSBldmVyeSBvdGhlciBwcm9qZWN0IGluIHRoZVxuICAgKiB3b3JsZCAoYXQgbGVhc3QsIGl0IHNob3VsZCA6KSApLiBBbG9uZyB3aXRoIHRoZSBncm91cElkLCB0aGUgYXJ0aWZhY3RJZFxuICAgKiBmdWxseSBkZWZpbmVzIHRoZSBhcnRpZmFjdCdzIGxpdmluZyBxdWFydGVycyB3aXRoaW4gdGhlIHJlcG9zaXRvcnkuIEluIHRoZVxuICAgKiBjYXNlIG9mIHRoZSBhYm92ZSBwcm9qZWN0LCBteS1wcm9qZWN0IGxpdmVzIGluXG4gICAqICRNMl9SRVBPL29yZy9jb2RlaGF1cy9tb2pvL215LXByb2plY3QuXG4gICAqIEBkZWZhdWx0IFwibXktYXBwXCJcbiAgICogQGZlYXR1cmVkXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIGxhc3QgcGllY2Ugb2YgdGhlIG5hbWluZyBwdXp6bGUuIGdyb3VwSWQ6YXJ0aWZhY3RJZCBkZW5vdGVzIGFcbiAgICogc2luZ2xlIHByb2plY3QgYnV0IHRoZXkgY2Fubm90IGRlbGluZWF0ZSB3aGljaCBpbmNhcm5hdGlvbiBvZiB0aGF0IHByb2plY3RcbiAgICogd2UgYXJlIHRhbGtpbmcgYWJvdXQuIERvIHdlIHdhbnQgdGhlIGp1bml0Omp1bml0IG9mIDIwMTggKHZlcnNpb24gNC4xMiksIG9yXG4gICAqIG9mIDIwMDcgKHZlcnNpb24gMy44LjIpPyBJbiBzaG9ydDogY29kZSBjaGFuZ2VzLCB0aG9zZSBjaGFuZ2VzIHNob3VsZCBiZVxuICAgKiB2ZXJzaW9uZWQsIGFuZCB0aGlzIGVsZW1lbnQga2VlcHMgdGhvc2UgdmVyc2lvbnMgaW4gbGluZS4gSXQgaXMgYWxzbyB1c2VkXG4gICAqIHdpdGhpbiBhbiBhcnRpZmFjdCdzIHJlcG9zaXRvcnkgdG8gc2VwYXJhdGUgdmVyc2lvbnMgZnJvbSBlYWNoIG90aGVyLlxuICAgKiBteS1wcm9qZWN0IHZlcnNpb24gMS4wIGZpbGVzIGxpdmUgaW4gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbiAgICogJE0yX1JFUE8vb3JnL2NvZGVoYXVzL21vam8vbXktcHJvamVjdC8xLjAuXG4gICAqIEBkZWZhdWx0IFwiMC4xLjBcIlxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogUHJvamVjdCBwYWNrYWdpbmcgZm9ybWF0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImphclwiXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdpbmc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIGEgcHJvamVjdCBpcyBhbHdheXMgZ29vZC4gQWx0aG91Z2ggdGhpcyBzaG91bGQgbm90IHJlcGxhY2VcbiAgICogZm9ybWFsIGRvY3VtZW50YXRpb24sIGEgcXVpY2sgY29tbWVudCB0byBhbnkgcmVhZGVycyBvZiB0aGUgUE9NIGlzIGFsd2F5c1xuICAgKiBoZWxwZnVsLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQGZlYXR1cmVkXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFVSTCwgbGlrZSB0aGUgbmFtZSwgaXMgbm90IHJlcXVpcmVkLiBUaGlzIGlzIGEgbmljZSBnZXN0dXJlIGZvclxuICAgKiBwcm9qZWN0cyB1c2VycywgaG93ZXZlciwgc28gdGhhdCB0aGV5IGtub3cgd2hlcmUgdGhlIHByb2plY3QgbGl2ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBQYXJlbnQgUG9tIGNhbiBiZSB1c2VkIHRvIGhhdmUgYSBjaGlsZCBwcm9qZWN0IGluaGVyaXRcbiAgICogcHJvcGVydGllcy9wbHVnaW5zL2VjdCBpbiBvcmRlciB0byByZWR1Y2UgZHVwbGljYXRpb24gYW5kIGtlZXAgc3RhbmRhcmRzXG4gICAqIGFjcm9zcyBhIGxhcmdlIGFtb3VudCBvZiByZXBvc1xuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQGZlYXR1cmVkXG4gICAqL1xuICByZWFkb25seSBwYXJlbnRQb20/OiBQYXJlbnRQb207XG59XG5cbi8qXG4gKiBSZXByZXNlbnRzIGEgUGFyZW50IE1hdmVuIFBvbS4gQSBwYXJlbnQgbWF2ZW4gcG9tIGNhbiBwcm92aWRlIHRoaW5ncyBsaWtlIGRlcGVuZGVuY2llcyBhbmQgcGx1Z2luIGxpc3RzL2NvbmZpZ3VyYXRpb24uXG4gKiBUaGF0IGNhbiBiZSBoZWxwZnVsIGZvciB0cnlpbmcgdG8gY29udHJvbCBjb25maWd1cmF0aW9uIGFjcm9zcyBhIGxhcmdlIHN3YXRoIG9mIHByb2dyYW1zIGVzcGVjaWFsbHkgZm9yIHRoaW5ncyBsaWtlXG4gKiBlbnRlcnByaXNlIGNvbmZpZ3VyYXRpb25zIG9mIHBsdWdpbnMuXG4gKiBAc2VlIGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy9ndWlkZXMvaW50cm9kdWN0aW9uL2ludHJvZHVjdGlvbi10by10aGUtcG9tLmh0bWwjcHJvamVjdC1pbmhlcml0YW5jZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcmVudFBvbSB7XG4gIC8qKlxuICAgKiBQYXJlbnQgUG9tIEdyb3VwIElEXG4gICAqL1xuICByZWFkb25seSBncm91cElkPzogc3RyaW5nO1xuICAvKipcbiAgICogUGFyZW50IFBvbSBBcnRpZmFjdCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhcmVudCBQb20gVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhcmVudCBQb20gUmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBjdXJyZW50IHBvbVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsYXRpdmVQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBNYXZlbiByZXBvc2l0b3J5XG4gKiBAc2VlIGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy9ndWlkZXMvaW50cm9kdWN0aW9uL2ludHJvZHVjdGlvbi10by1yZXBvc2l0b3JpZXMuaHRtbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hdmVuUmVwb3NpdG9yeSB7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBmb3IgdGhlIHJlcG9zaXRvcnlcbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdXJsIG9mIHRoZSByZXBvc2l0b3J5XG4gICAqL1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZXBvc2l0b3J5XG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxheW91dCBvZiB0aGUgcmVwb3NpdG9yeVxuICAgKi9cbiAgcmVhZG9ubHkgbGF5b3V0Pzogc3RyaW5nO1xuICAvKipcbiAgICogUmVwb3NpdG9yeSBQb2xpY3kgZm9yIFNuYXBzaG90c1xuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3RzPzogTWF2ZW5SZXBvc2l0b3J5UG9saWN5O1xuICAvKipcbiAgICogUmVwb3NpdG9yeSBQb2xpY3kgZm9yIFJlbGVhc2VzXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlcz86IE1hdmVuUmVwb3NpdG9yeVBvbGljeTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgTWF2ZW4gUmVwb3NpdG9yeSBQb2xpY3lcbiAqIEBzZWUgaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL3NldHRpbmdzLmh0bWwjcmVwb3NpdG9yaWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF2ZW5SZXBvc2l0b3J5UG9saWN5IHtcbiAgLypcbiAgICogV2hldGhlciB0aGlzIHJlcG9zaXRvcnkgaXMgZW5hYmxlZCAgZm9yIHRoZSByZXNwZWN0aXZlIHR5cGUgKGByZWxlYXNlc2Agb3IgYHNuYXBzaG90c2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBQb2xpY3lcbiAgICogVGhpcyBlbGVtZW50IHNwZWNpZmllcyBob3cgb2Z0ZW4gdXBkYXRlcyBzaG91bGQgYXR0ZW1wdCB0byBvY2N1ci4gTWF2ZW4gd2lsbCBjb21wYXJlIHRoZSBsb2NhbCBQT00ncyB0aW1lc3RhbXAgKHN0b3JlZCBpbiBhIHJlcG9zaXRvcnkncyBtYXZlbi1tZXRhZGF0YSBmaWxlKSB0byB0aGUgcmVtb3RlLlxuICAgKiBAZGVmYXVsdCBVcGRhdGVQb2xpY3kuREFJTFlcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZVBvbGljeT86IFVwZGF0ZVBvbGljeTtcblxuICAvKipcbiAgICogQ2hlY2tzdW0gUG9saWN5XG4gICAqIFdoZW4gTWF2ZW4gZGVwbG95cyBmaWxlcyB0byB0aGUgcmVwb3NpdG9yeSwgaXQgYWxzbyBkZXBsb3lzIGNvcnJlc3BvbmRpbmcgY2hlY2tzdW0gZmlsZXMuXG4gICAqL1xuICByZWFkb25seSBjaGVja3N1bVBvbGljeT86IENoZWNrc3VtUG9saWN5O1xufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlUG9saWN5IHtcbiAgc3RhdGljIHJlYWRvbmx5IEFMV0FZUyA9IFwiYWx3YXlzXCI7XG4gIHN0YXRpYyByZWFkb25seSBEQUlMWSA9IFwiZGFpbHlcIjtcbiAgc3RhdGljIHJlYWRvbmx5IE5FVkVSID0gXCJuZXZlclwiO1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGF0IGFuIGludGVydmFsIG9mIFggbWludXRlcy5cbiAgICovXG4gIHN0YXRpYyBpbnRlcnZhbChtaW51dGVzOiBudW1iZXIpIHtcbiAgICByZXR1cm4gYGludGVydmFsOiR7bWludXRlc31gO1xuICB9XG59XG5cbmV4cG9ydCBlbnVtIENoZWNrc3VtUG9saWN5IHtcbiAgSUdOT1JFID0gXCJpZ25vcmVcIixcbiAgRkFJTCA9IFwiZmFpbFwiLFxuICBXQVJOID0gXCJ3YXJuXCIsXG59XG5cbi8qKlxuICogQSBQcm9qZWN0IE9iamVjdCBNb2RlbCBvciBQT00gaXMgdGhlIGZ1bmRhbWVudGFsIHVuaXQgb2Ygd29yayBpbiBNYXZlbi4gSXQgaXNcbiAqIGFuIFhNTCBmaWxlIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QgYW5kIGNvbmZpZ3VyYXRpb25cbiAqIGRldGFpbHMgdXNlZCBieSBNYXZlbiB0byBidWlsZCB0aGUgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBvbSBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcG9tIGZpbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTWF2ZW4gZ3JvdXAgSUQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXZlbiBhcnRpZmFjdCBJRC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhcnRpZmFjdElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb2plY3QgdmVyc2lvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hdmVuIHBhY2thZ2luZyBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFja2FnaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb2plY3QgZGlzcGxheSBuYW1lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb2plY3QgZGVzY3JpcHRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb2plY3QgVVJMLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVybD86IHN0cmluZztcblxuICAvKlxuICAgKiBQcm9qZWN0IFBhcmVudCBQT01cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50UG9tPzogUGFyZW50UG9tO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yaWVzOiBNYXZlblJlcG9zaXRvcnlbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luUmVwb3NpdG9yaWVzOiBNYXZlblJlcG9zaXRvcnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IFBvbU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuZmlsZU5hbWUgPSBcInBvbS54bWxcIjtcbiAgICB0aGlzLmdyb3VwSWQgPSBvcHRpb25zLmdyb3VwSWQ7XG4gICAgdGhpcy5hcnRpZmFjdElkID0gb3B0aW9ucy5hcnRpZmFjdElkO1xuICAgIHRoaXMudmVyc2lvbiA9IG9wdGlvbnMudmVyc2lvbjtcbiAgICB0aGlzLnBhY2thZ2luZyA9IG9wdGlvbnMucGFja2FnaW5nID8/IFwiamFyXCI7XG4gICAgdGhpcy5uYW1lID0gcHJvamVjdC5uYW1lO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBvcHRpb25zLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMudXJsID0gb3B0aW9ucy51cmw7XG4gICAgdGhpcy5wYXJlbnRQb20gPSBvcHRpb25zLnBhcmVudFBvbTtcblxuICAgIG5ldyBYbWxGaWxlKHByb2plY3QsIHRoaXMuZmlsZU5hbWUsIHsgb2JqOiAoKSA9PiB0aGlzLnN5bnRoUG9tKCkgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGtleS92YWx1ZSBwcm9wZXJ0eSB0byB0aGUgcG9tLlxuICAgKiBAcGFyYW0ga2V5IHRoZSBrZXlcbiAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZVxuICAgKi9cbiAgcHVibGljIGFkZFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcm9wZXJ0aWVzW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcnVudGltZSBkZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAcGFyYW0gc3BlYyBGb3JtYXQgYDxncm91cElkPi88YXJ0aWZhY3RJZD5APHNlbXZlcj5gXG4gICAqL1xuICBwdWJsaWMgYWRkRGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KHNwZWMsIERlcGVuZGVuY3lUeXBlLlJVTlRJTUUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0ZXN0IGRlcGVuZGVuY3kuXG4gICAqXG4gICAqIEBwYXJhbSBzcGVjIEZvcm1hdCBgPGdyb3VwSWQ+LzxhcnRpZmFjdElkPkA8c2VtdmVyPmBcbiAgICovXG4gIHB1YmxpYyBhZGRUZXN0RGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KHNwZWMsIERlcGVuZGVuY3lUeXBlLlRFU1QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBidWlsZCBwbHVnaW4gdG8gdGhlIHBvbS5cbiAgICpcbiAgICogVGhlIHBsdWcgaW4gaXMgYWxzbyBhZGRlZCBhcyBhIEJVSUxEIGRlcCB0byB0aGUgcHJvamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgZGVwZW5kZW5jeSBzcGVjIChgZ3JvdXAvYXJ0aWZhY3RAdmVyc2lvbmApXG4gICAqIEBwYXJhbSBvcHRpb25zIHBsdWdpbiBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYWRkUGx1Z2luKHNwZWM6IHN0cmluZywgb3B0aW9uczogUGx1Z2luT3B0aW9ucyA9IHt9KSB7XG4gICAgZm9yIChjb25zdCBkZXAgb2Ygb3B0aW9ucy5kZXBlbmRlbmNpZXMgPz8gW10pIHtcbiAgICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koZGVwLCBEZXBlbmRlbmN5VHlwZS5CVUlMRCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KHNwZWMsIERlcGVuZGVuY3lUeXBlLkJVSUxELCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVwb3NpdG9yeSB0byB0aGUgcG9tXG4gICAqIEBwYXJhbSByZXBvc2l0b3J5IHRoZSByZXBvc2l0b3J5IHRvIGFkZFxuICAgKi9cbiAgcHVibGljIGFkZFJlcG9zaXRvcnkocmVwb3NpdG9yeTogTWF2ZW5SZXBvc2l0b3J5KSB7XG4gICAgdGhpcy5yZXBvc2l0b3JpZXMucHVzaChyZXBvc2l0b3J5KTtcbiAgfVxuXG4gIC8qXG4gICAqIEFkZHMgYSByZXBvc2l0b3J5IGZvciBwbHVnaW5zIHRvIHRoZSBwb21cbiAgICogQHBhcmFtIHJlcG9zaXRvcnkgdGhlIHJlcG9zaXRvcnkgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgYWRkUGx1Z2luUmVwb3NpdG9yeShyZXBvc2l0b3J5OiBNYXZlblJlcG9zaXRvcnkpIHtcbiAgICB0aGlzLnBsdWdpblJlcG9zaXRvcmllcy5wdXNoKHJlcG9zaXRvcnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW50aFBvbSgpIHtcbiAgICByZXR1cm4gcmVzb2x2ZShcbiAgICAgIHtcbiAgICAgICAgcHJvamVjdDoge1xuICAgICAgICAgIC4uLlBPTV9YTUxfQVRUUlMsXG4gICAgICAgICAgbW9kZWxWZXJzaW9uOiBcIjQuMC4wXCIsXG4gICAgICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cElkLFxuICAgICAgICAgIGFydGlmYWN0SWQ6IHRoaXMuYXJ0aWZhY3RJZCxcbiAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICAgICAgcGFja2FnaW5nOiB0aGlzLnBhY2thZ2luZyxcbiAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLnByb3BlcnRpZXMsXG4gICAgICAgICAgcGFyZW50OiB0aGlzLnBhcmVudFBvbSxcbiAgICAgICAgICAuLi50aGlzLnN5bnRoUmVwb3NpdG9yaWVzKCksXG4gICAgICAgICAgLi4udGhpcy5zeW50aERlcGVuZGVuY2llcygpLFxuICAgICAgICAgIC4uLnRoaXMuc3ludGhQbHVnaW5SZXBvc2l0b3JpZXMoKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7IG9taXRFbXB0eTogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN5bnRoRGVwZW5kZW5jaWVzKCkge1xuICAgIGNvbnN0IGRlcHMgPSB0aGlzLnByb2plY3QuZGVwcy5hbGw7XG4gICAgaWYgKGRlcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzOiBhbnlbXSA9IFtdO1xuICAgIGNvbnN0IHBsdWdpbnM6IGFueVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XG4gICAgICBzd2l0Y2ggKGRlcC50eXBlKSB7XG4gICAgICAgIGNhc2UgRGVwZW5kZW5jeVR5cGUuUEVFUjpcbiAgICAgICAgY2FzZSBEZXBlbmRlbmN5VHlwZS5SVU5USU1FOlxuICAgICAgICAgIGRlcGVuZGVuY2llcy5wdXNoKG1hdmVuQ29vcmRzKGRlcCkpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgRGVwZW5kZW5jeVR5cGUuVEVTVDpcbiAgICAgICAgICBkZXBlbmRlbmNpZXMucHVzaCh7XG4gICAgICAgICAgICAuLi5tYXZlbkNvb3JkcyhkZXApLFxuICAgICAgICAgICAgc2NvcGU6IFwidGVzdFwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8vIGJ1aWxkIG1hcHMgdG8gcGx1Z2luc1xuICAgICAgICBjYXNlIERlcGVuZGVuY3lUeXBlLkJVSUxEOlxuICAgICAgICAgIHBsdWdpbnMucHVzaCh7XG4gICAgICAgICAgICAuLi5tYXZlbkNvb3JkcyhkZXApLFxuICAgICAgICAgICAgLi4ucGx1Z2luQ29uZmlnKGRlcC5tZXRhZGF0YSBhcyBQbHVnaW5PcHRpb25zKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgZGVwZW5kZW5jeSB0eXBlOiAke2RlcC50eXBlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBidWlsZDogeyBwbHVnaW5zOiB7IHBsdWdpbjogcGx1Z2lucyB9IH0sXG4gICAgICBkZXBlbmRlbmNpZXM6IHsgZGVwZW5kZW5jeTogZGVwZW5kZW5jaWVzIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3ludGhSZXBvc2l0b3JpZXMoKSB7XG4gICAgaWYgKHRoaXMucmVwb3NpdG9yaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZXBvc2l0b3JpZXM6IHsgcmVwb3NpdG9yeTogdGhpcy5yZXBvc2l0b3JpZXMgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzeW50aFBsdWdpblJlcG9zaXRvcmllcygpIHtcbiAgICBpZiAodGhpcy5wbHVnaW5SZXBvc2l0b3JpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBsdWdpblJlcG9zaXRvcmllczogeyBwbHVnaW5SZXBvc2l0b3J5OiB0aGlzLnBsdWdpblJlcG9zaXRvcmllcyB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBNYXZlbiBwbHVnaW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogUGx1Z2luIGtleS92YWx1ZSBjb25maWd1cmF0aW9uXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICByZWFkb25seSBjb25maWd1cmF0aW9uPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAvKipcbiAgICogUGx1Z2luIGV4ZWN1dGlvbnNcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvbnM/OiBQbHVnaW5FeGVjdXRpb25bXTtcblxuICAvKipcbiAgICogWW91IGNvdWxkIGNvbmZpZ3VyZSB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgcGx1Z2luLlxuICAgKlxuICAgKiBEZXBlbmRlbmNpZXMgYXJlIGluIGA8Z3JvdXBJZD4vPGFydGlmYWN0SWQ+QDxzZW12ZXI+YCBmb3JtYXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQbHVnaW4gZXhlY3V0aW9uIGRlZmluaXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luRXhlY3V0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBJRC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoaWNoIE1hdmVuIGdvYWxzIHRoaXMgcGx1Z2luIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGguXG4gICAqL1xuICByZWFkb25seSBnb2Fsczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBwaGFzZSBpbiB3aGljaCB0aGUgcGx1Z2luIHNob3VsZCBleGVjdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGhhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGlvbiBrZXkvdmFsdWUgY29uZmlndXJhdGlvblxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlndXJhdGlvbj86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUGFyc2VzIG1hdmVuIGdyb3VwSWQgYW5kIGFydGlmYWN0SWQgZnJvbSBhIGRlcGVuZGVuY3kgbmFtZS5cbiAqXG4gKiAgICAgbmFtZSAgICA8PT4gPGdyb3VwSWQ+LzxhcnRpZmFjdElkPlxuICogICAgIHZlcnNpb24gPD0+IDx2ZXJzaW9uPlxuICovXG5mdW5jdGlvbiBtYXZlbkNvb3JkcyhkZXA6IERlcGVuZGVuY3lDb29yZGluYXRlcykge1xuICBjb25zdCBuYW1lID0gZGVwLm5hbWU7XG4gIGNvbnN0IHBhcnRzID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgaW52YWxpZCBtYXZlbiBjb29yZGluYXRlcyBpbiBkZXBlbmRlbmN5IG5hbWVkIFwiJHtuYW1lfVwiLiBmb3JtYXQgaXMgXCI8Z3JvdXBJZD4vPGFydGlmYWN0SWQ+XCIuIEZvciBleGFtcGxlIFwib3JnLmp1bml0Lmp1cGl0ZXIvanVuaXQtanVwaXRlci1lbmdpbmVcImAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZ3JvdXBJZDogcGFydHNbMF0sXG4gICAgYXJ0aWZhY3RJZDogcGFydHNbMV0sXG4gICAgdmVyc2lvbjogZGVwLnZlcnNpb24gPyB0b01hdmVuVmVyc2lvblJhbmdlKGRlcC52ZXJzaW9uKSA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcGx1Z2luQ29uZmlnKG9wdGlvbnM6IFBsdWdpbk9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4ge1xuICAgIGNvbmZpZ3VyYXRpb246IG9wdGlvbnMuY29uZmlndXJhdGlvbixcbiAgICBkZXBlbmRlbmNpZXM6XG4gICAgICBvcHRpb25zLmRlcGVuZGVuY2llcyAmJiBvcHRpb25zLmRlcGVuZGVuY2llcy5sZW5ndGggPiAwXG4gICAgICAgID8ge1xuICAgICAgICAgICAgZGVwZW5kZW5jeTogb3B0aW9ucy5kZXBlbmRlbmNpZXM/Lm1hcCgoZCkgPT5cbiAgICAgICAgICAgICAgbWF2ZW5Db29yZHMoRGVwZW5kZW5jaWVzLnBhcnNlRGVwZW5kZW5jeShkKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgZXhlY3V0aW9uczoge1xuICAgICAgZXhlY3V0aW9uOiBvcHRpb25zLmV4ZWN1dGlvbnM/Lm1hcCgoZSkgPT4gKHtcbiAgICAgICAgaWQ6IGUuaWQsXG4gICAgICAgIGdvYWxzOiBlLmdvYWxzLm1hcCgoZ29hbCkgPT4gKHsgZ29hbCB9KSksXG4gICAgICAgIHBoYXNlOiBlLnBoYXNlLFxuICAgICAgICBjb25maWd1cmF0aW9uOiBlLmNvbmZpZ3VyYXRpb24sXG4gICAgICB9KSksXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvcG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwwQ0FBc0M7QUFDdEMsNENBQXlDO0FBRXpDLGtEQUErRDtBQUUvRCwyQ0FBcUQ7QUFDckQsd0NBQXFDO0FBRXJDLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLHFCQUFxQixFQUNuQiwrRUFBK0U7SUFDakYsUUFBUSxFQUFFLG1DQUFtQztJQUM3QyxZQUFZLEVBQUUsMkNBQTJDO0NBQzFELENBQUM7QUF5S0YsTUFBYSxZQUFZOztJQUN2QixNQUFNLENBQVUsTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUNsQyxNQUFNLENBQVUsS0FBSyxHQUFHLE9BQU8sQ0FBQztJQUNoQyxNQUFNLENBQVUsS0FBSyxHQUFHLE9BQU8sQ0FBQztJQUVoQzs7T0FFRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBZTtRQUM3QixPQUFPLFlBQVksT0FBTyxFQUFFLENBQUM7SUFDL0IsQ0FBQzs7QUFWSCxvQ0FXQztBQUVELElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtJQUNqQiwrQkFBYSxDQUFBO0lBQ2IsK0JBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxjQUFjLDhCQUFkLGNBQWMsUUFJekI7QUFFRDs7OztHQUlHO0FBQ0gsTUFBYSxHQUFJLFNBQVEscUJBQVM7O0lBQ2hDOztPQUVHO0lBQ2EsUUFBUSxDQUFTO0lBRWpDOztPQUVHO0lBQ2EsT0FBTyxDQUFTO0lBRWhDOztPQUVHO0lBQ2EsVUFBVSxDQUFTO0lBRW5DOztPQUVHO0lBQ2EsT0FBTyxDQUFTO0lBRWhDOztPQUVHO0lBQ2EsU0FBUyxDQUFTO0lBRWxDOztPQUVHO0lBQ2EsSUFBSSxDQUFVO0lBRTlCOztPQUVHO0lBQ2EsV0FBVyxDQUFVO0lBRXJDOztPQUVHO0lBQ2EsR0FBRyxDQUFVO0lBRTdCOztPQUVHO0lBQ2MsU0FBUyxDQUFhO0lB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eyByZXNvbHZlIH0gZnJvbSBcIi4uL19yZXNvbHZlXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IERlcGVuZGVuY3lDb29yZGluYXRlcyB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IERlcGVuZGVuY2llcywgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgdG9NYXZlblZlcnNpb25SYW5nZSB9IGZyb20gXCIuLi91dGlsL3NlbXZlclwiO1xuaW1wb3J0IHsgWG1sRmlsZSB9IGZyb20gXCIuLi94bWxmaWxlXCI7XG5cbmNvbnN0IFBPTV9YTUxfQVRUUlMgPSB7XG4gIFwiQHhzaTpzY2hlbWFMb2NhdGlvblwiOlxuICAgIFwiaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL3hzZC9tYXZlbi00LjAuMC54c2RcIixcbiAgXCJAeG1sbnNcIjogXCJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjBcIixcbiAgXCJAeG1sbnM6eHNpXCI6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIixcbn07XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFBvbWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9tT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGlzIGlzIGdlbmVyYWxseSB1bmlxdWUgYW1vbmdzdCBhbiBvcmdhbml6YXRpb24gb3IgYSBwcm9qZWN0LiBGb3IgZXhhbXBsZSxcbiAgICogYWxsIGNvcmUgTWF2ZW4gYXJ0aWZhY3RzIGRvICh3ZWxsLCBzaG91bGQpIGxpdmUgdW5kZXIgdGhlIGdyb3VwSWRcbiAgICogb3JnLmFwYWNoZS5tYXZlbi4gR3JvdXAgSUQncyBkbyBub3QgbmVjZXNzYXJpbHkgdXNlIHRoZSBkb3Qgbm90YXRpb24sIGZvclxuICAgKiBleGFtcGxlLCB0aGUganVuaXQgcHJvamVjdC4gTm90ZSB0aGF0IHRoZSBkb3Qtbm90YXRlZCBncm91cElkIGRvZXMgbm90IGhhdmVcbiAgICogdG8gY29ycmVzcG9uZCB0byB0aGUgcGFja2FnZSBzdHJ1Y3R1cmUgdGhhdCB0aGUgcHJvamVjdCBjb250YWlucy4gSXQgaXMsXG4gICAqIGhvd2V2ZXIsIGEgZ29vZCBwcmFjdGljZSB0byBmb2xsb3cuIFdoZW4gc3RvcmVkIHdpdGhpbiBhIHJlcG9zaXRvcnksIHRoZVxuICAgKiBncm91cCBhY3RzIG11Y2ggbGlrZSB0aGUgSmF2YSBwYWNrYWdpbmcgc3RydWN0dXJlIGRvZXMgaW4gYW4gb3BlcmF0aW5nXG4gICAqIHN5c3RlbS4gVGhlIGRvdHMgYXJlIHJlcGxhY2VkIGJ5IE9TIHNwZWNpZmljIGRpcmVjdG9yeSBzZXBhcmF0b3JzIChzdWNoIGFzXG4gICAqICcvJyBpbiBVbml4KSB3aGljaCBiZWNvbWVzIGEgcmVsYXRpdmUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmcm9tIHRoZSBiYXNlXG4gICAqIHJlcG9zaXRvcnkuIEluIHRoZSBleGFtcGxlIGdpdmVuLCB0aGUgb3JnLmNvZGVoYXVzLm1vam8gZ3JvdXAgbGl2ZXMgd2l0aGluXG4gICAqIHRoZSBkaXJlY3RvcnkgJE0yX1JFUE8vb3JnL2NvZGVoYXVzL21vam8uXG4gICAqIEBkZWZhdWx0IFwib3JnLmFjbWVcIlxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IGdyb3VwSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFydGlmYWN0SWQgaXMgZ2VuZXJhbGx5IHRoZSBuYW1lIHRoYXQgdGhlIHByb2plY3QgaXMga25vd24gYnkuIEFsdGhvdWdoXG4gICAqIHRoZSBncm91cElkIGlzIGltcG9ydGFudCwgcGVvcGxlIHdpdGhpbiB0aGUgZ3JvdXAgd2lsbCByYXJlbHkgbWVudGlvbiB0aGVcbiAgICogZ3JvdXBJZCBpbiBkaXNjdXNzaW9uICh0aGV5IGFyZSBvZnRlbiBhbGwgYmUgdGhlIHNhbWUgSUQsIHN1Y2ggYXMgdGhlXG4gICAqIE1vam9IYXVzIHByb2plY3QgZ3JvdXBJZDogb3JnLmNvZGVoYXVzLm1vam8pLiBJdCwgYWxvbmcgd2l0aCB0aGUgZ3JvdXBJZCxcbiAgICogY3JlYXRlcyBhIGtleSB0aGF0IHNlcGFyYXRlcyB0aGlzIHByb2plY3QgZnJvbSBldmVyeSBvdGhlciBwcm9qZWN0IGluIHRoZVxuICAgKiB3b3JsZCAoYXQgbGVhc3QsIGl0IHNob3VsZCA6KSApLiBBbG9uZyB3aXRoIHRoZSBncm91cElkLCB0aGUgYXJ0aWZhY3RJZFxuICAgKiBmdWxseSBkZWZpbmVzIHRoZSBhcnRpZmFjdCdzIGxpdmluZyBxdWFydGVycyB3aXRoaW4gdGhlIHJlcG9zaXRvcnkuIEluIHRoZVxuICAgKiBjYXNlIG9mIHRoZSBhYm92ZSBwcm9qZWN0LCBteS1wcm9qZWN0IGxpdmVzIGluXG4gICAqICRNMl9SRVBPL29yZy9jb2RlaGF1cy9tb2pvL215LXByb2plY3QuXG4gICAqIEBkZWZhdWx0IFwibXktYXBwXCJcbiAgICogQGZlYXR1cmVkXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIGxhc3QgcGllY2Ugb2YgdGhlIG5hbWluZyBwdXp6bGUuIGdyb3VwSWQ6YXJ0aWZhY3RJZCBkZW5vdGVzIGFcbiAgICogc2luZ2xlIHByb2plY3QgYnV0IHRoZXkgY2Fubm90IGRlbGluZWF0ZSB3aGljaCBpbmNhcm5hdGlvbiBvZiB0aGF0IHByb2plY3RcbiAgICogd2UgYXJlIHRhbGtpbmcgYWJvdXQuIERvIHdlIHdhbnQgdGhlIGp1bml0Omp1bml0IG9mIDIwMTggKHZlcnNpb24gNC4xMiksIG9yXG4gICAqIG9mIDIwMDcgKHZlcnNpb24gMy44LjIpPyBJbiBzaG9ydDogY29kZSBjaGFuZ2VzLCB0aG9zZSBjaGFuZ2VzIHNob3VsZCBiZVxuICAgKiB2ZXJzaW9uZWQsIGFuZCB0aGlzIGVsZW1lbnQga2VlcHMgdGhvc2UgdmVyc2lvbnMgaW4gbGluZS4gSXQgaXMgYWxzbyB1c2VkXG4gICAqIHdpdGhpbiBhbiBhcnRpZmFjdCdzIHJlcG9zaXRvcnkgdG8gc2VwYXJhdGUgdmVyc2lvbnMgZnJvbSBlYWNoIG90aGVyLlxuICAgKiBteS1wcm9qZWN0IHZlcnNpb24gMS4wIGZpbGVzIGxpdmUgaW4gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbiAgICogJE0yX1JFUE8vb3JnL2NvZGVoYXVzL21vam8vbXktcHJvamVjdC8xLjAuXG4gICAqIEBkZWZhdWx0IFwiMC4xLjBcIlxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogUHJvamVjdCBwYWNrYWdpbmcgZm9ybWF0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImphclwiXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdpbmc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIGEgcHJvamVjdCBpcyBhbHdheXMgZ29vZC4gQWx0aG91Z2ggdGhpcyBzaG91bGQgbm90IHJlcGxhY2VcbiAgICogZm9ybWFsIGRvY3VtZW50YXRpb24sIGEgcXVpY2sgY29tbWVudCB0byBhbnkgcmVhZGVycyBvZiB0aGUgUE9NIGlzIGFsd2F5c1xuICAgKiBoZWxwZnVsLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQGZlYXR1cmVkXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFVSTCwgbGlrZSB0aGUgbmFtZSwgaXMgbm90IHJlcXVpcmVkLiBUaGlzIGlzIGEgbmljZSBnZXN0dXJlIGZvclxuICAgKiBwcm9qZWN0cyB1c2VycywgaG93ZXZlciwgc28gdGhhdCB0aGV5IGtub3cgd2hlcmUgdGhlIHByb2plY3QgbGl2ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBQYXJlbnQgUG9tIGNhbiBiZSB1c2VkIHRvIGhhdmUgYSBjaGlsZCBwcm9qZWN0IGluaGVyaXRcbiAgICogcHJvcGVydGllcy9wbHVnaW5zL2VjdCBpbiBvcmRlciB0byByZWR1Y2UgZHVwbGljYXRpb24gYW5kIGtlZXAgc3RhbmRhcmRzXG4gICAqIGFjcm9zcyBhIGxhcmdlIGFtb3VudCBvZiByZXBvc1xuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQGZlYXR1cmVkXG4gICAqL1xuICByZWFkb25seSBwYXJlbnRQb20/OiBQYXJlbnRQb207XG59XG5cbi8qXG4gKiBSZXByZXNlbnRzIGEgUGFyZW50IE1hdmVuIFBvbS4gQSBwYXJlbnQgbWF2ZW4gcG9tIGNhbiBwcm92aWRlIHRoaW5ncyBsaWtlIGRlcGVuZGVuY2llcyBhbmQgcGx1Z2luIGxpc3RzL2NvbmZpZ3VyYXRpb24uXG4gKiBUaGF0IGNhbiBiZSBoZWxwZnVsIGZvciB0cnlpbmcgdG8gY29udHJvbCBjb25maWd1cmF0aW9uIGFjcm9zcyBhIGxhcmdlIHN3YXRoIG9mIHByb2dyYW1zIGVzcGVjaWFsbHkgZm9yIHRoaW5ncyBsaWtlXG4gKiBlbnRlcnByaXNlIGNvbmZpZ3VyYXRpb25zIG9mIHBsdWdpbnMuXG4gKiBAc2VlIGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy9ndWlkZXMvaW50cm9kdWN0aW9uL2ludHJvZHVjdGlvbi10by10aGUtcG9tLmh0bWwjcHJvamVjdC1pbmhlcml0YW5jZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcmVudFBvbSB7XG4gIC8qKlxuICAgKiBQYXJlbnQgUG9tIEdyb3VwIElEXG4gICAqL1xuICByZWFkb25seSBncm91cElkPzogc3RyaW5nO1xuICAvKipcbiAgICogUGFyZW50IFBvbSBBcnRpZmFjdCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhcmVudCBQb20gVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhcmVudCBQb20gUmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBjdXJyZW50IHBvbVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsYXRpdmVQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBNYXZlbiByZXBvc2l0b3J5XG4gKiBAc2VlIGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy9ndWlkZXMvaW50cm9kdWN0aW9uL2ludHJvZHVjdGlvbi10by1yZXBvc2l0b3JpZXMuaHRtbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hdmVuUmVwb3NpdG9yeSB7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBmb3IgdGhlIHJlcG9zaXRvcnlcbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdXJsIG9mIHRoZSByZXBvc2l0b3J5XG4gICAqL1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZXBvc2l0b3J5XG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxheW91dCBvZiB0aGUgcmVwb3NpdG9yeVxuICAgKi9cbiAgcmVhZG9ubHkgbGF5b3V0Pzogc3RyaW5nO1xuICAvKipcbiAgICogUmVwb3NpdG9yeSBQb2xpY3kgZm9yIFNuYXBzaG90c1xuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3RzPzogTWF2ZW5SZXBvc2l0b3J5UG9saWN5O1xuICAvKipcbiAgICogUmVwb3NpdG9yeSBQb2xpY3kgZm9yIFJlbGVhc2VzXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlcz86IE1hdmVuUmVwb3NpdG9yeVBvbGljeTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgTWF2ZW4gUmVwb3NpdG9yeSBQb2xpY3lcbiAqIEBzZWUgaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL3NldHRpbmdzLmh0bWwjcmVwb3NpdG9yaWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF2ZW5SZXBvc2l0b3J5UG9saWN5IHtcbiAgLypcbiAgICogV2hldGhlciB0aGlzIHJlcG9zaXRvcnkgaXMgZW5hYmxlZCAgZm9yIHRoZSByZXNwZWN0aXZlIHR5cGUgKGByZWxlYXNlc2Agb3IgYHNuYXBzaG90c2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBQb2xpY3lcbiAgICogVGhpcyBlbGVtZW50IHNwZWNpZmllcyBob3cgb2Z0ZW4gdXBkYXRlcyBzaG91bGQgYXR0ZW1wdCB0byBvY2N1ci4gTWF2ZW4gd2lsbCBjb21wYXJlIHRoZSBsb2NhbCBQT00ncyB0aW1lc3RhbXAgKHN0b3JlZCBpbiBhIHJlcG9zaXRvcnkncyBtYXZlbi1tZXRhZGF0YSBmaWxlKSB0byB0aGUgcmVtb3RlLlxuICAgKiBAZGVmYXVsdCBVcGRhdGVQb2xpY3kuREFJTFlcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZVBvbGljeT86IFVwZGF0ZVBvbGljeTtcblxuICAvKipcbiAgICogQ2hlY2tzdW0gUG9saWN5XG4gICAqIFdoZW4gTWF2ZW4gZGVwbG95cyBmaWxlcyB0byB0aGUgcmVwb3NpdG9yeSwgaXQgYWxzbyBkZXBsb3lzIGNvcnJlc3BvbmRpbmcgY2hlY2tzdW0gZmlsZXMuXG4gICAqL1xuICByZWFkb25seSBjaGVja3N1bVBvbGljeT86IENoZWNrc3VtUG9saWN5O1xufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlUG9saWN5IHtcbiAgc3RhdGljIHJlYWRvbmx5IEFMV0FZUyA9IFwiYWx3YXlzXCI7XG4gIHN0YXRpYyByZWFkb25seSBEQUlMWSA9IFwiZGFpbHlcIjtcbiAgc3RhdGljIHJlYWRvbmx5IE5FVkVSID0gXCJuZXZlclwiO1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGF0IGFuIGludGVydmFsIG9mIFggbWludXRlcy5cbiAgICovXG4gIHN0YXRpYyBpbnRlcnZhbChtaW51dGVzOiBudW1iZXIpIHtcbiAgICByZXR1cm4gYGludGVydmFsOiR7bWludXRlc31gO1xuICB9XG59XG5cbmV4cG9ydCBlbnVtIENoZWNrc3VtUG9saWN5IHtcbiAgSUdOT1JFID0gXCJpZ25vcmVcIixcbiAgRkFJTCA9IFwiZmFpbFwiLFxuICBXQVJOID0gXCJ3YXJuXCIsXG59XG5cbi8qKlxuICogQSBQcm9qZWN0IE9iamVjdCBNb2RlbCBvciBQT00gaXMgdGhlIGZ1bmRhbWVudGFsIHVuaXQgb2Ygd29yayBpbiBNYXZlbi4gSXQgaXNcbiAqIGFuIFhNTCBmaWxlIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QgYW5kIGNvbmZpZ3VyYXRpb25cbiAqIGRldGFpbHMgdXNlZCBieSBNYXZlbiB0byBidWlsZCB0aGUgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBvbSBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcG9tIGZpbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTWF2ZW4gZ3JvdXAgSUQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXZlbiBhcnRpZmFjdCBJRC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhcnRpZmFjdElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb2plY3QgdmVyc2lvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hdmVuIHBhY2thZ2luZyBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFja2FnaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb2plY3QgZGlzcGxheSBuYW1lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb2plY3QgZGVzY3JpcHRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb2plY3QgVVJMLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVybD86IHN0cmluZztcblxuICAvKlxuICAgKiBQcm9qZWN0IFBhcmVudCBQT01cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50UG9tPzogUGFyZW50UG9tO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yaWVzOiBNYXZlblJlcG9zaXRvcnlbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luUmVwb3NpdG9yaWVzOiBNYXZlblJlcG9zaXRvcnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IFBvbU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuZmlsZU5hbWUgPSBcInBvbS54bWxcIjtcbiAgICB0aGlzLmdyb3VwSWQgPSBvcHRpb25zLmdyb3VwSWQ7XG4gICAgdGhpcy5hcnRpZmFjdElkID0gb3B0aW9ucy5hcnRpZmFjdElkO1xuICAgIHRoaXMudmVyc2lvbiA9IG9wdGlvbnMudmVyc2lvbjtcbiAgICB0aGlzLnBhY2thZ2luZyA9IG9wdGlvbnMucGFja2FnaW5nID8/IFwiamFyXCI7XG4gICAgdGhpcy5uYW1lID0gcHJvamVjdC5uYW1lO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBvcHRpb25zLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMudXJsID0gb3B0aW9ucy51cmw7XG4gICAgdGhpcy5wYXJlbnRQb20gPSBvcHRpb25zLnBhcmVudFBvbTtcblxuICAgIG5ldyBYbWxGaWxlKHByb2plY3QsIHRoaXMuZmlsZU5hbWUsIHsgb2JqOiAoKSA9PiB0aGlzLnN5bnRoUG9tKCkgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGtleS92YWx1ZSBwcm9wZXJ0eSB0byB0aGUgcG9tLlxuICAgKiBAcGFyYW0ga2V5IHRoZSBrZXlcbiAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZVxuICAgKi9cbiAgcHVibGljIGFkZFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcm9wZXJ0aWVzW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcnVudGltZSBkZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAcGFyYW0gc3BlYyBGb3JtYXQgYDxncm91cElkPi88YXJ0aWZhY3RJZD5APHNlbXZlcj5gXG4gICAqL1xuICBwdWJsaWMgYWRkRGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KHNwZWMsIERlcGVuZGVuY3lUeXBlLlJVTlRJTUUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0ZXN0IGRlcGVuZGVuY3kuXG4gICAqXG4gICAqIEBwYXJhbSBzcGVjIEZvcm1hdCBgPGdyb3VwSWQ+LzxhcnRpZmFjdElkPkA8c2VtdmVyPmBcbiAgICovXG4gIHB1YmxpYyBhZGRUZXN0RGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KHNwZWMsIERlcGVuZGVuY3lUeXBlLlRFU1QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBidWlsZCBwbHVnaW4gdG8gdGhlIHBvbS5cbiAgICpcbiAgICogVGhlIHBsdWcgaW4gaXMgYWxzbyBhZGRlZCBhcyBhIEJVSUxEIGRlcCB0byB0aGUgcHJvamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgZGVwZW5kZW5jeSBzcGVjIChgZ3JvdXAvYXJ0aWZhY3RAdmVyc2lvbmApXG4gICAqIEBwYXJhbSBvcHRpb25zIHBsdWdpbiBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYWRkUGx1Z2luKHNwZWM6IHN0cmluZywgb3B0aW9uczogUGx1Z2luT3B0aW9ucyA9IHt9KSB7XG4gICAgZm9yIChjb25zdCBkZXAgb2Ygb3B0aW9ucy5kZXBlbmRlbmNpZXMgPz8gW10pIHtcbiAgICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koZGVwLCBEZXBlbmRlbmN5VHlwZS5CVUlMRCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KHNwZWMsIERlcGVuZGVuY3lUeXBlLkJVSUxELCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVwb3NpdG9yeSB0byB0aGUgcG9tXG4gICAqIEBwYXJhbSByZXBvc2l0b3J5IHRoZSByZXBvc2l0b3J5IHRvIGFkZFxuICAgKi9cbiAgcHVibGljIGFkZFJlcG9zaXRvcnkocmVwb3NpdG9yeTogTWF2ZW5SZXBvc2l0b3J5KSB7XG4gICAgdGhpcy5yZXBvc2l0b3JpZXMucHVzaChyZXBvc2l0b3J5KTtcbiAgfVxuXG4gIC8qXG4gICAqIEFkZHMgYSByZXBvc2l0b3J5IGZvciBwbHVnaW5zIHRvIHRoZSBwb21cbiAgICogQHBhcmFtIHJlcG9zaXRvcnkgdGhlIHJlcG9zaXRvcnkgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgYWRkUGx1Z2luUmVwb3NpdG9yeShyZXBvc2l0b3J5OiBNYXZlblJlcG9zaXRvcnkpIHtcbiAgICB0aGlzLnBsdWdpblJlcG9zaXRvcmllcy5wdXNoKHJlcG9zaXRvcnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW50aFBvbSgpIHtcbiAgICByZXR1cm4gcmVzb2x2ZShcbiAgICAgIHtcbiAgICAgICAgcHJvamVjdDoge1xuICAgICAgICAgIC4uLlBPTV9YTUxfQVRUUlMsXG4gICAgICAgICAgbW9kZWxWZXJzaW9uOiBcIjQuMC4wXCIsXG4gICAgICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cElkLFxuICAgICAgICAgIGFydGlmYWN0SWQ6IHRoaXMuYXJ0aWZhY3RJZCxcbiAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICAgICAgcGFja2FnaW5nOiB0aGlzLnBhY2thZ2luZyxcbiAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLnByb3BlcnRpZXMsXG4gICAgICAgICAgcGFyZW50OiB0aGlzLnBhcmVudFBvbSxcbiAgICAgICAgICAuLi50aGlzLnN5bnRoUmVwb3NpdG9yaWVzKCksXG4gICAgICAgICAgLi4udGhpcy5zeW50aERlcGVuZGVuY2llcygpLFxuICAgICAgICAgIC4uLnRoaXMuc3ludGhQbHVnaW5SZXBvc2l0b3JpZXMoKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7IG9taXRFbXB0eTogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN5bnRoRGVwZW5kZW5jaWVzKCkge1xuICAgIGNvbnN0IGRlcHMgPSB0aGlzLnByb2plY3QuZGVwcy5hbGw7XG4gICAgaWYgKGRlcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzOiBhbnlbXSA9IFtdO1xuICAgIGNvbnN0IHBsdWdpbnM6IGFueVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XG4gICAgICBzd2l0Y2ggKGRlcC50eXBlKSB7XG4gICAgICAgIGNhc2UgRGVwZW5kZW5jeVR5cGUuUEVFUjpcbiAgICAgICAgY2FzZSBEZXBlbmRlbmN5VHlwZS5SVU5USU1FOlxuICAgICAgICAgIGRlcGVuZGVuY2llcy5wdXNoKG1hdmVuQ29vcmRzKGRlcCkpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgRGVwZW5kZW5jeVR5cGUuVEVTVDpcbiAgICAgICAgICBkZXBlbmRlbmNpZXMucHVzaCh7XG4gICAgICAgICAgICAuLi5tYXZlbkNvb3JkcyhkZXApLFxuICAgICAgICAgICAgc2NvcGU6IFwidGVzdFwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8vIGJ1aWxkIG1hcHMgdG8gcGx1Z2luc1xuICAgICAgICBjYXNlIERlcGVuZGVuY3lUeXBlLkJVSUxEOlxuICAgICAgICAgIHBsdWdpbnMucHVzaCh7XG4gICAgICAgICAgICAuLi5tYXZlbkNvb3JkcyhkZXApLFxuICAgICAgICAgICAgLi4ucGx1Z2luQ29uZmlnKGRlcC5tZXRhZGF0YSBhcyBQbHVnaW5PcHRpb25zKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgZGVwZW5kZW5jeSB0eXBlOiAke2RlcC50eXBlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBidWlsZDogeyBwbHVnaW5zOiB7IHBsdWdpbjogcGx1Z2lucyB9IH0sXG4gICAgICBkZXBlbmRlbmNpZXM6IHsgZGVwZW5kZW5jeTogZGVwZW5kZW5jaWVzIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3ludGhSZXBvc2l0b3JpZXMoKSB7XG4gICAgaWYgKHRoaXMucmVwb3NpdG9yaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZXBvc2l0b3JpZXM6IHsgcmVwb3NpdG9yeTogdGhpcy5yZXBvc2l0b3JpZXMgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzeW50aFBsdWdpblJlcG9zaXRvcmllcygpIHtcbiAgICBpZiAodGhpcy5wbHVnaW5SZXBvc2l0b3JpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBsdWdpblJlcG9zaXRvcmllczogeyBwbHVnaW5SZXBvc2l0b3J5OiB0aGlzLnBsdWdpblJlcG9zaXRvcmllcyB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBNYXZlbiBwbHVnaW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogUGx1Z2luIGtleS92YWx1ZSBjb25maWd1cmF0aW9uXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICByZWFkb25seSBjb25maWd1cmF0aW9uPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAvKipcbiAgICogUGx1Z2luIGV4ZWN1dGlvbnNcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvbnM/OiBQbHVnaW5FeGVjdXRpb25bXTtcblxuICAvKipcbiAgICogWW91IGNvdWxkIGNvbmZpZ3VyZSB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgcGx1Z2luLlxuICAgKlxuICAgKiBEZXBlbmRlbmNpZXMgYXJlIGluIGA8Z3JvdXBJZD4vPGFydGlmYWN0SWQ+QDxzZW12ZXI+YCBmb3JtYXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQbHVnaW4gZXhlY3V0aW9uIGRlZmluaXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luRXhlY3V0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBJRC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoaWNoIE1hdmVuIGdvYWxzIHRoaXMgcGx1Z2luIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGguXG4gICAqL1xuICByZWFkb25seSBnb2Fsczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBwaGFzZSBpbiB3aGljaCB0aGUgcGx1Z2luIHNob3VsZCBleGVjdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGhhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGlvbiBrZXkvdmFsdWUgY29uZmlndXJhdGlvblxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlndXJhdGlvbj86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUGFyc2VzIG1hdmVuIGdyb3VwSWQgYW5kIGFydGlmYWN0SWQgZnJvbSBhIGRlcGVuZGVuY3kgbmFtZS5cbiAqXG4gKiAgICAgbmFtZSAgICA8PT4gPGdyb3VwSWQ+LzxhcnRpZmFjdElkPlxuICogICAgIHZlcnNpb24gPD0+IDx2ZXJzaW9uPlxuICovXG5mdW5jdGlvbiBtYXZlbkNvb3JkcyhkZXA6IERlcGVuZGVuY3lDb29yZGluYXRlcykge1xuICBjb25zdCBuYW1lID0gZGVwLm5hbWU7XG4gIGNvbnN0IHBhcnRzID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgaW52YWxpZCBtYXZlbiBjb29yZGluYXRlcyBpbiBkZXBlbmRlbmN5IG5hbWVkIFwiJHtuYW1lfVwiLiBmb3JtYXQgaXMgXCI8Z3JvdXBJZD4vPGFydGlmYWN0SWQ+XCIuIEZvciBleGFtcGxlIFwib3JnLmp1bml0Lmp1cGl0ZXIvanVuaXQtanVwaXRlci1lbmdpbmVcImAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZ3JvdXBJZDogcGFydHNbMF0sXG4gICAgYXJ0aWZhY3RJZDogcGFydHNbMV0sXG4gICAgdmVyc2lvbjogZGVwLnZlcnNpb24gPyB0b01hdmVuVmVyc2lvblJhbmdlKGRlcC52ZXJzaW9uKSA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcGx1Z2luQ29uZmlnKG9wdGlvbnM6IFBsdWdpbk9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4ge1xuICAgIGNvbmZpZ3VyYXRpb246IG9wdGlvbnMuY29uZmlndXJhdGlvbixcbiAgICBkZXBlbmRlbmNpZXM6XG4gICAgICBvcHRpb25zLmRlcGVuZGVuY2llcyAmJiBvcHRpb25zLmRlcGVuZGVuY2llcy5sZW5ndGggPiAwXG4gICAgICAgID8ge1xuICAgICAgICAgICAgZGVwZW5kZW5jeTogb3B0aW9ucy5kZXBlbmRlbmNpZXM/Lm1hcCgoZCkgPT5cbiAgICAgICAgICAgICAgbWF2ZW5Db29yZHMoRGVwZW5kZW5jaWVzLnBhcnNlRGVwZW5kZW5jeShkKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgZXhlY3V0aW9uczoge1xuICAgICAgZXhlY3V0aW9uOiBvcHRpb25zLmV4ZWN1dGlvbnM/Lm1hcCgoZSkgPT4gKHtcbiAgICAgICAgaWQ6IGUuaWQsXG4gICAgICAgIGdvYWxzOiBlLmdvYWxzLm1hcCgoZ29hbCkgPT4gKHsgZ29hbCB9KSksXG4gICAgICAgIHBoYXNlOiBlLnBoYXNlLFxuICAgICAgICBjb25maWd1cmF0aW9uOiBlLmNvbmZpZ3VyYXRpb24sXG4gICAgICB9KSksXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.Projenrc = void 0;
5
4
  exports.generateJavaOptionNames = generateJavaOptionNames;
@@ -20,6 +19,15 @@ const util_1 = require("../util");
20
19
  * `src/main/java/projenrc.java`.
21
20
  */
22
21
  class Projenrc extends projenrc_1.ProjenrcFile {
22
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.Projenrc", version: "0.100.0" };
23
+ /**
24
+ * The name of the java class that includes the projen entrypoint.
25
+ */
26
+ className;
27
+ /**
28
+ * Whether the class is in the "test" or "main" scope?
29
+ */
30
+ testScope;
23
31
  constructor(project, pom, options = {}) {
24
32
  super(project);
25
33
  const projenVersion = options.projenVersion ?? common_1.PROJEN_VERSION;
@@ -122,8 +130,6 @@ class Projenrc extends projenrc_1.ProjenrcFile {
122
130
  }
123
131
  }
124
132
  exports.Projenrc = Projenrc;
125
- _a = JSII_RTTI_SYMBOL_1;
126
- Projenrc[_a] = { fqn: "projen.java.Projenrc", version: "0.99.79" };
127
133
  function generateJavaOptionNames(options, jsiiManifest) {
128
134
  const optionFqns = {};
129
135
  for (const option of options) {
@@ -174,4 +180,4 @@ function getJavaImport(jsiiType, jsiiManifest) {
174
180
  .join(".");
175
181
  return `${packageName}.${jsiiType.name}`;
176
182
  }
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVucmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9wcm9qZW5yYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBaU5BLDBEQWNDO0FBa0RELHNDQVNDOztBQTFSRCwyQkFBMEQ7QUFDMUQsK0JBQStDO0FBRS9DLHNDQUEyQztBQUMzQyxrREFBaUQ7QUFFakQsNENBQWdEO0FBRWhELDBDQUEyQztBQUMzQyxrQ0FBaUQ7QUFpQ2pEOzs7Ozs7R0FNRztBQUNILE1BQWEsUUFBUyxTQUFRLHVCQUFZO0lBV3hDLFlBQVksT0FBZ0IsRUFBRSxHQUFRLEVBQUUsVUFBMkIsRUFBRTtRQUNuRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLHVCQUFjLENBQUM7UUFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO1FBRTNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTO1lBQzVCLENBQUMsQ0FBQyw2QkFBYyxDQUFDLElBQUk7WUFDckIsQ0FBQyxDQUFDLDZCQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDaEMsQ0FBQyxDQUFDLHNCQUFzQjtZQUN4QixDQUFDLENBQUMsa0JBQWtCLENBQUM7UUFFdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3hCLDRCQUE0QixhQUFhLEVBQUUsRUFDM0MsT0FBTyxDQUNSLENBQUM7UUFDRixHQUFHLENBQUMsU0FBUyxDQUFDLDJDQUEyQyxDQUFD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QUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsUUFBYSxFQUFFLFlBQWlCO0lBQzVELE1BQU0sV0FBVyxHQUNmLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3ZFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPO1FBQzFCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUM7YUFDcEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWYsT0FBTyxHQUFHLFdBQVcsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiwgcmVsYXRpdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBQb20gfSBmcm9tIFwiLi9wb21cIjtcbmltcG9ydCB7IFBST0pFTl9WRVJTSU9OIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3RPcHRpb24gfSBmcm9tIFwiLi4vaW52ZW50b3J5XCI7XG5pbXBvcnQgeyByZWFkSnNpaU1hbmlmZXN0IH0gZnJvbSBcIi4uL2ludmVudG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB7IFByb2plbnJjRmlsZSB9IGZyb20gXCIuLi9wcm9qZW5yY1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplUGVyc2lzdGVkUGF0aCB9IGZyb20gXCIuLi91dGlsXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFByb2plbnJjYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZW5yY09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEphdmEgY2xhc3Mgd2hpY2ggY29udGFpbnMgdGhlIGBtYWluKClgIG1ldGhvZCBmb3IgcHJvamVuLlxuICAgKiBAZGVmYXVsdCBcInByb2plbnJjXCJcbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb2plbiB2ZXJzaW9uIHRvIHVzZVxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVuVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lcyBwcm9qZW5yYyB1bmRlciB0aGUgdGVzdCBzY29wZSBpbnN0ZWFkIG9mIHRoZSBtYWluIHNjb3BlLCB3aGljaCBpc1xuICAgKiByZXNlcnZlZCB0byB0aGUgYXBwLiBUaGlzIG1lYW5zIHRoYXQgcHJvamVucmMgd2lsbCBiZSB1bmRlclxuICAgKiBgc3JjL3Rlc3QvamF2YS9wcm9qZW5yYy5qYXZhYCBhbmQgcHJvamVuIHdpbGwgYmUgZGVmaW5lZCBhcyBhIHRlc3RcbiAgICogZGVwZW5kZW5jeS4gVGhpcyBlbmZvcmNlcyB0aGF0IGFwcGxpY2F0aW9uIGNvZGUgZG9lcyBub3QgdGFrZSBhIGRlcGVuZGVuY3lcbiAgICogb24gcHJvamVuIGNvZGUuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgZGlzYWJsZWQsIHByb2plbnJjIHNob3VsZCBiZSB1bmRlclxuICAgKiBgc3JjL21haW4vamF2YS9wcm9qZW5yYy5qYXZhYC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFNjb3BlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBbGxvd3Mgd3JpdGluZyBwcm9qZW5yYyBmaWxlcyBpbiBqYXZhLlxuICpcbiAqIFRoaXMgd2lsbCBpbnN0YWxsIGBvcmcucHJvamVuL3Byb2plbmAgYXMgYSBNYXZlbiBkZXBlbmRlbmN5IGFuZCB3aWxsIGFkZCBhXG4gKiBgc3ludGhgIHRhc2sgd2hpY2ggd2lsbCBjb21waWxlICYgZXhlY3V0ZSBgbWFpbigpYCBmcm9tXG4gKiBgc3JjL21haW4vamF2YS9wcm9qZW5yYy5qYXZhYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb2plbnJjIGV4dGVuZHMgUHJvamVucmNGaWxlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBqYXZhIGNsYXNzIHRoYXQgaW5jbHVkZXMgdGhlIHByb2plbiBlbnRyeXBvaW50LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNsYXNzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjbGFzcyBpcyBpbiB0aGUgXCJ0ZXN0XCIgb3IgXCJtYWluXCIgc2NvcGU/XG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRlc3RTY29wZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBwb206IFBvbSwgb3B0aW9uczogUHJvamVucmNPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IHByb2plblZlcnNpb24gPSBvcHRpb25zLnByb2plblZlcnNpb24gPz8gUFJPSkVOX1ZFUlNJT047XG4gICAgdGhpcy5jbGFzc05hbWUgPSBvcHRpb25zLmNsYXNzTmFtZSA/PyBcInByb2plbnJjXCI7XG4gICAgdGhpcy50ZXN0U2NvcGUgPSBvcHRpb25zLnRlc3RTY29wZSA/PyB0cnVlO1xuXG4gICAgY29uc3QgZGVwVHlwZSA9IHRoaXMudGVzdFNjb3BlXG4gICAgICA/IERlcGVuZGVuY3lUeXBlLlRFU1RcbiAgICAgIDogRGVwZW5kZW5jeVR5cGUuUlVOVElNRTtcbiAgICBjb25zdCBleGVjT3B0cyA9IHRoaXMudGVzdFNjb3BlID8gJyAtRGV4ZWMuY2xhc3NwYXRoU2NvcGU9XCJ0ZXN0XCInIDogXCJcIjtcbiAgICBjb25zdCBjb21waWxlR29hbCA9IHRoaXMudGVzdFNjb3BlXG4gICAgICA/IFwiY29tcGlsZXI6dGVzdENvbXBpbGVcIlxuICAgICAgOiBcImNvbXBpbGVyOmNvbXBpbGVcIjtcblxuICAgIHByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KFxuICAgICAgYGlvLmdpdGh1Yi5jZGtsYWJzL3Byb2plbkAke3Byb2plblZlcnNpb259YCxcbiAgICAgIGRlcFR5cGUsXG4gICAgKTtcbiAgICBwb20uYWRkUGx1Z2luKFwib3JnLmNvZGVoYXVzLm1vam8vZXhlYy1tYXZlbi1wbHVnaW5AMy4wLjBcIik7XG5cbiAgICAvLyBzZXQgdXAgdGhlIFwiZGVmYXVsdFwiIHRhc2sgd2hpY2ggaXMgdGhlIHRhc2sgZXhlY3V0ZWQgd2hlbiBgcHJvamVuYCBpcyBleGVjdXRlZCBmb3IgdGhpcyBwcm9qZWN0LlxuICAgIHByb2plY3QuZGVmYXVsdFRhc2s/LmV4ZWMoYG12biAke2NvbXBpbGVHb2FsfSAtLXF1aWV0YCk7XG4gICAgcHJvamVjdC5kZWZhdWx0VGFzaz8uZXhlYyhcbiAgICAgIGBtdm4gZXhlYzpqYXZhIC0tcXVpZXQgLURleGVjLm1haW5DbGFzcz0ke3RoaXMuY2xhc3NOYW1lfSR7ZXhlY09wdHN9YCxcbiAgICApO1xuXG4gICAgLy8gaWYgdGhpcyBpcyBhIG5ldyBwcm9qZWN0LCBnZW5lcmF0ZSBhIHNrZWxldG9uIGZvciBwcm9qZW5yYy5qYXZhXG4gICAgdGhpcy5nZW5lcmF0ZVByb2plbnJjKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBqYXZhQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzcGxpdCA9IHRoaXMuY2xhc3NOYW1lLnNwbGl0KFwiLlwiKTtcbiAgICBpZiAoc3BsaXQubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gc3BsaXRbMF07XG4gICAgfVxuICAgIHJldHVybiBzcGxpdFtzcGxpdC5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGphdmFQYWNrYWdlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzcGxpdCA9IHRoaXMuY2xhc3NOYW1lLnNwbGl0KFwiLlwiKTtcbiAgICBpZiAoc3BsaXQubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBzcGxpdC5zbGljZSgwLCBzcGxpdC5sZW5ndGggLSAyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgcHJvamVucmMgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZmlsZVBhdGgoKTogc3RyaW5nIHtcbiAgICBjb25zdCBkaXIgPSB0aGlzLnRlc3RTY29wZSA/IFwic3JjL3Rlc3QvamF2YVwiIDogXCJzcmMvbWFpbi9qYXZhXCI7XG5cbiAgICBjb25zdCBqYXZhRmlsZSA9IGpvaW4oXG4gICAgICB0aGlzLnByb2plY3Qub3V0ZGlyLFxuICAgICAgZGlyLFxuICAgICAgLi4udGhpcy5qYXZhUGFja2FnZSxcbiAgICAgIHRoaXMuamF2YUNsYXNzICsgXCIuamF2YVwiLFxuICAgICk7XG5cbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZSh0aGlzLnByb2plY3Qub3V0ZGlyLCBqYXZhRmlsZSk7XG5cbiAgICByZXR1cm4gbm9ybWFsaXplUGVyc2lzdGVkUGF0aChyZWxhdGl2ZVBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVByb2plbnJjKCkge1xuICAgIGNvbnN0IGJvb3RzdHJhcCA9IHRoaXMucHJvamVjdC5pbml0UHJvamVjdDtcbiAgICBpZiAoIWJvb3RzdHJhcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBqc2lpRnFuID0gYm9vdHN0cmFwLmZxbjtcbiAgICBjb25zdCBqc2lpTWFuaWZlc3QgPSByZWFkSnNpaU1hbmlmZXN0KGpzaWlGcW4pO1xuICAgIGNvbnN0IGpzaWlUeXBlID0ganNpaU1hbmlmZXN0LnR5cGVzW2pzaWlGcW5dO1xuICAgIGNvbnN0IGphdmFUYXJnZXQgPSBqc2lpTWFuaWZlc3QudGFyZ2V0cy5qYXZhO1xuICAgIGNvbnN0IG9wdGlvbnNUeXBlRnFuID0ganNpaVR5cGUuaW5pdGlhbGl6ZXI/LnBhcmFtZXRlcnM/LlswXS50eXBlPy5mcW47XG4gICAgaWYgKCFvcHRpb25zVHlwZUZxbikge1xuICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci53YXJuKFxuICAgICAgICBcImNhbm5vdCBkZXRlcm1pbmUganNpaSB0eXBlIGZvciBwcm9qZWN0IG9wdGlvbnNcIixcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGpzaWlPcHRpb25zVHlwZSA9IGpzaWlNYW5pZmVzdC50eXBlc1tvcHRpb25zVHlwZUZxbl07XG4gICAgaWYgKCFqc2lpT3B0aW9uc1R5cGUpIHtcbiAgICAgIHRoaXMucHJvamVjdC5sb2dnZXIud2FybihcbiAgICAgICAgYGNhbm5vdCBmaW5kIGpzaWkgdHlwZSBmb3IgcHJvamVjdCBvcHRpb25zOiAke29wdGlvbnNUeXBlRnFufWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBza2lwIGlmIGZpbGUgZXhpc3RzXG4gICAgaWYgKGV4aXN0c1N5bmModGhpcy5maWxlUGF0aCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBsZXQgaW5kZW50ID0gMDtcbiAgICBjb25zdCBlbWl0ID0gKGxpbmU6IHN0cmluZyA9IFwiXCIpID0+XG4gICAgICBsaW5lcy5wdXNoKFwiIFwiLnJlcGVhdChpbmRlbnQgKiA0KSArIGxpbmUpO1xuICAgIGNvbnN0IG9wZW5CbG9jayA9IChsaW5lOiBzdHJpbmcgPSBcIlwiKSA9PiB7XG4gICAgICBlbWl0KGxpbmUgKyBcIiB7XCIpO1xuICAgICAgaW5kZW50Kys7XG4gICAgfTtcbiAgICBjb25zdCBjbG9zZUJsb2NrID0gKCkgPT4ge1xuICAgICAgaW5kZW50LS07XG4gICAgICBlbWl0KFwifVwiKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uRnFuczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IGdlbmVyYXRlSmF2YU9wdGlvbk5hbWVzKFxuICAgICAgYm9vdHN0cmFwLnR5cGUub3B0aW9ucyxcbiAgICAgIGpzaWlNYW5pZmVzdCxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuamF2YVBhY2thZ2UubGVuZ3RoID4gMCkge1xuICAgICAgZW1pdChgcGFja2FnZSAke3RoaXMuamF2YVBhY2thZ2Uuam9pbihcIi5cIil9O2ApO1xuICAgICAgZW1pdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcmVuZGVyZWRPcHRpb25zLCBpbXBvcnRzIH0gPSByZW5kZXJKYXZhT3B0aW9ucyhcbiAgICAgIDIsXG4gICAgICBqc2lpT3B0aW9uc1R5cGUubmFtZSxcbiAgICAgIG9wdGlvbkZxbnMsXG4gICAgICBib290c3RyYXAuYXJncyxcbiAgICApO1xuXG4gICAgZW1pdChgaW1wb3J0ICR7Z2V0SmF2YUltcG9ydChqc2lpVHlwZSwganNpaU1hbmlmZXN0KX07YCk7XG4gICAgZW1pdChgaW1wb3J0ICR7Z2V0SmF2YUltcG9ydChqc2lpT3B0aW9uc1R5cGUsIGpzaWlNYW5pZmVzdCl9O2ApO1xuICAgIGZvciAoY29uc3Qgb3B0aW9uVHlwZU5hbWUgb2YgaW1wb3J0cykge1xuICAgICAgZW1pdChgaW1wb3J0ICR7amF2YVRhcmdldC5wYWNrYWdlfS4ke29wdGlvblR5cGVOYW1lfTtgKTtcbiAgICB9XG4gICAgZW1pdCgpO1xuICAgIG9wZW5CbG9jayhgcHVibGljIGNsYXNzICR7dGhpcy5qYXZhQ2xhc3N9YCk7XG4gICAgb3BlbkJsb2NrKFwicHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncylcIik7XG4gICAgZW1pdChcbiAgICAgIGAke2pzaWlUeXBlLm5hbWV9IHByb2plY3QgPSBuZXcgJHtqc2lpVHlwZS5uYW1lfSgke3JlbmRlcmVkT3B0aW9uc30pO2AsXG4gICAgKTtcbiAgICBlbWl0KFwicHJvamVjdC5zeW50aCgpO1wiKTtcbiAgICBjbG9zZUJsb2NrKCk7XG4gICAgY2xvc2VCbG9jaygpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSBqb2luKHRoaXMucHJvamVjdC5vdXRkaXIsIHRoaXMuZmlsZVBhdGgpO1xuICAgIG1rZGlyU3luYyhkaXJuYW1lKGZpbGVQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgd3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgbGluZXMuam9pbihcIlxcblwiKSk7XG5cbiAgICB0aGlzLnByb2plY3QubG9nZ2VyLmluZm8oXG4gICAgICBgUHJvamVjdCBkZWZpbml0aW9uIGZpbGUgd2FzIGNyZWF0ZWQgYXQgJHt0aGlzLmZpbGVQYXRofWAsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVKYXZhT3B0aW9uTmFtZXMoXG4gIG9wdGlvbnM6IFByb2plY3RPcHRpb25bXSxcbiAganNpaU1hbmlmZXN0OiBhbnksXG4pIHtcbiAgY29uc3Qgb3B0aW9uRnFuczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbi5mcW4gJiYganNpaU1hbmlmZXN0LnR5cGVzW29wdGlvbi5mcW5dKSB7XG4gICAgICBvcHRpb25GcW5zW29wdGlvbi5uYW1lXSA9IHRvSmF2YUZ1bGxUeXBlTmFtZShcbiAgICAgICAganNpaU1hbmlmZXN0LnR5cGVzW29wdGlvbi5mcW5dLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3B0aW9uRnFucztcbn1cblxuZnVuY3Rpb24gcmVuZGVySmF2YU9wdGlvbnMoXG4gIGluZGVudDogbnVtYmVyLFxuICBvcHRpb25zVHlwZU5hbWU6IHN0cmluZyxcbiAgb3B0aW9uRnFuczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgaW5pdE9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSB7XG4gIGNvbnN0IGltcG9ydHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgaWYgKCFpbml0T3B0aW9ucyB8fCBPYmplY3Qua2V5cyhpbml0T3B0aW9ucykubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHsgcmVuZGVyZWRPcHRpb25zOiBcIlwiLCBpbXBvcnRzIH07IC8vIG5vIG9wdGlvbnNcbiAgfVxuXG4gIGNvbnN0IGxpbmVzID0gW2Ake29wdGlvbnNUeXBlTmFtZX0uYnVpbGRlcigpYF07XG5cbiAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGluaXRPcHRpb25zKSkge1xuICAgIGNvbnN0IHsgamF2YVZhbHVlLCBpbXBvcnROYW1lIH0gPSB0b0phdmFWYWx1ZSh2YWx1ZSwgbmFtZSwgb3B0aW9uRnFucyk7XG4gICAgaWYgKGltcG9ydE5hbWUpIGltcG9ydHMuYWRkKGltcG9ydE5hbWUpO1xuICAgIGxpbmVzLnB1c2goYC4ke3RvSmF2YVByb3BlcnR5KG5hbWUpfSgke2phdmFWYWx1ZX0pYCk7XG4gIH1cblxuICBsaW5lcy5wdXNoKFwiLmJ1aWxkKClcIik7XG5cbiAgY29uc3QgcmVuZGVyZWRPcHRpb25zID0gbGluZXMuam9pbihgXFxuJHtcIiBcIi5yZXBlYXQoKGluZGVudCArIDEpICogNCl9YCk7XG4gIHJldHVybiB7IHJlbmRlcmVkT3B0aW9ucywgaW1wb3J0cyB9O1xufVxuXG5mdW5jdGlvbiB0b0phdmFQcm9wZXJ0eShwcm9wOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHByb3A7XG59XG5cbmZ1bmN0aW9uIHRvSmF2YVZhbHVlKFxuICB2YWx1ZTogYW55LFxuICBuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbkZxbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4pIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiBvcHRpb25GcW5zW25hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBwYXJ0cyA9IG9wdGlvbkZxbnNbbmFtZV0uc3BsaXQoXCIuXCIpO1xuICAgIGNvbnN0IGJhc2UgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBjaG9pY2UgPSBTdHJpbmcodmFsdWUpLnRvVXBwZXJDYXNlKCkucmVwbGFjZSgvLS9nLCBcIl9cIik7XG4gICAgcmV0dXJuIHsgamF2YVZhbHVlOiBgJHtiYXNlfS4ke2Nob2ljZX1gLCBpbXBvcnROYW1lOiBvcHRpb25GcW5zW25hbWVdIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHsgamF2YVZhbHVlOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b0phdmFGdWxsVHlwZU5hbWUoanNpaVR5cGU6IGFueSkge1xuICByZXR1cm4gW2pzaWlUeXBlLm5hbWVzcGFjZSwganNpaVR5cGUubmFtZV0uZmlsdGVyKCh4KSA9PiB4KS5qb2luKFwiLlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEphdmFJbXBvcnQoanNpaVR5cGU6IGFueSwganNpaU1hbmlmZXN0OiBhbnkpIHtcbiAgY29uc3QgcGFja2FnZU5hbWUgPVxuICAgIGpzaWlNYW5pZmVzdD8uc3VibW9kdWxlcz8uW2Ake2pzaWlUeXBlLmFzc2VtYmx5fS4ke2pzaWlUeXBlPy5uYW1lc3BhY2V9YF1cbiAgICAgID8udGFyZ2V0cz8uamF2YT8ucGFja2FnZSB8fFxuICAgIFtqc2lpTWFuaWZlc3QudGFyZ2V0cy5qYXZhLnBhY2thZ2UsIGpzaWlUeXBlLm5hbWVzcGFjZV1cbiAgICAgIC5maWx0ZXIoKHgpID0+IHgpXG4gICAgICAuam9pbihcIi5cIik7XG5cbiAgcmV0dXJuIGAke3BhY2thZ2VOYW1lfS4ke2pzaWlUeXBlLm5hbWV9YDtcbn1cbiJdfQ==
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVucmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9wcm9qZW5yYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpTkEsMERBY0M7QUFrREQsc0NBU0M7O0FBMVJELDJCQUEwRDtBQUMxRCwrQkFBK0M7QUFFL0Msc0NBQTJDO0FBQzNDLGtEQUFpRDtBQUVqRCw0Q0FBZ0Q7QUFFaEQsMENBQTJDO0FBQzNDLGtDQUFpRDtBQWlDakQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxRQUFTLFNBQVEsdUJBQVk7O0lBQ3hDOztPQUVHO0lBQ2EsU0FBUyxDQUFTO0lBRWxDOztPQUVHO0lBQ2MsU0FBUyxDQUFVO0lBRXBDLFlBQVksT0FBZ0IsRUFBRSxHQUFRLEVBQUUsVUFBMkIsRUFBRTtRQUNuRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLHVCQUFjLENBQUM7UUFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO1FBRTNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTO1lBQzVCLENBQUMsQ0FBQyw2QkFBYyxDQUFDLElBQUk7WUFDckIsQ0FBQyxDQUFDLDZCQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDaEMsQ0FBQyxDQUFDLHNCQUFzQjtZQUN4QixDQUFDLENBQUMsa0JBQWtCLENBQUM7UUFFdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3hCLDRCQUE0QixhQUFhLEVBQUUsRUFD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Q0FBQyxRQUFhO0lBQ3ZDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQWEsRUFBRSxZQUFpQjtJQUM1RCxNQUFNLFdBQVcsR0FDZixZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUN2RSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTztRQUMxQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDO2FBQ3BELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVmLE9BQU8sR0FBRyxXQUFXLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlbGF0aXZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgUG9tIH0gZnJvbSBcIi4vcG9tXCI7XG5pbXBvcnQgeyBQUk9KRU5fVkVSU0lPTiB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0T3B0aW9uIH0gZnJvbSBcIi4uL2ludmVudG9yeVwiO1xuaW1wb3J0IHsgcmVhZEpzaWlNYW5pZmVzdCB9IGZyb20gXCIuLi9pbnZlbnRvcnlcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBQcm9qZW5yY0ZpbGUgfSBmcm9tIFwiLi4vcHJvamVucmNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGggfSBmcm9tIFwiLi4vdXRpbFwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBQcm9qZW5yY2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVucmNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBKYXZhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIHRoZSBgbWFpbigpYCBtZXRob2QgZm9yIHByb2plbi5cbiAgICogQGRlZmF1bHQgXCJwcm9qZW5yY1wiXG4gICAqL1xuICByZWFkb25seSBjbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9qZW4gdmVyc2lvbiB0byB1c2VcbiAgICogQGRlZmF1bHQgLSBjdXJyZW50IHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHByb2plblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgcHJvamVucmMgdW5kZXIgdGhlIHRlc3Qgc2NvcGUgaW5zdGVhZCBvZiB0aGUgbWFpbiBzY29wZSwgd2hpY2ggaXNcbiAgICogcmVzZXJ2ZWQgdG8gdGhlIGFwcC4gVGhpcyBtZWFucyB0aGF0IHByb2plbnJjIHdpbGwgYmUgdW5kZXJcbiAgICogYHNyYy90ZXN0L2phdmEvcHJvamVucmMuamF2YWAgYW5kIHByb2plbiB3aWxsIGJlIGRlZmluZWQgYXMgYSB0ZXN0XG4gICAqIGRlcGVuZGVuY3kuIFRoaXMgZW5mb3JjZXMgdGhhdCBhcHBsaWNhdGlvbiBjb2RlIGRvZXMgbm90IHRha2UgYSBkZXBlbmRlbmN5XG4gICAqIG9uIHByb2plbiBjb2RlLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIGRpc2FibGVkLCBwcm9qZW5yYyBzaG91bGQgYmUgdW5kZXJcbiAgICogYHNyYy9tYWluL2phdmEvcHJvamVucmMuamF2YWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RTY29wZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQWxsb3dzIHdyaXRpbmcgcHJvamVucmMgZmlsZXMgaW4gamF2YS5cbiAqXG4gKiBUaGlzIHdpbGwgaW5zdGFsbCBgb3JnLnByb2plbi9wcm9qZW5gIGFzIGEgTWF2ZW4gZGVwZW5kZW5jeSBhbmQgd2lsbCBhZGQgYVxuICogYHN5bnRoYCB0YXNrIHdoaWNoIHdpbGwgY29tcGlsZSAmIGV4ZWN1dGUgYG1haW4oKWAgZnJvbVxuICogYHNyYy9tYWluL2phdmEvcHJvamVucmMuamF2YWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9qZW5yYyBleHRlbmRzIFByb2plbnJjRmlsZSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgamF2YSBjbGFzcyB0aGF0IGluY2x1ZGVzIHRoZSBwcm9qZW4gZW50cnlwb2ludC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjbGFzc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2xhc3MgaXMgaW4gdGhlIFwidGVzdFwiIG9yIFwibWFpblwiIHNjb3BlP1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0ZXN0U2NvcGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcG9tOiBQb20sIG9wdGlvbnM6IFByb2plbnJjT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBjb25zdCBwcm9qZW5WZXJzaW9uID0gb3B0aW9ucy5wcm9qZW5WZXJzaW9uID8/IFBST0pFTl9WRVJTSU9OO1xuICAgIHRoaXMuY2xhc3NOYW1lID0gb3B0aW9ucy5jbGFzc05hbWUgPz8gXCJwcm9qZW5yY1wiO1xuICAgIHRoaXMudGVzdFNjb3BlID0gb3B0aW9ucy50ZXN0U2NvcGUgPz8gdHJ1ZTtcblxuICAgIGNvbnN0IGRlcFR5cGUgPSB0aGlzLnRlc3RTY29wZVxuICAgICAgPyBEZXBlbmRlbmN5VHlwZS5URVNUXG4gICAgICA6IERlcGVuZGVuY3lUeXBlLlJVTlRJTUU7XG4gICAgY29uc3QgZXhlY09wdHMgPSB0aGlzLnRlc3RTY29wZSA/ICcgLURleGVjLmNsYXNzcGF0aFNjb3BlPVwidGVzdFwiJyA6IFwiXCI7XG4gICAgY29uc3QgY29tcGlsZUdvYWwgPSB0aGlzLnRlc3RTY29wZVxuICAgICAgPyBcImNvbXBpbGVyOnRlc3RDb21waWxlXCJcbiAgICAgIDogXCJjb21waWxlcjpjb21waWxlXCI7XG5cbiAgICBwcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShcbiAgICAgIGBpby5naXRodWIuY2RrbGFicy9wcm9qZW5AJHtwcm9qZW5WZXJzaW9ufWAsXG4gICAgICBkZXBUeXBlLFxuICAgICk7XG4gICAgcG9tLmFkZFBsdWdpbihcIm9yZy5jb2RlaGF1cy5tb2pvL2V4ZWMtbWF2ZW4tcGx1Z2luQDMuMC4wXCIpO1xuXG4gICAgLy8gc2V0IHVwIHRoZSBcImRlZmF1bHRcIiB0YXNrIHdoaWNoIGlzIHRoZSB0YXNrIGV4ZWN1dGVkIHdoZW4gYHByb2plbmAgaXMgZXhlY3V0ZWQgZm9yIHRoaXMgcHJvamVjdC5cbiAgICBwcm9qZWN0LmRlZmF1bHRUYXNrPy5leGVjKGBtdm4gJHtjb21waWxlR29hbH0gLS1xdWlldGApO1xuICAgIHByb2plY3QuZGVmYXVsdFRhc2s/LmV4ZWMoXG4gICAgICBgbXZuIGV4ZWM6amF2YSAtLXF1aWV0IC1EZXhlYy5tYWluQ2xhc3M9JHt0aGlzLmNsYXNzTmFtZX0ke2V4ZWNPcHRzfWAsXG4gICAgKTtcblxuICAgIC8vIGlmIHRoaXMgaXMgYSBuZXcgcHJvamVjdCwgZ2VuZXJhdGUgYSBza2VsZXRvbiBmb3IgcHJvamVucmMuamF2YVxuICAgIHRoaXMuZ2VuZXJhdGVQcm9qZW5yYygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgamF2YUNsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3BsaXQgPSB0aGlzLmNsYXNzTmFtZS5zcGxpdChcIi5cIik7XG4gICAgaWYgKHNwbGl0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHNwbGl0WzBdO1xuICAgIH1cbiAgICByZXR1cm4gc3BsaXRbc3BsaXQubGVuZ3RoIC0gMV07XG4gIH1cblxuICBwcml2YXRlIGdldCBqYXZhUGFja2FnZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc3BsaXQgPSB0aGlzLmNsYXNzTmFtZS5zcGxpdChcIi5cIik7XG4gICAgaWYgKHNwbGl0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gc3BsaXQuc2xpY2UoMCwgc3BsaXQubGVuZ3RoIC0gMik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIHByb2plbnJjIGZpbGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZpbGVQYXRoKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGlyID0gdGhpcy50ZXN0U2NvcGUgPyBcInNyYy90ZXN0L2phdmFcIiA6IFwic3JjL21haW4vamF2YVwiO1xuXG4gICAgY29uc3QgamF2YUZpbGUgPSBqb2luKFxuICAgICAgdGhpcy5wcm9qZWN0Lm91dGRpcixcbiAgICAgIGRpcixcbiAgICAgIC4uLnRoaXMuamF2YVBhY2thZ2UsXG4gICAgICB0aGlzLmphdmFDbGFzcyArIFwiLmphdmFcIixcbiAgICApO1xuXG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmUodGhpcy5wcm9qZWN0Lm91dGRpciwgamF2YUZpbGUpO1xuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGgocmVsYXRpdmVQYXRoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVQcm9qZW5yYygpIHtcbiAgICBjb25zdCBib290c3RyYXAgPSB0aGlzLnByb2plY3QuaW5pdFByb2plY3Q7XG4gICAgaWYgKCFib290c3RyYXApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QganNpaUZxbiA9IGJvb3RzdHJhcC5mcW47XG4gICAgY29uc3QganNpaU1hbmlmZXN0ID0gcmVhZEpzaWlNYW5pZmVzdChqc2lpRnFuKTtcbiAgICBjb25zdCBqc2lpVHlwZSA9IGpzaWlNYW5pZmVzdC50eXBlc1tqc2lpRnFuXTtcbiAgICBjb25zdCBqYXZhVGFyZ2V0ID0ganNpaU1hbmlmZXN0LnRhcmdldHMuamF2YTtcbiAgICBjb25zdCBvcHRpb25zVHlwZUZxbiA9IGpzaWlUeXBlLmluaXRpYWxpemVyPy5wYXJhbWV0ZXJzPy5bMF0udHlwZT8uZnFuO1xuICAgIGlmICghb3B0aW9uc1R5cGVGcW4pIHtcbiAgICAgIHRoaXMucHJvamVjdC5sb2dnZXIud2FybihcbiAgICAgICAgXCJjYW5ub3QgZGV0ZXJtaW5lIGpzaWkgdHlwZSBmb3IgcHJvamVjdCBvcHRpb25zXCIsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBqc2lpT3B0aW9uc1R5cGUgPSBqc2lpTWFuaWZlc3QudHlwZXNbb3B0aW9uc1R5cGVGcW5dO1xuICAgIGlmICghanNpaU9wdGlvbnNUeXBlKSB7XG4gICAgICB0aGlzLnByb2plY3QubG9nZ2VyLndhcm4oXG4gICAgICAgIGBjYW5ub3QgZmluZCBqc2lpIHR5cGUgZm9yIHByb2plY3Qgb3B0aW9uczogJHtvcHRpb25zVHlwZUZxbn1gLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gc2tpcCBpZiBmaWxlIGV4aXN0c1xuICAgIGlmIChleGlzdHNTeW5jKHRoaXMuZmlsZVBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgbGV0IGluZGVudCA9IDA7XG4gICAgY29uc3QgZW1pdCA9IChsaW5lOiBzdHJpbmcgPSBcIlwiKSA9PlxuICAgICAgbGluZXMucHVzaChcIiBcIi5yZXBlYXQoaW5kZW50ICogNCkgKyBsaW5lKTtcbiAgICBjb25zdCBvcGVuQmxvY2sgPSAobGluZTogc3RyaW5nID0gXCJcIikgPT4ge1xuICAgICAgZW1pdChsaW5lICsgXCIge1wiKTtcbiAgICAgIGluZGVudCsrO1xuICAgIH07XG4gICAgY29uc3QgY2xvc2VCbG9jayA9ICgpID0+IHtcbiAgICAgIGluZGVudC0tO1xuICAgICAgZW1pdChcIn1cIik7XG4gICAgfTtcblxuICAgIGNvbnN0IG9wdGlvbkZxbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSBnZW5lcmF0ZUphdmFPcHRpb25OYW1lcyhcbiAgICAgIGJvb3RzdHJhcC50eXBlLm9wdGlvbnMsXG4gICAgICBqc2lpTWFuaWZlc3QsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmphdmFQYWNrYWdlLmxlbmd0aCA+IDApIHtcbiAgICAgIGVtaXQoYHBhY2thZ2UgJHt0aGlzLmphdmFQYWNrYWdlLmpvaW4oXCIuXCIpfTtgKTtcbiAgICAgIGVtaXQoKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlbmRlcmVkT3B0aW9ucywgaW1wb3J0cyB9ID0gcmVuZGVySmF2YU9wdGlvbnMoXG4gICAgICAyLFxuICAgICAganNpaU9wdGlvbnNUeXBlLm5hbWUsXG4gICAgICBvcHRpb25GcW5zLFxuICAgICAgYm9vdHN0cmFwLmFyZ3MsXG4gICAgKTtcblxuICAgIGVtaXQoYGltcG9ydCAke2dldEphdmFJbXBvcnQoanNpaVR5cGUsIGpzaWlNYW5pZmVzdCl9O2ApO1xuICAgIGVtaXQoYGltcG9ydCAke2dldEphdmFJbXBvcnQoanNpaU9wdGlvbnNUeXBlLCBqc2lpTWFuaWZlc3QpfTtgKTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvblR5cGVOYW1lIG9mIGltcG9ydHMpIHtcbiAgICAgIGVtaXQoYGltcG9ydCAke2phdmFUYXJnZXQucGFja2FnZX0uJHtvcHRpb25UeXBlTmFtZX07YCk7XG4gICAgfVxuICAgIGVtaXQoKTtcbiAgICBvcGVuQmxvY2soYHB1YmxpYyBjbGFzcyAke3RoaXMuamF2YUNsYXNzfWApO1xuICAgIG9wZW5CbG9jayhcInB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpXCIpO1xuICAgIGVtaXQoXG4gICAgICBgJHtqc2lpVHlwZS5uYW1lfSBwcm9qZWN0ID0gbmV3ICR7anNpaVR5cGUubmFtZX0oJHtyZW5kZXJlZE9wdGlvbnN9KTtgLFxuICAgICk7XG4gICAgZW1pdChcInByb2plY3Quc3ludGgoKTtcIik7XG4gICAgY2xvc2VCbG9jaygpO1xuICAgIGNsb3NlQmxvY2soKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gam9pbih0aGlzLnByb2plY3Qub3V0ZGlyLCB0aGlzLmZpbGVQYXRoKTtcbiAgICBta2RpclN5bmMoZGlybmFtZShmaWxlUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIHdyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGxpbmVzLmpvaW4oXCJcXG5cIikpO1xuXG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5pbmZvKFxuICAgICAgYFByb2plY3QgZGVmaW5pdGlvbiBmaWxlIHdhcyBjcmVhdGVkIGF0ICR7dGhpcy5maWxlUGF0aH1gLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSmF2YU9wdGlvbk5hbWVzKFxuICBvcHRpb25zOiBQcm9qZWN0T3B0aW9uW10sXG4gIGpzaWlNYW5pZmVzdDogYW55LFxuKSB7XG4gIGNvbnN0IG9wdGlvbkZxbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgIGlmIChvcHRpb24uZnFuICYmIGpzaWlNYW5pZmVzdC50eXBlc1tvcHRpb24uZnFuXSkge1xuICAgICAgb3B0aW9uRnFuc1tvcHRpb24ubmFtZV0gPSB0b0phdmFGdWxsVHlwZU5hbWUoXG4gICAgICAgIGpzaWlNYW5pZmVzdC50eXBlc1tvcHRpb24uZnFuXSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9wdGlvbkZxbnM7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckphdmFPcHRpb25zKFxuICBpbmRlbnQ6IG51bWJlcixcbiAgb3B0aW9uc1R5cGVOYW1lOiBzdHJpbmcsXG4gIG9wdGlvbkZxbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gIGluaXRPcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55Pixcbikge1xuICBjb25zdCBpbXBvcnRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGlmICghaW5pdE9wdGlvbnMgfHwgT2JqZWN0LmtleXMoaW5pdE9wdGlvbnMpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7IHJlbmRlcmVkT3B0aW9uczogXCJcIiwgaW1wb3J0cyB9OyAvLyBubyBvcHRpb25zXG4gIH1cblxuICBjb25zdCBsaW5lcyA9IFtgJHtvcHRpb25zVHlwZU5hbWV9LmJ1aWxkZXIoKWBdO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhpbml0T3B0aW9ucykpIHtcbiAgICBjb25zdCB7IGphdmFWYWx1ZSwgaW1wb3J0TmFtZSB9ID0gdG9KYXZhVmFsdWUodmFsdWUsIG5hbWUsIG9wdGlvbkZxbnMpO1xuICAgIGlmIChpbXBvcnROYW1lKSBpbXBvcnRzLmFkZChpbXBvcnROYW1lKTtcbiAgICBsaW5lcy5wdXNoKGAuJHt0b0phdmFQcm9wZXJ0eShuYW1lKX0oJHtqYXZhVmFsdWV9KWApO1xuICB9XG5cbiAgbGluZXMucHVzaChcIi5idWlsZCgpXCIpO1xuXG4gIGNvbnN0IHJlbmRlcmVkT3B0aW9ucyA9IGxpbmVzLmpvaW4oYFxcbiR7XCIgXCIucmVwZWF0KChpbmRlbnQgKyAxKSAqIDQpfWApO1xuICByZXR1cm4geyByZW5kZXJlZE9wdGlvbnMsIGltcG9ydHMgfTtcbn1cblxuZnVuY3Rpb24gdG9KYXZhUHJvcGVydHkocHJvcDogc3RyaW5nKSB7XG4gIHJldHVybiBwcm9wO1xufVxuXG5mdW5jdGlvbiB0b0phdmFWYWx1ZShcbiAgdmFsdWU6IGFueSxcbiAgbmFtZTogc3RyaW5nLFxuICBvcHRpb25GcW5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgb3B0aW9uRnFuc1tuYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgcGFydHMgPSBvcHRpb25GcW5zW25hbWVdLnNwbGl0KFwiLlwiKTtcbiAgICBjb25zdCBiYXNlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgY2hvaWNlID0gU3RyaW5nKHZhbHVlKS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoLy0vZywgXCJfXCIpO1xuICAgIHJldHVybiB7IGphdmFWYWx1ZTogYCR7YmFzZX0uJHtjaG9pY2V9YCwgaW1wb3J0TmFtZTogb3B0aW9uRnFuc1tuYW1lXSB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IGphdmFWYWx1ZTogSlNPTi5zdHJpbmdpZnkodmFsdWUpIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9KYXZhRnVsbFR5cGVOYW1lKGpzaWlUeXBlOiBhbnkpIHtcbiAgcmV0dXJuIFtqc2lpVHlwZS5uYW1lc3BhY2UsIGpzaWlUeXBlLm5hbWVdLmZpbHRlcigoeCkgPT4geCkuam9pbihcIi5cIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRKYXZhSW1wb3J0KGpzaWlUeXBlOiBhbnksIGpzaWlNYW5pZmVzdDogYW55KSB7XG4gIGNvbnN0IHBhY2thZ2VOYW1lID1cbiAgICBqc2lpTWFuaWZlc3Q/LnN1Ym1vZHVsZXM/LltgJHtqc2lpVHlwZS5hc3NlbWJseX0uJHtqc2lpVHlwZT8ubmFtZXNwYWNlfWBdXG4gICAgICA/LnRhcmdldHM/LmphdmE/LnBhY2thZ2UgfHxcbiAgICBbanNpaU1hbmlmZXN0LnRhcmdldHMuamF2YS5wYWNrYWdlLCBqc2lpVHlwZS5uYW1lc3BhY2VdXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4KVxuICAgICAgLmpvaW4oXCIuXCIpO1xuXG4gIHJldHVybiBgJHtwYWNrYWdlTmFtZX0uJHtqc2lpVHlwZS5uYW1lfWA7XG59XG4iXX0=
@@ -1,9 +1,41 @@
1
1
  "use strict";
2
- var _a;
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
3
35
  Object.defineProperty(exports, "__esModule", { value: true });
4
36
  exports.Biome = void 0;
5
37
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const path = require("node:path");
38
+ const path = __importStar(require("node:path"));
7
39
  const fast_json_patch_1 = require("fast-json-patch");
8
40
  const biome_config_1 = require("./biome-config");
9
41
  const component_1 = require("../../component");
@@ -67,14 +99,26 @@ const DEFAULT_ASSIST = {
67
99
  * Biome component.
68
100
  */
69
101
  class Biome extends component_1.Component {
102
+ options;
103
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Biome", version: "0.100.0" };
70
104
  static of(project) {
71
105
  const isBiome = (c) => c instanceof Biome;
72
106
  return project.components.find(isBiome);
73
107
  }
108
+ biomeConfiguration;
109
+ _filePatterns;
110
+ biomeCommand = "biome check --no-errors-on-unmatched --write";
111
+ /**
112
+ * Biome task.
113
+ */
114
+ task;
115
+ /**
116
+ * Biome configuration file content
117
+ */
118
+ file;
74
119
  constructor(project, options = {}) {
75
120
  super(project);
76
121
  this.options = options;
77
- this.biomeCommand = "biome check --no-errors-on-unmatched --write";
78
122
  const biomejs = `@biomejs/biome`;
79
123
  project.addDevDeps(`${biomejs}@${options.version ?? "^2"}`);
80
124
  const defaultConfig = {
@@ -193,6 +237,4 @@ class Biome extends component_1.Component {
193
237
  }
194
238
  }
195
239
  exports.Biome = Biome;
196
- _a = JSII_RTTI_SYMBOL_1;
197
- Biome[_a] = { fqn: "projen.javascript.Biome", version: "0.99.79" };
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlvbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvamF2YXNjcmlwdC9iaW9tZS9iaW9tZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtDQUFrQztBQUNsQyxxREFBNEM7QUFDNUMsaURBVXdCO0FBQ3hCLCtDQUE0QztBQUU1QyxxQ0FBc0M7QUFHdEMscUNBQStEO0FBQy9ELGtDQUEyQztBQUUzQzs7OztHQUlHO0FBQ0gsTUFBTSxjQUFjLEdBQThDO0lBQ2hFLEdBQUcsRUFBRTtRQUNILFVBQVUsRUFBRSw0QkFBYSxDQUFDLEdBQUc7UUFDN0IsT0FBTyxFQUFFLElBQUk7UUFDYixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELEtBQUssRUFBRTtRQUNMLGFBQWEsRUFBRSxLQUFLO0tBQ3JCO0NBQ0YsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLGNBQWMsR0FBdUM7SUFDekQsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLElBQUk7UUFDYixLQUFLLEVBQUU7WUFDTCxXQUFXLEVBQUUsSUFBSTtTQUNsQjtLQUNGO0NBQ0YsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxpQkFBaUIsR0FDckI7SUFDRSxTQUFTLEVBQUU7UUFDVCxPQUFPLEVBQUUsSUFBSTtRQUNiLFdBQVcsRUFBRSwwQkFBVyxDQUFDLEdBQUc7S0FDN0I7SUFDRCxVQUFVLEVBQUU7UUFDVixTQUFTLEVBQUU7WUFDVCxVQUFVLEVBQUUseUJBQVUsQ0FBQyxNQUFNO1NBQzlCO0tBQ0Y7Q0FDRixDQUFDO0FBRUo7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBdUM7SUFDekQsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLElBQUk7UUFDYixPQUFPLEVBQUU7WUFDUCxXQUFXLEVBQUUsSUFBSTtTQUNsQjtLQUNGO0NBQ0YsQ0FBQztBQXFERjs7R0FFRztBQUNILE1BQWEsS0FBTSxTQUFRLHFCQUFTO0lBQzNCLE1BQU0sQ0FBQyxFQUFFLENBQUMs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SUFDSSxjQUFjLENBQUMsT0FBZTtRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxRQUF5QjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFBLHFDQUFzQixFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNJLGlCQUFpQixDQUFDLEtBQVk7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBQSwyQkFBWSxFQUNqRCxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN2RCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsSUFBSSxJQUFJO1lBQzVELFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNuQyxXQUFXLEVBQUUsaUNBQWlDO1lBQzlDLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7b0JBQ3ZCLFdBQVcsRUFBRSxJQUFJO2lCQUNsQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF0S0gsc0JBdUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBkZWVwQ2xvbmUgfSBmcm9tIFwiZmFzdC1qc29uLXBhdGNoXCI7XG5pbXBvcnQge1xuICBJbmRlbnRTdHlsZSxcbiAgUXVvdGVTdHlsZSxcbiAgdG9Kc29uX0Jpb21lQ29uZmlndXJhdGlvbixcbiAgdG9Kc29uX092ZXJyaWRlUGF0dGVybixcbiAgdG9Kc29uX1J1bGVzLFxuICBWY3NDbGllbnRLaW5kLFxuICB0eXBlIEJpb21lQ29uZmlndXJhdGlvbixcbiAgdHlwZSBPdmVycmlkZVBhdHRlcm4sXG4gIHR5cGUgUnVsZXMsXG59IGZyb20gXCIuL2Jpb21lLWNvbmZpZ1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBOb2RlUHJvamVjdCB9IGZyb20gXCIuLi8uLi9qYXZhc2NyaXB0L25vZGUtcHJvamVjdFwiO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tIFwiLi4vLi4vanNvblwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4uLy4uL3Byb2plY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gXCIuLi8uLi90YXNrXCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UsIG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGggfSBmcm9tIFwiLi4vLi4vdXRpbFwiO1xuaW1wb3J0IHsgdHJ5UmVzb2x2ZU1vZHVsZSB9IGZyb20gXCIuLi91dGlsXCI7XG5cbi8qKlxuICogRW5hYmxpbmcgVkNTIGNvbmZpZ3VyYXRpb24gYnkgZGVmYXVsdC5cbiAqXG4gKiBOb3RlIHRoYXQgdGhpcyBkaWZmZXJzIGZyb20gYGJpb21lIGluaXRgLCBhcyBwcm9qZW4gY2FuIGJlIHByZXN1bWVkIHRvIHVzZSB2ZXJzaW9uIGNvbnRyb2xcbiAqL1xuY29uc3QgREVGQVVMVF9DT05GSUc6IFBpY2s8QmlvbWVDb25maWd1cmF0aW9uLCBcInZjc1wiIHwgXCJmaWxlc1wiPiA9IHtcbiAgdmNzOiB7XG4gICAgY2xpZW50S2luZDogVmNzQ2xpZW50S2luZC5HSVQsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICB1c2VJZ25vcmVGaWxlOiB0cnVlLFxuICB9LFxuICBmaWxlczoge1xuICAgIGlnbm9yZVVua25vd246IGZhbHNlLFxuICB9LFxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGxpbnRpbmcgY29uZmlndXJhdGlvbiBpZiBsaW50ZXIgaXMgZW5hYmxlZC5cbiAqXG4gKiBJZ25vcmVzIGJ5IGRlZmF1bHQgZm9sbG93aW5nIHBhdHRlcm5zOiAnKi5qcycsICcqLmQudHMnLCAnbm9kZV9tb2R1bGVzLycsICcqLmdlbmVyYXRlZC50cycsICdjb3ZlcmFnZScuXG4gKi9cbmNvbnN0IERFRkFVTFRfTElOVEVSOiBQaWNrPEJpb21lQ29uZmlndXJhdGlvbiwgXCJsaW50ZXJcIj4gPSB7XG4gIGxpbnRlcjoge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgcnVsZXM6IHtcbiAgICAgIHJlY29tbWVuZGVkOiB0cnVlLFxuICAgIH0sXG4gIH0sXG59O1xuXG4vKipcbiAqIERlZmF1bHQgZm9ybWF0dGluZyBjb25maWd1cmF0aW9uIGlmIGZvcm1hdHRlciBpcyBlbmFibGVkLlxuICovXG5jb25zdCBERUZBVUxUX0ZPUk1BVFRFUjogUGljazxCaW9tZUNvbmZpZ3VyYXRpb24sIFwiZm9ybWF0dGVyXCIgfCBcImphdmFzY3JpcHRcIj4gPVxuICB7XG4gICAgZm9ybWF0dGVyOiB7XG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgaW5kZW50U3R5bGU6IEluZGVudFN0eWxlLlRBQixcbiAgICB9LFxuICAgIGphdmFzY3JpcHQ6IHtcbiAgICAgIGZvcm1hdHRlcjoge1xuICAgICAgICBxdW90ZVN0eWxlOiBRdW90ZVN0eWxlLkRPVUJMRSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuLyoqXG4gKiBEZWZhdWx0IGNvZGUgYXNzaXN0IGFjdGlvbnNcbiAqL1xuY29uc3QgREVGQVVMVF9BU1NJU1Q6IFBpY2s8QmlvbWVDb25maWd1cmF0aW9uLCBcImFzc2lzdFwiPiA9IHtcbiAgYXNzaXN0OiB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICByZWNvbW1lbmRlZDogdHJ1ZSxcbiAgICB9LFxuICB9LFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBCaW9tZU9wdGlvbnMge1xuICAvKipcbiAgICogVmVyc2lvbiBvZiBCaW9tZSB0byB1c2VcbiAgICpcbiAgICogQGRlZmF1bHQgXCJeMlwiXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogRW5hYmxlIGxpbnRpbmcgd2l0aCByZWNvbW1lbmRlZCBydWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGludGVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVuYWJsZSBjb2RlIGZvcm1hdHRlciB3aXRoIHJlY29tbWVuZGVkIHNldHRpbmdzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmb3JtYXR0ZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIGNvZGUgYXNzaXN0IHdpdGggcmVjb21tZW5kZWQgYWN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzaXN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNob3VsZCBhcnJheXMgYmUgbWVyZ2VkIG9yIG92ZXJ3cml0dGVuIHdoZW4gY3JlYXRpbmcgQmlvbWUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBCeSBkZWZhdWx0IGFycmF5cyBhcmUgbWVyZ2VkIGFuZCBkdXBsaWNhdGUgdmFsdWVzIGFyZSByZW1vdmVkXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG1lcmdlQXJyYXlzSW5Db25maWd1cmF0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgaWdub3JlIGFsbCBnZW5lcmF0ZWQgZmlsZXMuXG4gICAqXG4gICAqIFRoaXMgcHJldmVudHMgQmlvbWUgZnJvbSB0cnlpbmcgdG8gZm9ybWF0IG9yIGxpbnQgZmlsZXMgdGhhdCBhcmUgbWFya2VkIGFzIGdlbmVyYXRlZCxcbiAgICogd2hpY2ggd291bGQgZmFpbCBzaW5jZSBnZW5lcmF0ZWQgZmlsZXMgYXJlIHR5cGljYWxseSByZWFkLW9ubHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUdlbmVyYXRlZEZpbGVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZ1bGwgQmlvbWUgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogVGhpcyBjb25maWd1cmF0aW9uIGRpY3RhdGVzIHRoZSBmaW5hbCBvdXRjb21lIGlmIHZhbHVlIGlzIHNldC5cbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoZSBsaW50ZXIgaXMgZGlzYWJsZWQgYXQgdGhlIHRvcC1sZXZlbCwgaXQgY2FuIGJlIGVuYWJsZWQgd2l0aCBgYmlvbWVDb25maWcubGludGVyLmVuYWJsZWRgLlxuICAgKi9cbiAgcmVhZG9ubHkgYmlvbWVDb25maWc/OiBCaW9tZUNvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogQmlvbWUgY29tcG9uZW50LlxuICovXG5leHBvcnQgY2xhc3MgQmlvbWUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBCaW9tZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNCaW9tZSA9IChjOiBDb21wb25lbnQpOiBjIGlzIEJpb21lID0+IGMgaW5zdGFuY2VvZiBCaW9tZTtcbiAgICByZXR1cm4gcHJvamVjdC5jb21wb25lbnRzLmZpbmQoaXNCaW9tZSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGJpb21lQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZVBhdHRlcm5zOiBTZXQ8c3RyaW5nPjtcbiAgcHJpdmF0ZSByZWFkb25seSBiaW9tZUNvbW1hbmQgPVxuICAgIFwiYmlvbWUgY2hlY2sgLS1uby1lcnJvcnMtb24tdW5tYXRjaGVkIC0td3JpdGVcIjtcblxuICAvKipcbiAgICogQmlvbWUgdGFzay5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXNrOiBUYXNrO1xuICAvKipcbiAgICogQmlvbWUgY29uZmlndXJhdGlvbiBmaWxlIGNvbnRlbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmaWxlOiBKc29uRmlsZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBOb2RlUHJvamVjdCxcbiAgICBwcml2YXRlIG9wdGlvbnM6IEJpb21lT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IGJpb21lanMgPSBgQGJpb21lanMvYmlvbWVgO1xuICAgIHByb2plY3QuYWRkRGV2RGVwcyhgJHtiaW9tZWpzfUAke29wdGlvbnMudmVyc2lvbiA/PyBcIl4yXCJ9YCk7XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBCaW9tZUNvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi5ERUZBVUxUX0NPTkZJRyxcbiAgICAgIC4uLigob3B0aW9ucy5saW50ZXIgPz8gdHJ1ZSkgPyBERUZBVUxUX0xJTlRFUiA6IHt9KSxcbiAgICAgIC4uLigob3B0aW9ucy5mb3JtYXR0ZXIgPz8gdHJ1ZSkgPyBERUZBVUxUX0ZPUk1BVFRFUiA6IHt9KSxcbiAgICAgIC4uLigob3B0aW9ucy5hc3Npc3QgPz8gdHJ1ZSkgPyBERUZBVUxUX0FTU0lTVCA6IHt9KSxcbiAgICB9O1xuXG4gICAgdGhpcy5fZmlsZVBhdHRlcm5zID0gbmV3IFNldChbXG4gICAgICAuLi5kZWVwQ2xvbmUob3B0aW9ucy5iaW9tZUNvbmZpZz8uZmlsZXM/LmluY2x1ZGVzID8/IFtdKSxcbiAgICAgIC4uLmRlZXBDbG9uZShkZWZhdWx0Q29uZmlnLmZpbGVzPy5pbmNsdWRlcyA/PyBbXSksXG4gICAgXSk7XG5cbiAgICAvLyBHZXQgZ2VuZXJhdGVkIGZpbGUgcGF0dGVybnMgdG8gaWdub3JlXG4gICAgY29uc3QgZ2V0R2VuZXJhdGVkSWdub3JlUGF0dGVybnMgPSAoKSA9PiB7XG4gICAgICBpZiAob3B0aW9ucy5pZ25vcmVHZW5lcmF0ZWRGaWxlcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBnZW5lcmF0ZWRGaWxlcyA9IHRoaXMucHJvamVjdC5maWxlc1xuICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLnJlYWRvbmx5ICYmIGZpbGUubWFya2VyKVxuICAgICAgICAubWFwKChmaWxlKSA9PiBgISR7ZmlsZS5wYXRofWApO1xuXG4gICAgICByZXR1cm4gZ2VuZXJhdGVkRmlsZXM7XG4gICAgfTtcblxuICAgIHRoaXMuYmlvbWVDb25maWd1cmF0aW9uID0gZGVlcE1lcmdlKFxuICAgICAgW1xuICAgICAgICB0b0pzb25fQmlvbWVDb25maWd1cmF0aW9uKGRlZXBDbG9uZShkZWZhdWx0Q29uZmlnKSksXG4gICAgICAgIHRvSnNvbl9CaW9tZUNvbmZpZ3VyYXRpb24oZGVlcENsb25lKG9wdGlvbnMuYmlvbWVDb25maWcgPz8ge30pKSxcbiAgICAgICAge1xuICAgICAgICAgICRzY2hlbWE6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkU2NoZW1hID0gdHJ5UmVzb2x2ZU1vZHVsZShcbiAgICAgICAgICAgICAgYCR7YmlvbWVqc30vY29uZmlndXJhdGlvbl9zY2hlbWEuanNvbmAsXG4gICAgICAgICAgICAgIHsgcGF0aHM6IFt0aGlzLnByb2plY3Qub3V0ZGlyXSB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgLy8gbm90IGZvdW5kXG4gICAgICAgICAgICAgICFyZXNvbHZlZFNjaGVtYSB8fFxuICAgICAgICAgICAgICAvLyBub3Qgd2l0aGluIHRoZSBwcm9qZWN0IGRpclxuICAgICAgICAgICAgICAhcGF0aFxuICAgICAgICAgICAgICAgIC5yZXNvbHZlKHJlc29sdmVkU2NoZW1hKVxuICAgICAgICAgICAgICAgIC5zdGFydHNXaXRoKHBhdGgucmVzb2x2ZSh0aGlzLnByb2plY3Qub3V0ZGlyKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm4gXCJodHRwczovL2Jpb21lanMuZGV2L3NjaGVtYXMvbGF0ZXN0L3NjaGVtYS5qc29uXCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVQZXJzaXN0ZWRQYXRoKFxuICAgICAgICAgICAgICBwYXRoLnJlbGF0aXZlKHRoaXMucHJvamVjdC5vdXRkaXIsIHJlc29sdmVkU2NoZW1hKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaWxlczoge1xuICAgICAgICAgICAgaW5jbHVkZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcGF0dGVybnMgPSBBcnJheS5mcm9tKHRoaXMuX2ZpbGVQYXR0ZXJucyk7XG4gICAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRlZFBhdHRlcm5zID0gZ2V0R2VuZXJhdGVkSWdub3JlUGF0dGVybnMoKTtcbiAgICAgICAgICAgICAgLy8gVXNlIFNldCB0byBkZWR1cGxpY2F0ZSBwYXR0ZXJuc1xuICAgICAgICAgICAgICByZXR1cm4gWy4uLm5ldyBTZXQoWy4uLnBhdHRlcm5zLCAuLi5nZW5lcmF0ZWRQYXR0ZXJuc10pXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB7IG1lcmdlQXJyYXlzOiBvcHRpb25zLm1lcmdlQXJyYXlzSW5Db25maWd1cmF0aW9uID8/IHRydWUgfSxcbiAgICApO1xuXG4gICAgdGhpcy5maWxlID0gbmV3IChjbGFzcyBleHRlbmRzIEpzb25GaWxlIHtcbiAgICAgIHB1YmxpYyBnZXQgbWFya2VyKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBgYmlvbWUtaWdub3JlLWFsbCBmb3JtYXQ6ICR7c3VwZXIubWFya2VyID8/IFwiZ2VuZXJhdGVkIGZpbGVcIn1gO1xuICAgICAgfVxuICAgIH0pKHRoaXMsIFwiYmlvbWUuanNvbmNcIiwge1xuICAgICAgb2JqOiB0aGlzLmJpb21lQ29uZmlndXJhdGlvbixcbiAgICAgIGFsbG93Q29tbWVudHM6IHRydWUsXG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogZmFsc2UsIC8vIGJpb21lIHdpbGwgYWx3YXlzIHJlLXdyaXRlIHRoZSBjb25maWcgZmlsZVxuICAgIH0pO1xuXG4gICAgdGhpcy50YXNrID0gdGhpcy5jcmVhdGVMb2NhbEJpb21lVGFzaygpO1xuICAgIHByb2plY3QudGVzdFRhc2suc3Bhd24odGhpcy50YXNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmaWxlIHBhdHRlcm4gdG8gYmlvbWUuXG4gICAqXG4gICAqIFVzZSAhIG9yICEhIHRvIGlnbm9yZSBhIGZpbGUgcGF0dGVybi5cbiAgICogQHBhcmFtIHBhdHRlcm4gQmlvbWUgZ2xvYiBwYXR0ZXJuXG4gICAqIEBzZWUgaHR0cHM6Ly9iaW9tZWpzLmRldi9ndWlkZXMvY29uZmlndXJlLWJpb21lLyNjb250cm9sLWZpbGVzLXZpYS1jb25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgYWRkRmlsZVBhdHRlcm4ocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmlsZVBhdHRlcm5zLmFkZChwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBiaW9tZSBvdmVycmlkZSB0byBzZXQgcnVsZXMgZm9yIGEgc3BlY2lmaWMgZmlsZSBwYXR0ZXJuLlxuICAgKiBAcGFyYW0gb3ZlcnJpZGUgT3ZlcnJpZGUgb2JqZWN0XG4gICAqIEBzZWUgaHR0cHM6Ly9iaW9tZWpzLmRldi9yZWZlcmVuY2UvY29uZmlndXJhdGlvbi8jb3ZlcnJpZGVzXG4gICAqL1xuICBwdWJsaWMgYWRkT3ZlcnJpZGUob3ZlcnJpZGU6IE92ZXJyaWRlUGF0dGVybikge1xuICAgIGlmICghdGhpcy5iaW9tZUNvbmZpZ3VyYXRpb24ub3ZlcnJpZGVzKSB7XG4gICAgICB0aGlzLmJpb21lQ29uZmlndXJhdGlvbi5vdmVycmlkZXMgPSBbXTtcbiAgICB9XG5cbiAgICB0aGlzLmJpb21lQ29uZmlndXJhdGlvbi5vdmVycmlkZXMucHVzaCh0b0pzb25fT3ZlcnJpZGVQYXR0ZXJuKG92ZXJyaWRlKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhwYW5kIHRoZSBsaW50aW5nIHJ1bGVzIGFwcGxpZWQuXG4gICAqXG4gICAqIFVzZSBgdW5kZWZpbmVkYCB0byByZW1vdmUgdGhlIHJ1bGUgb3IgZ3JvdXAuXG4gICAqXG4gICAqIEBwYXJhbSBydWxlcyBSdWxlcyB0byBhcHBseS5cbiAgICogQHNlZSBodHRwczovL2Jpb21lanMuZGV2L3JlZmVyZW5jZS9jb25maWd1cmF0aW9uLyNsaW50ZXJydWxlc2dyb3VwXG4gICAqIEBleGFtcGxlXG4gICAqIGJpb21lLmV4cGFuZExpbnRpbmdSdWxlcyh7XG4gICAqICAgc3R5bGU6IHVuZGVmaW5lZCxcbiAgICogICBzdXNwaWNpb3VzOiB7XG4gICAqICAgICBub0V4cGxpY2l0QW55OiB1bmRlZmluZWQsXG4gICAqICAgICBub0R1cGxpY2F0ZUNhc2U6IFwiaW5mb1wiLFxuICAgKiAgIH1cbiAgICogfSlcbiAgICovXG4gIHB1YmxpYyBleHBhbmRMaW50ZXJSdWxlcyhydWxlczogUnVsZXMpIHtcbiAgICB0aGlzLmJpb21lQ29uZmlndXJhdGlvbi5saW50ZXIucnVsZXMgPSB0b0pzb25fUnVsZXMoXG4gICAgICBkZWVwTWVyZ2UoW3RoaXMuYmlvbWVDb25maWd1cmF0aW9uLmxpbnRlci5ydWxlcywgcnVsZXNdLCB7XG4gICAgICAgIG1lcmdlQXJyYXlzOiB0aGlzLm9wdGlvbnMubWVyZ2VBcnJheXNJbkNvbmZpZ3VyYXRpb24gPz8gdHJ1ZSxcbiAgICAgICAgZGVzdHJ1Y3RpdmU6IHRydWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVMb2NhbEJpb21lVGFzaygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0LmFkZFRhc2soXCJiaW9tZVwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJSdW5zIEJpb21lIGFnYWluc3QgdGhlIGNvZGViYXNlXCIsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgZXhlYzogdGhpcy5iaW9tZUNvbW1hbmQsXG4gICAgICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlvbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvamF2YXNjcmlwdC9iaW9tZS9iaW9tZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQWtDO0FBQ2xDLHFEQUE0QztBQUM1QyxpREFVd0I7QUFDeEIsK0NBQTRDO0FBRTVDLHFDQUFzQztBQUd0QyxxQ0FBK0Q7QUFDL0Qsa0NBQTJDO0FBRTNDOzs7O0dBSUc7QUFDSCxNQUFNLGNBQWMsR0FBOEM7SUFDaEUsR0FBRyxFQUFFO1FBQ0gsVUFBVSxFQUFFLDRCQUFhLENBQUMsR0FBRztRQUM3QixPQUFPLEVBQUUsSUFBSTtRQUNiLGFBQWEsRUFBRSxJQUFJO0tBQ3BCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsYUFBYSxFQUFFLEtBQUs7S0FDckI7Q0FDRixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sY0FBYyxHQUF1QztJQUN6RCxNQUFNLEVBQUU7UUFDTixPQUFPLEVBQUUsSUFBSTtRQUNiLEtBQUssRUFBRTtZQUNMLFdBQVcsRUFBRSxJQUFJO1NBQ2xCO0tBQ0Y7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLGlCQUFpQixHQUNyQjtJQUNFLFNBQVMsRUFBRTtRQUNULE9BQU8sRUFBRSxJQUFJO1FBQ2IsV0FBVyxFQUFFLDBCQUFXLENBQUMsR0FBRztLQUM3QjtJQUNELFVBQVUsRUFBRTtRQUNWLFNBQVMsRUFBRTtZQUNULFVBQVUsRUFBRSx5QkFBVSxDQUFDLE1BQU07U0FDOUI7S0FDRjtDQUNGLENBQUM7QUFFSjs7R0FFRztBQUNILE1BQU0sY0FBYyxHQUF1QztJQUN6RCxNQUFNLEVBQUU7UUFDTixPQUFPLEVBQUUsSUFBSTtRQUNiLE9BQU8sRUFBRTtZQUNQLFdBQVcsRUFBRSxJQUFJO1NBQ2xCO0tBQ0Y7Q0FDRixDQUFDO0FBcURGOztHQUVHO0FBQ0gsTUFBYSxLQUFNLFNBQVEs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SUFBSTtpQkFDbEI7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBdEtILHNCQXVLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZGVlcENsb25lIH0gZnJvbSBcImZhc3QtanNvbi1wYXRjaFwiO1xuaW1wb3J0IHtcbiAgSW5kZW50U3R5bGUsXG4gIFF1b3RlU3R5bGUsXG4gIHRvSnNvbl9CaW9tZUNvbmZpZ3VyYXRpb24sXG4gIHRvSnNvbl9PdmVycmlkZVBhdHRlcm4sXG4gIHRvSnNvbl9SdWxlcyxcbiAgVmNzQ2xpZW50S2luZCxcbiAgdHlwZSBCaW9tZUNvbmZpZ3VyYXRpb24sXG4gIHR5cGUgT3ZlcnJpZGVQYXR0ZXJuLFxuICB0eXBlIFJ1bGVzLFxufSBmcm9tIFwiLi9iaW9tZS1jb25maWdcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgTm9kZVByb2plY3QgfSBmcm9tIFwiLi4vLi4vamF2YXNjcmlwdC9ub2RlLXByb2plY3RcIjtcbmltcG9ydCB7IEpzb25GaWxlIH0gZnJvbSBcIi4uLy4uL2pzb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCIuLi8uLi9wcm9qZWN0XCI7XG5pbXBvcnQgdHlwZSB7IFRhc2sgfSBmcm9tIFwiLi4vLi4vdGFza1wiO1xuaW1wb3J0IHsgZGVlcE1lcmdlLCBub3JtYWxpemVQZXJzaXN0ZWRQYXRoIH0gZnJvbSBcIi4uLy4uL3V0aWxcIjtcbmltcG9ydCB7IHRyeVJlc29sdmVNb2R1bGUgfSBmcm9tIFwiLi4vdXRpbFwiO1xuXG4vKipcbiAqIEVuYWJsaW5nIFZDUyBjb25maWd1cmF0aW9uIGJ5IGRlZmF1bHQuXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgZGlmZmVycyBmcm9tIGBiaW9tZSBpbml0YCwgYXMgcHJvamVuIGNhbiBiZSBwcmVzdW1lZCB0byB1c2UgdmVyc2lvbiBjb250cm9sXG4gKi9cbmNvbnN0IERFRkFVTFRfQ09ORklHOiBQaWNrPEJpb21lQ29uZmlndXJhdGlvbiwgXCJ2Y3NcIiB8IFwiZmlsZXNcIj4gPSB7XG4gIHZjczoge1xuICAgIGNsaWVudEtpbmQ6IFZjc0NsaWVudEtpbmQuR0lULFxuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgdXNlSWdub3JlRmlsZTogdHJ1ZSxcbiAgfSxcbiAgZmlsZXM6IHtcbiAgICBpZ25vcmVVbmtub3duOiBmYWxzZSxcbiAgfSxcbn07XG5cbi8qKlxuICogRGVmYXVsdCBsaW50aW5nIGNvbmZpZ3VyYXRpb24gaWYgbGludGVyIGlzIGVuYWJsZWQuXG4gKlxuICogSWdub3JlcyBieSBkZWZhdWx0IGZvbGxvd2luZyBwYXR0ZXJuczogJyouanMnLCAnKi5kLnRzJywgJ25vZGVfbW9kdWxlcy8nLCAnKi5nZW5lcmF0ZWQudHMnLCAnY292ZXJhZ2UnLlxuICovXG5jb25zdCBERUZBVUxUX0xJTlRFUjogUGljazxCaW9tZUNvbmZpZ3VyYXRpb24sIFwibGludGVyXCI+ID0ge1xuICBsaW50ZXI6IHtcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIHJ1bGVzOiB7XG4gICAgICByZWNvbW1lbmRlZDogdHJ1ZSxcbiAgICB9LFxuICB9LFxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGZvcm1hdHRpbmcgY29uZmlndXJhdGlvbiBpZiBmb3JtYXR0ZXIgaXMgZW5hYmxlZC5cbiAqL1xuY29uc3QgREVGQVVMVF9GT1JNQVRURVI6IFBpY2s8QmlvbWVDb25maWd1cmF0aW9uLCBcImZvcm1hdHRlclwiIHwgXCJqYXZhc2NyaXB0XCI+ID1cbiAge1xuICAgIGZvcm1hdHRlcjoge1xuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGluZGVudFN0eWxlOiBJbmRlbnRTdHlsZS5UQUIsXG4gICAgfSxcbiAgICBqYXZhc2NyaXB0OiB7XG4gICAgICBmb3JtYXR0ZXI6IHtcbiAgICAgICAgcXVvdGVTdHlsZTogUXVvdGVTdHlsZS5ET1VCTEUsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbi8qKlxuICogRGVmYXVsdCBjb2RlIGFzc2lzdCBhY3Rpb25zXG4gKi9cbmNvbnN0IERFRkFVTFRfQVNTSVNUOiBQaWNrPEJpb21lQ29uZmlndXJhdGlvbiwgXCJhc3Npc3RcIj4gPSB7XG4gIGFzc2lzdDoge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgYWN0aW9uczoge1xuICAgICAgcmVjb21tZW5kZWQ6IHRydWUsXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmlvbWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgQmlvbWUgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiXjJcIlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEVuYWJsZSBsaW50aW5nIHdpdGggcmVjb21tZW5kZWQgcnVsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxpbnRlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmFibGUgY29kZSBmb3JtYXR0ZXIgd2l0aCByZWNvbW1lbmRlZCBzZXR0aW5ncy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZm9ybWF0dGVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVuYWJsZSBjb2RlIGFzc2lzdCB3aXRoIHJlY29tbWVuZGVkIGFjdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFzc2lzdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTaG91bGQgYXJyYXlzIGJlIG1lcmdlZCBvciBvdmVyd3JpdHRlbiB3aGVuIGNyZWF0aW5nIEJpb21lIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQnkgZGVmYXVsdCBhcnJheXMgYXJlIG1lcmdlZCBhbmQgZHVwbGljYXRlIHZhbHVlcyBhcmUgcmVtb3ZlZFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBtZXJnZUFycmF5c0luQ29uZmlndXJhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGlnbm9yZSBhbGwgZ2VuZXJhdGVkIGZpbGVzLlxuICAgKlxuICAgKiBUaGlzIHByZXZlbnRzIEJpb21lIGZyb20gdHJ5aW5nIHRvIGZvcm1hdCBvciBsaW50IGZpbGVzIHRoYXQgYXJlIG1hcmtlZCBhcyBnZW5lcmF0ZWQsXG4gICAqIHdoaWNoIHdvdWxkIGZhaWwgc2luY2UgZ2VuZXJhdGVkIGZpbGVzIGFyZSB0eXBpY2FsbHkgcmVhZC1vbmx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVHZW5lcmF0ZWRGaWxlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBGdWxsIEJpb21lIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIFRoaXMgY29uZmlndXJhdGlvbiBkaWN0YXRlcyB0aGUgZmluYWwgb3V0Y29tZSBpZiB2YWx1ZSBpcyBzZXQuXG4gICAqIEZvciBleGFtcGxlLCBpZiB0aGUgbGludGVyIGlzIGRpc2FibGVkIGF0IHRoZSB0b3AtbGV2ZWwsIGl0IGNhbiBiZSBlbmFibGVkIHdpdGggYGJpb21lQ29uZmlnLmxpbnRlci5lbmFibGVkYC5cbiAgICovXG4gIHJlYWRvbmx5IGJpb21lQ29uZmlnPzogQmlvbWVDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIEJpb21lIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIEJpb21lIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIHN0YXRpYyBvZihwcm9qZWN0OiBQcm9qZWN0KTogQmlvbWUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzQmlvbWUgPSAoYzogQ29tcG9uZW50KTogYyBpcyBCaW9tZSA9PiBjIGluc3RhbmNlb2YgQmlvbWU7XG4gICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzQmlvbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBiaW9tZUNvbmZpZ3VyYXRpb246IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVQYXR0ZXJuczogU2V0PHN0cmluZz47XG4gIHByaXZhdGUgcmVhZG9ubHkgYmlvbWVDb21tYW5kID1cbiAgICBcImJpb21lIGNoZWNrIC0tbm8tZXJyb3JzLW9uLXVubWF0Y2hlZCAtLXdyaXRlXCI7XG5cbiAgLyoqXG4gICAqIEJpb21lIHRhc2suXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFzazogVGFzaztcbiAgLyoqXG4gICAqIEJpb21lIGNvbmZpZ3VyYXRpb24gZmlsZSBjb250ZW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZTogSnNvbkZpbGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvamVjdDogTm9kZVByb2plY3QsXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBCaW9tZU9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBjb25zdCBiaW9tZWpzID0gYEBiaW9tZWpzL2Jpb21lYDtcbiAgICBwcm9qZWN0LmFkZERldkRlcHMoYCR7YmlvbWVqc31AJHtvcHRpb25zLnZlcnNpb24gPz8gXCJeMlwifWApO1xuXG4gICAgY29uc3QgZGVmYXVsdENvbmZpZzogQmlvbWVDb25maWd1cmF0aW9uID0ge1xuICAgICAgLi4uREVGQVVMVF9DT05GSUcsXG4gICAgICAuLi4oKG9wdGlvbnMubGludGVyID8/IHRydWUpID8gREVGQVVMVF9MSU5URVIgOiB7fSksXG4gICAgICAuLi4oKG9wdGlvbnMuZm9ybWF0dGVyID8/IHRydWUpID8gREVGQVVMVF9GT1JNQVRURVIgOiB7fSksXG4gICAgICAuLi4oKG9wdGlvbnMuYXNzaXN0ID8/IHRydWUpID8gREVGQVVMVF9BU1NJU1QgOiB7fSksXG4gICAgfTtcblxuICAgIHRoaXMuX2ZpbGVQYXR0ZXJucyA9IG5ldyBTZXQoW1xuICAgICAgLi4uZGVlcENsb25lKG9wdGlvbnMuYmlvbWVDb25maWc/LmZpbGVzPy5pbmNsdWRlcyA/PyBbXSksXG4gICAgICAuLi5kZWVwQ2xvbmUoZGVmYXVsdENvbmZpZy5maWxlcz8uaW5jbHVkZXMgPz8gW10pLFxuICAgIF0pO1xuXG4gICAgLy8gR2V0IGdlbmVyYXRlZCBmaWxlIHBhdHRlcm5zIHRvIGlnbm9yZVxuICAgIGNvbnN0IGdldEdlbmVyYXRlZElnbm9yZVBhdHRlcm5zID0gKCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbnMuaWdub3JlR2VuZXJhdGVkRmlsZXMgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZ2VuZXJhdGVkRmlsZXMgPSB0aGlzLnByb2plY3QuZmlsZXNcbiAgICAgICAgLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5yZWFkb25seSAmJiBmaWxlLm1hcmtlcilcbiAgICAgICAgLm1hcCgoZmlsZSkgPT4gYCEke2ZpbGUucGF0aH1gKTtcblxuICAgICAgcmV0dXJuIGdlbmVyYXRlZEZpbGVzO1xuICAgIH07XG5cbiAgICB0aGlzLmJpb21lQ29uZmlndXJhdGlvbiA9IGRlZXBNZXJnZShcbiAgICAgIFtcbiAgICAgICAgdG9Kc29uX0Jpb21lQ29uZmlndXJhdGlvbihkZWVwQ2xvbmUoZGVmYXVsdENvbmZpZykpLFxuICAgICAgICB0b0pzb25fQmlvbWVDb25maWd1cmF0aW9uKGRlZXBDbG9uZShvcHRpb25zLmJpb21lQ29uZmlnID8/IHt9KSksXG4gICAgICAgIHtcbiAgICAgICAgICAkc2NoZW1hOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZFNjaGVtYSA9IHRyeVJlc29sdmVNb2R1bGUoXG4gICAgICAgICAgICAgIGAke2Jpb21lanN9L2NvbmZpZ3VyYXRpb25fc2NoZW1hLmpzb25gLFxuICAgICAgICAgICAgICB7IHBhdGhzOiBbdGhpcy5wcm9qZWN0Lm91dGRpcl0gfSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIC8vIG5vdCBmb3VuZFxuICAgICAgICAgICAgICAhcmVzb2x2ZWRTY2hlbWEgfHxcbiAgICAgICAgICAgICAgLy8gbm90IHdpdGhpbiB0aGUgcHJvamVjdCBkaXJcbiAgICAgICAgICAgICAgIXBhdGhcbiAgICAgICAgICAgICAgICAucmVzb2x2ZShyZXNvbHZlZFNjaGVtYSlcbiAgICAgICAgICAgICAgICAuc3RhcnRzV2l0aChwYXRoLnJlc29sdmUodGhpcy5wcm9qZWN0Lm91dGRpcikpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFwiaHR0cHM6Ly9iaW9tZWpzLmRldi9zY2hlbWFzL2xhdGVzdC9zY2hlbWEuanNvblwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplUGVyc2lzdGVkUGF0aChcbiAgICAgICAgICAgICAgcGF0aC5yZWxhdGl2ZSh0aGlzLnByb2plY3Qub3V0ZGlyLCByZXNvbHZlZFNjaGVtYSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZmlsZXM6IHtcbiAgICAgICAgICAgIGluY2x1ZGVzOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdHRlcm5zID0gQXJyYXkuZnJvbSh0aGlzLl9maWxlUGF0dGVybnMpO1xuICAgICAgICAgICAgICBjb25zdCBnZW5lcmF0ZWRQYXR0ZXJucyA9IGdldEdlbmVyYXRlZElnbm9yZVBhdHRlcm5zKCk7XG4gICAgICAgICAgICAgIC8vIFVzZSBTZXQgdG8gZGVkdXBsaWNhdGUgcGF0dGVybnNcbiAgICAgICAgICAgICAgcmV0dXJuIFsuLi5uZXcgU2V0KFsuLi5wYXR0ZXJucywgLi4uZ2VuZXJhdGVkUGF0dGVybnNdKV07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgeyBtZXJnZUFycmF5czogb3B0aW9ucy5tZXJnZUFycmF5c0luQ29uZmlndXJhdGlvbiA/PyB0cnVlIH0sXG4gICAgKTtcblxuICAgIHRoaXMuZmlsZSA9IG5ldyAoY2xhc3MgZXh0ZW5kcyBKc29uRmlsZSB7XG4gICAgICBwdWJsaWMgZ2V0IG1hcmtlcigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gYGJpb21lLWlnbm9yZS1hbGwgZm9ybWF0OiAke3N1cGVyLm1hcmtlciA/PyBcImdlbmVyYXRlZCBmaWxlXCJ9YDtcbiAgICAgIH1cbiAgICB9KSh0aGlzLCBcImJpb21lLmpzb25jXCIsIHtcbiAgICAgIG9iajogdGhpcy5iaW9tZUNvbmZpZ3VyYXRpb24sXG4gICAgICBhbGxvd0NvbW1lbnRzOiB0cnVlLFxuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IGZhbHNlLCAvLyBiaW9tZSB3aWxsIGFsd2F5cyByZS13cml0ZSB0aGUgY29uZmlnIGZpbGVcbiAgICB9KTtcblxuICAgIHRoaXMudGFzayA9IHRoaXMuY3JlYXRlTG9jYWxCaW9tZVRhc2soKTtcbiAgICBwcm9qZWN0LnRlc3RUYXNrLnNwYXduKHRoaXMudGFzayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgZmlsZSBwYXR0ZXJuIHRvIGJpb21lLlxuICAgKlxuICAgKiBVc2UgISBvciAhISB0byBpZ25vcmUgYSBmaWxlIHBhdHRlcm4uXG4gICAqIEBwYXJhbSBwYXR0ZXJuIEJpb21lIGdsb2IgcGF0dGVyblxuICAgKiBAc2VlIGh0dHBzOi8vYmlvbWVqcy5kZXYvZ3VpZGVzL2NvbmZpZ3VyZS1iaW9tZS8jY29udHJvbC1maWxlcy12aWEtY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIGFkZEZpbGVQYXR0ZXJuKHBhdHRlcm46IHN0cmluZykge1xuICAgIHRoaXMuX2ZpbGVQYXR0ZXJucy5hZGQocGF0dGVybik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgYmlvbWUgb3ZlcnJpZGUgdG8gc2V0IHJ1bGVzIGZvciBhIHNwZWNpZmljIGZpbGUgcGF0dGVybi5cbiAgICogQHBhcmFtIG92ZXJyaWRlIE92ZXJyaWRlIG9iamVjdFxuICAgKiBAc2VlIGh0dHBzOi8vYmlvbWVqcy5kZXYvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24vI292ZXJyaWRlc1xuICAgKi9cbiAgcHVibGljIGFkZE92ZXJyaWRlKG92ZXJyaWRlOiBPdmVycmlkZVBhdHRlcm4pIHtcbiAgICBpZiAoIXRoaXMuYmlvbWVDb25maWd1cmF0aW9uLm92ZXJyaWRlcykge1xuICAgICAgdGhpcy5iaW9tZUNvbmZpZ3VyYXRpb24ub3ZlcnJpZGVzID0gW107XG4gICAgfVxuXG4gICAgdGhpcy5iaW9tZUNvbmZpZ3VyYXRpb24ub3ZlcnJpZGVzLnB1c2godG9Kc29uX092ZXJyaWRlUGF0dGVybihvdmVycmlkZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cGFuZCB0aGUgbGludGluZyBydWxlcyBhcHBsaWVkLlxuICAgKlxuICAgKiBVc2UgYHVuZGVmaW5lZGAgdG8gcmVtb3ZlIHRoZSBydWxlIG9yIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gcnVsZXMgUnVsZXMgdG8gYXBwbHkuXG4gICAqIEBzZWUgaHR0cHM6Ly9iaW9tZWpzLmRldi9yZWZlcmVuY2UvY29uZmlndXJhdGlvbi8jbGludGVycnVsZXNncm91cFxuICAgKiBAZXhhbXBsZVxuICAgKiBiaW9tZS5leHBhbmRMaW50aW5nUnVsZXMoe1xuICAgKiAgIHN0eWxlOiB1bmRlZmluZWQsXG4gICAqICAgc3VzcGljaW91czoge1xuICAgKiAgICAgbm9FeHBsaWNpdEFueTogdW5kZWZpbmVkLFxuICAgKiAgICAgbm9EdXBsaWNhdGVDYXNlOiBcImluZm9cIixcbiAgICogICB9XG4gICAqIH0pXG4gICAqL1xuICBwdWJsaWMgZXhwYW5kTGludGVyUnVsZXMocnVsZXM6IFJ1bGVzKSB7XG4gICAgdGhpcy5iaW9tZUNvbmZpZ3VyYXRpb24ubGludGVyLnJ1bGVzID0gdG9Kc29uX1J1bGVzKFxuICAgICAgZGVlcE1lcmdlKFt0aGlzLmJpb21lQ29uZmlndXJhdGlvbi5saW50ZXIucnVsZXMsIHJ1bGVzXSwge1xuICAgICAgICBtZXJnZUFycmF5czogdGhpcy5vcHRpb25zLm1lcmdlQXJyYXlzSW5Db25maWd1cmF0aW9uID8/IHRydWUsXG4gICAgICAgIGRlc3RydWN0aXZlOiB0cnVlLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTG9jYWxCaW9tZVRhc2soKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvamVjdC5hZGRUYXNrKFwiYmlvbWVcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiUnVucyBCaW9tZSBhZ2FpbnN0IHRoZSBjb2RlYmFzZVwiLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6IHRoaXMuYmlvbWVDb21tYW5kLFxuICAgICAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -16,13 +16,6 @@ export interface BundlerOptions {
16
16
  * @default "assets"
17
17
  */
18
18
  readonly assetsDir?: string;
19
- /**
20
- * Install the `bundle` command as a pre-compile phase.
21
- *
22
- * @default true
23
- * @deprecated Use `runBundleTask` instead.
24
- */
25
- readonly addToPreCompile?: boolean;
26
19
  /**
27
20
  * Choose which phase (if any) to add the `bundle` command to.
28
21
  *
@@ -379,7 +372,6 @@ export declare enum RunBundleTask {
379
372
  * // to go to the "lib" directory:
380
373
  * const project = new TypeScriptProject({
381
374
  * name: "test",
382
- * defaultReleaseBranch: "main",
383
375
  * tsconfig: {
384
376
  * compilerOptions: {
385
377
  * outDir: "lib",