projen 0.99.80 → 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 +4 -4
  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 +136 -38
  124. package/lib/javascript/node-project.d.ts +5 -76
  125. package/lib/javascript/node-project.js +88 -81
  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 +8 -9
  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
@@ -1,11 +1,43 @@
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.DependencyType = exports.Dependencies = void 0;
5
37
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const path = require("path");
38
+ const path = __importStar(require("path"));
7
39
  const chalk_1 = require("chalk");
8
- const semver = require("semver");
40
+ const semver = __importStar(require("semver"));
9
41
  const common_1 = require("./common");
10
42
  const component_1 = require("./component");
11
43
  const json_1 = require("./json");
@@ -19,6 +51,11 @@ const json_1 = require("./json");
19
51
  * `nodeProject.addDeps()` or use the generic API of `project.deps`:
20
52
  */
21
53
  class Dependencies extends component_1.Component {
54
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Dependencies", version: "0.100.0" };
55
+ /**
56
+ * The project-relative path of the deps manifest file.
57
+ */
58
+ static MANIFEST_FILE = path.posix.join(common_1.PROJEN_DIR, "deps.json");
22
59
  /**
23
60
  * Returns the coordinates of a dependency spec.
24
61
  *
@@ -28,7 +65,7 @@ class Dependencies extends component_1.Component {
28
65
  static parseDependency(spec) {
29
66
  const scope = spec.startsWith("@");
30
67
  if (scope) {
31
- spec = spec.substr(1);
68
+ spec = spec.substring(1);
32
69
  }
33
70
  const [module, ...version] = spec.split("@");
34
71
  const name = scope ? `@${module}` : module;
@@ -39,13 +76,13 @@ class Dependencies extends component_1.Component {
39
76
  return { name, version: version?.join("@") };
40
77
  }
41
78
  }
79
+ _deps = new Array();
42
80
  /**
43
81
  * Adds a dependencies component to the project.
44
82
  * @param project The parent project
45
83
  */
46
84
  constructor(project) {
47
85
  super(project);
48
- this._deps = new Array();
49
86
  // this is not really required at the moment, but actually quite useful as a
50
87
  // checked-in source of truth for dependencies and will potentially be
51
88
  // valuable in the future for CLI tools.
@@ -246,12 +283,6 @@ class Dependencies extends component_1.Component {
246
283
  }
247
284
  }
248
285
  exports.Dependencies = Dependencies;
249
- _a = JSII_RTTI_SYMBOL_1;
250
- Dependencies[_a] = { fqn: "projen.Dependencies", version: "0.99.80" };
251
- /**
252
- * The project-relative path of the deps manifest file.
253
- */
254
- Dependencies.MANIFEST_FILE = path.posix.join(common_1.PROJEN_DIR, "deps.json");
255
286
  function normalizeDep(d) {
256
287
  const obj = {};
257
288
  for (const [k, v] of Object.entries(d)) {
@@ -321,4 +352,4 @@ var DependencyType;
321
352
  */
322
353
  DependencyType["OPTIONAL"] = "optional";
323
354
  })(DependencyType || (exports.DependencyType = DependencyType = {}));
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RlcGVuZGVuY2llcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixpQ0FBa0M7QUFDbEMsaUNBQWlDO0FBQ2pDLHFDQUFzQztBQUN0QywyQ0FBd0M7QUFDeEMsaUNBQWtDO0FBR2xDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxZQUFhLFNBQVEscUJBQVM7SUFTekM7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUVELE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzNDLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFJRDs7O09BR0c7SUFDSCxZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQVBBLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBUy9DLDRFQUE0RTtRQUM1RSxzRUFB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LENBQUMsQ0FBQztJQUU1QyxTQUFTLE1BQU0sQ0FBQyxHQUFlO1FBQzdCLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDckMsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEIsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBOENEOztHQUVHO0FBQ0gsSUFBWSxjQTZDWDtBQTdDRCxXQUFZLGNBQWM7SUFDeEI7O09BRUc7SUFDSCxxQ0FBbUIsQ0FBQTtJQUVuQjs7O09BR0c7SUFDSCwrQkFBYSxDQUFBO0lBRWI7OztPQUdHO0lBQ0gscUNBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxpQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwrQkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxtQ0FBaUIsQ0FBQTtJQUVqQjs7OztPQUlHO0lBQ0gsdUNBQXFCLENBQUE7SUFFckI7OztPQUdHO0lBQ0gsdUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQTdDVyxjQUFjLDhCQUFkLGNBQWMsUUE2Q3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgdW5kZXJsaW5lIH0gZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuaW1wb3J0IHsgUFJPSkVOX0RJUiB9IGZyb20gXCIuL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gXCIuL2pzb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcblxuLyoqXG4gKiBUaGUgYERlcGVuZGVuY2llc2AgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIHRvIHRyYWNrIHRoZSBsaXN0IG9mIGRlcGVuZGVuY2llc1xuICogYSBwcm9qZWN0IGhhcywgYW5kIHRoZW4gdXNlZCBieSBwcm9qZWN0IHR5cGVzIGFzIHRoZSBtb2RlbCBmb3IgcmVuZGVyaW5nXG4gKiBwcm9qZWN0LXNwZWNpZmljIGRlcGVuZGVuY3kgbWFuaWZlc3RzIHN1Y2ggYXMgdGhlIGRlcGVuZGVuY2llcyBzZWN0aW9uXG4gKiBgcGFja2FnZS5qc29uYCBmaWxlcy5cbiAqXG4gKiBUbyBhZGQgYSBkZXBlbmRlbmN5IHlvdSBjYW4gdXNlIGEgcHJvamVjdC10eXBlIHNwZWNpZmljIEFQSSBzdWNoIGFzXG4gKiBgbm9kZVByb2plY3QuYWRkRGVwcygpYCBvciB1c2UgdGhlIGdlbmVyaWMgQVBJIG9mIGBwcm9qZWN0LmRlcHNgOlxuICovXG5leHBvcnQgY2xhc3MgRGVwZW5kZW5jaWVzIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGRlcHMgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFOSUZFU1RfRklMRSA9IHBhdGgucG9zaXguam9pbihcbiAgICBQUk9KRU5fRElSLFxuICAgIFwiZGVwcy5qc29uXCIsXG4gICk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvb3JkaW5hdGVzIG9mIGEgZGVwZW5kZW5jeSBzcGVjLlxuICAgKlxuICAgKiBHaXZlbiBgZm9vQF4zLjQuMGAgcmV0dXJucyBgeyBuYW1lOiBcImZvb1wiLCB2ZXJzaW9uOiBcIl4zLjQuMFwiIH1gLlxuICAgKiBHaXZlbiBgYmFyQG5wbTpAYmFyL2xlZ2FjeWAgcmV0dXJucyBgeyBuYW1lOiBcImJhclwiLCB2ZXJzaW9uOiBcIm5wbTpAYmFyL2xlZ2FjeVwiIH1gLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwYXJzZURlcGVuZGVuY3koc3BlYzogc3RyaW5nKTogRGVwZW5kZW5jeUNvb3JkaW5hdGVzIHtcbiAgICBjb25zdCBzY29wZSA9IHNwZWMuc3RhcnRzV2l0aChcIkBcIik7XG4gICAgaWYgKHNjb3BlKSB7XG4gICAgICBzcGVjID0gc3BlYy5zdWJzdHIoMSk7XG4gICAgfVxuXG4gICAgY29uc3QgW21vZHVsZSwgLi4udmVyc2lvbl0gPSBzcGVjLnNwbGl0KFwiQFwiKTtcbiAgICBjb25zdCBuYW1lID0gc2NvcGUgPyBgQCR7bW9kdWxlfWAgOiBtb2R1bGU7XG4gICAgaWYgKHZlcnNpb24ubGVuZ3RoID09IDApIHtcbiAgICAgIHJldHVybiB7IG5hbWUgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgbmFtZSwgdmVyc2lvbjogdmVyc2lvbj8uam9pbihcIkBcIikgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXBzID0gbmV3IEFycmF5PERlcGVuZGVuY3k+KCk7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBkZXBlbmRlbmNpZXMgY29tcG9uZW50IHRvIHRoZSBwcm9qZWN0LlxuICAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcGFyZW50IHByb2plY3RcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIC8vIHRoaXMgaXMgbm90IHJlYWxseSByZXF1aXJlZCBhdCB0aGUgbW9tZW50LCBidXQgYWN0dWFsbHkgcXVpdGUgdXNlZnVsIGFzIGFcbiAgICAvLyBjaGVja2VkLWluIHNvdXJjZSBvZiB0cnV0aCBmb3IgZGVwZW5kZW5jaWVzIGFuZCB3aWxsIHBvdGVudGlhbGx5IGJlXG4gICAgLy8gdmFsdWFibGUgaW4gdGhlIGZ1dHVyZSBmb3IgQ0xJIHRvb2xzLlxuICAgIGlmICghcHJvamVjdC5lamVjdGVkKSB7XG4gICAgICBuZXcgSnNvbkZpbGUocHJvamVjdCwgRGVwZW5kZW5jaWVzLk1BTklGRVNUX0ZJTEUsIHtcbiAgICAgICAgb21pdEVtcHR5OiB0cnVlLFxuICAgICAgICBvYmo6ICgpID0+IHRoaXMudG9Kc29uKCksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQSBjb3B5IG9mIGFsbCBkZXBlbmRlbmNpZXMgcmVjb3JkZWQgZm9yIHRoaXMgcHJvamVjdC5cbiAgICpcbiAgICogVGhlIGxpc3QgaXMgc29ydGVkIGJ5IHR5cGUtPm5hbWUtPnZlcnNpb25cbiAgICovXG4gIHB1YmxpYyBnZXQgYWxsKCk6IERlcGVuZGVuY3lbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9kZXBzXS5zb3J0KGNvbXBhcmVEZXBzKS5tYXAobm9ybWFsaXplRGVwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgZGVwZW5kZW5jeSBieSBuYW1lLlxuICAgKlxuICAgKiBGYWlscyBpZiB0aGVyZSBpcyBubyBkZXBlbmRlbmN5IGRlZmluZWQgYnkgdGhhdCBuYW1lIG9yIGlmIGB0eXBlYCBpcyBub3RcbiAgICogcHJvdmlkZWQgYW5kIHRoZXJlIGlzIG1vcmUgdGhlbiBvbmUgZGVwZW5kZW5jeSB0eXBlIGZvciB0aGlzIGRlcGVuZGVuY3kuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5XG4gICAqIEBwYXJhbSB0eXBlIFRoZSBkZXBlbmRlbmN5IHR5cGUuIElmIHRoaXMgZGVwZW5kZW5jeSBpcyBkZWZpbmVkIG9ubHkgZm9yIGFcbiAgICogc2luZ2xlIHR5cGUsIHRoaXMgYXJndW1lbnQgY2FuIGJlIG9taXR0ZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIGEgY29weSAoY2Fubm90IGJlIG1vZGlmaWVkKVxuICAgKi9cbiAgcHVibGljIGdldERlcGVuZGVuY3kobmFtZTogc3RyaW5nLCB0eXBlPzogRGVwZW5kZW5jeVR5cGUpOiBEZXBlbmRlbmN5IHtcbiAgICBjb25zdCBkZXAgPSB0aGlzLnRyeUdldERlcGVuZGVuY3kobmFtZSwgdHlwZSk7XG4gICAgaWYgKCFkZXApIHtcbiAgICAgIGNvbnN0IG1zZyA9IHR5cGVcbiAgICAgICAgPyBgdGhlcmUgaXMgbm8gJHt0eXBlfSBkZXBlbmRlbmN5IGRlZmluZWQgb24gXCIke25hbWV9XCJgXG4gICAgICAgIDogYHRoZXJlIGlzIG5vIGRlcGVuZGVuY3kgZGVmaW5lZCBvbiBcIiR7bmFtZX1cImA7XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH1cblxuICAgIHJldHVybiBkZXA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGRlcGVuZGVuY3kgYnkgbmFtZS5cbiAgICpcbiAgICogUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBubyBkZXBlbmRlbmN5IGRlZmluZWQgYnkgdGhhdCBuYW1lIG9yIGlmXG4gICAqIGB0eXBlYCBpcyBub3QgcHJvdmlkZWQgYW5kIHRoZXJlIGlzIG1vcmUgdGhlbiBvbmUgZGVwZW5kZW5jeSB0eXBlIGZvciB0aGlzXG4gICAqIGRlcGVuZGVuY3kuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5XG4gICAqIEBwYXJhbSB0eXBlIFRoZSBkZXBlbmRlbmN5IHR5cGUuIElmIHRoaXMgZGVwZW5kZW5jeSBpcyBkZWZpbmVkIG9ubHkgZm9yIGFcbiAgICogc2luZ2xlIHR5cGUsIHRoaXMgYXJndW1lbnQgY2FuIGJlIG9taXR0ZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIGEgY29weSAoY2Fubm90IGJlIG1vZGlmaWVkKSBvciB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm8gbWF0Y2hcbiAgICovXG4gIHB1YmxpYyB0cnlHZXREZXBlbmRlbmN5KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB0eXBlPzogRGVwZW5kZW5jeVR5cGUsXG4gICk6IERlcGVuZGVuY3kgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMudHJ5R2V0RGVwZW5kZW5jeUluZGV4KG5hbWUsIHR5cGUpO1xuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5ub3JtYWxpemVEZXAodGhpcy5fZGVwc1tpZHhdKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBkZXBlbmRlbmN5IHRvIHRoaXMgcHJvamVjdC5cbiAgICogQHBhcmFtIHNwZWMgVGhlIGRlcGVuZGVuY3kgc3BlYyBpbiB0aGUgZm9ybWF0IGBNT0RVTEVbQFZFUlNJT05dYCB3aGVyZVxuICAgKiBgTU9EVUxFYCBpcyB0aGUgcGFja2FnZS1tYW5hZ2VyLXNwZWNpZmljIG1vZHVsZSBuYW1lIGFuZCBgVkVSU0lPTmAgaXMgYW5cbiAgICogb3B0aW9uYWwgc2VtYW50aWMgdmVyc2lvbiByZXF1aXJlbWVudCAoZS5nLiBgXjMuNC4wYCkuXG4gICAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHRoZSBkZXBlbmRlbmN5LlxuICAgKi9cbiAgcHVibGljIGFkZERlcGVuZGVuY3koXG4gICAgc3BlYzogc3RyaW5nLFxuICAgIHR5cGU6IERlcGVuZGVuY3lUeXBlLFxuICAgIG1ldGFkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge30sXG4gICk6IERlcGVuZGVuY3kge1xuICAgIHRoaXMucHJvamVjdC5sb2dnZXIudmVyYm9zZShcbiAgICAgIGAke3VuZGVybGluZShcIkRlcGVuZGVuY3lcIil9IHwgQWRkaW5nICR7dHlwZX0tZGVwIFxcYCR7c3BlY31cXGBgLFxuICAgICk7XG5cbiAgICBjb25zdCBkZXA6IERlcGVuZGVuY3kgPSB7XG4gICAgICAuLi5EZXBlbmRlbmNpZXMucGFyc2VEZXBlbmRlbmN5KHNwZWMpLFxuICAgICAgdHlwZSxcbiAgICAgIG1ldGFkYXRhLFxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0RlcEluZGV4ID0gdGhpcy50cnlHZXREZXBlbmRlbmN5SW5kZXgoZGVwLm5hbWUsIHR5cGUpO1xuXG4gICAgaWYgKGV4aXN0aW5nRGVwSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLnByb2plY3QubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgJHt1bmRlcmxpbmUoXCJEZXBlbmRlbmN5XCIpfSB8IFVwZGF0aW5nIGV4aXN0aW5nICR7ZGVwLnR5cGV9LWRlcCBcXGAke2RlcC5uYW1lfVxcYCB3aXRoIG1vcmUgc3BlY2lmaWMgcmVxdWVzdC5gLFxuICAgICAgKTtcbiAgICAgIHRoaXMuX2RlcHNbZXhpc3RpbmdEZXBJbmRleF0gPSBkZXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2RlcHMucHVzaChkZXApO1xuICAgIH1cblxuICAgIHJldHVybiBkZXA7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGRlcGVuZGVuY3kuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gcmVtb3ZlICh3aXRob3V0IHRoZSB2ZXJzaW9uKVxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZGVwZW5kZW5jeSB0eXBlLiBUaGlzIGlzIG9ubHkgcmVxdWlyZWQgaWYgdGhlcmUgdGhlXG4gICAqIGRlcGVuZGVuY3kgaXMgZGVmaW5lZCBmb3IgbXVsdGlwbGUgdHlwZXMuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlRGVwZW5kZW5jeShuYW1lOiBzdHJpbmcsIHR5cGU/OiBEZXBlbmRlbmN5VHlwZSkge1xuICAgIGNvbnN0IHJlbW92ZUluZGV4ID0gdGhpcy50cnlHZXREZXBlbmRlbmN5SW5kZXgobmFtZSwgdHlwZSk7XG4gICAgaWYgKHJlbW92ZUluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2RlcHMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW4gZXhpc3RpbmcgZGVwZW5kZW5jeSBzYXRpc2ZpZXMgYSBkZXBlbmRlbmN5IHJlcXVpcmVtZW50LlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZGVwZW5kZW5jeSB0byBjaGVjayAod2l0aG91dCB0aGUgdmVyc2lvbikuXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBkZXBlbmRlbmN5IHR5cGUuXG4gICAqIEBwYXJhbSBleHBlY3RlZFJhbmdlIFRoZSB2ZXJzaW9uIGNvbnN0cmFpbnQgdG8gY2hlY2sgKGUuZy4gYF4zLjQuMGApLlxuICAgKiBUaGUgY29uc3RyYWludCBvZiB0aGUgZGVwZW5kZW5jeSBtdXN0IGJlIGEgc3Vic2V0IG9mIHRoZSBleHBlY3RlZCByYW5nZSB0byBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZGVwZW5kZW5jeSBleGlzdHMgYW5kIGl0cyB2ZXJzaW9uIHNhdGlzZmllcyB0aGUgcHJvdmlkZWQgY29uc3RyYWludC4gYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqIE5vdGFibHkgcmV0dXJucyBgZmFsc2VgIGlmIGEgZGVwZW5kZW5jeSBleGlzdHMsIGJ1dCBoYXMgbm8gdmVyc2lvbi5cbiAgICovXG4gIHB1YmxpYyBpc0RlcGVuZGVuY3lTYXRpc2ZpZWQoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHR5cGU6IERlcGVuZGVuY3lUeXBlLFxuICAgIGV4cGVjdGVkUmFuZ2U6IHN0cmluZyxcbiAgKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGVwID0gdGhpcy50cnlHZXREZXBlbmRlbmN5KG5hbWUsIHR5cGUpO1xuICAgIHJldHVybiBkZXA/LnZlcnNpb24gIT0gbnVsbCAmJiBzZW12ZXIuc3Vic2V0KGRlcC52ZXJzaW9uLCBleHBlY3RlZFJhbmdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IGEgZGVwZW5kZW5jeS4gVW5saWtlIGBhZGREZXBlbmRlbmN5YCwgdGhpcyBtZXJnZXMgaW50ZWxsaWdlbnRseVxuICAgKiB3aXRoIGV4aXN0aW5nIGRlcGVuZGVuY2llcyBvZiB0aGUgc2FtZSBuYW1lIGFuZCB0eXBlOlxuICAgKlxuICAgKiAtIElmIHRoZSBkZXAgZXhpc3RzIHdpdGggYSB2ZXJzaW9uIHRoYXQgYWxyZWFkeSBzYXRpc2ZpZXMgdGhlIHJlcXVlc3QsXG4gICAqICAgdGhlIHZlcnNpb24gaXMgbm90IGNoYW5nZWQuXG4gICAqIC0gSWYgdGhlIGRlcCBkb2Vzbid0IGV4aXN0LCBpdCBpcyBhZGRlZCB3aXRoIHRoZSByZXF1ZXN0ZWQgdHlwZS92ZXJzaW9uLlxuICAgKiAtIElmIHRoZSBkZXAgZXhpc3RzIGJ1dCB0aGUgdmVyc2lvbnMgZG9uJ3QgaW50ZXJzZWN0LCBhbiBlcnJvciBpcyB0aHJvd24uXG4gICAqIC0gSWYgbm8gdHlwZSBpcyBwcm92aWRlZCwgYW4gZXhpc3RpbmcgZGVwZW5kZW5jeSBvZiBhbnkgdHlwZSB3aWxsIHNhdGlzZnlcbiAgICogICB0aGUgcmVxdWVzdC4gSWYgbm9uZSBleGlzdHMsIGl0IGlzIGFkZGVkIGFzIEJVSUxELlxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdCBUaGUgZGVwZW5kZW5jeSByZXF1ZXN0LlxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0aW5nIGRlcGVuZGVuY3kgYWZ0ZXIgbWVyZ2luZy5cbiAgICovXG4gIHB1YmxpYyByZXF1ZXN0RGVwZW5kZW5jeShyZXF1ZXN0OiBEZXBlbmRlbmN5UmVxdWVzdCk6IERlcGVuZGVuY3kge1xuICAgIC8vIFdoZW4gdHlwZSBpcyBub3Qgc3BlY2lmaWVkLCBmaW5kIGFueSBleGlzdGluZyBkZXAgd2l0aCB0aGlzIG5hbWVcbiAgICBjb25zdCByZXF1ZXN0ZWRUeXBlID1cbiAgICAgIHJlcXVlc3QudHlwZSA/P1xuICAgICAgdGhpcy5maW5kRXhpc3RpbmdJbnN0YWxsYWJsZVR5cGUocmVxdWVzdC5uYW1lKSA/P1xuICAgICAgRGVwZW5kZW5jeVR5cGUuQlVJTEQ7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLnRyeUdldERlcGVuZGVuY3kocmVxdWVzdC5uYW1lLCByZXF1ZXN0ZWRUeXBlKTtcblxuICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgIGNvbnN0IHNwZWMgPSByZXF1ZXN0LnZlcnNpb25cbiAgICAgICAgPyBgJHtyZXF1ZXN0Lm5hbWV9QCR7cmVxdWVzdC52ZXJzaW9ufWBcbiAgICAgICAgOiByZXF1ZXN0Lm5hbWU7XG4gICAgICByZXR1cm4gdGhpcy5hZGREZXBlbmRlbmN5KHNwZWMsIHJlcXVlc3RlZFR5cGUsIHJlcXVlc3QubWV0YWRhdGEgPz8ge30pO1xuICAgIH1cblxuICAgIC8vIFZlcnNpb24gbWVyZ2luZ1xuICAgIGxldCBlZmZlY3RpdmVWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIXJlcXVlc3QudmVyc2lvbikge1xuICAgICAgZWZmZWN0aXZlVmVyc2lvbiA9IGV4aXN0aW5nLnZlcnNpb247XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuaXNEZXBlbmRlbmN5U2F0aXNmaWVkKHJlcXVlc3QubmFtZSwgcmVxdWVzdGVkVHlwZSwgcmVxdWVzdC52ZXJzaW9uKVxuICAgICkge1xuICAgICAgZWZmZWN0aXZlVmVyc2lvbiA9IGV4aXN0aW5nLnZlcnNpb247XG4gICAgfSBlbHNlIGlmICghZXhpc3RpbmcudmVyc2lvbikge1xuICAgICAgZWZmZWN0aXZlVmVyc2lvbiA9IHJlcXVlc3QudmVyc2lvbjtcbiAgICB9IGVsc2UgaWYgKHNlbXZlci5pbnRlcnNlY3RzKGV4aXN0aW5nLnZlcnNpb24sIHJlcXVlc3QudmVyc2lvbikpIHtcbiAgICAgIGVmZmVjdGl2ZVZlcnNpb24gPSByZXF1ZXN0LnZlcnNpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYERlcGVuZGVuY3kgXCIke3JlcXVlc3QubmFtZX1cIiB2ZXJzaW9uIGNvbmZsaWN0OiBleGlzdGluZyBcIiR7ZXhpc3RpbmcudmVyc2lvbn1cIiBgICtcbiAgICAgICAgICBgZG9lcyBub3QgaW50ZXJzZWN0IHdpdGggcmVxdWVzdGVkIFwiJHtyZXF1ZXN0LnZlcnNpb259XCJgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGVjID0gZWZmZWN0aXZlVmVyc2lvblxuICAgICAgPyBgJHtyZXF1ZXN0Lm5hbWV9QCR7ZWZmZWN0aXZlVmVyc2lvbn1gXG4gICAgICA6IHJlcXVlc3QubmFtZTtcbiAgICByZXR1cm4gdGhpcy5hZGREZXBlbmRlbmN5KHNwZWMsIHJlcXVlc3RlZFR5cGUsIHtcbiAgICAgIC4uLmV4aXN0aW5nLm1ldGFkYXRhLFxuICAgICAgLi4ucmVxdWVzdC5tZXRhZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgdHlwZSBvZiBhbiBleGlzdGluZyBpbnN0YWxsYWJsZSBkZXBlbmRlbmN5IGJ5IG5hbWUuXG4gICAqIEV4Y2x1ZGVzIFBFRVIsIE9WRVJSSURFLCBhbmQgT1BUSU9OQUwgdHlwZXMuXG4gICAqIFJldHVybnMgdW5kZWZpbmVkIGlmIG5vIGRlcGVuZGVuY3kgd2l0aCB0aGlzIG5hbWUgZXhpc3RzLlxuICAgKi9cbiAgcHJpdmF0ZSBmaW5kRXhpc3RpbmdJbnN0YWxsYWJsZVR5cGUoXG4gICAgbmFtZTogc3RyaW5nLFxuICApOiBEZXBlbmRlbmN5VHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RlcHMuZmluZChcbiAgICAgIChkKSA9PlxuICAgICAgICBkLm5hbWUgPT09IG5hbWUgJiZcbiAgICAgICAgZC50eXBlICE9PSBEZXBlbmRlbmN5VHlwZS5QRUVSICYmXG4gICAgICAgIGQudHlwZSAhPT0gRGVwZW5kZW5jeVR5cGUuT1ZFUlJJREUgJiZcbiAgICAgICAgZC50eXBlICE9PSBEZXBlbmRlbmN5VHlwZS5PUFRJT05BTCxcbiAgICApPy50eXBlO1xuICB9XG5cbiAgcHJpdmF0ZSB0cnlHZXREZXBlbmRlbmN5SW5kZXgobmFtZTogc3RyaW5nLCB0eXBlPzogRGVwZW5kZW5jeVR5cGUpOiBudW1iZXIge1xuICAgIGNvbnN0IGRlcHMgPSB0aGlzLl9kZXBzLmZpbHRlcigoZCkgPT4gZC5uYW1lID09PSBuYW1lKTtcbiAgICBpZiAoZGVwcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAtMTsgLy8gbm90IGZvdW5kXG4gICAgfVxuXG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICBpZiAoZGVwcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgXCIke25hbWV9XCIgaXMgZGVmaW5lZCBmb3IgbXVsdGlwbGUgZGVwZW5kZW5jeSB0eXBlczogJHtkZXBzXG4gICAgICAgICAgICAubWFwKChkKSA9PiBkLnR5cGUpXG4gICAgICAgICAgICAuam9pbihcIixcIil9LiBQbGVhc2Ugc3BlY2lmeSBkZXBlbmRlbmN5IHR5cGVgLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0eXBlID0gZGVwc1swXS50eXBlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9kZXBzLmZpbmRJbmRleChcbiAgICAgIChkZXApID0+IGRlcC5uYW1lID09PSBuYW1lICYmIGRlcC50eXBlID09PSB0eXBlLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRvSnNvbigpOiBEZXBzTWFuaWZlc3QgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl9kZXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlcGVuZGVuY2llczogdGhpcy5fZGVwcy5zb3J0KGNvbXBhcmVEZXBzKS5tYXAobm9ybWFsaXplRGVwKSxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZURlcChkOiBEZXBlbmRlbmN5KSB7XG4gIGNvbnN0IG9iajogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGQpKSB7XG4gICAgaWYgKHYgPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIE9iamVjdC5rZXlzKHYpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHYpICYmIHYubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgb2JqW2tdID0gdjtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVEZXBzKGQxOiBEZXBlbmRlbmN5LCBkMjogRGVwZW5kZW5jeSkge1xuICByZXR1cm4gc3BlY09mKGQxKS5sb2NhbGVDb21wYXJlKHNwZWNPZihkMikpO1xuXG4gIGZ1bmN0aW9uIHNwZWNPZihkZXA6IERlcGVuZGVuY3kpIHtcbiAgICBsZXQgc3BlYyA9IGRlcC50eXBlICsgXCI6XCIgKyBkZXAubmFtZTtcbiAgICBpZiAoZGVwLnZlcnNpb24pIHtcbiAgICAgIHNwZWMgKz0gXCJAXCIgKyBkZXAudmVyc2lvbjtcbiAgICB9XG4gICAgcmV0dXJuIHNwZWM7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBzTWFuaWZlc3Qge1xuICAvKipcbiAgICogQWxsIGRlcGVuZGVuY2llcyBvZiB0aGlzIG1vZHVsZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llczogRGVwZW5kZW5jeVtdO1xufVxuXG4vKipcbiAqIENvb3JkaW5hdGVzIG9mIHRoZSBkZXBlbmRlbmN5IChuYW1lIGFuZCB2ZXJzaW9uKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXBlbmRlbmN5Q29vcmRpbmF0ZXMge1xuICAvKipcbiAgICogVGhlIHBhY2thZ2UgbWFuYWdlciBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5IChlLmcuIGBsZWZ0cGFkYCBmb3IgbnBtKS5cbiAgICpcbiAgICogTk9URTogRm9yIHBhY2thZ2UgbWFuYWdlcnMgdGhhdCB1c2UgY29tcGxleCBjb29yZGluYXRlcyAobGlrZSBNYXZlbiksIHdlXG4gICAqIHdpbGwgY29kaWZ5IGl0IGludG8gYSBzdHJpbmcgc29tZWhvdy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogU2VtYW50aWMgdmVyc2lvbiB2ZXJzaW9uIHJlcXVpcmVtZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlcXVpcmVtZW50IGlzIG1hbmFnZWQgYnkgdGhlIHBhY2thZ2UgbWFuYWdlciAoZS5nLiBucG0veWFybikuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwcm9qZWN0IGRlcGVuZGVuY3kuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwZW5kZW5jeSBleHRlbmRzIERlcGVuZGVuY3lDb29yZGluYXRlcyB7XG4gIC8qKlxuICAgKiBXaGljaCB0eXBlIG9mIGRlcGVuZGVuY3kgdGhpcyBpcyAocnVudGltZSwgYnVpbGQtdGltZSwgZXRjKS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IERlcGVuZGVuY3lUeXBlO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIEpTT04gbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXBlbmRlbmN5IChwYWNrYWdlIG1hbmFnZXJcbiAgICogc3BlY2lmaWMpLlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIFR5cGUgb2YgZGVwZW5kZW5jeS5cbiAqL1xuZXhwb3J0IGVudW0gRGVwZW5kZW5jeVR5cGUge1xuICAvKipcbiAgICogVGhlIGRlcGVuZGVuY3kgaXMgcmVxdWlyZWQgZm9yIHRoZSBwcm9ncmFtL2xpYnJhcnkgZHVyaW5nIHJ1bnRpbWUuXG4gICAqL1xuICBSVU5USU1FID0gXCJydW50aW1lXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXBlbmRlbmN5IGlzIHJlcXVpcmVkIGF0IHJ1bnRpbWUgYnV0IGV4cGVjdGVkIHRvIGJlIGluc3RhbGxlZCBieSB0aGVcbiAgICogY29uc3VtZXIuXG4gICAqL1xuICBQRUVSID0gXCJwZWVyXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXBlbmRlbmN5IGlzIGJ1bmRsZWQgYW5kIHNoaXBwZWQgd2l0aCB0aGUgbW9kdWxlLCBzbyBjb25zdW1lcnMgYXJlIG5vdFxuICAgKiByZXF1aXJlZCB0byBpbnN0YWxsIGl0LlxuICAgKi9cbiAgQlVORExFRCA9IFwiYnVuZGxlZFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBpcyByZXF1aXJlZCB0byBydW4gdGhlIGBidWlsZGAgdGFzay5cbiAgICovXG4gIEJVSUxEID0gXCJidWlsZFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBpcyByZXF1aXJlZCB0byBydW4gdGhlIGB0ZXN0YCB0YXNrLlxuICAgKi9cbiAgVEVTVCA9IFwidGVzdFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBpcyByZXF1aXJlZCBmb3IgZGV2ZWxvcG1lbnQgKGUuZy4gSURFIHBsdWdpbnMpLlxuICAgKi9cbiAgREVWRU5WID0gXCJkZXZlbnZcIixcblxuICAvKipcbiAgICogVHJhbnNpZW50IGRlcGVuZGVuY3kgdGhhdCBuZWVkcyB0byBiZSBvdmVyd3JpdHRlbi5cbiAgICpcbiAgICogQXZhaWxhYmxlIGZvciBOb2RlIHBhY2thZ2VzXG4gICAqL1xuICBPVkVSUklERSA9IFwib3ZlcnJpZGVcIixcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZGVwZW5kZW5jeSB0aGF0IG1heSBiZSB1c2VkIGF0IHJ1bnRpbWUgaWYgYXZhaWxhYmxlLCBidXQgaXMgbm90IHJlcXVpcmVkLlxuICAgKiBJdCBpcyBleHBlY3RlZCB0byBiZSBpbnN0YWxsZWQgYnkgdGhlIGNvbnN1bWVyLlxuICAgKi9cbiAgT1BUSU9OQUwgPSBcIm9wdGlvbmFsXCIsXG59XG5cbi8qKlxuICogQSByZXF1ZXN0IGZvciBhIGRlcGVuZGVuY3kuIFVubGlrZSBhZGRpbmcgYSBkZXBlbmRlbmN5IGRpcmVjdGx5LFxuICogcmVxdWVzdGluZyBhIGRlcGVuZGVuY3kgd2lsbCBpbnRlbGxpZ2VudGx5IG1lcmdlIHdpdGggZXhpc3RpbmdcbiAqIGRlcGVuZGVuY2llcyBvZiB0aGUgc2FtZSBuYW1lIGFuZCB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlcGVuZGVuY3lSZXF1ZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBwYWNrYWdlIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlbWFudGljIHZlcnNpb24gY29uc3RyYWludC5cbiAgICogQGRlZmF1bHQgLSBhbnkgdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGVwZW5kZW5jeSB0eXBlLiBJZiBub3QgcHJvdmlkZWQsIGFuIGV4aXN0aW5nIGRlcGVuZGVuY3kgb2YgYW55IHR5cGVcbiAgICogd2lsbCBzYXRpc2Z5IHRoZSByZXF1ZXN0LiBJZiBub25lIGV4aXN0cywgaXQgaXMgYWRkZWQgYXMgQlVJTEQuXG4gICAqIEBkZWZhdWx0IC0gYW55IGV4aXN0aW5nIHR5cGUsIG9yIERlcGVuZGVuY3lUeXBlLkJVSUxEXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogRGVwZW5kZW5jeVR5cGU7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgbWV0YWRhdGEuXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuIl19
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RlcGVuZGVuY2llcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLGlDQUFrQztBQUNsQywrQ0FBaUM7QUFDakMscUNBQXNDO0FBQ3RDLDJDQUF3QztBQUN4QyxpQ0FBa0M7QUFHbEM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxxQkFBUzs7SUFDekM7O09BRUc7SUFDSSxNQUFNLENBQVUsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNwRCxtQkFBVSxFQUNWLFdBQVcsQ0FDWixDQUFDO0lBRUY7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVELE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzNDLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDL0MsQ0FBQztJ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QyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFNUMsU0FBUyxNQUFNLENBQUMsR0FBZTtRQUM3QixJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3JDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQThDRDs7R0FFRztBQUNILElBQVksY0E2Q1g7QUE3Q0QsV0FBWSxjQUFjO0lBQ3hCOztPQUVHO0lBQ0gscUNBQW1CLENBQUE7SUFFbkI7OztPQUdHO0lBQ0gsK0JBQWEsQ0FBQTtJQUViOzs7T0FHRztJQUNILHFDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsaUNBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gsK0JBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsbUNBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILHVDQUFxQixDQUFBO0lBRXJCOzs7T0FHRztJQUNILHVDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUE3Q1csY0FBYyw4QkFBZCxjQUFjLFFBNkN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHVuZGVybGluZSB9IGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCB7IFBST0pFTl9ESVIgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tIFwiLi9qc29uXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tIFwiLi9wcm9qZWN0XCI7XG5cbi8qKlxuICogVGhlIGBEZXBlbmRlbmNpZXNgIGNvbXBvbmVudCBpcyByZXNwb25zaWJsZSB0byB0cmFjayB0aGUgbGlzdCBvZiBkZXBlbmRlbmNpZXNcbiAqIGEgcHJvamVjdCBoYXMsIGFuZCB0aGVuIHVzZWQgYnkgcHJvamVjdCB0eXBlcyBhcyB0aGUgbW9kZWwgZm9yIHJlbmRlcmluZ1xuICogcHJvamVjdC1zcGVjaWZpYyBkZXBlbmRlbmN5IG1hbmlmZXN0cyBzdWNoIGFzIHRoZSBkZXBlbmRlbmNpZXMgc2VjdGlvblxuICogYHBhY2thZ2UuanNvbmAgZmlsZXMuXG4gKlxuICogVG8gYWRkIGEgZGVwZW5kZW5jeSB5b3UgY2FuIHVzZSBhIHByb2plY3QtdHlwZSBzcGVjaWZpYyBBUEkgc3VjaCBhc1xuICogYG5vZGVQcm9qZWN0LmFkZERlcHMoKWAgb3IgdXNlIHRoZSBnZW5lcmljIEFQSSBvZiBgcHJvamVjdC5kZXBzYDpcbiAqL1xuZXhwb3J0IGNsYXNzIERlcGVuZGVuY2llcyBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgcHJvamVjdC1yZWxhdGl2ZSBwYXRoIG9mIHRoZSBkZXBzIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BTklGRVNUX0ZJTEUgPSBwYXRoLnBvc2l4LmpvaW4oXG4gICAgUFJPSkVOX0RJUixcbiAgICBcImRlcHMuanNvblwiLFxuICApO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb29yZGluYXRlcyBvZiBhIGRlcGVuZGVuY3kgc3BlYy5cbiAgICpcbiAgICogR2l2ZW4gYGZvb0BeMy40LjBgIHJldHVybnMgYHsgbmFtZTogXCJmb29cIiwgdmVyc2lvbjogXCJeMy40LjBcIiB9YC5cbiAgICogR2l2ZW4gYGJhckBucG06QGJhci9sZWdhY3lgIHJldHVybnMgYHsgbmFtZTogXCJiYXJcIiwgdmVyc2lvbjogXCJucG06QGJhci9sZWdhY3lcIiB9YC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VEZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IERlcGVuZGVuY3lDb29yZGluYXRlcyB7XG4gICAgY29uc3Qgc2NvcGUgPSBzcGVjLnN0YXJ0c1dpdGgoXCJAXCIpO1xuICAgIGlmIChzY29wZSkge1xuICAgICAgc3BlYyA9IHNwZWMuc3Vic3RyaW5nKDEpO1xuICAgIH1cblxuICAgIGNvbnN0IFttb2R1bGUsIC4uLnZlcnNpb25dID0gc3BlYy5zcGxpdChcIkBcIik7XG4gICAgY29uc3QgbmFtZSA9IHNjb3BlID8gYEAke21vZHVsZX1gIDogbW9kdWxlO1xuICAgIGlmICh2ZXJzaW9uLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4geyBuYW1lIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IG5hbWUsIHZlcnNpb246IHZlcnNpb24/LmpvaW4oXCJAXCIpIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVwcyA9IG5ldyBBcnJheTxEZXBlbmRlbmN5PigpO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgZGVwZW5kZW5jaWVzIGNvbXBvbmVudCB0byB0aGUgcHJvamVjdC5cbiAgICogQHBhcmFtIHByb2plY3QgVGhlIHBhcmVudCBwcm9qZWN0XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAvLyB0aGlzIGlzIG5vdCByZWFsbHkgcmVxdWlyZWQgYXQgdGhlIG1vbWVudCwgYnV0IGFjdHVhbGx5IHF1aXRlIHVzZWZ1bCBhcyBhXG4gICAgLy8gY2hlY2tlZC1pbiBzb3VyY2Ugb2YgdHJ1dGggZm9yIGRlcGVuZGVuY2llcyBhbmQgd2lsbCBwb3RlbnRpYWxseSBiZVxuICAgIC8vIHZhbHVhYmxlIGluIHRoZSBmdXR1cmUgZm9yIENMSSB0b29scy5cbiAgICBpZiAoIXByb2plY3QuZWplY3RlZCkge1xuICAgICAgbmV3IEpzb25GaWxlKHByb2plY3QsIERlcGVuZGVuY2llcy5NQU5JRkVTVF9GSUxFLCB7XG4gICAgICAgIG9taXRFbXB0eTogdHJ1ZSxcbiAgICAgICAgb2JqOiAoKSA9PiB0aGlzLnRvSnNvbigpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEEgY29weSBvZiBhbGwgZGVwZW5kZW5jaWVzIHJlY29yZGVkIGZvciB0aGlzIHByb2plY3QuXG4gICAqXG4gICAqIFRoZSBsaXN0IGlzIHNvcnRlZCBieSB0eXBlLT5uYW1lLT52ZXJzaW9uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFsbCgpOiBEZXBlbmRlbmN5W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5fZGVwc10uc29ydChjb21wYXJlRGVwcykubWFwKG5vcm1hbGl6ZURlcCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGRlcGVuZGVuY3kgYnkgbmFtZS5cbiAgICpcbiAgICogRmFpbHMgaWYgdGhlcmUgaXMgbm8gZGVwZW5kZW5jeSBkZWZpbmVkIGJ5IHRoYXQgbmFtZSBvciBpZiBgdHlwZWAgaXMgbm90XG4gICAqIHByb3ZpZGVkIGFuZCB0aGVyZSBpcyBtb3JlIHRoZW4gb25lIGRlcGVuZGVuY3kgdHlwZSBmb3IgdGhpcyBkZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZGVwZW5kZW5jeVxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZGVwZW5kZW5jeSB0eXBlLiBJZiB0aGlzIGRlcGVuZGVuY3kgaXMgZGVmaW5lZCBvbmx5IGZvciBhXG4gICAqIHNpbmdsZSB0eXBlLCB0aGlzIGFyZ3VtZW50IGNhbiBiZSBvbWl0dGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBhIGNvcHkgKGNhbm5vdCBiZSBtb2RpZmllZClcbiAgICovXG4gIHB1YmxpYyBnZXREZXBlbmRlbmN5KG5hbWU6IHN0cmluZywgdHlwZT86IERlcGVuZGVuY3lUeXBlKTogRGVwZW5kZW5jeSB7XG4gICAgY29uc3QgZGVwID0gdGhpcy50cnlHZXREZXBlbmRlbmN5KG5hbWUsIHR5cGUpO1xuICAgIGlmICghZGVwKSB7XG4gICAgICBjb25zdCBtc2cgPSB0eXBlXG4gICAgICAgID8gYHRoZXJlIGlzIG5vICR7dHlwZX0gZGVwZW5kZW5jeSBkZWZpbmVkIG9uIFwiJHtuYW1lfVwiYFxuICAgICAgICA6IGB0aGVyZSBpcyBubyBkZXBlbmRlbmN5IGRlZmluZWQgb24gXCIke25hbWV9XCJgO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBkZXBlbmRlbmN5IGJ5IG5hbWUuXG4gICAqXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlcmUgaXMgbm8gZGVwZW5kZW5jeSBkZWZpbmVkIGJ5IHRoYXQgbmFtZSBvciBpZlxuICAgKiBgdHlwZWAgaXMgbm90IHByb3ZpZGVkIGFuZCB0aGVyZSBpcyBtb3JlIHRoZW4gb25lIGRlcGVuZGVuY3kgdHlwZSBmb3IgdGhpc1xuICAgKiBkZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZGVwZW5kZW5jeVxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZGVwZW5kZW5jeSB0eXBlLiBJZiB0aGlzIGRlcGVuZGVuY3kgaXMgZGVmaW5lZCBvbmx5IGZvciBhXG4gICAqIHNpbmdsZSB0eXBlLCB0aGlzIGFyZ3VtZW50IGNhbiBiZSBvbWl0dGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBhIGNvcHkgKGNhbm5vdCBiZSBtb2RpZmllZCkgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIG1hdGNoXG4gICAqL1xuICBwdWJsaWMgdHJ5R2V0RGVwZW5kZW5jeShcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdHlwZT86IERlcGVuZGVuY3lUeXBlLFxuICApOiBEZXBlbmRlbmN5IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpZHggPSB0aGlzLnRyeUdldERlcGVuZGVuY3lJbmRleChuYW1lLCB0eXBlKTtcbiAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ubm9ybWFsaXplRGVwKHRoaXMuX2RlcHNbaWR4XSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgZGVwZW5kZW5jeSB0byB0aGlzIHByb2plY3QuXG4gICAqIEBwYXJhbSBzcGVjIFRoZSBkZXBlbmRlbmN5IHNwZWMgaW4gdGhlIGZvcm1hdCBgTU9EVUxFW0BWRVJTSU9OXWAgd2hlcmVcbiAgICogYE1PRFVMRWAgaXMgdGhlIHBhY2thZ2UtbWFuYWdlci1zcGVjaWZpYyBtb2R1bGUgbmFtZSBhbmQgYFZFUlNJT05gIGlzIGFuXG4gICAqIG9wdGlvbmFsIHNlbWFudGljIHZlcnNpb24gcmVxdWlyZW1lbnQgKGUuZy4gYF4zLjQuMGApLlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgZGVwZW5kZW5jeS5cbiAgICovXG4gIHB1YmxpYyBhZGREZXBlbmRlbmN5KFxuICAgIHNwZWM6IHN0cmluZyxcbiAgICB0eXBlOiBEZXBlbmRlbmN5VHlwZSxcbiAgICBtZXRhZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9LFxuICApOiBEZXBlbmRlbmN5IHtcbiAgICB0aGlzLnByb2plY3QubG9nZ2VyLnZlcmJvc2UoXG4gICAgICBgJHt1bmRlcmxpbmUoXCJEZXBlbmRlbmN5XCIpfSB8IEFkZGluZyAke3R5cGV9LWRlcCBcXGAke3NwZWN9XFxgYCxcbiAgICApO1xuXG4gICAgY29uc3QgZGVwOiBEZXBlbmRlbmN5ID0ge1xuICAgICAgLi4uRGVwZW5kZW5jaWVzLnBhcnNlRGVwZW5kZW5jeShzcGVjKSxcbiAgICAgIHR5cGUsXG4gICAgICBtZXRhZGF0YSxcbiAgICB9O1xuXG4gICAgY29uc3QgZXhpc3RpbmdEZXBJbmRleCA9IHRoaXMudHJ5R2V0RGVwZW5kZW5jeUluZGV4KGRlcC5uYW1lLCB0eXBlKTtcblxuICAgIGlmIChleGlzdGluZ0RlcEluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYCR7dW5kZXJsaW5lKFwiRGVwZW5kZW5jeVwiKX0gfCBVcGRhdGluZyBleGlzdGluZyAke2RlcC50eXBlfS1kZXAgXFxgJHtkZXAubmFtZX1cXGAgd2l0aCBtb3JlIHNwZWNpZmljIHJlcXVlc3QuYCxcbiAgICAgICk7XG4gICAgICB0aGlzLl9kZXBzW2V4aXN0aW5nRGVwSW5kZXhdID0gZGVwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kZXBzLnB1c2goZGVwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBkZXBlbmRlbmN5LlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIHJlbW92ZSAod2l0aG91dCB0aGUgdmVyc2lvbilcbiAgICogQHBhcmFtIHR5cGUgVGhlIGRlcGVuZGVuY3kgdHlwZS4gVGhpcyBpcyBvbmx5IHJlcXVpcmVkIGlmIHRoZXJlIHRoZVxuICAgKiBkZXBlbmRlbmN5IGlzIGRlZmluZWQgZm9yIG11bHRpcGxlIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZURlcGVuZGVuY3kobmFtZTogc3RyaW5nLCB0eXBlPzogRGVwZW5kZW5jeVR5cGUpIHtcbiAgICBjb25zdCByZW1vdmVJbmRleCA9IHRoaXMudHJ5R2V0RGVwZW5kZW5jeUluZGV4KG5hbWUsIHR5cGUpO1xuICAgIGlmIChyZW1vdmVJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kZXBzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFuIGV4aXN0aW5nIGRlcGVuZGVuY3kgc2F0aXNmaWVzIGEgZGVwZW5kZW5jeSByZXF1aXJlbWVudC5cbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGRlcGVuZGVuY3kgdG8gY2hlY2sgKHdpdGhvdXQgdGhlIHZlcnNpb24pLlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZGVwZW5kZW5jeSB0eXBlLlxuICAgKiBAcGFyYW0gZXhwZWN0ZWRSYW5nZSBUaGUgdmVyc2lvbiBjb25zdHJhaW50IHRvIGNoZWNrIChlLmcuIGBeMy40LjBgKS5cbiAgICogVGhlIGNvbnN0cmFpbnQgb2YgdGhlIGRlcGVuZGVuY3kgbXVzdCBiZSBhIHN1YnNldCBvZiB0aGUgZXhwZWN0ZWQgcmFuZ2UgdG8gc2F0aXNmeSB0aGUgcmVxdWlyZW1lbnRzLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGRlcGVuZGVuY3kgZXhpc3RzIGFuZCBpdHMgdmVyc2lvbiBzYXRpc2ZpZXMgdGhlIHByb3ZpZGVkIGNvbnN0cmFpbnQuIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKiBOb3RhYmx5IHJldHVybnMgYGZhbHNlYCBpZiBhIGRlcGVuZGVuY3kgZXhpc3RzLCBidXQgaGFzIG5vIHZlcnNpb24uXG4gICAqL1xuICBwdWJsaWMgaXNEZXBlbmRlbmN5U2F0aXNmaWVkKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB0eXBlOiBEZXBlbmRlbmN5VHlwZSxcbiAgICBleHBlY3RlZFJhbmdlOiBzdHJpbmcsXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGRlcCA9IHRoaXMudHJ5R2V0RGVwZW5kZW5jeShuYW1lLCB0eXBlKTtcbiAgICByZXR1cm4gZGVwPy52ZXJzaW9uICE9IG51bGwgJiYgc2VtdmVyLnN1YnNldChkZXAudmVyc2lvbiwgZXhwZWN0ZWRSYW5nZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBhIGRlcGVuZGVuY3kuIFVubGlrZSBgYWRkRGVwZW5kZW5jeWAsIHRoaXMgbWVyZ2VzIGludGVsbGlnZW50bHlcbiAgICogd2l0aCBleGlzdGluZyBkZXBlbmRlbmNpZXMgb2YgdGhlIHNhbWUgbmFtZSBhbmQgdHlwZTpcbiAgICpcbiAgICogLSBJZiB0aGUgZGVwIGV4aXN0cyB3aXRoIGEgdmVyc2lvbiB0aGF0IGFscmVhZHkgc2F0aXNmaWVzIHRoZSByZXF1ZXN0LFxuICAgKiAgIHRoZSB2ZXJzaW9uIGlzIG5vdCBjaGFuZ2VkLlxuICAgKiAtIElmIHRoZSBkZXAgZG9lc24ndCBleGlzdCwgaXQgaXMgYWRkZWQgd2l0aCB0aGUgcmVxdWVzdGVkIHR5cGUvdmVyc2lvbi5cbiAgICogLSBJZiB0aGUgZGVwIGV4aXN0cyBidXQgdGhlIHZlcnNpb25zIGRvbid0IGludGVyc2VjdCwgYW4gZXJyb3IgaXMgdGhyb3duLlxuICAgKiAtIElmIG5vIHR5cGUgaXMgcHJvdmlkZWQsIGFuIGV4aXN0aW5nIGRlcGVuZGVuY3kgb2YgYW55IHR5cGUgd2lsbCBzYXRpc2Z5XG4gICAqICAgdGhlIHJlcXVlc3QuIElmIG5vbmUgZXhpc3RzLCBpdCBpcyBhZGRlZCBhcyBCVUlMRC5cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3QgVGhlIGRlcGVuZGVuY3kgcmVxdWVzdC5cbiAgICogQHJldHVybnMgVGhlIHJlc3VsdGluZyBkZXBlbmRlbmN5IGFmdGVyIG1lcmdpbmcuXG4gICAqL1xuICBwdWJsaWMgcmVxdWVzdERlcGVuZGVuY3kocmVxdWVzdDogRGVwZW5kZW5jeVJlcXVlc3QpOiBEZXBlbmRlbmN5IHtcbiAgICAvLyBXaGVuIHR5cGUgaXMgbm90IHNwZWNpZmllZCwgZmluZCBhbnkgZXhpc3RpbmcgZGVwIHdpdGggdGhpcyBuYW1lXG4gICAgY29uc3QgcmVxdWVzdGVkVHlwZSA9XG4gICAgICByZXF1ZXN0LnR5cGUgPz9cbiAgICAgIHRoaXMuZmluZEV4aXN0aW5nSW5zdGFsbGFibGVUeXBlKHJlcXVlc3QubmFtZSkgPz9cbiAgICAgIERlcGVuZGVuY3lUeXBlLkJVSUxEO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy50cnlHZXREZXBlbmRlbmN5KHJlcXVlc3QubmFtZSwgcmVxdWVzdGVkVHlwZSk7XG5cbiAgICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgICBjb25zdCBzcGVjID0gcmVxdWVzdC52ZXJzaW9uXG4gICAgICAgID8gYCR7cmVxdWVzdC5uYW1lfUAke3JlcXVlc3QudmVyc2lvbn1gXG4gICAgICAgIDogcmVxdWVzdC5uYW1lO1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRGVwZW5kZW5jeShzcGVjLCByZXF1ZXN0ZWRUeXBlLCByZXF1ZXN0Lm1ldGFkYXRhID8/IHt9KTtcbiAgICB9XG5cbiAgICAvLyBWZXJzaW9uIG1lcmdpbmdcbiAgICBsZXQgZWZmZWN0aXZlVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCFyZXF1ZXN0LnZlcnNpb24pIHtcbiAgICAgIGVmZmVjdGl2ZVZlcnNpb24gPSBleGlzdGluZy52ZXJzaW9uO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLmlzRGVwZW5kZW5jeVNhdGlzZmllZChyZXF1ZXN0Lm5hbWUsIHJlcXVlc3RlZFR5cGUsIHJlcXVlc3QudmVyc2lvbilcbiAgICApIHtcbiAgICAgIGVmZmVjdGl2ZVZlcnNpb24gPSBleGlzdGluZy52ZXJzaW9uO1xuICAgIH0gZWxzZSBpZiAoIWV4aXN0aW5nLnZlcnNpb24pIHtcbiAgICAgIGVmZmVjdGl2ZVZlcnNpb24gPSByZXF1ZXN0LnZlcnNpb247XG4gICAgfSBlbHNlIGlmIChzZW12ZXIuaW50ZXJzZWN0cyhleGlzdGluZy52ZXJzaW9uLCByZXF1ZXN0LnZlcnNpb24pKSB7XG4gICAgICBlZmZlY3RpdmVWZXJzaW9uID0gcmVxdWVzdC52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBEZXBlbmRlbmN5IFwiJHtyZXF1ZXN0Lm5hbWV9XCIgdmVyc2lvbiBjb25mbGljdDogZXhpc3RpbmcgXCIke2V4aXN0aW5nLnZlcnNpb259XCIgYCArXG4gICAgICAgICAgYGRvZXMgbm90IGludGVyc2VjdCB3aXRoIHJlcXVlc3RlZCBcIiR7cmVxdWVzdC52ZXJzaW9ufVwiYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3BlYyA9IGVmZmVjdGl2ZVZlcnNpb25cbiAgICAgID8gYCR7cmVxdWVzdC5uYW1lfUAke2VmZmVjdGl2ZVZlcnNpb259YFxuICAgICAgOiByZXF1ZXN0Lm5hbWU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRGVwZW5kZW5jeShzcGVjLCByZXF1ZXN0ZWRUeXBlLCB7XG4gICAgICAuLi5leGlzdGluZy5tZXRhZGF0YSxcbiAgICAgIC4uLnJlcXVlc3QubWV0YWRhdGEsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIHR5cGUgb2YgYW4gZXhpc3RpbmcgaW5zdGFsbGFibGUgZGVwZW5kZW5jeSBieSBuYW1lLlxuICAgKiBFeGNsdWRlcyBQRUVSLCBPVkVSUklERSwgYW5kIE9QVElPTkFMIHR5cGVzLlxuICAgKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBubyBkZXBlbmRlbmN5IHdpdGggdGhpcyBuYW1lIGV4aXN0cy5cbiAgICovXG4gIHByaXZhdGUgZmluZEV4aXN0aW5nSW5zdGFsbGFibGVUeXBlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgKTogRGVwZW5kZW5jeVR5cGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kZXBzLmZpbmQoXG4gICAgICAoZCkgPT5cbiAgICAgICAgZC5uYW1lID09PSBuYW1lICYmXG4gICAgICAgIGQudHlwZSAhPT0gRGVwZW5kZW5jeVR5cGUuUEVFUiAmJlxuICAgICAgICBkLnR5cGUgIT09IERlcGVuZGVuY3lUeXBlLk9WRVJSSURFICYmXG4gICAgICAgIGQudHlwZSAhPT0gRGVwZW5kZW5jeVR5cGUuT1BUSU9OQUwsXG4gICAgKT8udHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgdHJ5R2V0RGVwZW5kZW5jeUluZGV4KG5hbWU6IHN0cmluZywgdHlwZT86IERlcGVuZGVuY3lUeXBlKTogbnVtYmVyIHtcbiAgICBjb25zdCBkZXBzID0gdGhpcy5fZGVwcy5maWx0ZXIoKGQpID0+IGQubmFtZSA9PT0gbmFtZSk7XG4gICAgaWYgKGRlcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTE7IC8vIG5vdCBmb3VuZFxuICAgIH1cblxuICAgIGlmICghdHlwZSkge1xuICAgICAgaWYgKGRlcHMubGVuZ3RoID4gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFwiJHtuYW1lfVwiIGlzIGRlZmluZWQgZm9yIG11bHRpcGxlIGRlcGVuZGVuY3kgdHlwZXM6ICR7ZGVwc1xuICAgICAgICAgICAgLm1hcCgoZCkgPT4gZC50eXBlKVxuICAgICAgICAgICAgLmpvaW4oXCIsXCIpfS4gUGxlYXNlIHNwZWNpZnkgZGVwZW5kZW5jeSB0eXBlYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdHlwZSA9IGRlcHNbMF0udHlwZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZGVwcy5maW5kSW5kZXgoXG4gICAgICAoZGVwKSA9PiBkZXAubmFtZSA9PT0gbmFtZSAmJiBkZXAudHlwZSA9PT0gdHlwZSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0pzb24oKTogRGVwc01hbmlmZXN0IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5fZGVwcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBkZXBlbmRlbmNpZXM6IHRoaXMuX2RlcHMuc29ydChjb21wYXJlRGVwcykubWFwKG5vcm1hbGl6ZURlcCksXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVEZXAoZDogRGVwZW5kZW5jeSkge1xuICBjb25zdCBvYmo6IGFueSA9IHt9O1xuICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhkKSkge1xuICAgIGlmICh2ID09IHVuZGVmaW5lZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiBPYmplY3Qua2V5cyh2KS5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSAmJiB2Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIG9ialtrXSA9IHY7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBjb21wYXJlRGVwcyhkMTogRGVwZW5kZW5jeSwgZDI6IERlcGVuZGVuY3kpIHtcbiAgcmV0dXJuIHNwZWNPZihkMSkubG9jYWxlQ29tcGFyZShzcGVjT2YoZDIpKTtcblxuICBmdW5jdGlvbiBzcGVjT2YoZGVwOiBEZXBlbmRlbmN5KSB7XG4gICAgbGV0IHNwZWMgPSBkZXAudHlwZSArIFwiOlwiICsgZGVwLm5hbWU7XG4gICAgaWYgKGRlcC52ZXJzaW9uKSB7XG4gICAgICBzcGVjICs9IFwiQFwiICsgZGVwLnZlcnNpb247XG4gICAgfVxuICAgIHJldHVybiBzcGVjO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwc01hbmlmZXN0IHtcbiAgLyoqXG4gICAqIEFsbCBkZXBlbmRlbmNpZXMgb2YgdGhpcyBtb2R1bGUuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM6IERlcGVuZGVuY3lbXTtcbn1cblxuLyoqXG4gKiBDb29yZGluYXRlcyBvZiB0aGUgZGVwZW5kZW5jeSAobmFtZSBhbmQgdmVyc2lvbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwZW5kZW5jeUNvb3JkaW5hdGVzIHtcbiAgLyoqXG4gICAqIFRoZSBwYWNrYWdlIG1hbmFnZXIgbmFtZSBvZiB0aGUgZGVwZW5kZW5jeSAoZS5nLiBgbGVmdHBhZGAgZm9yIG5wbSkuXG4gICAqXG4gICAqIE5PVEU6IEZvciBwYWNrYWdlIG1hbmFnZXJzIHRoYXQgdXNlIGNvbXBsZXggY29vcmRpbmF0ZXMgKGxpa2UgTWF2ZW4pLCB3ZVxuICAgKiB3aWxsIGNvZGlmeSBpdCBpbnRvIGEgc3RyaW5nIHNvbWVob3cuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlbWFudGljIHZlcnNpb24gdmVyc2lvbiByZXF1aXJlbWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSByZXF1aXJlbWVudCBpcyBtYW5hZ2VkIGJ5IHRoZSBwYWNrYWdlIG1hbmFnZXIgKGUuZy4gbnBtL3lhcm4pLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcHJvamVjdCBkZXBlbmRlbmN5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlcGVuZGVuY3kgZXh0ZW5kcyBEZXBlbmRlbmN5Q29vcmRpbmF0ZXMge1xuICAvKipcbiAgICogV2hpY2ggdHlwZSBvZiBkZXBlbmRlbmN5IHRoaXMgaXMgKHJ1bnRpbWUsIGJ1aWxkLXRpbWUsIGV0YykuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBEZXBlbmRlbmN5VHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBKU09OIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVwZW5kZW5jeSAocGFja2FnZSBtYW5hZ2VyXG4gICAqIHNwZWNpZmljKS5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuLyoqXG4gKiBUeXBlIG9mIGRlcGVuZGVuY3kuXG4gKi9cbmV4cG9ydCBlbnVtIERlcGVuZGVuY3lUeXBlIHtcbiAgLyoqXG4gICAqIFRoZSBkZXBlbmRlbmN5IGlzIHJlcXVpcmVkIGZvciB0aGUgcHJvZ3JhbS9saWJyYXJ5IGR1cmluZyBydW50aW1lLlxuICAgKi9cbiAgUlVOVElNRSA9IFwicnVudGltZVwiLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBpcyByZXF1aXJlZCBhdCBydW50aW1lIGJ1dCBleHBlY3RlZCB0byBiZSBpbnN0YWxsZWQgYnkgdGhlXG4gICAqIGNvbnN1bWVyLlxuICAgKi9cbiAgUEVFUiA9IFwicGVlclwiLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBpcyBidW5kbGVkIGFuZCBzaGlwcGVkIHdpdGggdGhlIG1vZHVsZSwgc28gY29uc3VtZXJzIGFyZSBub3RcbiAgICogcmVxdWlyZWQgdG8gaW5zdGFsbCBpdC5cbiAgICovXG4gIEJVTkRMRUQgPSBcImJ1bmRsZWRcIixcblxuICAvKipcbiAgICogVGhlIGRlcGVuZGVuY3kgaXMgcmVxdWlyZWQgdG8gcnVuIHRoZSBgYnVpbGRgIHRhc2suXG4gICAqL1xuICBCVUlMRCA9IFwiYnVpbGRcIixcblxuICAvKipcbiAgICogVGhlIGRlcGVuZGVuY3kgaXMgcmVxdWlyZWQgdG8gcnVuIHRoZSBgdGVzdGAgdGFzay5cbiAgICovXG4gIFRFU1QgPSBcInRlc3RcIixcblxuICAvKipcbiAgICogVGhlIGRlcGVuZGVuY3kgaXMgcmVxdWlyZWQgZm9yIGRldmVsb3BtZW50IChlLmcuIElERSBwbHVnaW5zKS5cbiAgICovXG4gIERFVkVOViA9IFwiZGV2ZW52XCIsXG5cbiAgLyoqXG4gICAqIFRyYW5zaWVudCBkZXBlbmRlbmN5IHRoYXQgbmVlZHMgdG8gYmUgb3ZlcndyaXR0ZW4uXG4gICAqXG4gICAqIEF2YWlsYWJsZSBmb3IgTm9kZSBwYWNrYWdlc1xuICAgKi9cbiAgT1ZFUlJJREUgPSBcIm92ZXJyaWRlXCIsXG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIGRlcGVuZGVuY3kgdGhhdCBtYXkgYmUgdXNlZCBhdCBydW50aW1lIGlmIGF2YWlsYWJsZSwgYnV0IGlzIG5vdCByZXF1aXJlZC5cbiAgICogSXQgaXMgZXhwZWN0ZWQgdG8gYmUgaW5zdGFsbGVkIGJ5IHRoZSBjb25zdW1lci5cbiAgICovXG4gIE9QVElPTkFMID0gXCJvcHRpb25hbFwiLFxufVxuXG4vKipcbiAqIEEgcmVxdWVzdCBmb3IgYSBkZXBlbmRlbmN5LiBVbmxpa2UgYWRkaW5nIGEgZGVwZW5kZW5jeSBkaXJlY3RseSxcbiAqIHJlcXVlc3RpbmcgYSBkZXBlbmRlbmN5IHdpbGwgaW50ZWxsaWdlbnRseSBtZXJnZSB3aXRoIGV4aXN0aW5nXG4gKiBkZXBlbmRlbmNpZXMgb2YgdGhlIHNhbWUgbmFtZSBhbmQgdHlwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXBlbmRlbmN5UmVxdWVzdCB7XG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZW1hbnRpYyB2ZXJzaW9uIGNvbnN0cmFpbnQuXG4gICAqIEBkZWZhdWx0IC0gYW55IHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlcGVuZGVuY3kgdHlwZS4gSWYgbm90IHByb3ZpZGVkLCBhbiBleGlzdGluZyBkZXBlbmRlbmN5IG9mIGFueSB0eXBlXG4gICAqIHdpbGwgc2F0aXNmeSB0aGUgcmVxdWVzdC4gSWYgbm9uZSBleGlzdHMsIGl0IGlzIGFkZGVkIGFzIEJVSUxELlxuICAgKiBAZGVmYXVsdCAtIGFueSBleGlzdGluZyB0eXBlLCBvciBEZXBlbmRlbmN5VHlwZS5CVUlMRFxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IERlcGVuZGVuY3lUeXBlO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG1ldGFkYXRhLlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cbiJdfQ==
package/lib/dev-env.js CHANGED
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.DevEnvironmentDockerImage = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -7,6 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
6
  * Options for specifying the Docker image of the container.
8
7
  */
9
8
  class DevEnvironmentDockerImage {
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.100.0" };
10
10
  /**
11
11
  * A publicly available Docker image.
12
12
  * @example 'ubuntu:latest'
@@ -23,9 +23,15 @@ class DevEnvironmentDockerImage {
23
23
  static fromFile(dockerFile) {
24
24
  return { dockerFile };
25
25
  }
26
+ /**
27
+ * A publicly available Docker image.
28
+ */
29
+ image;
30
+ /**
31
+ * The relative path of a Dockerfile that defines the container contents.
32
+ */
33
+ dockerFile;
26
34
  constructor() { }
27
35
  }
28
36
  exports.DevEnvironmentDockerImage = DevEnvironmentDockerImage;
29
- _a = JSII_RTTI_SYMBOL_1;
30
- DevEnvironmentDockerImage[_a] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.99.80" };
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LWVudi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXYtZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBNEJBOztHQUVHO0FBQ0gsTUFBYSx5QkFBeUI7SUFDcEM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBYTtRQUNuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQWtCO1FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBWUQsZ0JBQXVCLENBQUM7O0FBN0IxQiw4REE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRhc2sgfSBmcm9tIFwiLi90YXNrXCI7XG5cbi8qKlxuICogQmFzZSBvcHRpb25zIGZvciBjb25maWd1cmluZyBhIGNvbnRhaW5lci1iYXNlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXZFbnZpcm9ubWVudE9wdGlvbnMge1xuICAvKipcbiAgICogQSBEb2NrZXIgaW1hZ2Ugb3IgRG9ja2VyZmlsZSBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlckltYWdlPzogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgdGFza3MgdGhhdCBzaG91bGQgYmUgcnVuIHdoZW4gdGhlIGNvbnRhaW5lciBzdGFydHMuXG4gICAqL1xuICByZWFkb25seSB0YXNrcz86IFRhc2tbXTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgcG9ydHMgdGhhdCBzaG91bGQgYmUgZXhwb3NlZCBmcm9tIHRoZSBjb250YWluZXIuXG4gICAqL1xuICByZWFkb25seSBwb3J0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBleHRlbnNpb24gSURzIHRoYXQgc3BlY2lmeSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHNob3VsZCBiZVxuICAgKiBpbnN0YWxsZWQgaW5zaWRlIHRoZSBjb250YWluZXIgd2hlbiBpdCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlRXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHNwZWNpZnlpbmcgdGhlIERvY2tlciBpbWFnZSBvZiB0aGUgY29udGFpbmVyLlxuICovXG5leHBvcnQgY2xhc3MgRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSB7XG4gIC8qKlxuICAgKiBBIHB1YmxpY2x5IGF2YWlsYWJsZSBEb2NrZXIgaW1hZ2UuXG4gICAqIEBleGFtcGxlICd1YnVudHU6bGF0ZXN0J1xuICAgKiBAcGFyYW0gaW1hZ2UgYSBEb2NrZXIgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlKGltYWdlOiBzdHJpbmcpOiBEZXZFbnZpcm9ubWVudERvY2tlckltYWdlIHtcbiAgICByZXR1cm4geyBpbWFnZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZWxhdGl2ZSBwYXRoIG9mIGEgRG9ja2VyZmlsZSB0aGF0IGRlZmluZXMgdGhlIGNvbnRhaW5lciBjb250ZW50cy5cbiAgICogQGV4YW1wbGUgJy5naXRwb2QuRG9ja2VyJ1xuICAgKiBAcGFyYW0gZG9ja2VyRmlsZSBhIHJlbGF0aXZlIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUZpbGUoZG9ja2VyRmlsZTogc3RyaW5nKTogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSB7XG4gICAgcmV0dXJuIHsgZG9ja2VyRmlsZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcHVibGljbHkgYXZhaWxhYmxlIERvY2tlciBpbWFnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlbGF0aXZlIHBhdGggb2YgYSBEb2NrZXJmaWxlIHRoYXQgZGVmaW5lcyB0aGUgY29udGFpbmVyIGNvbnRlbnRzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvY2tlckZpbGU/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogQWJzdHJhY3QgaW50ZXJmYWNlIGZvciBjb250YWluZXItYmFzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLCBzdWNoIGFzXG4gKiBHaXRwb2QgYW5kIEdpdEh1YiBDb2Rlc3BhY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEZXZFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBBZGQgYSBjdXN0b20gRG9ja2VyIGltYWdlIG9yIERvY2tlcmZpbGUgZm9yIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSBpbWFnZSBUaGUgRG9ja2VyIGltYWdlXG4gICAqL1xuICBhZGREb2NrZXJJbWFnZShpbWFnZTogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZHMgdGFza3MgdG8gcnVuIHdoZW4gdGhlIGNvbnRhaW5lciBzdGFydHMuXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrcyBUaGUgbmV3IHRhc2tzXG4gICAqL1xuICBhZGRUYXNrcyguLi50YXNrczogVGFza1tdKTogdm9pZDtcblxuICAvKipcbiAgICogQWRkcyBwb3J0cyB0aGF0IHNob3VsZCBiZSBleHBvc2VkIChmb3J3YXJkZWQpIGZyb20gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHBvcnRzIFRoZSBuZXcgcG9ydHNcbiAgICovXG4gIGFkZFBvcnRzKC4uLnBvcnRzOiBzdHJpbmdbXSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBsaXN0IG9mIFZTQ29kZSBleHRlbnNpb25zIHRoYXQgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkXG4gICAqIGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSBleHRlbnNpb25zIFRoZSBleHRlbnNpb24gSURzXG4gICAqL1xuICBhZGRWc2NvZGVFeHRlbnNpb25zKC4uLmV4dGVuc2lvbnM6IHN0cmluZ1tdKTogdm9pZDtcbn1cbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LWVudi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXYtZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUE0QkE7O0dBRUc7QUFDSCxNQUFhLHlCQUF5Qjs7SUFDcEM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBYTtRQUNuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQWtCO1FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDYSxLQUFLLENBQVU7SUFFL0I7O09BRUc7SUFDYSxVQUFVLENBQVU7SUFFcEMsZ0JBQXVCLENBQUM7O0FBN0IxQiw4REE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRhc2sgfSBmcm9tIFwiLi90YXNrXCI7XG5cbi8qKlxuICogQmFzZSBvcHRpb25zIGZvciBjb25maWd1cmluZyBhIGNvbnRhaW5lci1iYXNlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXZFbnZpcm9ubWVudE9wdGlvbnMge1xuICAvKipcbiAgICogQSBEb2NrZXIgaW1hZ2Ugb3IgRG9ja2VyZmlsZSBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlckltYWdlPzogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgdGFza3MgdGhhdCBzaG91bGQgYmUgcnVuIHdoZW4gdGhlIGNvbnRhaW5lciBzdGFydHMuXG4gICAqL1xuICByZWFkb25seSB0YXNrcz86IFRhc2tbXTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgcG9ydHMgdGhhdCBzaG91bGQgYmUgZXhwb3NlZCBmcm9tIHRoZSBjb250YWluZXIuXG4gICAqL1xuICByZWFkb25seSBwb3J0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBleHRlbnNpb24gSURzIHRoYXQgc3BlY2lmeSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHNob3VsZCBiZVxuICAgKiBpbnN0YWxsZWQgaW5zaWRlIHRoZSBjb250YWluZXIgd2hlbiBpdCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlRXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHNwZWNpZnlpbmcgdGhlIERvY2tlciBpbWFnZSBvZiB0aGUgY29udGFpbmVyLlxuICovXG5leHBvcnQgY2xhc3MgRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSB7XG4gIC8qKlxuICAgKiBBIHB1YmxpY2x5IGF2YWlsYWJsZSBEb2NrZXIgaW1hZ2UuXG4gICAqIEBleGFtcGxlICd1YnVudHU6bGF0ZXN0J1xuICAgKiBAcGFyYW0gaW1hZ2UgYSBEb2NrZXIgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlKGltYWdlOiBzdHJpbmcpOiBEZXZFbnZpcm9ubWVudERvY2tlckltYWdlIHtcbiAgICByZXR1cm4geyBpbWFnZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZWxhdGl2ZSBwYXRoIG9mIGEgRG9ja2VyZmlsZSB0aGF0IGRlZmluZXMgdGhlIGNvbnRhaW5lciBjb250ZW50cy5cbiAgICogQGV4YW1wbGUgJy5naXRwb2QuRG9ja2VyJ1xuICAgKiBAcGFyYW0gZG9ja2VyRmlsZSBhIHJlbGF0aXZlIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUZpbGUoZG9ja2VyRmlsZTogc3RyaW5nKTogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSB7XG4gICAgcmV0dXJuIHsgZG9ja2VyRmlsZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcHVibGljbHkgYXZhaWxhYmxlIERvY2tlciBpbWFnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlbGF0aXZlIHBhdGggb2YgYSBEb2NrZXJmaWxlIHRoYXQgZGVmaW5lcyB0aGUgY29udGFpbmVyIGNvbnRlbnRzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvY2tlckZpbGU/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogQWJzdHJhY3QgaW50ZXJmYWNlIGZvciBjb250YWluZXItYmFzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLCBzdWNoIGFzXG4gKiBHaXRwb2QgYW5kIEdpdEh1YiBDb2Rlc3BhY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEZXZFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBBZGQgYSBjdXN0b20gRG9ja2VyIGltYWdlIG9yIERvY2tlcmZpbGUgZm9yIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSBpbWFnZSBUaGUgRG9ja2VyIGltYWdlXG4gICAqL1xuICBhZGREb2NrZXJJbWFnZShpbWFnZTogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZHMgdGFza3MgdG8gcnVuIHdoZW4gdGhlIGNvbnRhaW5lciBzdGFydHMuXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrcyBUaGUgbmV3IHRhc2tzXG4gICAqL1xuICBhZGRUYXNrcyguLi50YXNrczogVGFza1tdKTogdm9pZDtcblxuICAvKipcbiAgICogQWRkcyBwb3J0cyB0aGF0IHNob3VsZCBiZSBleHBvc2VkIChmb3J3YXJkZWQpIGZyb20gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHBvcnRzIFRoZSBuZXcgcG9ydHNcbiAgICovXG4gIGFkZFBvcnRzKC4uLnBvcnRzOiBzdHJpbmdbXSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBsaXN0IG9mIFZTQ29kZSBleHRlbnNpb25zIHRoYXQgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkXG4gICAqIGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSBleHRlbnNpb25zIFRoZSBleHRlbnNpb24gSURzXG4gICAqL1xuICBhZGRWc2NvZGVFeHRlbnNpb25zKC4uLmV4dGVuc2lvbnM6IHN0cmluZ1tdKTogdm9pZDtcbn1cbiJdfQ==
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.DockerComposeService = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -8,6 +7,59 @@ const docker_compose_1 = require("./docker-compose");
8
7
  * A docker-compose service.
9
8
  */
10
9
  class DockerComposeService {
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerComposeService", version: "0.100.0" };
11
+ /**
12
+ * Name of the service.
13
+ */
14
+ serviceName;
15
+ /**
16
+ * Docker image.
17
+ */
18
+ image;
19
+ /**
20
+ * Docker image build instructions.
21
+ */
22
+ imageBuild;
23
+ /**
24
+ * Command to run in the container.
25
+ */
26
+ command;
27
+ /**
28
+ * Entrypoint to run in the container.
29
+ */
30
+ entrypoint;
31
+ /**
32
+ * Other services that this service depends on.
33
+ */
34
+ dependsOn;
35
+ /**
36
+ * Volumes mounted in the container.
37
+ */
38
+ volumes;
39
+ /**
40
+ * Networks mounted in the container.
41
+ */
42
+ networks;
43
+ /**
44
+ * Published ports.
45
+ */
46
+ ports;
47
+ /**
48
+ * Environment variables.
49
+ */
50
+ environment;
51
+ /**
52
+ * Attached labels.
53
+ */
54
+ labels;
55
+ /**
56
+ * Target platform
57
+ */
58
+ platform;
59
+ /**
60
+ * Run in privileged mode
61
+ */
62
+ privileged;
11
63
  constructor(serviceName, serviceDescription) {
12
64
  if ((!serviceDescription.imageBuild && !serviceDescription.image) ||
13
65
  (serviceDescription.imageBuild && serviceDescription.image)) {
@@ -75,6 +127,4 @@ class DockerComposeService {
75
127
  }
76
128
  }
77
129
  exports.DockerComposeService = DockerComposeService;
78
- _a = JSII_RTTI_SYMBOL_1;
79
- DockerComposeService[_a] = { fqn: "projen.DockerComposeService", version: "0.99.80" };
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWNvbXBvc2Utc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb2NrZXItY29tcG9zZS9kb2NrZXItY29tcG9zZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EscURBQWlEO0FBa0JqRDs7R0FFRztBQUNILE1BQWEsb0JBQW9CO0lBaUUvQixZQUNFLFdBQW1CLEVBQ25CLGtCQUFtRDtRQUVuRCxJQUNFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7WUFDN0QsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQzNELENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLGFBQWEsV0FBVyw0REFBNEQsQ0FDckYsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHLGtCQUFrQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPLENBQ1osYUFBcUIsRUFDckIsVUFBa0IsRUFDbEIsT0FBeUM7UUFFekMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQ2QsOEJBQWEsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FDOUQsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYyxDQUFDLElBQVksRUFBRSxLQUFhO1FBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZLENBQUMsV0FBc0M7UUFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxNQUFtQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLE9BQXFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7O0FBckpILG9EQXNKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRG9ja2VyQ29tcG9zZUJ1aWxkIH0gZnJvbSBcIi4vZG9ja2VyLWNvbXBvc2VcIjtcbmltcG9ydCB7IERvY2tlckNvbXBvc2UgfSBmcm9tIFwiLi9kb2NrZXItY29tcG9zZVwiO1xuaW1wb3J0IHR5cGUgeyBJRG9ja2VyQ29tcG9zZU5ldHdvcmtCaW5kaW5nIH0gZnJvbSBcIi4vZG9ja2VyLWNvbXBvc2UtbmV0d29ya1wiO1xuaW1wb3J0IHR5cGUge1xuICBEb2NrZXJDb21wb3NlUG9ydE1hcHBpbmdPcHRpb25zLFxuICBEb2NrZXJDb21wb3NlU2VydmljZVBvcnQsXG59IGZyb20gXCIuL2RvY2tlci1jb21wb3NlLXBvcnRcIjtcbmltcG9ydCB0eXBlIHsgSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nIH0gZnJvbSBcIi4vZG9ja2VyLWNvbXBvc2Utdm9sdW1lXCI7XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIHByb3ZpZGluZyB0aGUgbmFtZSBvZiBhIGRvY2tlciBjb21wb3NlIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURvY2tlckNvbXBvc2VTZXJ2aWNlTmFtZSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZG9ja2VyIGNvbXBvc2Ugc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBkb2NrZXItY29tcG9zZSBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgRG9ja2VyQ29tcG9zZVNlcnZpY2UgaW1wbGVtZW50cyBJRG9ja2VyQ29tcG9zZVNlcnZpY2VOYW1lIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNlcnZpY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRG9ja2VyIGltYWdlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2NrZXIgaW1hZ2UgYnVpbGQgaW5zdHJ1Y3Rpb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlQnVpbGQ/OiBEb2NrZXJDb21wb3NlQnVpbGQ7XG5cbiAgLyoqXG4gICAqIENvbW1hbmQgdG8gcnVuIGluIHRoZSBjb250YWluZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFbnRyeXBvaW50IHRvIHJ1biBpbiB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3RoZXIgc2VydmljZXMgdGhhdCB0aGlzIHNlcnZpY2UgZGVwZW5kcyBvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXBlbmRzT246IElEb2NrZXJDb21wb3NlU2VydmljZU5hbWVbXTtcblxuICAvKipcbiAgICogVm9sdW1lcyBtb3VudGVkIGluIHRoZSBjb250YWluZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdm9sdW1lczogSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nW107XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtzIG1vdW50ZWQgaW4gdGhlIGNvbnRhaW5lci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuZXR3b3JrczogSURvY2tlckNvbXBvc2VOZXR3b3JrQmluZGluZ1tdO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoZWQgcG9ydHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9ydHM6IERvY2tlckNvbXBvc2VTZXJ2aWNlUG9ydFtdO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVkIGxhYmVscy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsYWJlbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBUYXJnZXQgcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwbGF0Zm9ybT86IHN0cmluZztcblxuICAvKipcbiAgICogUnVuIGluIHByaXZpbGVnZWQgbW9kZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaXZpbGVnZWQ/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgc2VydmljZURlc2NyaXB0aW9uOiBEb2NrZXJDb21wb3NlU2VydmljZURlc2NyaXB0aW9uLFxuICApIHtcbiAgICBpZiAoXG4gICAgICAoIXNlcnZpY2VEZXNjcmlwdGlvbi5pbWFnZUJ1aWxkICYmICFzZXJ2aWNlRGVzY3JpcHRpb24uaW1hZ2UpIHx8XG4gICAgICAoc2VydmljZURlc2NyaXB0aW9uLmltYWdlQnVpbGQgJiYgc2VydmljZURlc2NyaXB0aW9uLmltYWdlKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQSBzZXJ2aWNlICR7c2VydmljZU5hbWV9IHJlcXVpcmVzIGV4YWN0bHkgb25lIG9mIGEgXFxgaW1hZ2VCdWlsZFxcYCBvciBcXGBpbWFnZVxcYCBrZXlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlcnZpY2VOYW1lID0gc2VydmljZU5hbWU7XG4gICAgdGhpcy5jb21tYW5kID0gc2VydmljZURlc2NyaXB0aW9uLmNvbW1hbmQ7XG4gICAgdGhpcy5pbWFnZSA9IHNlcnZpY2VEZXNjcmlwdGlvbi5pbWFnZTtcbiAgICB0aGlzLmltYWdlQnVpbGQgPSBzZXJ2aWNlRGVzY3JpcHRpb24uaW1hZ2VCdWlsZDtcbiAgICB0aGlzLmRlcGVuZHNPbiA9IHNlcnZpY2VEZXNjcmlwdGlvbi5kZXBlbmRzT24gPz8gW107XG4gICAgdGhpcy52b2x1bWVzID0gc2VydmljZURlc2NyaXB0aW9uLnZvbHVtZXMgPz8gW107XG4gICAgdGhpcy5uZXR3b3JrcyA9IHNlcnZpY2VEZXNjcmlwdGlvbi5uZXR3b3JrcyA/PyBbXTtcbiAgICB0aGlzLnBvcnRzID0gc2VydmljZURlc2NyaXB0aW9uLnBvcnRzID8/IFtdO1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBzZXJ2aWNlRGVzY3JpcHRpb24uZW52aXJvbm1lbnQgPz8ge307XG4gICAgdGhpcy5sYWJlbHMgPSBzZXJ2aWNlRGVzY3JpcHRpb24ubGFiZWxzID8/IHt9O1xuICAgIHRoaXMuZW50cnlwb2ludCA9IHNlcnZpY2VEZXNjcmlwdGlvbi5lbnRyeXBvaW50O1xuICAgIHRoaXMucGxhdGZvcm0gPSBzZXJ2aWNlRGVzY3JpcHRpb24ucGxhdGZvcm07XG4gICAgdGhpcy5wcml2aWxlZ2VkID0gc2VydmljZURlc2NyaXB0aW9uLnByaXZpbGVnZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcG9ydCBtYXBwaW5nXG4gICAqIEBwYXJhbSBwdWJsaXNoZWRQb3J0IFB1Ymxpc2hlZCBwb3J0IG51bWJlclxuICAgKiBAcGFyYW0gdGFyZ2V0UG9ydCBDb250YWluZXIncyBwb3J0IG51bWJlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBQb3J0IG1hcHBpbmcgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGFkZFBvcnQoXG4gICAgcHVibGlzaGVkUG9ydDogbnVtYmVyLFxuICAgIHRhcmdldFBvcnQ6IG51bWJlcixcbiAgICBvcHRpb25zPzogRG9ja2VyQ29tcG9zZVBvcnRNYXBwaW5nT3B0aW9ucyxcbiAgKSB7XG4gICAgdGhpcy5wb3J0cz8ucHVzaChcbiAgICAgIERvY2tlckNvbXBvc2UucG9ydE1hcHBpbmcocHVibGlzaGVkUG9ydCwgdGFyZ2V0UG9ydCwgb3B0aW9ucyksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICogQHBhcmFtIG5hbWUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlXG4gICAqL1xuICBwdWJsaWMgYWRkRW52aXJvbm1lbnQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5lbnZpcm9ubWVudFtuYW1lXSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgdGhlIHNlcnZpY2UgZGVwZW5kIG9uIGFub3RoZXIgc2VydmljZS5cbiAgICogQHBhcmFtIHNlcnZpY2VOYW1lXG4gICAqL1xuICBwdWJsaWMgYWRkRGVwZW5kc09uKHNlcnZpY2VOYW1lOiBJRG9ja2VyQ29tcG9zZVNlcnZpY2VOYW1lKSB7XG4gICAgdGhpcy5kZXBlbmRzT24ucHVzaChzZXJ2aWNlTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdm9sdW1lIHRvIHRoZSBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gdm9sdW1lXG4gICAqL1xuICBwdWJsaWMgYWRkVm9sdW1lKHZvbHVtZTogSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nKSB7XG4gICAgdGhpcy52b2x1bWVzLnB1c2godm9sdW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXR3b3JrIHRvIHRoZSBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gbmV0d29ya1xuICAgKi9cbiAgcHVibGljIGFkZE5ldHdvcmsobmV0d29yazogSURvY2tlckNvbXBvc2VOZXR3b3JrQmluZGluZykge1xuICAgIHRoaXMubmV0d29ya3MucHVzaChuZXR3b3JrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBsYWJlbFxuICAgKiBAcGFyYW0gbmFtZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICovXG4gIHB1YmxpYyBhZGRMYWJlbChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxhYmVsc1tuYW1lXSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRGVzY3JpcHRpb24gb2YgYSBkb2NrZXItY29tcG9zZS55bWwgc2VydmljZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDb21wb3NlU2VydmljZURlc2NyaXB0aW9uIHtcbiAgLyoqXG4gICAqIFVzZSBhIGRvY2tlciBpbWFnZS5cbiAgICogTm90ZTogWW91IG11c3Qgc3BlY2lmeSBlaXRoZXIgYGJ1aWxkYCBvciBgaW1hZ2VgIGtleS5cbiAgICogQHNlZSBpbWFnZUJ1aWxkXG4gICAqL1xuICByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYSBkb2NrZXIgaW1hZ2UuXG4gICAqIE5vdGU6IFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGBpbWFnZUJ1aWxkYCBvciBgaW1hZ2VgIGtleS5cbiAgICogQHNlZSBpbWFnZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VCdWlsZD86IERvY2tlckNvbXBvc2VCdWlsZDtcblxuICAvKipcbiAgICogUHJvdmlkZSBhIGNvbW1hbmQgdG8gdGhlIGRvY2tlciBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IC0gdXNlIHRoZSBjb250YWluZXIncyBkZWZhdWx0IGNvbW1hbmRcbiAgICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRW50cnlwb2ludCB0byBydW4gaW4gdGhlIGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTmFtZXMgb2Ygb3RoZXIgc2VydmljZXMgdGhpcyBzZXJ2aWNlIGRlcGVuZHMgb24uXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRzT24/OiBJRG9ja2VyQ29tcG9zZVNlcnZpY2VOYW1lW107XG5cbiAgLyoqXG4gICAqIE1vdW50IHNvbWUgdm9sdW1lcyBpbnRvIHRoZSBzZXJ2aWNlLlxuICAgKiBVc2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gY3JlYXRlIHZvbHVtZXM6XG4gICAqIEBzZWUgRG9ja2VyQ29tcG9zZS5iaW5kVm9sdW1lKCkgdG8gbW91bnQgYSBob3N0IHBhdGhcbiAgICogQHNlZSBEb2NrZXJDb21wb3NlLm5hbWVkVm9sdW1lKCkgdG8gY3JlYXRlICYgbW91bnQgYSBuYW1lZCB2b2x1bWVcbiAgICovXG4gIHJlYWRvbmx5IHZvbHVtZXM/OiBJRG9ja2VyQ29tcG9zZVZvbHVtZUJpbmRpbmdbXTtcblxuICAvKipcbiAgICogQWRkIHNvbWUgbmV0d29ya3MgdG8gdGhlIHNlcnZpY2UuXG4gICAqIEBzZWUgRG9ja2VyQ29tcG9zZS5uZXR3b3JrKCkgdG8gY3JlYXRlICYgbW91bnQgYSBuYW1lZCBuZXR3b3JrXG4gICAqL1xuICByZWFkb25seSBuZXR3b3Jrcz86IElEb2NrZXJDb21wb3NlTmV0d29ya0JpbmRpbmdbXTtcblxuICAvKipcbiAgICogTWFwIHNvbWUgcG9ydHMuXG4gICAqIEBkZWZhdWx0IC0gbm8gcG9ydHMgYXJlIG1hcHBlZFxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydHM/OiBEb2NrZXJDb21wb3NlU2VydmljZVBvcnRbXTtcblxuICAvKipcbiAgICogQWRkIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogQGRlZmF1bHQgLSBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEFkZCBsYWJlbHMuXG4gICAqIEBkZWZhdWx0IC0gbm8gbGFiZWxzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWxzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqXG4gICAqIEFkZCBwbGF0Zm9ybVxuICAgKiBAZGVmYXVsdCAtIG5vIHBsYXRmb3JtIGlzIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybT86IHN0cmluZztcblxuICAvKipcbiAgICogUnVuIGluIHByaXZpbGVnZWQgbW9kZVxuICAgKiBAZGVmYXVsdCAtIG5vIHByaXZpbGVnZWQgbW9kZSBmbGFnIGlzIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBwcml2aWxlZ2VkPzogYm9vbGVhbjtcbn1cbiJdfQ==
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWNvbXBvc2Utc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb2NrZXItY29tcG9zZS9kb2NrZXItY29tcG9zZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxxREFBaUQ7QUFrQmpEOztHQUVHO0FBQ0gsTUFBYSxvQkFBb0I7O0lBQy9COztPQUVHO0lBQ2EsV0FBVyxDQUFTO0lBRXBDOztPQUVHO0lBQ2EsS0FBSyxDQUFVO0lBRS9COztPQUVHO0lBQ2EsVUFBVSxDQUFzQjtJQUVoRDs7T0FFRztJQUNhLE9BQU8sQ0FBWTtJQUVuQzs7T0FFRztJQUNhLFVBQVUsQ0FBWTtJQUV0Qzs7T0FFRztJQUNhLFNBQVMsQ0FBOEI7SUFFdkQ7O09BRUc7SUFDYSxPQUFPLENBQWdDO0lBRXZEOztPQUVHO0lBQ2EsUUFBUSxDQUFpQztJQUV6RDs7T0FFRztJQUNhLEtBQUssQ0FBNkI7SUFFbEQ7O09BRUc7SUFDYSxXQUFXLENBQXlCO0lBRXBEOztPQUVHO0lBQ2EsTUFBTSxDQUF5QjtJQUMvQzs7T0FFRztJQUNhLFFBQVEsQ0FBVTtJQUVsQzs7T0FFRztJQUNhLFVBQVUsQ0FBVztJQUVyQyxZQUNFLFdBQW1CLEVBQ25CLGtCQUFtRDtRQUVuRCxJQUNFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7WUFDN0QsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQzNELENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLGFBQWEsV0FBVyw0REFBNEQsQ0FDckYsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHLGtCQUFrQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPLENBQ1osYUFBcUIsRUFDckIsVUFBa0IsRUFDbEIsT0FBeUM7UUFFekMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQ2QsOEJBQWEsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FDOUQsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYyxDQUFDLElBQVksRUFBRSxLQUFhO1FBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZLENBQUMsV0FBc0M7UUFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxNQUFtQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLE9BQXFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7O0FBckpILG9EQXNKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRG9ja2VyQ29tcG9zZUJ1aWxkIH0gZnJvbSBcIi4vZG9ja2VyLWNvbXBvc2VcIjtcbmltcG9ydCB7IERvY2tlckNvbXBvc2UgfSBmcm9tIFwiLi9kb2NrZXItY29tcG9zZVwiO1xuaW1wb3J0IHR5cGUgeyBJRG9ja2VyQ29tcG9zZU5ldHdvcmtCaW5kaW5nIH0gZnJvbSBcIi4vZG9ja2VyLWNvbXBvc2UtbmV0d29ya1wiO1xuaW1wb3J0IHR5cGUge1xuICBEb2NrZXJDb21wb3NlUG9ydE1hcHBpbmdPcHRpb25zLFxuICBEb2NrZXJDb21wb3NlU2VydmljZVBvcnQsXG59IGZyb20gXCIuL2RvY2tlci1jb21wb3NlLXBvcnRcIjtcbmltcG9ydCB0eXBlIHsgSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nIH0gZnJvbSBcIi4vZG9ja2VyLWNvbXBvc2Utdm9sdW1lXCI7XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIHByb3ZpZGluZyB0aGUgbmFtZSBvZiBhIGRvY2tlciBjb21wb3NlIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURvY2tlckNvbXBvc2VTZXJ2aWNlTmFtZSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZG9ja2VyIGNvbXBvc2Ugc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBkb2NrZXItY29tcG9zZSBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgRG9ja2VyQ29tcG9zZVNlcnZpY2UgaW1wbGVtZW50cyBJRG9ja2VyQ29tcG9zZVNlcnZpY2VOYW1lIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNlcnZpY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRG9ja2VyIGltYWdlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2NrZXIgaW1hZ2UgYnVpbGQgaW5zdHJ1Y3Rpb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlQnVpbGQ/OiBEb2NrZXJDb21wb3NlQnVpbGQ7XG5cbiAgLyoqXG4gICAqIENvbW1hbmQgdG8gcnVuIGluIHRoZSBjb250YWluZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFbnRyeXBvaW50IHRvIHJ1biBpbiB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3RoZXIgc2VydmljZXMgdGhhdCB0aGlzIHNlcnZpY2UgZGVwZW5kcyBvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXBlbmRzT246IElEb2NrZXJDb21wb3NlU2VydmljZU5hbWVbXTtcblxuICAvKipcbiAgICogVm9sdW1lcyBtb3VudGVkIGluIHRoZSBjb250YWluZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdm9sdW1lczogSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nW107XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtzIG1vdW50ZWQgaW4gdGhlIGNvbnRhaW5lci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuZXR3b3JrczogSURvY2tlckNvbXBvc2VOZXR3b3JrQmluZGluZ1tdO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoZWQgcG9ydHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9ydHM6IERvY2tlckNvbXBvc2VTZXJ2aWNlUG9ydFtdO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVkIGxhYmVscy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsYWJlbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBUYXJnZXQgcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwbGF0Zm9ybT86IHN0cmluZztcblxuICAvKipcbiAgICogUnVuIGluIHByaXZpbGVnZWQgbW9kZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaXZpbGVnZWQ/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgc2VydmljZURlc2NyaXB0aW9uOiBEb2NrZXJDb21wb3NlU2VydmljZURlc2NyaXB0aW9uLFxuICApIHtcbiAgICBpZiAoXG4gICAgICAoIXNlcnZpY2VEZXNjcmlwdGlvbi5pbWFnZUJ1aWxkICYmICFzZXJ2aWNlRGVzY3JpcHRpb24uaW1hZ2UpIHx8XG4gICAgICAoc2VydmljZURlc2NyaXB0aW9uLmltYWdlQnVpbGQgJiYgc2VydmljZURlc2NyaXB0aW9uLmltYWdlKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQSBzZXJ2aWNlICR7c2VydmljZU5hbWV9IHJlcXVpcmVzIGV4YWN0bHkgb25lIG9mIGEgXFxgaW1hZ2VCdWlsZFxcYCBvciBcXGBpbWFnZVxcYCBrZXlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlcnZpY2VOYW1lID0gc2VydmljZU5hbWU7XG4gICAgdGhpcy5jb21tYW5kID0gc2VydmljZURlc2NyaXB0aW9uLmNvbW1hbmQ7XG4gICAgdGhpcy5pbWFnZSA9IHNlcnZpY2VEZXNjcmlwdGlvbi5pbWFnZTtcbiAgICB0aGlzLmltYWdlQnVpbGQgPSBzZXJ2aWNlRGVzY3JpcHRpb24uaW1hZ2VCdWlsZDtcbiAgICB0aGlzLmRlcGVuZHNPbiA9IHNlcnZpY2VEZXNjcmlwdGlvbi5kZXBlbmRzT24gPz8gW107XG4gICAgdGhpcy52b2x1bWVzID0gc2VydmljZURlc2NyaXB0aW9uLnZvbHVtZXMgPz8gW107XG4gICAgdGhpcy5uZXR3b3JrcyA9IHNlcnZpY2VEZXNjcmlwdGlvbi5uZXR3b3JrcyA/PyBbXTtcbiAgICB0aGlzLnBvcnRzID0gc2VydmljZURlc2NyaXB0aW9uLnBvcnRzID8/IFtdO1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBzZXJ2aWNlRGVzY3JpcHRpb24uZW52aXJvbm1lbnQgPz8ge307XG4gICAgdGhpcy5sYWJlbHMgPSBzZXJ2aWNlRGVzY3JpcHRpb24ubGFiZWxzID8/IHt9O1xuICAgIHRoaXMuZW50cnlwb2ludCA9IHNlcnZpY2VEZXNjcmlwdGlvbi5lbnRyeXBvaW50O1xuICAgIHRoaXMucGxhdGZvcm0gPSBzZXJ2aWNlRGVzY3JpcHRpb24ucGxhdGZvcm07XG4gICAgdGhpcy5wcml2aWxlZ2VkID0gc2VydmljZURlc2NyaXB0aW9uLnByaXZpbGVnZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcG9ydCBtYXBwaW5nXG4gICAqIEBwYXJhbSBwdWJsaXNoZWRQb3J0IFB1Ymxpc2hlZCBwb3J0IG51bWJlclxuICAgKiBAcGFyYW0gdGFyZ2V0UG9ydCBDb250YWluZXIncyBwb3J0IG51bWJlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBQb3J0IG1hcHBpbmcgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGFkZFBvcnQoXG4gICAgcHVibGlzaGVkUG9ydDogbnVtYmVyLFxuICAgIHRhcmdldFBvcnQ6IG51bWJlcixcbiAgICBvcHRpb25zPzogRG9ja2VyQ29tcG9zZVBvcnRNYXBwaW5nT3B0aW9ucyxcbiAgKSB7XG4gICAgdGhpcy5wb3J0cz8ucHVzaChcbiAgICAgIERvY2tlckNvbXBvc2UucG9ydE1hcHBpbmcocHVibGlzaGVkUG9ydCwgdGFyZ2V0UG9ydCwgb3B0aW9ucyksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICogQHBhcmFtIG5hbWUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlXG4gICAqL1xuICBwdWJsaWMgYWRkRW52aXJvbm1lbnQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5lbnZpcm9ubWVudFtuYW1lXSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgdGhlIHNlcnZpY2UgZGVwZW5kIG9uIGFub3RoZXIgc2VydmljZS5cbiAgICogQHBhcmFtIHNlcnZpY2VOYW1lXG4gICAqL1xuICBwdWJsaWMgYWRkRGVwZW5kc09uKHNlcnZpY2VOYW1lOiBJRG9ja2VyQ29tcG9zZVNlcnZpY2VOYW1lKSB7XG4gICAgdGhpcy5kZXBlbmRzT24ucHVzaChzZXJ2aWNlTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdm9sdW1lIHRvIHRoZSBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gdm9sdW1lXG4gICAqL1xuICBwdWJsaWMgYWRkVm9sdW1lKHZvbHVtZTogSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nKSB7XG4gICAgdGhpcy52b2x1bWVzLnB1c2godm9sdW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXR3b3JrIHRvIHRoZSBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gbmV0d29ya1xuICAgKi9cbiAgcHVibGljIGFkZE5ldHdvcmsobmV0d29yazogSURvY2tlckNvbXBvc2VOZXR3b3JrQmluZGluZykge1xuICAgIHRoaXMubmV0d29ya3MucHVzaChuZXR3b3JrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBsYWJlbFxuICAgKiBAcGFyYW0gbmFtZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICovXG4gIHB1YmxpYyBhZGRMYWJlbChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxhYmVsc1tuYW1lXSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRGVzY3JpcHRpb24gb2YgYSBkb2NrZXItY29tcG9zZS55bWwgc2VydmljZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDb21wb3NlU2VydmljZURlc2NyaXB0aW9uIHtcbiAgLyoqXG4gICAqIFVzZSBhIGRvY2tlciBpbWFnZS5cbiAgICogTm90ZTogWW91IG11c3Qgc3BlY2lmeSBlaXRoZXIgYGJ1aWxkYCBvciBgaW1hZ2VgIGtleS5cbiAgICogQHNlZSBpbWFnZUJ1aWxkXG4gICAqL1xuICByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYSBkb2NrZXIgaW1hZ2UuXG4gICAqIE5vdGU6IFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGBpbWFnZUJ1aWxkYCBvciBgaW1hZ2VgIGtleS5cbiAgICogQHNlZSBpbWFnZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VCdWlsZD86IERvY2tlckNvbXBvc2VCdWlsZDtcblxuICAvKipcbiAgICogUHJvdmlkZSBhIGNvbW1hbmQgdG8gdGhlIGRvY2tlciBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IC0gdXNlIHRoZSBjb250YWluZXIncyBkZWZhdWx0IGNvbW1hbmRcbiAgICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRW50cnlwb2ludCB0byBydW4gaW4gdGhlIGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTmFtZXMgb2Ygb3RoZXIgc2VydmljZXMgdGhpcyBzZXJ2aWNlIGRlcGVuZHMgb24uXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRzT24/OiBJRG9ja2VyQ29tcG9zZVNlcnZpY2VOYW1lW107XG5cbiAgLyoqXG4gICAqIE1vdW50IHNvbWUgdm9sdW1lcyBpbnRvIHRoZSBzZXJ2aWNlLlxuICAgKiBVc2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gY3JlYXRlIHZvbHVtZXM6XG4gICAqIEBzZWUgRG9ja2VyQ29tcG9zZS5iaW5kVm9sdW1lKCkgdG8gbW91bnQgYSBob3N0IHBhdGhcbiAgICogQHNlZSBEb2NrZXJDb21wb3NlLm5hbWVkVm9sdW1lKCkgdG8gY3JlYXRlICYgbW91bnQgYSBuYW1lZCB2b2x1bWVcbiAgICovXG4gIHJlYWRvbmx5IHZvbHVtZXM/OiBJRG9ja2VyQ29tcG9zZVZvbHVtZUJpbmRpbmdbXTtcblxuICAvKipcbiAgICogQWRkIHNvbWUgbmV0d29ya3MgdG8gdGhlIHNlcnZpY2UuXG4gICAqIEBzZWUgRG9ja2VyQ29tcG9zZS5uZXR3b3JrKCkgdG8gY3JlYXRlICYgbW91bnQgYSBuYW1lZCBuZXR3b3JrXG4gICAqL1xuICByZWFkb25seSBuZXR3b3Jrcz86IElEb2NrZXJDb21wb3NlTmV0d29ya0JpbmRpbmdbXTtcblxuICAvKipcbiAgICogTWFwIHNvbWUgcG9ydHMuXG4gICAqIEBkZWZhdWx0IC0gbm8gcG9ydHMgYXJlIG1hcHBlZFxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydHM/OiBEb2NrZXJDb21wb3NlU2VydmljZVBvcnRbXTtcblxuICAvKipcbiAgICogQWRkIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogQGRlZmF1bHQgLSBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEFkZCBsYWJlbHMuXG4gICAqIEBkZWZhdWx0IC0gbm8gbGFiZWxzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWxzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqXG4gICAqIEFkZCBwbGF0Zm9ybVxuICAgKiBAZGVmYXVsdCAtIG5vIHBsYXRmb3JtIGlzIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybT86IHN0cmluZztcblxuICAvKipcbiAgICogUnVuIGluIHByaXZpbGVnZWQgbW9kZVxuICAgKiBAZGVmYXVsdCAtIG5vIHByaXZpbGVnZWQgbW9kZSBmbGFnIGlzIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBwcml2aWxlZ2VkPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.DockerCompose = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -12,6 +11,7 @@ const yaml_1 = require("../yaml");
12
11
  * Create a docker-compose YAML file.
13
12
  */
14
13
  class DockerCompose extends component_1.Component {
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerCompose", version: "0.100.0" };
15
15
  /**
16
16
  * Depends on a service name.
17
17
  */
@@ -88,6 +88,12 @@ class DockerCompose extends component_1.Component {
88
88
  },
89
89
  };
90
90
  }
91
+ /**
92
+ * The Docker Compose file
93
+ */
94
+ file;
95
+ services;
96
+ version;
91
97
  constructor(project, props) {
92
98
  super(project);
93
99
  const nameSuffix = props?.nameSuffix ? `${props.nameSuffix}.yml` : "yml";
@@ -128,6 +134,4 @@ class DockerCompose extends component_1.Component {
128
134
  }
129
135
  }
130
136
  exports.DockerCompose = DockerCompose;
131
- _a = JSII_RTTI_SYMBOL_1;
132
- DockerCompose[_a] = { fqn: "projen.DockerCompose", version: "0.99.80" };
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWNvbXBvc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZG9ja2VyLWNvbXBvc2UvZG9ja2VyLWNvbXBvc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFTQSwrREFBOEQ7QUFDOUQsbUVBQWtFO0FBS2xFLHFFQUFnRTtBQU9oRSw0Q0FBeUM7QUFFekMsa0NBQW1DO0FBMkJuQzs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLHFCQUFTO0lBQzFDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFtQjtRQUNwQyxPQUFPO1lBQ0wsV0FBVztTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUNoQixhQUFxQixFQUNyQixVQUFrQixFQUNsQixPQUF5QztRQUV6QyxNQUFNLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLDJDQUFxQixDQUFDLEdBQUcsQ0FBQztRQUVoRSxPQUFPO1lBQ0wsTUFBTSxFQUFFLFVBQVU7WUFDbEIsU0FBUyxFQUFFLGFBQWE7WUFDeEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUNmLFVBQWtCLEVBQ2xCLFVBQWtCO1FBRWxCLE9BQU87WUFDTCxJQUFJLENBQUMsV0FBdUM7Z0JBQzFDLE9BQU87b0JBQ0wsSUFBSSxFQUFFLE1BQU07b0JBQ1osTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLE1BQU0sRUFBRSxVQUFVO2lCQUNuQixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUNoQixVQUFrQixFQUNsQixVQUFrQixFQUNsQixVQUFxQyxFQUFFO1FBRXZDLE9BQU87WUFDTCxJQUFJLENBQUMsVUFBc0M7Z0JBQ3pDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRXZELE9BQU87b0JBQ0wsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLE1BQU0sRUFBRSxVQUFVO2lCQUNuQixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQ1osV0FBbUIsRUFDbkIsVUFBc0MsRUFBRTtRQUV4QyxPQUFPO1lBQ0wsSUFBSSxDQUFDLFdBQXdDO2dCQUMzQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUUxRCxPQUFPLFdBQVcsQ0FBQztZQUNyQixDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFVRCxZQUFZLE9BQWdCLEVBQUUsS0FBMEI7UUFDdEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFNLENBQUMsVUFBVSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMxRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZUFBUSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsVUFBVSxFQUFFLEVBQUU7WUFDaEUsU0FBUyxFQUFFLElBQUk7WUFDZixRQUFRLEVBQUUsSUFBSTtZQUNkLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUU7U0FDM0MsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLEVBQUUsYUFBYSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU0sS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVuQiwwREFBMEQ7UUFDMUQsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDOUMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ3pFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUNmLFdBQW1CLEVBQ25CLFdBQTRDO1FBRTVDLE1BQU0sT0FBTyxHQUFHLElBQUksNkNBQW9CLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBQ3JDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILHdCQUF3QjtRQUN0QixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELE9BQU8sSUFBQSwrQ0FBdUIsRUFBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDOztBQXpKSCxzQ0EwSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIERvY2tlckNvbXBvc2VOZXR3b3JrQ29uZmlnLFxuICBJRG9ja2VyQ29tcG9zZU5ldHdvcmtCaW5kaW5nLFxuICBJRG9ja2VyQ29tcG9zZU5ldHdvcmtDb25maWcsXG59IGZyb20gXCIuL2RvY2tlci1jb21wb3NlLW5ldHdvcmtcIjtcbmltcG9ydCB0eXBlIHtcbiAgRG9ja2VyQ29tcG9zZVBvcnRNYXBwaW5nT3B0aW9ucyxcbiAgRG9ja2VyQ29tcG9zZVNlcnZpY2VQb3J0LFxufSBmcm9tIFwiLi9kb2NrZXItY29tcG9zZS1wb3J0XCI7XG5pbXBvcnQgeyBEb2NrZXJDb21wb3NlUHJvdG9jb2wgfSBmcm9tIFwiLi9kb2NrZXItY29tcG9zZS1wb3J0XCI7XG5pbXBvcnQgeyByZW5kZXJEb2NrZXJDb21wb3NlRmlsZSB9IGZyb20gXCIuL2RvY2tlci1jb21wb3NlLXJlbmRlclwiO1xuaW1wb3J0IHR5cGUge1xuICBEb2NrZXJDb21wb3NlU2VydmljZURlc2NyaXB0aW9uLFxuICBJRG9ja2VyQ29tcG9zZVNlcnZpY2VOYW1lLFxufSBmcm9tIFwiLi9kb2NrZXItY29tcG9zZS1zZXJ2aWNlXCI7XG5pbXBvcnQgeyBEb2NrZXJDb21wb3NlU2VydmljZSB9IGZyb20gXCIuL2RvY2tlci1jb21wb3NlLXNlcnZpY2VcIjtcbmltcG9ydCB0eXBlIHtcbiAgRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZyxcbiAgRG9ja2VyQ29tcG9zZVZvbHVtZU1vdW50LFxuICBJRG9ja2VyQ29tcG9zZVZvbHVtZUJpbmRpbmcsXG4gIElEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnLFxufSBmcm9tIFwiLi9kb2NrZXItY29tcG9zZS12b2x1bWVcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBZYW1sRmlsZSB9IGZyb20gXCIuLi95YW1sXCI7XG5cbi8qKlxuICogUHJvcHMgZm9yIERvY2tlckNvbXBvc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyQ29tcG9zZVByb3BzIHtcbiAgLyoqXG4gICAqIEEgbmFtZSB0byBhZGQgdG8gdGhlIGRvY2tlci1jb21wb3NlLnltbCBmaWxlbmFtZS5cbiAgICogQGV4YW1wbGUgJ215bmFtZScgeWllbGRzICdkb2NrZXItY29tcG9zZS5teW5hbWUueW1sJ1xuICAgKiBAZGVmYXVsdCAtIG5vIG5hbWUgaXMgYWRkZWRcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVTdWZmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERvY2tlciBDb21wb3NlIHNjaGVtYSB2ZXJzaW9uIGRvIGJlIHVzZWRcbiAgICogQGRlZmF1bHQgLSBubyB2ZXJzaW9uIGlzIHByb3ZpZGVkXG4gICAqIEBkZXByZWNhdGVkIC0gVGhlIHRvcCBsZXZlbCBgdmVyc2lvbmAgZmllbGQgaXMgb2Jzb2xldGUgcGVyIHRoZSBDb21wb3NlIFNwZWNpZmljYXRpb24uXG4gICAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vY29tcG9zZS1zcGVjL2NvbXBvc2Utc3BlYy9ibG9iL21hc3Rlci9zcGVjLm1kI3ZlcnNpb24tYW5kLW5hbWUtdG9wLWxldmVsLWVsZW1lbnRzIENvbXBvc2UgU3BlY2lmaWNhdGlvbn1cbiAgICovXG4gIHJlYWRvbmx5IHNjaGVtYVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlcnZpY2UgZGVzY3JpcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZXM/OiBSZWNvcmQ8c3RyaW5nLCBEb2NrZXJDb21wb3NlU2VydmljZURlc2NyaXB0aW9uPjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBkb2NrZXItY29tcG9zZSBZQU1MIGZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEb2NrZXJDb21wb3NlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIERlcGVuZHMgb24gYSBzZXJ2aWNlIG5hbWUuXG4gICAqL1xuICBzdGF0aWMgc2VydmljZU5hbWUoc2VydmljZU5hbWU6IHN0cmluZyk6IElEb2NrZXJDb21wb3NlU2VydmljZU5hbWUge1xuICAgIHJldHVybiB7XG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHBvcnQgbWFwcGluZy5cbiAgICogQHBhcmFtIHB1Ymxpc2hlZFBvcnQgUHVibGlzaGVkIHBvcnQgbnVtYmVyXG4gICAqIEBwYXJhbSB0YXJnZXRQb3J0IENvbnRhaW5lcidzIHBvcnQgbnVtYmVyXG4gICAqIEBwYXJhbSBvcHRpb25zIFBvcnQgbWFwcGluZyBvcHRpb25zXG4gICAqL1xuICBzdGF0aWMgcG9ydE1hcHBpbmcoXG4gICAgcHVibGlzaGVkUG9ydDogbnVtYmVyLFxuICAgIHRhcmdldFBvcnQ6IG51bWJlcixcbiAgICBvcHRpb25zPzogRG9ja2VyQ29tcG9zZVBvcnRNYXBwaW5nT3B0aW9ucyxcbiAgKTogRG9ja2VyQ29tcG9zZVNlcnZpY2VQb3J0IHtcbiAgICBjb25zdCBwcm90b2NvbCA9IG9wdGlvbnM/LnByb3RvY29sID8/IERvY2tlckNvbXBvc2VQcm90b2NvbC5UQ1A7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiB0YXJnZXRQb3J0LFxuICAgICAgcHVibGlzaGVkOiBwdWJsaXNoZWRQb3J0LFxuICAgICAgcHJvdG9jb2w6IHByb3RvY29sLFxuICAgICAgbW9kZTogXCJob3N0XCIsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBiaW5kIHZvbHVtZSB0aGF0IGJpbmRzIGEgaG9zdCBwYXRoIHRvIHRoZSB0YXJnZXQgcGF0aCBpbiB0aGUgY29udGFpbmVyLlxuICAgKiBAcGFyYW0gc291cmNlUGF0aCBIb3N0IHBhdGggbmFtZVxuICAgKiBAcGFyYW0gdGFyZ2V0UGF0aCBUYXJnZXQgcGF0aCBuYW1lXG4gICAqL1xuICBzdGF0aWMgYmluZFZvbHVtZShcbiAgICBzb3VyY2VQYXRoOiBzdHJpbmcsXG4gICAgdGFyZ2V0UGF0aDogc3RyaW5nLFxuICApOiBJRG9ja2VyQ29tcG9zZVZvbHVtZUJpbmRpbmcge1xuICAgIHJldHVybiB7XG4gICAgICBiaW5kKF92b2x1bWVJbmZvOiBJRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZyk6IERvY2tlckNvbXBvc2VWb2x1bWVNb3VudCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJiaW5kXCIsXG4gICAgICAgICAgc291cmNlOiBzb3VyY2VQYXRoLFxuICAgICAgICAgIHRhcmdldDogdGFyZ2V0UGF0aCxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuYW1lZCB2b2x1bWUgYW5kIG1vdW50IGl0IHRvIHRoZSB0YXJnZXQgcGF0aC4gSWYgeW91IHVzZSB0aGlzXG4gICAqIG5hbWVkIHZvbHVtZSBpbiBzZXZlcmFsIHNlcnZpY2VzLCB0aGUgdm9sdW1lIHdpbGwgYmUgc2hhcmVkLiBJbiB0aGlzXG4gICAqIGNhc2UsIHRoZSB2b2x1bWUgY29uZmlndXJhdGlvbiBvZiB0aGUgZmlyc3QtcHJvdmlkZWQgb3B0aW9ucyBhcmUgdXNlZC5cbiAgICpcbiAgICogQHBhcmFtIHZvbHVtZU5hbWUgTmFtZSBvZiB0aGUgdm9sdW1lXG4gICAqIEBwYXJhbSB0YXJnZXRQYXRoIFRhcmdldCBwYXRoXG4gICAqIEBwYXJhbSBvcHRpb25zIHZvbHVtZSBjb25maWd1cmF0aW9uIChkZWZhdWx0OiBkb2NrZXIgY29tcG9zZSBkZWZhdWx0cylcbiAgICovXG4gIHN0YXRpYyBuYW1lZFZvbHVtZShcbiAgICB2b2x1bWVOYW1lOiBzdHJpbmcsXG4gICAgdGFyZ2V0UGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IERvY2tlckNvbXBvc2VWb2x1bWVDb25maWcgPSB7fSxcbiAgKTogSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nIHtcbiAgICByZXR1cm4ge1xuICAgICAgYmluZCh2b2x1bWVJbmZvOiBJRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZyk6IERvY2tlckNvbXBvc2VWb2x1bWVNb3VudCB7XG4gICAgICAgIHZvbHVtZUluZm8uYWRkVm9sdW1lQ29uZmlndXJhdGlvbih2b2x1bWVOYW1lLCBvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwidm9sdW1lXCIsXG4gICAgICAgICAgc291cmNlOiB2b2x1bWVOYW1lLFxuICAgICAgICAgIHRhcmdldDogdGFyZ2V0UGF0aCxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuYW1lZCBuZXR3b3JrIGFuZCBtb3VudCBpdCB0byB0aGUgdGFyZ2V0IHBhdGguIElmIHlvdSB1c2UgdGhpc1xuICAgKiBuYW1lZCBuZXR3b3JrIGluIHNldmVyYWwgc2VydmljZXMsIHRoZSBuZXR3b3JrIHdpbGwgYmUgc2hhcmVkLiBJbiB0aGlzXG4gICAqIGNhc2UsIHRoZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGZpcnN0LXByb3ZpZGVkIG9wdGlvbnMgYXJlIHVzZWQuXG4gICAqXG4gICAqIEBwYXJhbSBuZXR3b3JrTmFtZSBOYW1lIG9mIHRoZSBuZXR3b3JrXG4gICAqIEBwYXJhbSBvcHRpb25zIG5ldHdvcmsgY29uZmlndXJhdGlvblxuICAgKi9cbiAgc3RhdGljIG5ldHdvcmsoXG4gICAgbmV0d29ya05hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBEb2NrZXJDb21wb3NlTmV0d29ya0NvbmZpZyA9IHt9LFxuICApOiBJRG9ja2VyQ29tcG9zZU5ldHdvcmtCaW5kaW5nIHtcbiAgICByZXR1cm4ge1xuICAgICAgYmluZChuZXR3b3JrSW5mbzogSURvY2tlckNvbXBvc2VOZXR3b3JrQ29uZmlnKTogc3RyaW5nIHtcbiAgICAgICAgbmV0d29ya0luZm8uYWRkTmV0d29ya0NvbmZpZ3VyYXRpb24obmV0d29ya05hbWUsIG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiBuZXR3b3JrTmFtZTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgRG9ja2VyIENvbXBvc2UgZmlsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IFlhbWxGaWxlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZXM6IFJlY29yZDxzdHJpbmcsIERvY2tlckNvbXBvc2VTZXJ2aWNlPjtcbiAgcHJpdmF0ZSByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHByb3BzPzogRG9ja2VyQ29tcG9zZVByb3BzKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBjb25zdCBuYW1lU3VmZml4ID0gcHJvcHM/Lm5hbWVTdWZmaXggPyBgJHtwcm9wcyEubmFtZVN1ZmZpeH0ueW1sYCA6IFwieW1sXCI7XG4gICAgdGhpcy5maWxlID0gbmV3IFlhbWxGaWxlKHByb2plY3QsIGBkb2NrZXItY29tcG9zZS4ke25hbWVTdWZmaXh9YCwge1xuICAgICAgY29tbWl0dGVkOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBvYmo6ICgpID0+IHRoaXMuX3N5bnRoZXNpemVEb2NrZXJDb21wb3NlKCksXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHM/LnNjaGVtYVZlcnNpb24gJiYgIXBhcnNlRmxvYXQocHJvcHMuc2NoZW1hVmVyc2lvbikpIHtcbiAgICAgIHRocm93IEVycm9yKFwiVmVyc2lvbiB0YWcgbmVlZHMgdG8gYmUgYSBudW1iZXJcIik7XG4gICAgfVxuICAgIHRoaXMudmVyc2lvbiA9IHByb3BzPy5zY2hlbWFWZXJzaW9uO1xuICAgIHRoaXMuc2VydmljZXMgPSB7fTtcblxuICAgIC8vIEFkZCB0aGUgc2VydmljZXMgcHJvdmlkZWQgdmlhIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudC5cbiAgICBjb25zdCBpbml0aWFsU2VydmljZXMgPSBwcm9wcz8uc2VydmljZXMgPz8ge307XG4gICAgZm9yIChjb25zdCBbbmFtZSwgc2VydmljZURlc2NyaXB0aW9uXSBvZiBPYmplY3QuZW50cmllcyhpbml0aWFsU2VydmljZXMpKSB7XG4gICAgICB0aGlzLmFkZFNlcnZpY2UobmFtZSwgc2VydmljZURlc2NyaXB0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgc2VydmljZSB0byB0aGUgZG9ja2VyLWNvbXBvc2UgZmlsZS5cbiAgICogQHBhcmFtIHNlcnZpY2VOYW1lIG5hbWUgb2YgdGhlIHNlcnZpY2VcbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uIGEgc2VydmljZSBkZXNjcmlwdGlvblxuICAgKi9cbiAgcHVibGljIGFkZFNlcnZpY2UoXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbjogRG9ja2VyQ29tcG9zZVNlcnZpY2VEZXNjcmlwdGlvbixcbiAgKTogRG9ja2VyQ29tcG9zZVNlcnZpY2Uge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBuZXcgRG9ja2VyQ29tcG9zZVNlcnZpY2Uoc2VydmljZU5hbWUsIGRlc2NyaXB0aW9uKTtcbiAgICB0aGlzLnNlcnZpY2VzW3NlcnZpY2VOYW1lXSA9IHNlcnZpY2U7XG4gICAgcmV0dXJuIHNlcnZpY2U7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfc3ludGhlc2l6ZURvY2tlckNvbXBvc2UoKTogb2JqZWN0IHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zZXJ2aWNlcykubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEb2NrZXJDb21wb3NlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBzZXJ2aWNlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiByZW5kZXJEb2NrZXJDb21wb3NlRmlsZSh0aGlzLnNlcnZpY2VzLCB0aGlzLnZlcnNpb24pO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYXJndW1lbnRzIGZvciBjcmVhdGluZyBhIGRvY2tlciBpbWFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDb21wb3NlQnVpbGQge1xuICAvKipcbiAgICogRG9ja2VyIGJ1aWxkIGNvbnRleHQgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGRvY2tlcmZpbGUgdG8gYnVpbGQgZnJvbS5cbiAgICogQGRlZmF1bHQgXCJEb2NrZXJmaWxlXCJcbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlcmZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3MuXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBhcmUgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGFyZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuIl19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWNvbXBvc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZG9ja2VyLWNvbXBvc2UvZG9ja2VyLWNvbXBvc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVNBLCtEQUE4RDtBQUM5RCxtRUFBa0U7QUFLbEUscUVBQWdFO0FBT2hFLDRDQUF5QztBQUV6QyxrQ0FBbUM7QUEyQm5DOztHQUVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEscUJBQVM7O0lBQzFDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFtQjtRQUNwQyxPQUFPO1lBQ0wsV0FBVztTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUNoQixhQUFxQixFQUNyQixVQUFrQixFQUNsQixPQUF5QztRQUV6QyxNQUFNLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLDJDQUFxQixDQUFDLEdBQUcsQ0FBQztRQUVoRSxPQUFPO1lBQ0wsTUFBTSxFQUFFLFVBQVU7WUFDbEIsU0FBUyxFQUFFLGFBQWE7WUFDeEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUNmLFVBQWtCLEVBQ2xCLFVBQWtCO1FBRWxCLE9BQU87WUFDTCxJQUFJLENBQUMsV0FBdUM7Z0JBQzFDLE9BQU87b0JBQ0wsSUFBSSxFQUFFLE1BQU07b0JBQ1osTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLE1BQU0sRUFBRSxVQUFVO2lCQUNuQixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUNoQixVQUFrQixFQUNsQixVQUFrQixFQUNsQixVQUFxQyxFQUFFO1FBRXZDLE9BQU87WUFDTCxJQUFJLENBQUMsVUFBc0M7Z0JBQ3pDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRXZELE9BQU87b0JBQ0wsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLE1BQU0sRUFBRSxVQUFVO2lCQUNuQixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQ1osV0FBbUIsRUFDbkIsVUFBc0MsRUFBRTtRQUV4QyxPQUFPO1lBQ0wsSUFBSSxDQUFDLFdBQXdDO2dCQUMzQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUUxRCxPQUFPLFdBQVcsQ0FBQztZQUNyQixDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNhLElBQUksQ0FBVztJQUVkLFFBQVEsQ0FBdUM7SUFDL0MsT0FBTyxDQUFVO0lBRWxDLFlBQVksT0FBZ0IsRUFBRSxLQUEwQjtRQUN0RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQU0sQ0FBQyxVQUFVLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxlQUFRLENBQUMsT0FBTyxFQUFFLGtCQUFrQixVQUFVLEVBQUUsRUFBRTtZQUNoRSxTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRSxJQUFJO1lBQ2QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtTQUMzQyxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssRUFBRSxhQUFhLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDN0QsTUFBTSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLEVBQUUsYUFBYSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBRW5CLDBEQUEwRDtRQUMxRCxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxVQUFVLENBQ2YsV0FBbUIsRUFDbkIsV0FBNEM7UUFFNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSw2Q0FBb0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxPQUFPLENBQUM7UUFDckMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsd0JBQXdCO1FBQ3RCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsT0FBTyxJQUFBLCtDQUF1QixFQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7O0FBekpILHNDQTBKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRG9ja2VyQ29tcG9zZU5ldHdvcmtDb25maWcsXG4gIElEb2NrZXJDb21wb3NlTmV0d29ya0JpbmRpbmcsXG4gIElEb2NrZXJDb21wb3NlTmV0d29ya0NvbmZpZyxcbn0gZnJvbSBcIi4vZG9ja2VyLWNvbXBvc2UtbmV0d29ya1wiO1xuaW1wb3J0IHR5cGUge1xuICBEb2NrZXJDb21wb3NlUG9ydE1hcHBpbmdPcHRpb25zLFxuICBEb2NrZXJDb21wb3NlU2VydmljZVBvcnQsXG59IGZyb20gXCIuL2RvY2tlci1jb21wb3NlLXBvcnRcIjtcbmltcG9ydCB7IERvY2tlckNvbXBvc2VQcm90b2NvbCB9IGZyb20gXCIuL2RvY2tlci1jb21wb3NlLXBvcnRcIjtcbmltcG9ydCB7IHJlbmRlckRvY2tlckNvbXBvc2VGaWxlIH0gZnJvbSBcIi4vZG9ja2VyLWNvbXBvc2UtcmVuZGVyXCI7XG5pbXBvcnQgdHlwZSB7XG4gIERvY2tlckNvbXBvc2VTZXJ2aWNlRGVzY3JpcHRpb24sXG4gIElEb2NrZXJDb21wb3NlU2VydmljZU5hbWUsXG59IGZyb20gXCIuL2RvY2tlci1jb21wb3NlLXNlcnZpY2VcIjtcbmltcG9ydCB7IERvY2tlckNvbXBvc2VTZXJ2aWNlIH0gZnJvbSBcIi4vZG9ja2VyLWNvbXBvc2Utc2VydmljZVwiO1xuaW1wb3J0IHR5cGUge1xuICBEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnLFxuICBEb2NrZXJDb21wb3NlVm9sdW1lTW91bnQsXG4gIElEb2NrZXJDb21wb3NlVm9sdW1lQmluZGluZyxcbiAgSURvY2tlckNvbXBvc2VWb2x1bWVDb25maWcsXG59IGZyb20gXCIuL2RvY2tlci1jb21wb3NlLXZvbHVtZVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB7IFlhbWxGaWxlIH0gZnJvbSBcIi4uL3lhbWxcIjtcblxuLyoqXG4gKiBQcm9wcyBmb3IgRG9ja2VyQ29tcG9zZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDb21wb3NlUHJvcHMge1xuICAvKipcbiAgICogQSBuYW1lIHRvIGFkZCB0byB0aGUgZG9ja2VyLWNvbXBvc2UueW1sIGZpbGVuYW1lLlxuICAgKiBAZXhhbXBsZSAnbXluYW1lJyB5aWVsZHMgJ2RvY2tlci1jb21wb3NlLm15bmFtZS55bWwnXG4gICAqIEBkZWZhdWx0IC0gbm8gbmFtZSBpcyBhZGRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZVN1ZmZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogRG9ja2VyIENvbXBvc2Ugc2NoZW1hIHZlcnNpb24gZG8gYmUgdXNlZFxuICAgKiBAZGVmYXVsdCAtIG5vIHZlcnNpb24gaXMgcHJvdmlkZWRcbiAgICogQGRlcHJlY2F0ZWQgLSBUaGUgdG9wIGxldmVsIGB2ZXJzaW9uYCBmaWVsZCBpcyBvYnNvbGV0ZSBwZXIgdGhlIENvbXBvc2UgU3BlY2lmaWNhdGlvbi5cbiAgICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21wb3NlLXNwZWMvY29tcG9zZS1zcGVjL2Jsb2IvbWFzdGVyL3NwZWMubWQjdmVyc2lvbi1hbmQtbmFtZS10b3AtbGV2ZWwtZWxlbWVudHMgQ29tcG9zZSBTcGVjaWZpY2F0aW9ufVxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZW1hVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogU2VydmljZSBkZXNjcmlwdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlcz86IFJlY29yZDxzdHJpbmcsIERvY2tlckNvbXBvc2VTZXJ2aWNlRGVzY3JpcHRpb24+O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGRvY2tlci1jb21wb3NlIFlBTUwgZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERvY2tlckNvbXBvc2UgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogRGVwZW5kcyBvbiBhIHNlcnZpY2UgbmFtZS5cbiAgICovXG4gIHN0YXRpYyBzZXJ2aWNlTmFtZShzZXJ2aWNlTmFtZTogc3RyaW5nKTogSURvY2tlckNvbXBvc2VTZXJ2aWNlTmFtZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgcG9ydCBtYXBwaW5nLlxuICAgKiBAcGFyYW0gcHVibGlzaGVkUG9ydCBQdWJsaXNoZWQgcG9ydCBudW1iZXJcbiAgICogQHBhcmFtIHRhcmdldFBvcnQgQ29udGFpbmVyJ3MgcG9ydCBudW1iZXJcbiAgICogQHBhcmFtIG9wdGlvbnMgUG9ydCBtYXBwaW5nIG9wdGlvbnNcbiAgICovXG4gIHN0YXRpYyBwb3J0TWFwcGluZyhcbiAgICBwdWJsaXNoZWRQb3J0OiBudW1iZXIsXG4gICAgdGFyZ2V0UG9ydDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiBEb2NrZXJDb21wb3NlUG9ydE1hcHBpbmdPcHRpb25zLFxuICApOiBEb2NrZXJDb21wb3NlU2VydmljZVBvcnQge1xuICAgIGNvbnN0IHByb3RvY29sID0gb3B0aW9ucz8ucHJvdG9jb2wgPz8gRG9ja2VyQ29tcG9zZVByb3RvY29sLlRDUDtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IHRhcmdldFBvcnQsXG4gICAgICBwdWJsaXNoZWQ6IHB1Ymxpc2hlZFBvcnQsXG4gICAgICBwcm90b2NvbDogcHJvdG9jb2wsXG4gICAgICBtb2RlOiBcImhvc3RcIixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGJpbmQgdm9sdW1lIHRoYXQgYmluZHMgYSBob3N0IHBhdGggdG8gdGhlIHRhcmdldCBwYXRoIGluIHRoZSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzb3VyY2VQYXRoIEhvc3QgcGF0aCBuYW1lXG4gICAqIEBwYXJhbSB0YXJnZXRQYXRoIFRhcmdldCBwYXRoIG5hbWVcbiAgICovXG4gIHN0YXRpYyBiaW5kVm9sdW1lKFxuICAgIHNvdXJjZVBhdGg6IHN0cmluZyxcbiAgICB0YXJnZXRQYXRoOiBzdHJpbmcsXG4gICk6IElEb2NrZXJDb21wb3NlVm9sdW1lQmluZGluZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJpbmQoX3ZvbHVtZUluZm86IElEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnKTogRG9ja2VyQ29tcG9zZVZvbHVtZU1vdW50IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBcImJpbmRcIixcbiAgICAgICAgICBzb3VyY2U6IHNvdXJjZVBhdGgsXG4gICAgICAgICAgdGFyZ2V0OiB0YXJnZXRQYXRoLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5hbWVkIHZvbHVtZSBhbmQgbW91bnQgaXQgdG8gdGhlIHRhcmdldCBwYXRoLiBJZiB5b3UgdXNlIHRoaXNcbiAgICogbmFtZWQgdm9sdW1lIGluIHNldmVyYWwgc2VydmljZXMsIHRoZSB2b2x1bWUgd2lsbCBiZSBzaGFyZWQuIEluIHRoaXNcbiAgICogY2FzZSwgdGhlIHZvbHVtZSBjb25maWd1cmF0aW9uIG9mIHRoZSBmaXJzdC1wcm92aWRlZCBvcHRpb25zIGFyZSB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0gdm9sdW1lTmFtZSBOYW1lIG9mIHRoZSB2b2x1bWVcbiAgICogQHBhcmFtIHRhcmdldFBhdGggVGFyZ2V0IHBhdGhcbiAgICogQHBhcmFtIG9wdGlvbnMgdm9sdW1lIGNvbmZpZ3VyYXRpb24gKGRlZmF1bHQ6IGRvY2tlciBjb21wb3NlIGRlZmF1bHRzKVxuICAgKi9cbiAgc3RhdGljIG5hbWVkVm9sdW1lKFxuICAgIHZvbHVtZU5hbWU6IHN0cmluZyxcbiAgICB0YXJnZXRQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZyA9IHt9LFxuICApOiBJRG9ja2VyQ29tcG9zZVZvbHVtZUJpbmRpbmcge1xuICAgIHJldHVybiB7XG4gICAgICBiaW5kKHZvbHVtZUluZm86IElEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnKTogRG9ja2VyQ29tcG9zZVZvbHVtZU1vdW50IHtcbiAgICAgICAgdm9sdW1lSW5mby5hZGRWb2x1bWVDb25maWd1cmF0aW9uKHZvbHVtZU5hbWUsIG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJ2b2x1bWVcIixcbiAgICAgICAgICBzb3VyY2U6IHZvbHVtZU5hbWUsXG4gICAgICAgICAgdGFyZ2V0OiB0YXJnZXRQYXRoLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5hbWVkIG5ldHdvcmsgYW5kIG1vdW50IGl0IHRvIHRoZSB0YXJnZXQgcGF0aC4gSWYgeW91IHVzZSB0aGlzXG4gICAqIG5hbWVkIG5ldHdvcmsgaW4gc2V2ZXJhbCBzZXJ2aWNlcywgdGhlIG5ldHdvcmsgd2lsbCBiZSBzaGFyZWQuIEluIHRoaXNcbiAgICogY2FzZSwgdGhlIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvZiB0aGUgZmlyc3QtcHJvdmlkZWQgb3B0aW9ucyBhcmUgdXNlZC5cbiAgICpcbiAgICogQHBhcmFtIG5ldHdvcmtOYW1lIE5hbWUgb2YgdGhlIG5ldHdvcmtcbiAgICogQHBhcmFtIG9wdGlvbnMgbmV0d29yayBjb25maWd1cmF0aW9uXG4gICAqL1xuICBzdGF0aWMgbmV0d29yayhcbiAgICBuZXR3b3JrTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IERvY2tlckNvbXBvc2VOZXR3b3JrQ29uZmlnID0ge30sXG4gICk6IElEb2NrZXJDb21wb3NlTmV0d29ya0JpbmRpbmcge1xuICAgIHJldHVybiB7XG4gICAgICBiaW5kKG5ldHdvcmtJbmZvOiBJRG9ja2VyQ29tcG9zZU5ldHdvcmtDb25maWcpOiBzdHJpbmcge1xuICAgICAgICBuZXR3b3JrSW5mby5hZGROZXR3b3JrQ29uZmlndXJhdGlvbihuZXR3b3JrTmFtZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIG5ldHdvcmtOYW1lO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBEb2NrZXIgQ29tcG9zZSBmaWxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZTogWWFtbEZpbGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlczogUmVjb3JkPHN0cmluZywgRG9ja2VyQ29tcG9zZVNlcnZpY2U+O1xuICBwcml2YXRlIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcHJvcHM/OiBEb2NrZXJDb21wb3NlUHJvcHMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IG5hbWVTdWZmaXggPSBwcm9wcz8ubmFtZVN1ZmZpeCA/IGAke3Byb3BzIS5uYW1lU3VmZml4fS55bWxgIDogXCJ5bWxcIjtcbiAgICB0aGlzLmZpbGUgPSBuZXcgWWFtbEZpbGUocHJvamVjdCwgYGRvY2tlci1jb21wb3NlLiR7bmFtZVN1ZmZpeH1gLCB7XG4gICAgICBjb21taXR0ZWQ6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIG9iajogKCkgPT4gdGhpcy5fc3ludGhlc2l6ZURvY2tlckNvbXBvc2UoKSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcz8uc2NoZW1hVmVyc2lvbiAmJiAhcGFyc2VGbG9hdChwcm9wcy5zY2hlbWFWZXJzaW9uKSkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJWZXJzaW9uIHRhZyBuZWVkcyB0byBiZSBhIG51bWJlclwiKTtcbiAgICB9XG4gICAgdGhpcy52ZXJzaW9uID0gcHJvcHM/LnNjaGVtYVZlcnNpb247XG4gICAgdGhpcy5zZXJ2aWNlcyA9IHt9O1xuXG4gICAgLy8gQWRkIHRoZSBzZXJ2aWNlcyBwcm92aWRlZCB2aWEgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50LlxuICAgIGNvbnN0IGluaXRpYWxTZXJ2aWNlcyA9IHByb3BzPy5zZXJ2aWNlcyA/PyB7fTtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBzZXJ2aWNlRGVzY3JpcHRpb25dIG9mIE9iamVjdC5lbnRyaWVzKGluaXRpYWxTZXJ2aWNlcykpIHtcbiAgICAgIHRoaXMuYWRkU2VydmljZShuYW1lLCBzZXJ2aWNlRGVzY3JpcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzZXJ2aWNlIHRvIHRoZSBkb2NrZXItY29tcG9zZSBmaWxlLlxuICAgKiBAcGFyYW0gc2VydmljZU5hbWUgbmFtZSBvZiB0aGUgc2VydmljZVxuICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gYSBzZXJ2aWNlIGRlc2NyaXB0aW9uXG4gICAqL1xuICBwdWJsaWMgYWRkU2VydmljZShcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uOiBEb2NrZXJDb21wb3NlU2VydmljZURlc2NyaXB0aW9uLFxuICApOiBEb2NrZXJDb21wb3NlU2VydmljZSB7XG4gICAgY29uc3Qgc2VydmljZSA9IG5ldyBEb2NrZXJDb21wb3NlU2VydmljZShzZXJ2aWNlTmFtZSwgZGVzY3JpcHRpb24pO1xuICAgIHRoaXMuc2VydmljZXNbc2VydmljZU5hbWVdID0gc2VydmljZTtcbiAgICByZXR1cm4gc2VydmljZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9zeW50aGVzaXplRG9ja2VyQ29tcG9zZSgpOiBvYmplY3Qge1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnNlcnZpY2VzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRvY2tlckNvbXBvc2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHNlcnZpY2VcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbmRlckRvY2tlckNvbXBvc2VGaWxlKHRoaXMuc2VydmljZXMsIHRoaXMudmVyc2lvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCBhcmd1bWVudHMgZm9yIGNyZWF0aW5nIGEgZG9ja2VyIGltYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckNvbXBvc2VCdWlsZCB7XG4gIC8qKlxuICAgKiBEb2NrZXIgYnVpbGQgY29udGV4dCBkaXJlY3RvcnkuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZG9ja2VyZmlsZSB0byBidWlsZCBmcm9tLlxuICAgKiBAZGVmYXVsdCBcIkRvY2tlcmZpbGVcIlxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYXJncy5cbiAgICogQGRlZmF1bHQgLSBub25lIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXJncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG4iXX0=