projen 0.103.23 → 0.103.24

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 (176) hide show
  1. package/.jsii +3 -3
  2. package/lib/ai-instructions.js +2 -2
  3. package/lib/awscdk/auto-discover.js +6 -6
  4. package/lib/awscdk/awscdk-app-java.js +1 -1
  5. package/lib/awscdk/awscdk-app-py.js +1 -1
  6. package/lib/awscdk/awscdk-app-ts.js +1 -1
  7. package/lib/awscdk/awscdk-construct.js +1 -1
  8. package/lib/awscdk/awscdk-deps-java.js +1 -1
  9. package/lib/awscdk/awscdk-deps-js.js +1 -1
  10. package/lib/awscdk/awscdk-deps-py.js +1 -1
  11. package/lib/awscdk/awscdk-deps.js +1 -1
  12. package/lib/awscdk/cdk-config.js +3 -3
  13. package/lib/awscdk/cdk-tasks.js +1 -1
  14. package/lib/awscdk/integration-test.js +1 -1
  15. package/lib/awscdk/internal.d.ts +1 -0
  16. package/lib/awscdk/lambda-extension.js +1 -1
  17. package/lib/awscdk/lambda-function.js +2 -2
  18. package/lib/awscdk/private/feature-flags-v2.const.d.ts +2 -1
  19. package/lib/awscdk/private/feature-flags-v2.const.js +4 -3
  20. package/lib/build/build-workflow.js +1 -1
  21. package/lib/cdk/auto-discover-base.js +2 -2
  22. package/lib/cdk/construct-lib.js +1 -1
  23. package/lib/cdk/integration-test-base.js +1 -1
  24. package/lib/cdk/jsii-build.js +1 -1
  25. package/lib/cdk/jsii-docgen.js +1 -1
  26. package/lib/cdk/jsii-project.js +1 -1
  27. package/lib/cdk8s/auto-discover.js +2 -2
  28. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  29. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  30. package/lib/cdk8s/cdk8s-construct.js +1 -1
  31. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  32. package/lib/cdk8s/cdk8s-deps.js +1 -1
  33. package/lib/cdk8s/integration-test.js +1 -1
  34. package/lib/cdktf/cdktf-construct.js +1 -1
  35. package/lib/cdktn/cdktn-app-ts.js +1 -1
  36. package/lib/cdktn/cdktn-config.js +1 -1
  37. package/lib/cdktn/cdktn-construct.js +1 -1
  38. package/lib/cdktn/cdktn-deps.js +1 -1
  39. package/lib/cdktn/cdktn-tasks.js +1 -1
  40. package/lib/circleci/circleci.js +1 -1
  41. package/lib/component.js +2 -2
  42. package/lib/dependencies.js +1 -1
  43. package/lib/dev-env.js +1 -1
  44. package/lib/docker-compose/docker-compose-service.js +1 -1
  45. package/lib/docker-compose/docker-compose.js +1 -1
  46. package/lib/file.js +1 -1
  47. package/lib/gitattributes.js +1 -1
  48. package/lib/github/actions-provider.js +1 -1
  49. package/lib/github/actions.const.js +1 -1
  50. package/lib/github/auto-approve.js +1 -1
  51. package/lib/github/auto-merge.js +1 -1
  52. package/lib/github/auto-queue.js +1 -1
  53. package/lib/github/dependabot.js +1 -1
  54. package/lib/github/dependency-review.js +1 -1
  55. package/lib/github/github-credentials.js +1 -1
  56. package/lib/github/github-project.js +1 -1
  57. package/lib/github/github.js +1 -1
  58. package/lib/github/merge-queue.js +1 -1
  59. package/lib/github/mergify.js +1 -1
  60. package/lib/github/pr-template.js +1 -1
  61. package/lib/github/pull-request-backport.js +1 -1
  62. package/lib/github/pull-request-lint.js +1 -1
  63. package/lib/github/stale.js +1 -1
  64. package/lib/github/task-workflow-job.js +1 -1
  65. package/lib/github/task-workflow.js +1 -1
  66. package/lib/github/workflow-actions.js +1 -1
  67. package/lib/github/workflow-jobs.js +1 -1
  68. package/lib/github/workflow-steps.js +1 -1
  69. package/lib/github/workflows.js +1 -1
  70. package/lib/gitlab/configuration.js +1 -1
  71. package/lib/gitlab/gitlab-configuration.js +1 -1
  72. package/lib/gitlab/nested-configuration.js +1 -1
  73. package/lib/gitpod.js +1 -1
  74. package/lib/ignore-file.js +1 -1
  75. package/lib/ini.js +1 -1
  76. package/lib/java/java-project.js +1 -1
  77. package/lib/java/junit.js +1 -1
  78. package/lib/java/maven-compile.js +1 -1
  79. package/lib/java/maven-packaging.js +1 -1
  80. package/lib/java/maven-sample.js +1 -1
  81. package/lib/java/pom.js +2 -2
  82. package/lib/java/projenrc.js +1 -1
  83. package/lib/javascript/biome/biome.js +1 -1
  84. package/lib/javascript/bundler.js +1 -1
  85. package/lib/javascript/eslint.js +1 -1
  86. package/lib/javascript/jest.js +4 -4
  87. package/lib/javascript/license-checker.js +1 -1
  88. package/lib/javascript/node-config-file.js +1 -1
  89. package/lib/javascript/node-package.js +1 -1
  90. package/lib/javascript/node-project.js +1 -1
  91. package/lib/javascript/npm-config.js +1 -1
  92. package/lib/javascript/pnpm-workspace-config.js +2 -2
  93. package/lib/javascript/pnpm-workspace.js +1 -1
  94. package/lib/javascript/prettier.js +1 -1
  95. package/lib/javascript/projenrc.js +1 -1
  96. package/lib/javascript/typescript-config.js +2 -2
  97. package/lib/javascript/upgrade-dependencies.js +2 -2
  98. package/lib/javascript/yarnrc.js +1 -1
  99. package/lib/json-patch.js +1 -1
  100. package/lib/json.js +1 -1
  101. package/lib/license.js +1 -1
  102. package/lib/logger.js +1 -1
  103. package/lib/makefile.js +1 -1
  104. package/lib/object-file.js +1 -1
  105. package/lib/polaris/coverity-go.js +1 -1
  106. package/lib/polaris/coverity-java.js +1 -1
  107. package/lib/polaris/coverity-javascript.js +1 -1
  108. package/lib/polaris/coverity.js +1 -1
  109. package/lib/project-build.js +1 -1
  110. package/lib/project-tree.js +1 -1
  111. package/lib/project.js +1 -1
  112. package/lib/projects.js +1 -1
  113. package/lib/projenrc-json.js +1 -1
  114. package/lib/projenrc.js +1 -1
  115. package/lib/properties-file.js +1 -1
  116. package/lib/python/pip.js +1 -1
  117. package/lib/python/poetry.js +2 -2
  118. package/lib/python/projenrc.js +1 -1
  119. package/lib/python/pyproject-toml-file.js +1 -1
  120. package/lib/python/pytest-sample.js +1 -1
  121. package/lib/python/pytest.js +1 -1
  122. package/lib/python/python-project.js +1 -1
  123. package/lib/python/python-sample.js +1 -1
  124. package/lib/python/requirements-file.js +1 -1
  125. package/lib/python/setuppy.js +1 -1
  126. package/lib/python/setuptools.js +1 -1
  127. package/lib/python/uv-config.js +1 -1
  128. package/lib/python/uv.js +1 -1
  129. package/lib/python/venv.js +1 -1
  130. package/lib/readme.js +1 -1
  131. package/lib/release/bump-version.d.ts +1 -1
  132. package/lib/release/bump-version.js +1 -1
  133. package/lib/release/commit-tag-version.js +2 -2
  134. package/lib/release/publisher.js +1 -1
  135. package/lib/release/release-trigger.js +1 -1
  136. package/lib/release/release.js +1 -1
  137. package/lib/renovatebot.js +1 -1
  138. package/lib/run-task.cjs +3 -3
  139. package/lib/sample-file.js +2 -2
  140. package/lib/script-runner.js +1 -1
  141. package/lib/sonarqube/javascript.js +1 -1
  142. package/lib/sonarqube/rust.js +1 -1
  143. package/lib/sonarqube/sonarqube.js +1 -1
  144. package/lib/sonarqube/typescript.js +1 -1
  145. package/lib/source-code.js +1 -1
  146. package/lib/task-shell.js +1 -1
  147. package/lib/task.js +1 -1
  148. package/lib/tasks.js +1 -1
  149. package/lib/testing.js +1 -1
  150. package/lib/textfile.js +1 -1
  151. package/lib/toml.js +1 -1
  152. package/lib/typescript/projenrc-ts.js +1 -1
  153. package/lib/typescript/projenrc.js +1 -1
  154. package/lib/typescript/typescript-runner.js +1 -1
  155. package/lib/typescript/typescript-typedoc.js +1 -1
  156. package/lib/typescript/typescript.js +5 -5
  157. package/lib/util/exec.js +2 -2
  158. package/lib/version.d.ts +1 -1
  159. package/lib/version.js +4 -4
  160. package/lib/vscode/devcontainer.js +1 -1
  161. package/lib/vscode/extensions.js +1 -1
  162. package/lib/vscode/launch-config.js +1 -1
  163. package/lib/vscode/settings.js +1 -1
  164. package/lib/vscode/vscode.js +1 -1
  165. package/lib/web/next.js +3 -3
  166. package/lib/web/postcss.js +1 -1
  167. package/lib/web/react.js +3 -3
  168. package/lib/web/tailwind.js +1 -1
  169. package/lib/xmlfile.js +1 -1
  170. package/lib/yaml.js +1 -1
  171. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +19 -18
  172. package/node_modules/yaml/browser/dist/nodes/Alias.js +25 -23
  173. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +19 -18
  174. package/node_modules/yaml/dist/nodes/Alias.js +25 -23
  175. package/node_modules/yaml/package.json +1 -1
  176. package/package.json +3 -3
@@ -68,7 +68,7 @@ var RenovatebotMinimumReleaseAgeBehaviour;
68
68
  * Ignores the versions controlled by Projen.
69
69
  */
70
70
  class Renovatebot extends component_1.Component {
71
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Renovatebot", version: "0.103.23" };
71
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Renovatebot", version: "0.103.24" };
72
72
  /**
73
73
  * The file holding the renovatebot configuration
74
74
  */
package/lib/run-task.cjs CHANGED
@@ -1656,8 +1656,8 @@ var require_package = __commonJS({
1656
1656
  "@types/yargs": "^16.0.11",
1657
1657
  "@typescript-eslint/eslint-plugin": "^8",
1658
1658
  "@typescript-eslint/parser": "^8",
1659
- "aws-cdk-lib": "^2.268.0",
1660
- "commit-and-tag-version": "^12",
1659
+ "aws-cdk-lib": "^2.269.0",
1660
+ "commit-and-tag-version": "^13",
1661
1661
  esbuild: "^0.28.2",
1662
1662
  eslint: "^9",
1663
1663
  "eslint-config-prettier": "^10.1.8",
@@ -1745,7 +1745,7 @@ var require_package = __commonJS({
1745
1745
  fsevents: true,
1746
1746
  "unrs-resolver": true
1747
1747
  },
1748
- version: "0.103.23",
1748
+ version: "0.103.24",
1749
1749
  jest: {
1750
1750
  coverageProvider: "v8",
1751
1751
  coverageReporters: [
@@ -45,7 +45,7 @@ const util_1 = require("./util");
45
45
  * Use this for creating example code files or other resources.
46
46
  */
47
47
  class SampleFile extends component_1.Component {
48
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleFile", version: "0.103.23" };
48
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleFile", version: "0.103.24" };
49
49
  filePath;
50
50
  options;
51
51
  /**
@@ -96,7 +96,7 @@ exports.SampleFile = SampleFile;
96
96
  * Renders the given files into the directory if the directory does not exist. Use this to create sample code files
97
97
  */
98
98
  class SampleDir extends component_1.Component {
99
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleDir", version: "0.103.23" };
99
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleDir", version: "0.103.24" };
100
100
  dir;
101
101
  options;
102
102
  /**
@@ -10,7 +10,7 @@ const component_1 = require("./component");
10
10
  * `.projenrc.ts`) and is attached to a project by whoever consumes it.
11
11
  */
12
12
  class ScriptRunner extends component_1.FutureComponent {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ScriptRunner", version: "0.103.23" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ScriptRunner", version: "0.103.24" };
14
14
  configFor(entrypoint) {
15
15
  return {
16
16
  dependencies: [],
@@ -27,7 +27,7 @@ const util_1 = require("../util");
27
27
  * });
28
28
  */
29
29
  class SonarqubeJavascriptProperties extends sonarqube_1.SonarqubeProperties {
30
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.sonarqube.SonarqubeJavascriptProperties", version: "0.103.23" };
30
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.sonarqube.SonarqubeJavascriptProperties", version: "0.103.24" };
31
31
  constructor(scope, options) {
32
32
  super(scope, (0, util_1.deepMerge)([
33
33
  {
@@ -29,7 +29,7 @@ const util_1 = require("../util");
29
29
  * });
30
30
  */
31
31
  class SonarqubeRustProperties extends sonarqube_1.SonarqubeProperties {
32
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.sonarqube.SonarqubeRustProperties", version: "0.103.23" };
32
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.sonarqube.SonarqubeRustProperties", version: "0.103.24" };
33
33
  constructor(scope, options) {
34
34
  super(scope, (0, util_1.deepMerge)([
35
35
  {
@@ -49,7 +49,7 @@ var SonarqubeRegion;
49
49
  * });
50
50
  */
51
51
  class SonarqubeProperties extends component_1.Component {
52
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.sonarqube.SonarqubeProperties", version: "0.103.23" };
52
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.sonarqube.SonarqubeProperties", version: "0.103.24" };
53
53
  /**
54
54
  * The underlying properties file.
55
55
  */
@@ -28,7 +28,7 @@ const util_1 = require("../util");
28
28
  * });
29
29
  */
30
30
  class SonarqubeTypescriptProperties extends sonarqube_1.SonarqubeProperties {
31
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.sonarqube.SonarqubeTypescriptProperties", version: "0.103.23" };
31
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.sonarqube.SonarqubeTypescriptProperties", version: "0.103.24" };
32
32
  constructor(scope, options) {
33
33
  super(scope, (0, util_1.deepMerge)([
34
34
  {
@@ -9,7 +9,7 @@ const textfile_1 = require("./textfile");
9
9
  */
10
10
  class SourceCode extends component_1.Component {
11
11
  filePath;
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SourceCode", version: "0.103.23" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SourceCode", version: "0.103.24" };
13
13
  file;
14
14
  indentLevel = 0;
15
15
  indent;
package/lib/task-shell.js CHANGED
@@ -19,7 +19,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
19
19
  */
20
20
  class TaskShell {
21
21
  value;
22
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TaskShell", version: "0.103.23" };
22
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TaskShell", version: "0.103.24" };
23
23
  /**
24
24
  * The built-in cross-platform shell (the default). It interprets POSIX-style
25
25
  * task syntax (`mkdir -p`, `&&`, `$VAR`, ...) identically on every platform,
package/lib/task.js CHANGED
@@ -8,7 +8,7 @@ const logging_1 = require("./logging");
8
8
  * commands and subtasks.
9
9
  */
10
10
  class Task {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Task", version: "0.103.23" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Task", version: "0.103.24" };
12
12
  /**
13
13
  * Task name.
14
14
  */
package/lib/tasks.js CHANGED
@@ -48,7 +48,7 @@ const task_runner_1 = require("./task-runner");
48
48
  * synthesized into `.projen/tasks.json`.
49
49
  */
50
50
  class Tasks extends component_1.Component {
51
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Tasks", version: "0.103.23" };
51
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Tasks", version: "0.103.24" };
52
52
  _tasks;
53
53
  _env;
54
54
  _shell;
package/lib/testing.js CHANGED
@@ -10,7 +10,7 @@ const synth_1 = require("./util/synth");
10
10
  * @example `expect(Testing.synth(someProject)).toMatchSnapshot()`
11
11
  */
12
12
  class Testing {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Testing", version: "0.103.23" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Testing", version: "0.103.24" };
14
14
  /**
15
15
  * Produces a simple JS object that represents the contents of the projects with field names being file paths.
16
16
  * @param project the project to produce a snapshot for
package/lib/textfile.js CHANGED
@@ -7,7 +7,7 @@ const file_1 = require("./file");
7
7
  * A text file.
8
8
  */
9
9
  class TextFile extends file_1.FileBase {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TextFile", version: "0.103.23" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TextFile", version: "0.103.24" };
11
11
  lines;
12
12
  /**
13
13
  * Defines a text file.
package/lib/toml.js CHANGED
@@ -41,7 +41,7 @@ const object_file_1 = require("./object-file");
41
41
  * Represents a TOML file.
42
42
  */
43
43
  class TomlFile extends object_file_1.ObjectFile {
44
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TomlFile", version: "0.103.23" };
44
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TomlFile", version: "0.103.24" };
45
45
  constructor(scope, filePath, options) {
46
46
  super(scope, filePath, options);
47
47
  }
@@ -16,7 +16,7 @@ const DEFAULT_FILENAME = ".projenrc.ts";
16
16
  * and has no expectations around the project's main language.
17
17
  */
18
18
  class ProjenrcTs extends projenrc_1.ProjenrcFile {
19
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.ProjenrcTs", version: "0.103.23" };
19
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.ProjenrcTs", version: "0.103.24" };
20
20
  /**
21
21
  * TypeScript configuration file used to compile projen source files
22
22
  */
@@ -15,7 +15,7 @@ const DEFAULT_FILENAME = ".projenrc.ts";
15
15
  * This component is used within TypeScriptProject.
16
16
  */
17
17
  class Projenrc extends projenrc_1.ProjenrcFile {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.Projenrc", version: "0.103.23" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.Projenrc", version: "0.103.24" };
19
19
  filePath;
20
20
  tsconfig;
21
21
  _projenCodeDir;
@@ -13,7 +13,7 @@ const recreate_1 = require("../util/recreate");
13
13
  * adjusted options.
14
14
  */
15
15
  class TypeScriptRunner extends script_runner_1.ScriptRunner {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptRunner", version: "0.103.23" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptRunner", version: "0.103.24" };
17
17
  /**
18
18
  * Use ts-node to execute TypeScript files.
19
19
  */
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  Adds a simple Typescript documentation generator
7
7
  */
8
8
  class TypedocDocgen {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypedocDocgen", version: "0.103.23" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypedocDocgen", version: "0.103.24" };
10
10
  constructor(project) {
11
11
  project.addDevDeps("typedoc");
12
12
  const docgen = project.addTask("docgen", {
@@ -52,7 +52,7 @@ const util_2 = require("../util");
52
52
  */
53
53
  class TsJestBabelConfig {
54
54
  config;
55
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestBabelConfig", version: "0.103.23" };
55
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestBabelConfig", version: "0.103.24" };
56
56
  /**
57
57
  * Disables the use of Babel
58
58
  */
@@ -99,7 +99,7 @@ exports.TsJestBabelConfig = TsJestBabelConfig;
99
99
  */
100
100
  class TsJestDiagnostics {
101
101
  config;
102
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestDiagnostics", version: "0.103.23" };
102
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestDiagnostics", version: "0.103.24" };
103
103
  /**
104
104
  * Enable all diagnostics.
105
105
  */
@@ -137,7 +137,7 @@ exports.TsJestDiagnostics = TsJestDiagnostics;
137
137
  */
138
138
  class TsJestTsconfig {
139
139
  config;
140
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestTsconfig", version: "0.103.23" };
140
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestTsconfig", version: "0.103.24" };
141
141
  /**
142
142
  * Uses `tsconfig.json` if found, or the built-in default TypeScript compiler options.
143
143
  */
@@ -183,7 +183,7 @@ exports.TsJestTsconfig = TsJestTsconfig;
183
183
  * @pjid typescript
184
184
  */
185
185
  class TypeScriptProject extends javascript_1.NodeProject {
186
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptProject", version: "0.103.23" };
186
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptProject", version: "0.103.24" };
187
187
  static DEFAULT_TS_JEST_TRANFORM_PATTERN = "^.+\\.[t]sx?$";
188
188
  docgen;
189
189
  docsDirectory;
@@ -626,7 +626,7 @@ class SampleCode extends component_1.Component {
626
626
  * @pjid typescript-app
627
627
  */
628
628
  class TypeScriptAppProject extends TypeScriptProject {
629
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptAppProject", version: "0.103.23" };
629
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptAppProject", version: "0.103.24" };
630
630
  constructor(options) {
631
631
  // Releasing and packaging are coupled. If one is disabled, disable the other by default.
632
632
  const shouldRelease = options.release ?? false;
package/lib/util/exec.js CHANGED
@@ -157,7 +157,7 @@ exports.node = tool(process.execPath);
157
157
  * `.cmd`/`.bat` shims and escaping every argument (so each value is passed as
158
158
  * a single literal argument).
159
159
  *
160
- * @example await npx.run(["commit-and-tag-version@^12"], { cwd });
160
+ * @example await npx.run(["commit-and-tag-version@^13"], { cwd });
161
161
  */
162
162
  function shimTool(file) {
163
163
  const build = (args, options) => {
@@ -195,4 +195,4 @@ exports.npm = shimTool("npm");
195
195
  * Cross-platform helper for `npx` (a Windows `.cmd` shim).
196
196
  */
197
197
  exports.npx = shimTool("npx");
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2V4ZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0xBLG9CQU1DO0FBck1ELDZEQUErQztBQUMvQyx1Q0FBeUI7QUFDekIsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QiwrQkFBMEI7QUFDMUIsb0RBQXNDO0FBRXpCLFFBQUEsVUFBVSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBd0QzQyxTQUFTLFNBQVMsQ0FBQyxPQUF3QjtJQUN6QyxPQUFPO1FBQ0wsU0FBUyxFQUFFLGtCQUFVO1FBQ3JCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztRQUNoQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDakUsMERBQTBEO1FBQzFELEtBQUssRUFBRSxLQUFjO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLElBQWMsRUFBRSxPQUFtQjtJQUM1RCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFakUsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1FBQ3JDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUNyQixxRUFBcUU7UUFDckUsbUVBQW1FO1FBQ25FLDBFQUEwRTtRQUMxRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFD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QUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoaWxkX3Byb2Nlc3MgZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyAkIH0gZnJvbSBcIi4vZGF4XCI7XG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gXCIuLi9sb2dnaW5nXCI7XG5cbmV4cG9ydCBjb25zdCBNQVhfQlVGRkVSID0gMTAgKiAxMDI0ICogMTAyNDtcblxuLy9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2hlbGwtZnJlZSBleGVjdXRpb24gKGV4ZWNGaWxlU3luYywgc2hlbGw6IGZhbHNlKS5cbi8vXG4vLyBUaGUgcHJvZ3JhbSBhbmQgZWFjaCBhcmd1bWVudCBhcmUgcGFzc2VkIHRvIHRoZSBPUyBkaXJlY3RseSB3aXRob3V0IGdvaW5nXG4vLyB0aHJvdWdoIGEgc2hlbGwsIHNvIHRoZXJlIGlzIG5vIHF1b3RpbmcgdG8gZ2V0IHJpZ2h0IGFuZCBubyBkaWZmZXJlbmNlc1xuLy8gYmV0d2VlbiBwbGF0Zm9ybSBzaGVsbHMgdG8gYWNjb3VudCBmb3Igd2hlbiBjb21tYW5kcyBpbmNsdWRlIHZhbHVlcyBkZXJpdmVkXG4vLyBmcm9tIGZpbGVzLCBnaXQgb3V0cHV0LCBjb25maWd1cmF0aW9uLCBldGMuXG4vL1xuLy8gT25seSBwZXItdG9vbCBoZWxwZXJzIGFyZSBleHBvcnRlZCAoZS5nLiBgZ2l0YCk7IHRoZSBnZW5lcmljIHByaW1pdGl2ZXMgYXJlXG4vLyBrZXB0IHByaXZhdGUgc28gY2FsbCBzaXRlcyBhcmUgZXhwbGljaXQgYWJvdXQgd2hpY2ggdG9vbCB0aGV5IGludm9rZS5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9cblxuLyoqXG4gKiBPcHRpb25zIGZvciBzaGVsbC1mcmVlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNGaWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXb3JraW5nIGRpcmVjdG9yeSBmb3IgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBjd2Q6IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIG1lcmdlZCBvbiB0b3Agb2YgYHByb2Nlc3MuZW52YC5cbiAgICovXG4gIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD47XG5cbiAgLyoqXG4gICAqIEZvciBgY2FwdHVyZWAvYHRyeUNhcHR1cmVgOiBpbnRlcmxlYXZlIFNUREVSUiBpbnRvIHRoZSBjYXB0dXJlZCBvdXRwdXRcbiAgICogaW5zdGVhZCBvZiBvbmx5IGNhcHR1cmluZyBTVERPVVQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjYXB0dXJlU3RkZXJyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgVG9vbC5ydW59LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bk9wdGlvbnMgZXh0ZW5kcyBFeGVjRmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogU3RyZWFtIHRoZSBjaGlsZCdzIHN0ZG91dCBhbmQgc3RkZXJyIHN0cmFpZ2h0IHRvIHRoZSBwYXJlbnQncyBzdGRvdXQgYW5kXG4gICAqIHN0ZGVyciAoZnVsbCBpbmhlcml0YW5jZSksIGluc3RlYWQgb2YgcmVkaXJlY3Rpbmcgc3Rkb3V0IHRvIHN0ZGVyciBhbmRcbiAgICogY2FwdHVyaW5nIHN0ZGVyciAodGhlIGRlZmF1bHQpLlxuICAgKlxuICAgKiBVc2UgdGhpcyB3aGVuIGxhdW5jaGluZyBhIGNoaWxkIHByb2Nlc3Mgd2hvc2Ugc3Rkb3V0IGlzIG1lYW5pbmdmdWwgYW5kXG4gICAqIHdob3NlIG91dHB1dCBzaG91bGQgc3RyZWFtIGxpdmUgdG8gdGhlIHVzZXIgKGUuZy4gdGhlIHByb2plbiBDTEkpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5oZXJpdFN0ZGlvPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gc3Bhd25PcHRzKG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIG1heEJ1ZmZlcjogTUFYX0JVRkZFUixcbiAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgIGVudjogb3B0aW9ucy5lbnYgPyB7IC4uLnByb2Nlc3MuZW52LCAuLi5vcHRpb25zLmVudiB9IDogdW5kZWZpbmVkLFxuICAgIC8vIHJ1biB0aGUgcHJvZ3JhbSBkaXJlY3RseSwgd2l0aG91dCBnb2luZyB0aHJvdWdoIGEgc2hlbGxcbiAgICBzaGVsbDogZmFsc2UgYXMgY29uc3QsXG4gIH07XG59XG5cbi8qKlxuICogUnVucyBhIHByb2dyYW0gd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBpbmhlcml0aW5nIHN0ZG91dC4gVGhyb3dzIGlmIHRoZVxuICogY29tbWFuZCBleGl0cyB3aXRoIGEgbm9uLXplcm8gc3RhdHVzLlxuICovXG5mdW5jdGlvbiBydW4oZmlsZTogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogUnVuT3B0aW9ucyk6IHZvaWQge1xuICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG5cbiAgY2hpbGRfcHJvY2Vzcy5leGVjRmlsZVN5bmMoZmlsZSwgYXJncywge1xuICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAvLyBCeSBkZWZhdWx0IHRoZSBjaGlsZCdzIHN0ZG91dCBpcyByZWRpcmVjdGVkIHRvIFNUREVSUiAodG8ga2VlcCB0aGVcbiAgICAvLyBwYXJlbnQncyBTVERPVVQgY2xlYW4pIGFuZCBpdHMgU1RERVJSIGlzIHBpcGVkIHNvIGl0IHN1cmZhY2VzIGluXG4gICAgLy8gZXhjZXB0aW9ucy4gYGluaGVyaXRTdGRpb2AgaW5zdGVhZCBzdHJlYW1zIGJvdGggc3RyYWlnaHQgdG8gdGhlIHBhcmVudC5cbiAgICBzdGRpbzogb3B0aW9ucy5pbmhlcml0U3RkaW8gPyBcImluaGVyaXRcIiA6IFtcImluaGVyaXRcIiwgMiwgXCJwaXBlXCJdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIGEgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgdHJpbW1lZCBTVERPVVQgKG9yIFNURE9VVCtTVERFUlIgaW50ZXJsZWF2ZWRcbiAqIGluIHRoZWlyIG9yaWdpbmFsIHdyaXRlIG9yZGVyLCBpZiBgY2FwdHVyZVN0ZGVycmAgaXMgc2V0KS4gVGhyb3dzIGlmIHRoZVxuICogY29tbWFuZCBleGl0cyB3aXRoIGEgbm9uLXplcm8gc3RhdHVzLlxuICovXG5mdW5jdGlvbiBjYXB0dXJlKFxuICBmaWxlOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMsXG4pOiBzdHJpbmcge1xuICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG5cbiAgaWYgKG9wdGlvbnMuY2FwdHVyZVN0ZGVycikge1xuICAgIC8vIFNhbWUgZmQgZm9yIGJvdGggc3RyZWFtcyBzbyB0aGV5IGludGVybGVhdmUgaW4gd3JpdGUgb3JkZXIuIEEgc2hhcmVkXG4gICAgLy8gaW4tbWVtb3J5IFdyaXRhYmxlIHdvbid0IHdvcmsgaGVyZSAtIGV4ZWNGaWxlU3luYyBvbmx5IGFjY2VwdHMgc3RkaW9cbiAgICAvLyBzdHJlYW1zIGJhY2tlZCBieSBhIHJlYWwgZmQgKHR0eS9maWxlL3NvY2tldC9waXBlKS5cbiAgICBjb25zdCBjb21iaW5lZEZpbGUgPSBwYXRoLmpvaW4oXG4gICAgICBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksIFwicHJvamVuLWNhcHR1cmUtXCIpKSxcbiAgICAgIFwib3V0cHV0XCIsXG4gICAgKTtcbiAgICBjb25zdCBmZCA9IGZzLm9wZW5TeW5jKGNvbWJpbmVkRmlsZSwgXCJ3K1wiKTtcbiAgICB0cnkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjRmlsZVN5bmMoZmlsZSwgYXJncywge1xuICAgICAgICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAgICAgICBzdGRpbzogW1wiaW5oZXJpdFwiLCBmZCwgZmRdLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAvLyBtaXJyb3JzIGV4ZWNGaWxlU3luYydzIG93biBiZWhhdmlvciBvZiBhdHRhY2hpbmcgb3V0cHV0IHRvIHRoZSBlcnJvclxuICAgICAgICBlLnN0ZG91dCA9IGZzLnJlYWRGaWxlU3luYyhjb21iaW5lZEZpbGUpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhjb21iaW5lZEZpbGUsIFwidXRmLThcIikudHJpbSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBmcy5jbG9zZVN5bmMoZmQpO1xuICAgICAgZnMucm1TeW5jKHBhdGguZGlybmFtZShjb21iaW5lZEZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNoaWxkX3Byb2Nlc3NcbiAgICAuZXhlY0ZpbGVTeW5jKGZpbGUsIGFyZ3MsIHtcbiAgICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAgIHN0ZGlvOiBbXCJpbmhlcml0XCIsIFwicGlwZVwiLCBcInBpcGVcIl0sIC8vIFwicGlwZVwiIGZvciBTVERFUlIgbWVhbnMgaXQgYXBwZWFycyBpbiBleGNlcHRpb25zXG4gICAgfSlcbiAgICAudG9TdHJpbmcoXCJ1dGYtOFwiKVxuICAgIC50cmltKCk7XG59XG5cbi8qKlxuICogUnVucyBhIHByb2dyYW0gYW5kIHJldHVybnMgaXRzIHRyaW1tZWQgU1RET1VUIChvciBTVERPVVQrU1RERVJSIGludGVybGVhdmVkXG4gKiBpbiB0aGVpciBvcmlnaW5hbCB3cml0ZSBvcmRlciwgaWYgYGNhcHR1cmVTdGRlcnJgIGlzIHNldCksIG9yIGB1bmRlZmluZWRgXG4gKiBpZiB0aGUgY29tbWFuZCBmYWlsZWQgb3IgcHJvZHVjZWQgbm8gb3V0cHV0LlxuICovXG5mdW5jdGlvbiB0cnlDYXB0dXJlKFxuICBmaWxlOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGNvbnN0IHZhbHVlID0gY2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKTtcblxuICAgIC8vIGFuIGVtcHR5IHN0cmluZyBpcyB0aGUgc2FtZSBhcyB1bmRlZmluZWRcbiAgICByZXR1cm4gdmFsdWUgfHwgdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQSBzaGVsbC1mcmVlIGhhbmRsZSBmb3IgaW52b2tpbmcgYSBzaW5nbGUgcHJvZ3JhbSBieSBuYW1lIG9yIHBhdGguXG4gKlxuICogRWFjaCBhcmd1bWVudCBpcyBwYXNzZWQgdG8gdGhlIHByb2dyYW0gdmVyYmF0aW0gKG5vIHNoZWxsIHBhcnNpbmcpLCBzbyB0aGVyZVxuICogaXMgbm8gcXVvdGluZyB0byBnZXQgcmlnaHQgZm9yIHZhbHVlcyBzdWNoIGFzIHRhZ3MsIHZlcnNpb25zLCBicmFuY2ggbmFtZXNcbiAqIG9yIGZpbGUgcGF0aHMuXG4gKlxuICogTm90ZTogdGhlIHByb2dyYW0gaXMgZXhlY3V0ZWQgZGlyZWN0bHksIHdpdGhvdXQgYSBzaGVsbC4gT24gV2luZG93cyB0aGlzXG4gKiBtZWFucyBpdCBtdXN0IGJlIGEgcmVhbCBleGVjdXRhYmxlIC0gYC5jbWRgL2AuYmF0YCBzaGltcyAoc3VjaCBhc1xuICogbnBtLWluc3RhbGxlZCBDTElzIGxpa2UgbnBtL25weC95YXJuL3BucG0pIGNhbm5vdCBiZSBpbnZva2VkIHRoaXMgd2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvb2wge1xuICAvKipcbiAgICogUnVucyBgPHRvb2w+IDxhcmdzPmAsIGluaGVyaXRpbmcgc3Rkb3V0LiBUaHJvd3Mgb24gbm9uLXplcm8gZXhpdC5cbiAgICovXG4gIHJ1bihhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogUnVuT3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVC4gVGhyb3dzIG9uIG5vbi16ZXJvIGV4aXQuXG4gICAqL1xuICBjYXB0dXJlKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlXG4gICAqIGNvbW1hbmQgZmFpbGVkIG9yIHByb2R1Y2VkIG5vIG91dHB1dC5cbiAgICovXG4gIHRyeUNhcHR1cmUoYXJnczogc3RyaW5nW10sIG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc2hlbGwtZnJlZSB7QGxpbmsgVG9vbH0gZm9yIHRoZSBnaXZlbiBwcm9ncmFtLlxuICpcbiAqIEBleGFtcGxlIGNvbnN0IGdpdCA9IHRvb2woXCJnaXRcIik7IGdpdC5ydW4oW1widGFnXCIsIFwiLS1kZWxldGVcIiwgdGFnXSwgeyBjd2QgfSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b29sKGZpbGU6IHN0cmluZyk6IFRvb2wge1xuICByZXR1cm4ge1xuICAgIHJ1bjogKGFyZ3MsIG9wdGlvbnMpID0+IHJ1bihmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgICBjYXB0dXJlOiAoYXJncywgb3B0aW9ucykgPT4gY2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgICB0cnlDYXB0dXJlOiAoYXJncywgb3B0aW9ucykgPT4gdHJ5Q2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTaGVsbC1mcmVlIGhlbHBlciBmb3IgaW52b2tpbmcgYGdpdGAuXG4gKlxuICogQGV4YW1wbGUgZ2l0LnJ1bihbXCJ0YWdcIiwgXCItLWRlbGV0ZVwiLCB0YWddLCB7IGN3ZCB9KTtcbiAqL1xuZXhwb3J0IGNvbnN0IGdpdCA9IHRvb2woXCJnaXRcIik7XG5cbi8qKlxuICogU2hlbGwtZnJlZSBoZWxwZXIgZm9yIGludm9raW5nIGB1dmAgKHNoaXBzIGFzIGEgbmF0aXZlIGJpbmFyeSBvbiBhbGxcbiAqIHBsYXRmb3JtcykuXG4gKi9cbmV4cG9ydCBjb25zdCB1diA9IHRvb2woXCJ1dlwiKTtcblxuLyoqXG4gKiBTaGVsbC1mcmVlIGhlbHBlciBmb3IgaW52b2tpbmcgYHBvZXRyeWAuXG4gKi9cbmV4cG9ydCBjb25zdCBwb2V0cnkgPSB0b29sKFwicG9ldHJ5XCIpO1xuXG4vKipcbiAqIFNoZWxsLWZyZWUgaGVscGVyIGZvciBpbnZva2luZyB0aGUgY3VycmVudCBOb2RlLmpzIGV4ZWN1dGFibGVcbiAqIChgcHJvY2Vzcy5leGVjUGF0aGApLlxuICovXG5leHBvcnQgY29uc3Qgbm9kZSA9IHRvb2wocHJvY2Vzcy5leGVjUGF0aCk7XG5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENyb3NzLXBsYXRmb3JtIGV4ZWN1dGlvbiB2aWEgZGF4IChmb3IgYmluYXJpZXMgdGhhdCBtYXkgYmUgYC5jbWRgIHNoaW1zKS5cbi8vXG4vLyBgdG9vbGAgYWJvdmUgdXNlcyBgZXhlY0ZpbGVTeW5jYCB3aXRoIGBzaGVsbDogZmFsc2VgLCB3aGljaCBjYW5ub3QgbGF1bmNoXG4vLyBXaW5kb3dzIGAuY21kYC9gLmJhdGAgc2hpbXMgc3VjaCBhcyBgbnB4YCBvciBgbnBtYC4gYHNoaW1Ub29sYCBydW5zIHRocm91Z2hcbi8vIGRheCwgd2hpY2ggcmVzb2x2ZXMgdGhvc2Ugc2hpbXMgY3Jvc3MtcGxhdGZvcm0uIEFyZ3VtZW50cyBhcmUgaW50ZXJwb2xhdGVkXG4vLyB0aHJvdWdoIGRheCdzIGVzY2FwaW5nIChOT1QgYCQucmF3YCksIHNvIGVhY2ggdmFsdWUgaXMgcGFzc2VkIGFzIGEgc2luZ2xlXG4vLyBsaXRlcmFsIGFyZ3VtZW50IHdpdGggbm8gcXVvdGluZyB0byBnZXQgcmlnaHQuIGRheCBpcyBhc3luY2hyb25vdXMsIHNvXG4vLyB0aGVzZSBoZWxwZXJzIGFyZSBvbmx5IHVzYWJsZSBmcm9tIGFzeW5jIGNhbGwgc2l0ZXMuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG5cbi8qKlxuICogQXN5bmMsIGRheC1iYWNrZWQgZXF1aXZhbGVudCBvZiB7QGxpbmsgVG9vbH0gZm9yIHByb2dyYW1zIHRoYXQgbWF5IGJlIGFcbiAqIFdpbmRvd3MgYC5jbWRgL2AuYmF0YCBzaGltIChlLmcuIGBucHhgLCBgbnBtYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXN5bmNUb29sIHtcbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gLCBpbmhlcml0aW5nIHN0ZG91dC4gUmVqZWN0cyBvbiBub24temVybyBleGl0LlxuICAgKi9cbiAgcnVuKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSdW5zIGA8dG9vbD4gPGFyZ3M+YCBhbmQgcmVzb2x2ZXMgaXRzIHRyaW1tZWQgU1RET1VULiBSZWplY3RzIG9uIG5vbi16ZXJvXG4gICAqIGV4aXQuXG4gICAqL1xuICBjYXB0dXJlKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiB7QGxpbmsgQXN5bmNUb29sfSB0aGF0IGludm9rZXMgYGZpbGVgIHZpYSBkYXgsIHJlc29sdmluZyBXaW5kb3dzXG4gKiBgLmNtZGAvYC5iYXRgIHNoaW1zIGFuZCBlc2NhcGluZyBldmVyeSBhcmd1bWVudCAoc28gZWFjaCB2YWx1ZSBpcyBwYXNzZWQgYXNcbiAqIGEgc2luZ2xlIGxpdGVyYWwgYXJndW1lbnQpLlxuICpcbiAqIEBleGFtcGxlIGF3YWl0IG5weC5ydW4oW1wiY29tbWl0LWFuZC10YWctdmVyc2lvbkBeMTJcIl0sIHsgY3dkIH0pO1xuICovXG5mdW5jdGlvbiBzaGltVG9vbChmaWxlOiBzdHJpbmcpOiBBc3luY1Rvb2wge1xuICBjb25zdCBidWlsZCA9IChhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogRXhlY0ZpbGVPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY21kID0gJGAke2ZpbGV9ICR7YXJnc31gLmN3ZChvcHRpb25zLmN3ZCkuc3RkZXJyKFwicGlwZWRcIikubm9UaHJvdygpO1xuICAgIHJldHVybiBvcHRpb25zLmVudiA/IGNtZC5lbnYob3B0aW9ucy5lbnYpIDogY21kO1xuICB9O1xuICBjb25zdCBlbnN1cmVPayA9IChcbiAgICBhcmdzOiBzdHJpbmdbXSxcbiAgICByZXN1bHQ6IHsgY29kZTogbnVtYmVyOyBzdGRlcnI6IHN0cmluZyB9LFxuICApID0+IHtcbiAgICBpZiAocmVzdWx0LmNvZGUgIT09IDApIHtcbiAgICAgIC8vIE1pbWljIHRoZSBgY2hpbGRfcHJvY2Vzc2AgZXJyb3Igc2hhcGUgKGBzdGF0dXNgLCBgc3RkZXJyYCkgc28gY2FsbGVyc1xuICAgICAgLy8gY2FuIGluc3BlY3Qgc3RkZXJyIChlLmcuIHRvIGRldGVjdCBFTk9FTlQvRTQwNCBmcm9tIG5wbSkuXG4gICAgICBjb25zdCBlcnJvcjogYW55ID0gbmV3IEVycm9yKFxuICAgICAgICBgQ29tbWFuZCBmYWlsZWQgKGV4aXQgY29kZSAke3Jlc3VsdC5jb2RlfSk6ICR7ZmlsZX0gJHthcmdzLmpvaW4oXCIgXCIpfWAsXG4gICAgICApO1xuICAgICAgZXJyb3Iuc3RhdHVzID0gcmVzdWx0LmNvZGU7XG4gICAgICBlcnJvci5zdGRlcnIgPSBCdWZmZXIuZnJvbShyZXN1bHQuc3RkZXJyKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBydW46IGFzeW5jIChhcmdzLCBvcHRpb25zKSA9PiB7XG4gICAgICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG4gICAgICBlbnN1cmVPayhhcmdzLCBhd2FpdCBidWlsZChhcmdzLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBjYXB0dXJlOiBhc3luYyAoYXJncywgb3B0aW9ucykgPT4ge1xuICAgICAgbG9nZ2luZy5kZWJ1ZyhgJHtmaWxlfSAke2FyZ3Muam9pbihcIiBcIil9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYnVpbGQoYXJncywgb3B0aW9ucykuc3Rkb3V0KFwicGlwZWRcIik7XG4gICAgICBlbnN1cmVPayhhcmdzLCByZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdC5zdGRvdXQudHJpbSgpO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQ3Jvc3MtcGxhdGZvcm0gaGVscGVyIGZvciBgbnBtYCAoYSBXaW5kb3dzIGAuY21kYCBzaGltKS5cbiAqL1xuZXhwb3J0IGNvbnN0IG5wbSA9IHNoaW1Ub29sKFwibnBtXCIpO1xuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGhlbHBlciBmb3IgYG5weGAgKGEgV2luZG93cyBgLmNtZGAgc2hpbSkuXG4gKi9cbmV4cG9ydCBjb25zdCBucHggPSBzaGltVG9vbChcIm5weFwiKTtcbiJdfQ==
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2V4ZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0xBLG9CQU1DO0FBck1ELDZEQUErQztBQUMvQyx1Q0FBeUI7QUFDekIsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QiwrQkFBMEI7QUFDMUIsb0RBQXNDO0FBRXpCLFFBQUEsVUFBVSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBd0QzQyxTQUFTLFNBQVMsQ0FBQyxPQUF3QjtJQUN6QyxPQUFPO1FBQ0wsU0FBUyxFQUFFLGtCQUFVO1FBQ3JCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztRQUNoQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDakUsMERBQTBEO1FBQzFELEtBQUssRUFBRSxLQUFjO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLElBQWMsRUFBRSxPQUFtQjtJQUM1RCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFakUsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1FBQ3JDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUNyQixxRUFBcUU7UUFDckUsbUVBQW1FO1FBQ25FLDBFQUEwRTtRQUMxRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFD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QUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoaWxkX3Byb2Nlc3MgZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyAkIH0gZnJvbSBcIi4vZGF4XCI7XG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gXCIuLi9sb2dnaW5nXCI7XG5cbmV4cG9ydCBjb25zdCBNQVhfQlVGRkVSID0gMTAgKiAxMDI0ICogMTAyNDtcblxuLy9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2hlbGwtZnJlZSBleGVjdXRpb24gKGV4ZWNGaWxlU3luYywgc2hlbGw6IGZhbHNlKS5cbi8vXG4vLyBUaGUgcHJvZ3JhbSBhbmQgZWFjaCBhcmd1bWVudCBhcmUgcGFzc2VkIHRvIHRoZSBPUyBkaXJlY3RseSB3aXRob3V0IGdvaW5nXG4vLyB0aHJvdWdoIGEgc2hlbGwsIHNvIHRoZXJlIGlzIG5vIHF1b3RpbmcgdG8gZ2V0IHJpZ2h0IGFuZCBubyBkaWZmZXJlbmNlc1xuLy8gYmV0d2VlbiBwbGF0Zm9ybSBzaGVsbHMgdG8gYWNjb3VudCBmb3Igd2hlbiBjb21tYW5kcyBpbmNsdWRlIHZhbHVlcyBkZXJpdmVkXG4vLyBmcm9tIGZpbGVzLCBnaXQgb3V0cHV0LCBjb25maWd1cmF0aW9uLCBldGMuXG4vL1xuLy8gT25seSBwZXItdG9vbCBoZWxwZXJzIGFyZSBleHBvcnRlZCAoZS5nLiBgZ2l0YCk7IHRoZSBnZW5lcmljIHByaW1pdGl2ZXMgYXJlXG4vLyBrZXB0IHByaXZhdGUgc28gY2FsbCBzaXRlcyBhcmUgZXhwbGljaXQgYWJvdXQgd2hpY2ggdG9vbCB0aGV5IGludm9rZS5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9cblxuLyoqXG4gKiBPcHRpb25zIGZvciBzaGVsbC1mcmVlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNGaWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXb3JraW5nIGRpcmVjdG9yeSBmb3IgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBjd2Q6IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIG1lcmdlZCBvbiB0b3Agb2YgYHByb2Nlc3MuZW52YC5cbiAgICovXG4gIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD47XG5cbiAgLyoqXG4gICAqIEZvciBgY2FwdHVyZWAvYHRyeUNhcHR1cmVgOiBpbnRlcmxlYXZlIFNUREVSUiBpbnRvIHRoZSBjYXB0dXJlZCBvdXRwdXRcbiAgICogaW5zdGVhZCBvZiBvbmx5IGNhcHR1cmluZyBTVERPVVQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjYXB0dXJlU3RkZXJyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgVG9vbC5ydW59LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bk9wdGlvbnMgZXh0ZW5kcyBFeGVjRmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogU3RyZWFtIHRoZSBjaGlsZCdzIHN0ZG91dCBhbmQgc3RkZXJyIHN0cmFpZ2h0IHRvIHRoZSBwYXJlbnQncyBzdGRvdXQgYW5kXG4gICAqIHN0ZGVyciAoZnVsbCBpbmhlcml0YW5jZSksIGluc3RlYWQgb2YgcmVkaXJlY3Rpbmcgc3Rkb3V0IHRvIHN0ZGVyciBhbmRcbiAgICogY2FwdHVyaW5nIHN0ZGVyciAodGhlIGRlZmF1bHQpLlxuICAgKlxuICAgKiBVc2UgdGhpcyB3aGVuIGxhdW5jaGluZyBhIGNoaWxkIHByb2Nlc3Mgd2hvc2Ugc3Rkb3V0IGlzIG1lYW5pbmdmdWwgYW5kXG4gICAqIHdob3NlIG91dHB1dCBzaG91bGQgc3RyZWFtIGxpdmUgdG8gdGhlIHVzZXIgKGUuZy4gdGhlIHByb2plbiBDTEkpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5oZXJpdFN0ZGlvPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gc3Bhd25PcHRzKG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIG1heEJ1ZmZlcjogTUFYX0JVRkZFUixcbiAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgIGVudjogb3B0aW9ucy5lbnYgPyB7IC4uLnByb2Nlc3MuZW52LCAuLi5vcHRpb25zLmVudiB9IDogdW5kZWZpbmVkLFxuICAgIC8vIHJ1biB0aGUgcHJvZ3JhbSBkaXJlY3RseSwgd2l0aG91dCBnb2luZyB0aHJvdWdoIGEgc2hlbGxcbiAgICBzaGVsbDogZmFsc2UgYXMgY29uc3QsXG4gIH07XG59XG5cbi8qKlxuICogUnVucyBhIHByb2dyYW0gd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBpbmhlcml0aW5nIHN0ZG91dC4gVGhyb3dzIGlmIHRoZVxuICogY29tbWFuZCBleGl0cyB3aXRoIGEgbm9uLXplcm8gc3RhdHVzLlxuICovXG5mdW5jdGlvbiBydW4oZmlsZTogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogUnVuT3B0aW9ucyk6IHZvaWQge1xuICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG5cbiAgY2hpbGRfcHJvY2Vzcy5leGVjRmlsZVN5bmMoZmlsZSwgYXJncywge1xuICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAvLyBCeSBkZWZhdWx0IHRoZSBjaGlsZCdzIHN0ZG91dCBpcyByZWRpcmVjdGVkIHRvIFNUREVSUiAodG8ga2VlcCB0aGVcbiAgICAvLyBwYXJlbnQncyBTVERPVVQgY2xlYW4pIGFuZCBpdHMgU1RERVJSIGlzIHBpcGVkIHNvIGl0IHN1cmZhY2VzIGluXG4gICAgLy8gZXhjZXB0aW9ucy4gYGluaGVyaXRTdGRpb2AgaW5zdGVhZCBzdHJlYW1zIGJvdGggc3RyYWlnaHQgdG8gdGhlIHBhcmVudC5cbiAgICBzdGRpbzogb3B0aW9ucy5pbmhlcml0U3RkaW8gPyBcImluaGVyaXRcIiA6IFtcImluaGVyaXRcIiwgMiwgXCJwaXBlXCJdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIGEgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgdHJpbW1lZCBTVERPVVQgKG9yIFNURE9VVCtTVERFUlIgaW50ZXJsZWF2ZWRcbiAqIGluIHRoZWlyIG9yaWdpbmFsIHdyaXRlIG9yZGVyLCBpZiBgY2FwdHVyZVN0ZGVycmAgaXMgc2V0KS4gVGhyb3dzIGlmIHRoZVxuICogY29tbWFuZCBleGl0cyB3aXRoIGEgbm9uLXplcm8gc3RhdHVzLlxuICovXG5mdW5jdGlvbiBjYXB0dXJlKFxuICBmaWxlOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMsXG4pOiBzdHJpbmcge1xuICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG5cbiAgaWYgKG9wdGlvbnMuY2FwdHVyZVN0ZGVycikge1xuICAgIC8vIFNhbWUgZmQgZm9yIGJvdGggc3RyZWFtcyBzbyB0aGV5IGludGVybGVhdmUgaW4gd3JpdGUgb3JkZXIuIEEgc2hhcmVkXG4gICAgLy8gaW4tbWVtb3J5IFdyaXRhYmxlIHdvbid0IHdvcmsgaGVyZSAtIGV4ZWNGaWxlU3luYyBvbmx5IGFjY2VwdHMgc3RkaW9cbiAgICAvLyBzdHJlYW1zIGJhY2tlZCBieSBhIHJlYWwgZmQgKHR0eS9maWxlL3NvY2tldC9waXBlKS5cbiAgICBjb25zdCBjb21iaW5lZEZpbGUgPSBwYXRoLmpvaW4oXG4gICAgICBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksIFwicHJvamVuLWNhcHR1cmUtXCIpKSxcbiAgICAgIFwib3V0cHV0XCIsXG4gICAgKTtcbiAgICBjb25zdCBmZCA9IGZzLm9wZW5TeW5jKGNvbWJpbmVkRmlsZSwgXCJ3K1wiKTtcbiAgICB0cnkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjRmlsZVN5bmMoZmlsZSwgYXJncywge1xuICAgICAgICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAgICAgICBzdGRpbzogW1wiaW5oZXJpdFwiLCBmZCwgZmRdLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAvLyBtaXJyb3JzIGV4ZWNGaWxlU3luYydzIG93biBiZWhhdmlvciBvZiBhdHRhY2hpbmcgb3V0cHV0IHRvIHRoZSBlcnJvclxuICAgICAgICBlLnN0ZG91dCA9IGZzLnJlYWRGaWxlU3luYyhjb21iaW5lZEZpbGUpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhjb21iaW5lZEZpbGUsIFwidXRmLThcIikudHJpbSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBmcy5jbG9zZVN5bmMoZmQpO1xuICAgICAgZnMucm1TeW5jKHBhdGguZGlybmFtZShjb21iaW5lZEZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNoaWxkX3Byb2Nlc3NcbiAgICAuZXhlY0ZpbGVTeW5jKGZpbGUsIGFyZ3MsIHtcbiAgICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAgIHN0ZGlvOiBbXCJpbmhlcml0XCIsIFwicGlwZVwiLCBcInBpcGVcIl0sIC8vIFwicGlwZVwiIGZvciBTVERFUlIgbWVhbnMgaXQgYXBwZWFycyBpbiBleGNlcHRpb25zXG4gICAgfSlcbiAgICAudG9TdHJpbmcoXCJ1dGYtOFwiKVxuICAgIC50cmltKCk7XG59XG5cbi8qKlxuICogUnVucyBhIHByb2dyYW0gYW5kIHJldHVybnMgaXRzIHRyaW1tZWQgU1RET1VUIChvciBTVERPVVQrU1RERVJSIGludGVybGVhdmVkXG4gKiBpbiB0aGVpciBvcmlnaW5hbCB3cml0ZSBvcmRlciwgaWYgYGNhcHR1cmVTdGRlcnJgIGlzIHNldCksIG9yIGB1bmRlZmluZWRgXG4gKiBpZiB0aGUgY29tbWFuZCBmYWlsZWQgb3IgcHJvZHVjZWQgbm8gb3V0cHV0LlxuICovXG5mdW5jdGlvbiB0cnlDYXB0dXJlKFxuICBmaWxlOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGNvbnN0IHZhbHVlID0gY2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKTtcblxuICAgIC8vIGFuIGVtcHR5IHN0cmluZyBpcyB0aGUgc2FtZSBhcyB1bmRlZmluZWRcbiAgICByZXR1cm4gdmFsdWUgfHwgdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQSBzaGVsbC1mcmVlIGhhbmRsZSBmb3IgaW52b2tpbmcgYSBzaW5nbGUgcHJvZ3JhbSBieSBuYW1lIG9yIHBhdGguXG4gKlxuICogRWFjaCBhcmd1bWVudCBpcyBwYXNzZWQgdG8gdGhlIHByb2dyYW0gdmVyYmF0aW0gKG5vIHNoZWxsIHBhcnNpbmcpLCBzbyB0aGVyZVxuICogaXMgbm8gcXVvdGluZyB0byBnZXQgcmlnaHQgZm9yIHZhbHVlcyBzdWNoIGFzIHRhZ3MsIHZlcnNpb25zLCBicmFuY2ggbmFtZXNcbiAqIG9yIGZpbGUgcGF0aHMuXG4gKlxuICogTm90ZTogdGhlIHByb2dyYW0gaXMgZXhlY3V0ZWQgZGlyZWN0bHksIHdpdGhvdXQgYSBzaGVsbC4gT24gV2luZG93cyB0aGlzXG4gKiBtZWFucyBpdCBtdXN0IGJlIGEgcmVhbCBleGVjdXRhYmxlIC0gYC5jbWRgL2AuYmF0YCBzaGltcyAoc3VjaCBhc1xuICogbnBtLWluc3RhbGxlZCBDTElzIGxpa2UgbnBtL25weC95YXJuL3BucG0pIGNhbm5vdCBiZSBpbnZva2VkIHRoaXMgd2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvb2wge1xuICAvKipcbiAgICogUnVucyBgPHRvb2w+IDxhcmdzPmAsIGluaGVyaXRpbmcgc3Rkb3V0LiBUaHJvd3Mgb24gbm9uLXplcm8gZXhpdC5cbiAgICovXG4gIHJ1bihhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogUnVuT3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVC4gVGhyb3dzIG9uIG5vbi16ZXJvIGV4aXQuXG4gICAqL1xuICBjYXB0dXJlKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlXG4gICAqIGNvbW1hbmQgZmFpbGVkIG9yIHByb2R1Y2VkIG5vIG91dHB1dC5cbiAgICovXG4gIHRyeUNhcHR1cmUoYXJnczogc3RyaW5nW10sIG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc2hlbGwtZnJlZSB7QGxpbmsgVG9vbH0gZm9yIHRoZSBnaXZlbiBwcm9ncmFtLlxuICpcbiAqIEBleGFtcGxlIGNvbnN0IGdpdCA9IHRvb2woXCJnaXRcIik7IGdpdC5ydW4oW1widGFnXCIsIFwiLS1kZWxldGVcIiwgdGFnXSwgeyBjd2QgfSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b29sKGZpbGU6IHN0cmluZyk6IFRvb2wge1xuICByZXR1cm4ge1xuICAgIHJ1bjogKGFyZ3MsIG9wdGlvbnMpID0+IHJ1bihmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgICBjYXB0dXJlOiAoYXJncywgb3B0aW9ucykgPT4gY2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgICB0cnlDYXB0dXJlOiAoYXJncywgb3B0aW9ucykgPT4gdHJ5Q2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTaGVsbC1mcmVlIGhlbHBlciBmb3IgaW52b2tpbmcgYGdpdGAuXG4gKlxuICogQGV4YW1wbGUgZ2l0LnJ1bihbXCJ0YWdcIiwgXCItLWRlbGV0ZVwiLCB0YWddLCB7IGN3ZCB9KTtcbiAqL1xuZXhwb3J0IGNvbnN0IGdpdCA9IHRvb2woXCJnaXRcIik7XG5cbi8qKlxuICogU2hlbGwtZnJlZSBoZWxwZXIgZm9yIGludm9raW5nIGB1dmAgKHNoaXBzIGFzIGEgbmF0aXZlIGJpbmFyeSBvbiBhbGxcbiAqIHBsYXRmb3JtcykuXG4gKi9cbmV4cG9ydCBjb25zdCB1diA9IHRvb2woXCJ1dlwiKTtcblxuLyoqXG4gKiBTaGVsbC1mcmVlIGhlbHBlciBmb3IgaW52b2tpbmcgYHBvZXRyeWAuXG4gKi9cbmV4cG9ydCBjb25zdCBwb2V0cnkgPSB0b29sKFwicG9ldHJ5XCIpO1xuXG4vKipcbiAqIFNoZWxsLWZyZWUgaGVscGVyIGZvciBpbnZva2luZyB0aGUgY3VycmVudCBOb2RlLmpzIGV4ZWN1dGFibGVcbiAqIChgcHJvY2Vzcy5leGVjUGF0aGApLlxuICovXG5leHBvcnQgY29uc3Qgbm9kZSA9IHRvb2wocHJvY2Vzcy5leGVjUGF0aCk7XG5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENyb3NzLXBsYXRmb3JtIGV4ZWN1dGlvbiB2aWEgZGF4IChmb3IgYmluYXJpZXMgdGhhdCBtYXkgYmUgYC5jbWRgIHNoaW1zKS5cbi8vXG4vLyBgdG9vbGAgYWJvdmUgdXNlcyBgZXhlY0ZpbGVTeW5jYCB3aXRoIGBzaGVsbDogZmFsc2VgLCB3aGljaCBjYW5ub3QgbGF1bmNoXG4vLyBXaW5kb3dzIGAuY21kYC9gLmJhdGAgc2hpbXMgc3VjaCBhcyBgbnB4YCBvciBgbnBtYC4gYHNoaW1Ub29sYCBydW5zIHRocm91Z2hcbi8vIGRheCwgd2hpY2ggcmVzb2x2ZXMgdGhvc2Ugc2hpbXMgY3Jvc3MtcGxhdGZvcm0uIEFyZ3VtZW50cyBhcmUgaW50ZXJwb2xhdGVkXG4vLyB0aHJvdWdoIGRheCdzIGVzY2FwaW5nIChOT1QgYCQucmF3YCksIHNvIGVhY2ggdmFsdWUgaXMgcGFzc2VkIGFzIGEgc2luZ2xlXG4vLyBsaXRlcmFsIGFyZ3VtZW50IHdpdGggbm8gcXVvdGluZyB0byBnZXQgcmlnaHQuIGRheCBpcyBhc3luY2hyb25vdXMsIHNvXG4vLyB0aGVzZSBoZWxwZXJzIGFyZSBvbmx5IHVzYWJsZSBmcm9tIGFzeW5jIGNhbGwgc2l0ZXMuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG5cbi8qKlxuICogQXN5bmMsIGRheC1iYWNrZWQgZXF1aXZhbGVudCBvZiB7QGxpbmsgVG9vbH0gZm9yIHByb2dyYW1zIHRoYXQgbWF5IGJlIGFcbiAqIFdpbmRvd3MgYC5jbWRgL2AuYmF0YCBzaGltIChlLmcuIGBucHhgLCBgbnBtYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXN5bmNUb29sIHtcbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gLCBpbmhlcml0aW5nIHN0ZG91dC4gUmVqZWN0cyBvbiBub24temVybyBleGl0LlxuICAgKi9cbiAgcnVuKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSdW5zIGA8dG9vbD4gPGFyZ3M+YCBhbmQgcmVzb2x2ZXMgaXRzIHRyaW1tZWQgU1RET1VULiBSZWplY3RzIG9uIG5vbi16ZXJvXG4gICAqIGV4aXQuXG4gICAqL1xuICBjYXB0dXJlKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiB7QGxpbmsgQXN5bmNUb29sfSB0aGF0IGludm9rZXMgYGZpbGVgIHZpYSBkYXgsIHJlc29sdmluZyBXaW5kb3dzXG4gKiBgLmNtZGAvYC5iYXRgIHNoaW1zIGFuZCBlc2NhcGluZyBldmVyeSBhcmd1bWVudCAoc28gZWFjaCB2YWx1ZSBpcyBwYXNzZWQgYXNcbiAqIGEgc2luZ2xlIGxpdGVyYWwgYXJndW1lbnQpLlxuICpcbiAqIEBleGFtcGxlIGF3YWl0IG5weC5ydW4oW1wiY29tbWl0LWFuZC10YWctdmVyc2lvbkBeMTNcIl0sIHsgY3dkIH0pO1xuICovXG5mdW5jdGlvbiBzaGltVG9vbChmaWxlOiBzdHJpbmcpOiBBc3luY1Rvb2wge1xuICBjb25zdCBidWlsZCA9IChhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogRXhlY0ZpbGVPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY21kID0gJGAke2ZpbGV9ICR7YXJnc31gLmN3ZChvcHRpb25zLmN3ZCkuc3RkZXJyKFwicGlwZWRcIikubm9UaHJvdygpO1xuICAgIHJldHVybiBvcHRpb25zLmVudiA/IGNtZC5lbnYob3B0aW9ucy5lbnYpIDogY21kO1xuICB9O1xuICBjb25zdCBlbnN1cmVPayA9IChcbiAgICBhcmdzOiBzdHJpbmdbXSxcbiAgICByZXN1bHQ6IHsgY29kZTogbnVtYmVyOyBzdGRlcnI6IHN0cmluZyB9LFxuICApID0+IHtcbiAgICBpZiAocmVzdWx0LmNvZGUgIT09IDApIHtcbiAgICAgIC8vIE1pbWljIHRoZSBgY2hpbGRfcHJvY2Vzc2AgZXJyb3Igc2hhcGUgKGBzdGF0dXNgLCBgc3RkZXJyYCkgc28gY2FsbGVyc1xuICAgICAgLy8gY2FuIGluc3BlY3Qgc3RkZXJyIChlLmcuIHRvIGRldGVjdCBFTk9FTlQvRTQwNCBmcm9tIG5wbSkuXG4gICAgICBjb25zdCBlcnJvcjogYW55ID0gbmV3IEVycm9yKFxuICAgICAgICBgQ29tbWFuZCBmYWlsZWQgKGV4aXQgY29kZSAke3Jlc3VsdC5jb2RlfSk6ICR7ZmlsZX0gJHthcmdzLmpvaW4oXCIgXCIpfWAsXG4gICAgICApO1xuICAgICAgZXJyb3Iuc3RhdHVzID0gcmVzdWx0LmNvZGU7XG4gICAgICBlcnJvci5zdGRlcnIgPSBCdWZmZXIuZnJvbShyZXN1bHQuc3RkZXJyKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBydW46IGFzeW5jIChhcmdzLCBvcHRpb25zKSA9PiB7XG4gICAgICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG4gICAgICBlbnN1cmVPayhhcmdzLCBhd2FpdCBidWlsZChhcmdzLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBjYXB0dXJlOiBhc3luYyAoYXJncywgb3B0aW9ucykgPT4ge1xuICAgICAgbG9nZ2luZy5kZWJ1ZyhgJHtmaWxlfSAke2FyZ3Muam9pbihcIiBcIil9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYnVpbGQoYXJncywgb3B0aW9ucykuc3Rkb3V0KFwicGlwZWRcIik7XG4gICAgICBlbnN1cmVPayhhcmdzLCByZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdC5zdGRvdXQudHJpbSgpO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQ3Jvc3MtcGxhdGZvcm0gaGVscGVyIGZvciBgbnBtYCAoYSBXaW5kb3dzIGAuY21kYCBzaGltKS5cbiAqL1xuZXhwb3J0IGNvbnN0IG5wbSA9IHNoaW1Ub29sKFwibnBtXCIpO1xuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGhlbHBlciBmb3IgYG5weGAgKGEgV2luZG93cyBgLmNtZGAgc2hpbSkuXG4gKi9cbmV4cG9ydCBjb25zdCBucHggPSBzaGltVG9vbChcIm5weFwiKTtcbiJdfQ==
package/lib/version.d.ts CHANGED
@@ -65,7 +65,7 @@ export interface VersionOptions {
65
65
  *
66
66
  * This can be any compatible package version, including the deprecated `standard-version@9`.
67
67
  *
68
- * @default "commit-and-tag-version@12"
68
+ * @default "commit-and-tag-version@13"
69
69
  */
70
70
  readonly bumpPackage?: string;
71
71
  /**
package/lib/version.js CHANGED
@@ -38,9 +38,9 @@ exports.CHANGES_SINCE_LAST_RELEASE = 'git log --oneline -1 | grep -v "chore(rele
38
38
  /**
39
39
  * The default package to be used for commit-and-tag-version
40
40
  */
41
- const COMMIT_AND_TAG_VERSION_DEFAULT = "commit-and-tag-version@^12";
41
+ const COMMIT_AND_TAG_VERSION_DEFAULT = "commit-and-tag-version@^13";
42
42
  class Version extends component_1.Component {
43
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Version", version: "0.103.23" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Version", version: "0.103.24" };
44
44
  bumpTask;
45
45
  unbumpTask;
46
46
  /**
@@ -195,7 +195,7 @@ exports.Version = Version;
195
195
  */
196
196
  class ReleasableCommits {
197
197
  cmd;
198
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ReleasableCommits", version: "0.103.23" };
198
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ReleasableCommits", version: "0.103.24" };
199
199
  /**
200
200
  * Release every commit
201
201
  *
@@ -263,4 +263,4 @@ function withPath(cmd, path) {
263
263
  }
264
264
  return cmd;
265
265
  }
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwrQkFBNkI7QUFFN0IsMkNBQXdDO0FBQ3hDLGlEQUE4RDtBQUM5RCw0REFBd0Q7QUFHeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUNVLFFBQUEsMEJBQTBCLEdBQ3JDLDhEQUE4RCxDQUFDO0FBRWpFOztHQUVHO0FBQ0gsTUFBTSw4QkFBOEIsR0FBRyw0QkFBNEIsQ0FBQztBQXNFcEUsTUFBYSxPQUFRLFNBQVEscUJBQVM7O0lBQ3BCLFFBQVEsQ0FBTztJQUNmLFVBQVUsQ0FBTztJQUVqQzs7O09BR0c7SUFDYSxxQkFBcUIsQ0FBTztJQUU1Qzs7O09BR0c7SUFDYSxlQUFlLENBQVE7SUFFdkM7O09BRUc7SUFDYSxpQkFBaUIsQ0FBUztJQUUxQzs7T0FFRztJQUNhLGVBQWUsQ0FBUztJQUV4Qzs7T0FFRztJQUNhLGtCQUFrQixDQUFTO0lBRTNDOzs7T0FHRztJQUNhLFdBQVcsQ0FBUztJQUVuQixrQkFBa0IsQ0FBVTtJQUU3QyxZQUFZLEtBQWlCLEVBQUUsT0FBdUI7UUFDcEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLDhCQUE4QixDQUFDO1FBQ3pFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUM7UUFFckQsMENBQTBDO1FBQzFDLHdIQUF3SDtRQUN4SCxNQUFNLElBQUksR0FBRywwQkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7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UUFDdkcsTUFBTSxHQUFHLEdBQUcsZ0VBQWdFLFlBQVksa0RBQWtELENBQUM7UUFFM0ksT0FBTyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFhO1FBQ25DLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBVztRQUNyQixPQUFPLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQTJCLEdBQVc7UUFBWCxRQUFHLEdBQUgsR0FBRyxDQUFRO0lBQUcsQ0FBQzs7QUE1RDVDLDhDQTZEQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQUMsR0FBVyxFQUFFLElBQWE7SUFDMUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdkIsT0FBTyxHQUFHLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9zaXggfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGVwZW5kZW5jaWVzLCBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgTm9kZVBhY2thZ2UgfSBmcm9tIFwiLi9qYXZhc2NyaXB0L25vZGUtcGFja2FnZVwiO1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSBcIi4vdGFza1wiO1xuXG4vKipcbiAqIFRoaXMgY29tbWFuZCBkZXRlcm1pbmVzIGlmIHRoZXJlIHdlcmUgYW55IGNoYW5nZXMgc2luY2UgdGhlIGxhc3QgcmVsZWFzZSBpbiBhXG4gKiBjcm9zcy1wbGF0Zm9ybSBjb21wYXRpYmxlIHdheS4gSXQgaXMgdXNlZCBhcyBhIGNvbmRpdGlvbiBmb3IgYm90aCB0aGUgYGJ1bXBgXG4gKiBhbmQgdGhlIGByZWxlYXNlYCB0YXNrczogaXQgZXhpdHMgMCAocHJvY2VlZCkgd2hlbiB0aGUgbW9zdCByZWNlbnQgY29tbWl0IGlzXG4gKiBub3QgYSByZWxlYXNlIGNvbW1pdCwgYW5kIG5vbi16ZXJvIChza2lwKSB3aGVuIHRoZSBtb3N0IHJlY2VudCBjb21taXQgaXMgYVxuICogYGNob3JlKHJlbGVhc2UpOmAgY29tbWl0LlxuICpcbiAqIEV4cGxhbmF0aW9uOlxuICogIC0gYGdpdCBsb2cgLS1vbmVsaW5lIC0xYCAgICAgICAgICB0aGUgbW9zdCByZWNlbnQgY29tbWl0LCBvbmUgbGluZVxuICogIC0gYHwgZ3JlcCAtdiBcImNob3JlKHJlbGVhc2UpOlwiYCAgIHBhc3MgdGhlIGxpbmUgdGhyb3VnaCBvbmx5IGlmIGl0IGlzIE5PVCBhIHJlbGVhc2UgY29tbWl0XG4gKiAgLSBgPiAvZGV2L251bGxgICAgICAgICAgICAgICAgICAgIGRpc2NhcmQgZ3JlcCdzIG91dHB1dDsgb25seSBpdHMgZXhpdCBjb2RlIG1hdHRlcnNcbiAqXG4gKiBncmVwIGV4aXRzIDAgd2hlbiBpdCBwcmludHMgYXQgbGVhc3Qgb25lIG5vbi1tYXRjaGluZyBsaW5lIChhIG5vcm1hbCBjb21taXQsXG4gKiBzbyBwcm9jZWVkKSBhbmQgMSB3aGVuIGV2ZXJ5IGxpbmUgbWF0Y2hlcyAoYSByZWxlYXNlIGNvbW1pdCwgc28gc2tpcCkuXG4gKlxuICogSU1QT1JUQU5UOiBkbyBOT1QgcmVpbnRyb2R1Y2UgYGdyZXAgLXFgIGhlcmUgKGkuZS4gZG8gbm90IFwib3B0aW1pemVcIiB0aGlzIGJhY2tcbiAqIHRvIGBncmVwIC1xdmApLiBgZ3JlcCAtcWAgZXhpdHMgYXMgc29vbiBhcyBpdCBoYXMgYW4gYW5zd2VyIGFuZCBjbG9zZXMgdGhlIHJlYWRcbiAqIGVuZCBvZiB0aGUgcGlwZS4gV2hlbiB0aGlzIGNvbmRpdGlvbiBydW5zIHRocm91Z2ggcHJvamVuJ3MgYnVpbHQtaW4gKGRheClcbiAqIHNoZWxsLCB0aGF0IGVhcmx5IGNsb3NlIHJhY2VzIHdpdGggYGdpdCBsb2dgIHN0aWxsIHdyaXRpbmcgdG8gdGhlIHBpcGUsIGFuZCBkYXhcbiAqIHN1cmZhY2VzIHRoZSBmYWlsZWQgd3JpdGUgYXMgYSBzcHVyaW91cyBub24temVybyBleGl0IChcInN0ZGluIHBpcGUgYnJva2VuLlxuICogSW52YWxpZCBzdGF0ZTogV3JpdGFibGVTdHJlYW0gaXMgY2xvc2VkXCIpLiBUaGUgdGFzayBydW50aW1lIGNhbm5vdCBkaXN0aW5ndWlzaFxuICogdGhhdCBmcm9tIGEgbGVnaXRpbWF0ZSBza2lwIChkYXggcmVwb3J0cyBpdCBhcyBhIHBsYWluIG5vbi16ZXJvIGNvZGUgdW5kZXJcbiAqIGAubm9UaHJvdygpYCwgbm90IGFzIGFuIGVycm9yKSwgc28gdGhlIGJ1bXAvcmVsZWFzZSB0YXNrIGlzIHNpbGVudGx5IHNraXBwZWQ6IGFcbiAqIHJlbGVhc2UgaXMgbWlzc2VkLCBvciBhIGRlcGVuZGVudCBwdWJsaXNoZXMgYSBicm9rZW4gYF4wLjAuMGAgdmVyc2lvbiByYW5nZS5cbiAqIFBsYWluIGBncmVwIC12IC4uLiA+IC9kZXYvbnVsbGAgcmVhZHMgdG8gRU9GIGluc3RlYWQgb2Ygc2hvcnQtY2lyY3VpdGluZywgc28gaXRcbiAqIG5ldmVyIGNsb3NlcyB0aGUgcGlwZSB3aGlsZSB0aGUgd3JpdGVyIGlzIGFjdGl2ZSBhbmQgdGhlIHJhY2UgY2Fubm90IG9jY3VyLiBUaGVcbiAqIGV4aXQgc2VtYW50aWNzIGFyZSBpZGVudGljYWwgdG8gdGhlIHByZXZpb3VzIGBncmVwIC1xdmAuXG4gKi9cbmV4cG9ydCBjb25zdCBDSEFOR0VTX1NJTkNFX0xBU1RfUkVMRUFTRSA9XG4gICdnaXQgbG9nIC0tb25lbGluZSAtMSB8IGdyZXAgLXYgXCJjaG9yZShyZWxlYXNlKTpcIiA+IC9kZXYvbnVsbCc7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgcGFja2FnZSB0byBiZSB1c2VkIGZvciBjb21taXQtYW5kLXRhZy12ZXJzaW9uXG4gKi9cbmNvbnN0IENPTU1JVF9BTkRfVEFHX1ZFUlNJT05fREVGQVVMVCA9IFwiY29tbWl0LWFuZC10YWctdmVyc2lvbkBeMTJcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBgVmVyc2lvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbk9wdGlvbnMge1xuICAvKipcbiAgICogQSBuYW1lIG9mIGEgLmpzb24gZmlsZSB0byBzZXQgdGhlIGB2ZXJzaW9uYCBmaWVsZCBpbiBhZnRlciBhIGJ1bXAuXG4gICAqXG4gICAqIEBleGFtcGxlIFwicGFja2FnZS5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25JbnB1dEZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSBpbnRvIHdoaWNoIGBjaGFuZ2Vsb2cubWRgIGFuZCBgdmVyc2lvbi50eHRgIGZpbGVzXG4gICAqIGFyZSBlbWl0dGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RzRGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBjb25maWd1cmF0aW9uIGZvciB2ZXJzaW9ucmMgZmlsZSB1c2VkIGJ5IHN0YW5kYXJkLXJlbGVhc2VcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25yY09wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgdGFnIHByZWZpeCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ1ByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogRmluZCBjb21taXRzIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgcmVsZWFzYWJsZVxuICAgKiBVc2VkIHRvIGRlY2lkZSBpZiBhIHJlbGVhc2UgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlbGVhc2FibGVDb21taXRzLmV2ZXJ5Q29tbWl0KClcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2FibGVDb21taXRzPzogUmVsZWFzYWJsZUNvbW1pdHM7XG5cbiAgLyoqXG4gICAqIFRoZSBgY29tbWl0LWFuZC10YWctdmVyc2lvbmAgY29tcGF0aWJsZSBwYWNrYWdlIHVzZWQgdG8gYnVtcCB0aGUgcGFja2FnZSB2ZXJzaW9uLCBhcyBhIGRlcGVuZGVuY3kgc3RyaW5nLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSBhbnkgY29tcGF0aWJsZSBwYWNrYWdlIHZlcnNpb24sIGluY2x1ZGluZyB0aGUgZGVwcmVjYXRlZCBgc3RhbmRhcmQtdmVyc2lvbkA5YC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJjb21taXQtYW5kLXRhZy12ZXJzaW9uQDEyXCJcbiAgICovXG4gIHJlYWRvbmx5IGJ1bXBQYWNrYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNoZWxsIGNvbW1hbmQgdG8gY29udHJvbCB0aGUgbmV4dCB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqXG4gICAqIElmIHByZXNlbnQsIHRoaXMgc2hlbGwgY29tbWFuZCB3aWxsIGJlIHJ1biBiZWZvcmUgdGhlIGJ1bXAgaXMgZXhlY3V0ZWQsIGFuZFxuICAgKiBpdCBkZXRlcm1pbmVzIHdoYXQgdmVyc2lvbiB0byByZWxlYXNlLiBJdCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBmb2xsb3dpbmdcbiAgICogZW52aXJvbm1lbnQ6XG4gICAqXG4gICAqIC0gV29ya2luZyBkaXJlY3Rvcnk6IHRoZSBwcm9qZWN0IGRpcmVjdG9yeS5cbiAgICogLSBgJFZFUlNJT05gOiB0aGUgY3VycmVudCB2ZXJzaW9uLiBMb29rcyBsaWtlIGAxLjIuM2AuXG4gICAqIC0gYCRMQVRFU1RfVEFHYDogdGhlIG1vc3QgcmVjZW50IHRhZy4gTG9va3MgbGlrZSBgcHJlZml4LXYxLjIuM2AsIG9yIG1heSBiZSB1bnNldC5cbiAgICogLSBgJFNVR0dFU1RFRF9CVU1QYDogdGhlIHN1Z2dlc3RlZCBidW1wIGFjdGlvbiBiYXNlZCBvbiBjb21taXRzLiBPbmUgb2YgYG1ham9yfG1pbm9yfHBhdGNofG5vbmVgLlxuICAgKlxuICAgKiBUaGUgY29tbWFuZCBzaG91bGQgcHJpbnQgb25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gYHN0ZG91dGA6XG4gICAqXG4gICAqIC0gTm90aGluZzogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIGNvbW1pdCBoaXN0b3J5LlxuICAgKiAtIGB4LnkuemA6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgYHgueS56YC5cbiAgICogLSBgbWFqb3J8bWlub3J8cGF0Y2hgOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIHRoZSBjdXJyZW50IHZlcnNpb24gbnVtYmVyXG4gICAqICAgd2l0aCB0aGUgaW5kaWNhdGVkIGNvbXBvbmVudCBidW1wZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIG5leHQgdmVyc2lvbiB3aWxsIGJlIGRldGVybWluZWQgYmFzZWQgb24gdGhlIGNvbW1pdCBoaXN0b3J5IGFuZCBwcm9qZWN0IHNldHRpbmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV4dFZlcnNpb25Db21tYW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVmVyc2lvbiBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBidW1wVGFzazogVGFzaztcbiAgcHVibGljIHJlYWRvbmx5IHVuYnVtcFRhc2s6IFRhc2s7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXNrIHRoYXQgcHJpbnRzIHRoZSByZWxlYXNhYmxlIGNvbW1pdHMgc2luY2UgdGhlIGxhdGVzdCB0YWcuIFNwYXduZWRcbiAgICogYnkgYGJ1bXBgOyBpdHMgc2hlbGwgY2FuIGJlIG92ZXJyaWRkZW4gdmlhIGB0YXNrLnNoZWxsYC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWxlYXNhYmxlQ29tbWl0c1Rhc2s6IFRhc2s7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXNrIHRoYXQgcnVucyB0aGUgdXNlcidzIGBuZXh0VmVyc2lvbkNvbW1hbmRgLCBpZiBjb25maWd1cmVkLiBTcGF3bmVkXG4gICAqIGJ5IGBidW1wYDsgaXRzIHNoZWxsIGNhbiBiZSBvdmVycmlkZGVuIHZpYSBgdGFzay5zaGVsbGAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dFZlcnNpb25UYXNrPzogVGFzaztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNoYW5nZWxvZyBmaWxlICh1bmRlciBgYXJ0aWZhY3RzRGlyZWN0b3J5YCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlbG9nRmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhhdCBjb250YWlucyB0aGUgdmVyc2lvbiAodW5kZXIgYGFydGlmYWN0c0RpcmVjdG9yeWApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZlcnNpb25GaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSByZWxlYXNlIHRhZyAodW5kZXIgYGFydGlmYWN0c0RpcmVjdG9yeWApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlbGVhc2VUYWdGaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSB1c2VkIHRvIGJ1bXAgcGFja2FnZSB2ZXJzaW9ucywgYXMgYSBkZXBlbmRlbmN5IHN0cmluZy5cbiAgICogVGhpcyBpcyBhIGBjb21taXQtYW5kLXRhZy12ZXJzaW9uYCBjb21wYXRpYmxlIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVtcFBhY2thZ2U6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IG5leHRWZXJzaW9uQ29tbWFuZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogSUNvbnN0cnVjdCwgb3B0aW9uczogVmVyc2lvbk9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSk7XG5cbiAgICB0aGlzLmNoYW5nZWxvZ0ZpbGVOYW1lID0gXCJjaGFuZ2Vsb2cubWRcIjtcbiAgICB0aGlzLnZlcnNpb25GaWxlTmFtZSA9IFwidmVyc2lvbi50eHRcIjtcbiAgICB0aGlzLnJlbGVhc2VUYWdGaWxlTmFtZSA9IFwicmVsZWFzZXRhZy50eHRcIjtcbiAgICB0aGlzLmJ1bXBQYWNrYWdlID0gb3B0aW9ucy5idW1wUGFja2FnZSA/PyBDT01NSVRfQU5EX1RBR19WRVJTSU9OX0RFRkFVTFQ7XG4gICAgdGhpcy5uZXh0VmVyc2lvbkNvbW1hbmQgPSBvcHRpb25zLm5leHRWZXJzaW9uQ29tbWFuZDtcblxuICAgIC8vIFRoaXMgY29tcG9uZW50IGlzIGxhbmd1YWdlIGluZGVwZW5kZW50LlxuICAgIC8vIEhvd2V2ZXIsIHdoZW4gaW4gdGhlIE5vZGUuanMgZWNvc3lzdGVtLCB3ZSBjYW4gaW1wcm92ZSB0aGUgZXhwZXJpZW5jZSBieSBhZGRpbmcgYSBkZXYgZGVwZW5kZW5jeSBvbiB0aGUgYnVtcCBwYWNrYWdlLlxuICAgIGNvbnN0IG5vZGUgPSBOb2RlUGFja2FnZS5vZih0aGlzLnByb2plY3QpO1xuICAgIGlmIChub2RlKSB7XG4gICAgICBjb25zdCB7IG5hbWU6IGJ1bXBOYW1lLCB2ZXJzaW9uOiBidW1wVmVyc2lvbiB9ID1cbiAgICAgICAgRGVwZW5kZW5jaWVzLnBhcnNlRGVwZW5kZW5jeSh0aGlzLmJ1bXBQYWNrYWdlKTtcbiAgICAgIG5vZGUucHJvamVjdC5kZXBzLnJlcXVlc3REZXBlbmRlbmN5KHtcbiAgICAgICAgbmFtZTogYnVtcE5hbWUsXG4gICAgICAgIHZlcnNpb246IGJ1bXBWZXJzaW9uLFxuICAgICAgICB0eXBlOiBEZXBlbmRlbmN5VHlwZS5CVUlMRCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcnNpb25JbnB1dEZpbGUgPSBvcHRpb25zLnZlcnNpb25JbnB1dEZpbGU7XG5cbiAgICBjb25zdCBjaGFuZ2Vsb2dGaWxlID0gcG9zaXguam9pbihcbiAgICAgIG9wdGlvbnMuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgdGhpcy5jaGFuZ2Vsb2dGaWxlTmFtZSxcbiAgICApO1xuICAgIGNvbnN0IGJ1bXBGaWxlID0gcG9zaXguam9pbihcbiAgICAgIG9wdGlvbnMuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgdGhpcy52ZXJzaW9uRmlsZU5hbWUsXG4gICAgKTtcbiAgICBjb25zdCByZWxlYXNlVGFnRmlsZSA9IHBvc2l4LmpvaW4oXG4gICAgICBvcHRpb25zLmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgIHRoaXMucmVsZWFzZVRhZ0ZpbGVOYW1lLFxuICAgICk7XG5cbiAgICBjb25zdCBjb21tb25FbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBPVVRGSUxFOiB2ZXJzaW9uSW5wdXRGaWxlLFxuICAgICAgQ0hBTkdFTE9HOiBjaGFuZ2Vsb2dGaWxlLFxuICAgICAgQlVNUEZJTEU6IGJ1bXBGaWxlLFxuICAgICAgUkVMRUFTRVRBRzogcmVsZWFzZVRhZ0ZpbGUsXG4gICAgICBSRUxFQVNFX1RBR19QUkVGSVg6IG9wdGlvbnMudGFnUHJlZml4ID8/IFwiXCIsXG4gICAgICAvLyBkb2Vzbid0IHdvcmsgaWYgY3VzdG9tIGNvbmZpZ3VyYXRpb24gaXMgbG9uZ1xuICAgICAgVkVSU0lPTlJDT1BUSU9OUzogSlNPTi5zdHJpbmdpZnkob3B0aW9ucy52ZXJzaW9ucmNPcHRpb25zKSxcbiAgICAgIEJVTVBfUEFDS0FHRTogdGhpcy5idW1wUGFja2FnZSxcbiAgICB9O1xuXG4gICAgLy8gVGhlIGNvbW1hbmQgdGhhdCBsaXN0cyByZWxlYXNhYmxlIGNvbW1pdHMsIHJ1biBhcyBpdHMgb3duIHNwYXduYWJsZSB0YXNrXG4gICAgLy8gc28gaXRzIHNoZWxsIGNhbiBiZSBjb25maWd1cmVkIGluZGVwZW5kZW50bHkgKHNlZSBgVGFza1NoZWxsYCkuXG4gICAgLy8gYCRMQVRFU1RfVEFHYCBpcyBwcm92aWRlZCBieSBgYnVtcGAgd2hlbiBzcGF3bmluZyBpdC5cbiAgICB0aGlzLnJlbGVhc2FibGVDb21taXRzVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKFxuICAgICAgXCJidW1wOnJlbGVhc2FibGUtY29tbWl0c1wiLFxuICAgICAge1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGUgcmVsZWFzYWJsZSBjb21taXRzIHNpbmNlIHRoZSBsYXRlc3QgcmVsZWFzZVwiLFxuICAgICAgICBleGVjOiAob3B0aW9ucy5yZWxlYXNhYmxlQ29tbWl0cyA/PyBSZWxlYXNhYmxlQ29tbWl0cy5ldmVyeUNvbW1pdCgpKVxuICAgICAgICAgIC5jbWQsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBUaGUgb3B0aW9uYWwgY29tbWFuZCB0aGF0IGRlY2lkZXMgdGhlIG5leHQgdmVyc2lvbiwgYWxzbyBpdHMgb3duIHRhc2suXG4gICAgaWYgKHRoaXMubmV4dFZlcnNpb25Db21tYW5kKSB7XG4gICAgICB0aGlzLm5leHRWZXJzaW9uVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKFwiYnVtcDpuZXh0LXZlcnNpb25cIiwge1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJEZXRlcm1pbmUgdGhlIG5leHQgdmVyc2lvbiB0byByZWxlYXNlXCIsXG4gICAgICAgIGV4ZWM6IHRoaXMubmV4dFZlcnNpb25Db21tYW5kLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gT3JjaGVzdHJhdGVzIHRoZSByZWxlYXNlIGJ1bXAgYXMgYSBwaXBlbGluZSBvZiBidWlsdGlucyBhbmQgc3Bhd25lZFxuICAgIC8vIHRhc2tzLCBoYW5kaW5nIHJlc3VsdHMgZm9yd2FyZCB2aWEgc3RlcCBgb3V0cHV0RW52YCBjYXB0dXJlcy5cbiAgICB0aGlzLmJ1bXBUYXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soXCJidW1wXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkJ1bXBzIHZlcnNpb24gYmFzZWQgb24gbGF0ZXN0IGdpdCB0YWcgYW5kIGdlbmVyYXRlcyBhIGNoYW5nZWxvZyBlbnRyeVwiLFxuICAgICAgY29uZGl0aW9uOiBDSEFOR0VTX1NJTkNFX0xBU1RfUkVMRUFTRSxcbiAgICAgIGVudjogeyAuLi5jb21tb25FbnYgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYnVtcFRhc2suYWRkU3RlcHMoXG4gICAgICB7IGJ1aWx0aW46IFwicmVsZWFzZS9yZXNvbHZlLWxhdGVzdC10YWdcIiwgb3V0cHV0RW52OiBcIkxBVEVTVF9UQUdcIiB9LFxuICAgICAgLy8gT24gYSBmaXJzdCByZWxlYXNlIHRoZSByZXNvbHZlZCB0YWcgaXMgc3ludGhldGljIGFuZCBkb2VzIG5vdCBleGlzdCwgc29cbiAgICAgIC8vIHRoZXJlIGlzIG5vdGhpbmcgdG8gZGlmZiBhZ2FpbnN0IC0gc2tpcCBsaXN0aW5nIGNvbW1pdHMgaW4gdGhhdCBjYXNlLlxuICAgICAge1xuICAgICAgICBzcGF3bjogXCJidW1wOnJlbGVhc2FibGUtY29tbWl0c1wiLFxuICAgICAgICBvdXRwdXRFbnY6IFwiUkVMRUFTQUJMRV9DT01NSVRTXCIsXG4gICAgICAgIGNvbmRpdGlvbjogJ2dpdCByZXYtcGFyc2UgLS12ZXJpZnkgLS1xdWlldCBcInJlZnMvdGFncy8kTEFURVNUX1RBR1wiJyxcbiAgICAgIH0sXG4gICAgICB7IGJ1aWx0aW46IFwicmVsZWFzZS9zdWdnZXN0LXZlcnNpb24tYnVtcFwiLCBvdXRwdXRFbnY6IFwiU1VHR0VTVEVEX0JVTVBcIiB9LFxuICAgICk7XG4gICAgaWYgKHRoaXMubmV4dFZlcnNpb25UYXNrKSB7XG4gICAgICAvLyBgYnVtcDpuZXh0LXZlcnNpb25gIHJlY2VpdmVzIGAkVkVSU0lPTmAgKHRoZSBjdXJyZW50IHZlcnNpb24pOyByZWFkIGl0XG4gICAgICAvLyBmcm9tIHRoZSB2ZXJzaW9uIGZpbGUgaW50byBgVkVSU0lPTmAgc28gaXQgcHJvcGFnYXRlcyB0byB0aGUgc3Bhd24uXG4gICAgICB0aGlzLmJ1bXBUYXNrLmFkZFN0ZXBzKFxuICAgICAgICB7XG4gICAgICAgICAgZXhlYzogYG5vZGUgLWUgXCJwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnBhcnNlKHJlcXVpcmUoJ2ZzJykucmVhZEZpbGVTeW5jKHByb2Nlc3MuZW52Lk9VVEZJTEUsJ3V0ZjgnKSkudmVyc2lvbilcImAsXG4gICAgICAgICAgb3V0cHV0RW52OiBcIlZFUlNJT05cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBzcGF3bjogXCJidW1wOm5leHQtdmVyc2lvblwiLCBvdXRwdXRFbnY6IFwiQlVNUF9UWVBFXCIgfSxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuYnVtcFRhc2suYWRkU3RlcHMoeyBidWlsdGluOiBcInJlbGVhc2UvYXBwbHktdmVyc2lvbi1idW1wXCIgfSk7XG5cbiAgICAvLyBSZXNldHMgdGhlIHZlcnNpb24gaW4gdGhlIHZlcnNpb24gZmlsZSBiYWNrIHRvIDAuMC4wIGFmdGVyIGEgYnVtcC5cbiAgICB0aGlzLnVuYnVtcFRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayhcInVuYnVtcFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0b3JlcyB2ZXJzaW9uIHRvIDAuMC4wXCIsXG4gICAgICBlbnY6IHsgLi4uY29tbW9uRW52IH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnVuYnVtcFRhc2suYnVpbHRpbihcInJlbGVhc2UvcmVzZXQtdmVyc2lvblwiKTtcblxuICAgIHRoaXMucHJvamVjdC5hZGRHaXRJZ25vcmUoYC8ke2NoYW5nZWxvZ0ZpbGV9YCk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZEdpdElnbm9yZShgLyR7YnVtcEZpbGV9YCk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYC8ke2NoYW5nZWxvZ0ZpbGV9YCk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYC8ke2J1bXBGaWxlfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIG1vZGlmeSB0aGUgYnVtcCBjb21tYW5kIGZvciByZWxlYXNlIGJyYW5jaGVzLlxuICAgKlxuICAgKiBUaGVzZSBvcHRpb25zIGFyZSB1c2VkIHRvIG1vZGlmeSB0aGUgYmVoYXZpb3Igb2YgdGhlIHZlcnNpb24gYnVtcGluZyBzY3JpcHRcbiAgICogZm9yIGFkZGl0aW9uYWwgYnJhbmNoZXMsIGJ5IHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKlxuICAgKiBObyBzZXR0aW5ncyBhcmUgaW5oZXJpdGVkIGZyb20gdGhlIGJhc2UgYFZlcnNpb25gIG9iamVjdCAoYnV0IGFueSBwYXJhbWV0ZXJzIHRoYXRcbiAgICogY29udHJvbCB2ZXJzaW9ucyBkbyBjb25mbGljdCB3aXRoIHRoZSB1c2Ugb2YgYSBgbmV4dFZlcnNpb25Db21tYW5kYCkuXG4gICAqL1xuICBwdWJsaWMgZW52Rm9yQnJhbmNoKFxuICAgIGJyYW5jaE9wdGlvbnM6IFZlcnNpb25CcmFuY2hPcHRpb25zLFxuICApOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBpZiAodGhpcy5uZXh0VmVyc2lvbkNvbW1hbmQgJiYgYnJhbmNoT3B0aW9ucy5taW5NYWpvclZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJtaW5NYWpvclZlcnNpb24gYW5kIG5leHRWZXJzaW9uQ29tbWFuZCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgaWYgKGJyYW5jaE9wdGlvbnMubWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGVudi5NQUpPUiA9IGJyYW5jaE9wdGlvbnMubWFqb3JWZXJzaW9uLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGJyYW5jaE9wdGlvbnMubWluTWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChicmFuY2hPcHRpb25zLm1ham9yVmVyc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgbWluTWFqb3JWZXJzaW9uIGFuZCBtYWpvclZlcnNpb24gY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgZW52Lk1JTl9NQUpPUiA9IGJyYW5jaE9wdGlvbnMubWluTWFqb3JWZXJzaW9uLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGJyYW5jaE9wdGlvbnMucHJlcmVsZWFzZSkge1xuICAgICAgZW52LlBSRVJFTEVBU0UgPSBicmFuY2hPcHRpb25zLnByZXJlbGVhc2U7XG4gICAgfVxuXG4gICAgaWYgKGJyYW5jaE9wdGlvbnMudGFnUHJlZml4KSB7XG4gICAgICBlbnYuUkVMRUFTRV9UQUdfUFJFRklYID0gYnJhbmNoT3B0aW9ucy50YWdQcmVmaXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudjtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gcGFzcyB0byBgbW9kaWZ5QnJhbmNoRW52aXJvbm1lbnRgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbkJyYW5jaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1ham9yIHZlcnNpb25zIHJlbGVhc2VkIGZyb20gdGhpcyBicmFuY2guXG4gICAqL1xuICByZWFkb25seSBtYWpvclZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG1ham9yIHZlcnNpb24gdG8gcmVsZWFzZS5cbiAgICovXG4gIHJlYWRvbmx5IG1pbk1ham9yVmVyc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1pbm9yIHZlcnNpb25zIHJlbGVhc2VkIGZyb20gdGhpcyBicmFuY2guXG4gICAqL1xuICByZWFkb25seSBtaW5vclZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEJ1bXAgdGhlIHZlcnNpb24gYXMgYSBwcmUtcmVsZWFzZSB0YWcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9ybWFsIHJlbGVhc2VzXG4gICAqL1xuICByZWFkb25seSBwcmVyZWxlYXNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZCB0aGUgZ2l2ZW4gcHJlZml4IHRvIHJlbGVhc2UgdGFncy5cbiAgICogVXNlZnVsIGlmIHlvdSBhcmUgcmVsZWFzaW5nIG9uIG11bHRpcGxlIGJyYW5jaGVzIHdpdGggb3ZlcmxhcHBpbmdcbiAgICogdmVyc2lvbiBudW1iZXJzLlxuICAgKlxuICAgKiBOb3RlOiB0aGlzIHByZWZpeCBpcyB1c2VkIHRvIGRldGVjdCB0aGUgbGF0ZXN0IHRhZ2dlZCB2ZXJzaW9uXG4gICAqIHdoZW4gYnVtcGluZywgc28gaWYgeW91IGNoYW5nZSB0aGlzIG9uIGEgcHJvamVjdCB3aXRoIGFuIGV4aXN0aW5nIHZlcnNpb25cbiAgICogaGlzdG9yeSwgeW91IG1heSBuZWVkIHRvIG1hbnVhbGx5IHRhZyB5b3VyIGxhdGVzdCByZWxlYXNlXG4gICAqIHdpdGggdGhlIG5ldyBwcmVmaXguXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJlZml4XG4gICAqL1xuICByZWFkb25seSB0YWdQcmVmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRmluZCBjb21taXRzIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgcmVsZWFzYWJsZSB0byBkZWNpZGUgaWYgYSByZWxlYXNlIGlzIHJlcXVpcmVkLlxuICpcbiAqIFRoaXMgc2V0dGluZyBvbmx5IGNvbnRyb2xzIHdoZXRoZXIgYSByZWxlYXNlIGlzIHRyaWdnZXJlZCwgeWVzIG9yIG5vLiBUaGVcbiAqIHBhdGhzIHVzZWQgaGVyZSBhcmUgaW5kZXBlbmRlbnQgb2YgdGhlIGNvZGUgdGhhdCBjb250cm9scyB3aGF0IGNvbW1pdHMgYXJlIGluc3BlY3RlZFxuICogdG8gZGV0ZXJtaW5lIHRoZSB2ZXJzaW9uIG51bWJlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbGVhc2FibGVDb21taXRzIHtcbiAgLyoqXG4gICAqIFJlbGVhc2UgZXZlcnkgY29tbWl0XG4gICAqXG4gICAqIFRoaXMgd2lsbCBvbmx5IG5vdCByZWxlYXNlIGlmIHRoZSBtb3N0IHJlY2VudCBjb21taXQgaXMgdGFnZ2VkIHdpdGggdGhlIGxhdGVzdCBtYXRjaGluZyB0YWcuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIENvbnNpZGVyIG9ubHkgY29tbWl0cyB0aGF0IGFyZSBlbm91Z2ggdG8gZXhwbGFpbiBob3cgdGhlIGZpbGVzIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBwYXRocyBjYW1lIHRvIGJlLlxuICAgKiBUaGlzIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXIgb2YgdGhlIGBidW1wYCB0YXNrLCBpLmUuIHRvIG9ubHkgY29uc2lkZXIgY29tbWl0cyBvZiBhIHN1YnByb2plY3QgdXNlIGBcIi5cImAuXG4gICAqL1xuICBzdGF0aWMgZXZlcnlDb21taXQocGF0aD86IHN0cmluZykge1xuICAgIGNvbnN0IGNtZCA9IGBnaXQgbG9nIC0tb25lbGluZSAkTEFURVNUX1RBRy4uSEVBRGA7XG4gICAgcmV0dXJuIG5ldyBSZWxlYXNhYmxlQ29tbWl0cyh3aXRoUGF0aChjbWQsIHBhdGgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1pdCBjb21taXRzIGJ5IHRoZWlyIGNvbnZlbnRpb25hbCBjb21taXQgdHlwZVxuICAgKlxuICAgKiBUaGlzIHdpbGwgb25seSByZWxlYXNlIGNvbW1pdCB0aGF0IG1hdGNoIG9uZSBvZiB0aGUgcHJvdmlkZWQgdHlwZXMuXG4gICAqIENvbW1pdHMgYXJlIHJlcXVpcmVkIHRvIGZvbGxvdyB0aGUgY29udmVudGlvbmFsIGNvbW1pdCBzcGVjIGFuZCB3aWxsIGJlIGlnbm9yZWQgb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZXMgTGlzdCBvZiBjb252ZW50aW9uYWwgY29tbWl0IHR5cGVzIHRoYXQgc2hvdWxkIGJlIHJlbGVhc2VkXG4gICAqIEBwYXJhbSBwYXRoIENvbnNpZGVyIG9ubHkgY29tbWl0cyB0aGF0IGFyZSBlbm91Z2ggdG8gZXhwbGFpbiBob3cgdGhlIGZpbGVzIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBwYXRocyBjYW1lIHRvIGJlLlxuICAgKiBUaGlzIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXIgb2YgdGhlIGBidW1wYCB0YXNrLCBpLmUuIHRvIG9ubHkgY29uc2lkZXIgY29tbWl0cyBvZiBhIHN1YnByb2plY3QgdXNlIGBcIi5cImAuXG4gICAqL1xuICBzdGF0aWMgb2ZUeXBlKHR5cGVzOiBzdHJpbmdbXSwgcGF0aD86IHN0cmluZykge1xuICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9IHR5cGVzLmpvaW4oXCJ8XCIpO1xuXG4gICAgLy8gQHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2NvbnZlbnRpb25hbC1jb21taXRzL3BhcnNlci9ibG9iL2VlZWZiOTYxZWJmNWI5ZGZlYTBmZWE4YjA2ZjhhZDM0YTFlNDM5YjkvbGliL3BhcnNlci5qc1xuICAgIC8vIC1FIHJlcXVpcmVzIHRoaXMgdG8gYmUgUE9TSVggRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uLCB3aGljaCBjb21lcyB3aXRoIGNlcnRhaW4gbGltaXRhdGlvbnNcbiAgICAvLyBzZWUgaHR0cHM6Ly9lbi53aWtpYm9va3Mub3JnL3dpa2kvUmVndWxhcl9FeHByZXNzaW9ucy9QT1NJWC1FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zIGZvciBkZXRhaWxzXG4gICAgY29uc3QgY21kID0gYGdpdCBsb2cgLS1uby1tZXJnZXMgLS1vbmVsaW5lICRMQVRFU1RfVEFHLi5IRUFEIC1FIC0tZ3JlcCAnXigke2FsbG93ZWRUeXBlc30pezF9KFxcXFwoW14oKVs6c3BhY2U6XV0rXFxcXCkpPyghKT86W1s6Ymxhbms6XV0rLisnYDtcblxuICAgIHJldHVybiBuZXcgUmVsZWFzYWJsZUNvbW1pdHMod2l0aFBhdGgoY21kLCBwYXRoKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVsZWFzZSBvbmx5IGZlYXR1cmVzIGFuZCBmaXhlc1xuICAgKlxuICAgKiBTaG9ydGhhbmQgZm9yIGBSZWxlYXNhYmxlQ29tbWl0cy5vbmx5T2ZUeXBlKFsnZmVhdCcsICdmaXgnXSlgLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCBDb25zaWRlciBvbmx5IGNvbW1pdHMgdGhhdCBhcmUgZW5vdWdoIHRvIGV4cGxhaW4gaG93IHRoZSBmaWxlcyB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpZWQgcGF0aHMgY2FtZSB0byBiZS5cbiAgICogVGhpcyBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyIG9mIHRoZSBgYnVtcGAgdGFzaywgaS5lLiB0byBvbmx5IGNvbnNpZGVyIGNvbW1pdHMgb2YgYSBzdWJwcm9qZWN0IHVzZSBgXCIuXCJgLlxuICAgKi9cbiAgc3RhdGljIGZlYXR1cmVzQW5kRml4ZXMocGF0aD86IHN0cmluZykge1xuICAgIHJldHVybiBSZWxlYXNhYmxlQ29tbWl0cy5vZlR5cGUoW1wiZmVhdFwiLCBcImZpeFwiXSwgcGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIGFuIGFyYml0cmFyeSBzaGVsbCBjb21tYW5kIHRvIGZpbmQgcmVsZWFzYWJsZSBjb21taXRzIHNpbmNlIHRoZSBsYXRlc3QgdGFnLlxuICAgKlxuICAgKiBBIG5ldyByZWxlYXNlIHdpbGwgYmUgaW5pdGlhdGVkLCBpZiB0aGUgbnVtYmVyIG9mIHJldHVybmVkIGNvbW1pdHMgaXMgZ3JlYXRlciB0aGFuIHplcm8uXG4gICAqIE11c3QgcmV0dXJuIGEgbmV3bGluZSBzZXBhcmF0ZSBsaXN0IG9mIGNvbW1pdHMgdGhhdCBzaG91bGQgY29uc2lkZXJlZCByZWxlYXNhYmxlLlxuICAgKiBgJExBVEVTVF9UQUdgIGlzIGF2YWlsYWJsZSBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSAoc2V0IHRvIHRoZSBhY3R1YWwgbGF0ZXN0IHRhZyBmb3IgdGhlIGdpdmVuIHByZWZpeCkuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiZ2l0IGxvZyAtLW9uZWxpbmUgJExBVEVTVF9UQUcuLkhFQUQgLS0gLlwiXG4gICAqL1xuICBzdGF0aWMgZXhlYyhjbWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgUmVsZWFzYWJsZUNvbW1pdHMoY21kKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHVibGljIGNtZDogc3RyaW5nKSB7fVxufVxuXG4vKipcbiAqIEFwcGVuZCBhIHBhdGggYXJndW1lbnQgdG8gYSBnaXQgY29tbWFuZCBpZiBvbmUgaXMgcHJvdmlkZWRcbiAqL1xuZnVuY3Rpb24gd2l0aFBhdGgoY21kOiBzdHJpbmcsIHBhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAocGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGAke2NtZH0gLS0gJHtwYXRofWA7XG4gIH1cblxuICByZXR1cm4gY21kO1xufVxuIl19
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwrQkFBNkI7QUFFN0IsMkNBQXdDO0FBQ3hDLGlEQUE4RDtBQUM5RCw0REFBd0Q7QUFHeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUNVLFFBQUEsMEJBQTBCLEdBQ3JDLDhEQUE4RCxDQUFDO0FBRWpFOztHQUVHO0FBQ0gsTUFBTSw4QkFBOEIsR0FBRyw0QkFBNEIsQ0FBQztBQXNFcEUsTUFBYSxPQUFRLFNBQVEscUJBQVM7O0lBQ3BCLFFBQVEsQ0FBTztJQUNmLFVBQVUsQ0FBTztJQUVqQzs7O09BR0c7SUFDYSxxQkFBcUIsQ0FBTztJQUU1Qzs7O09BR0c7SUFDYSxlQUFlLENBQVE7SUFFdkM7O09BRUc7SUFDYSxpQkFBaUIsQ0FBUztJQUUxQzs7T0FFRztJQUNhLGVBQWUsQ0FBUztJQUV4Qzs7T0FFRztJQUNhLGtCQUFrQixDQUFTO0lBRTNDOzs7T0FHRztJQUNhLFdBQVcsQ0FBUztJQUVuQixrQkFBa0IsQ0FBVTtJQUU3QyxZQUFZLEtBQWlCLEVBQUUsT0FBdUI7UUFDcEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLDhCQUE4QixDQUFDO1FBQ3pFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUM7UUFFckQsMENBQTBDO1FBQzFDLHdIQUF3SDtRQUN4SCxNQUFNLElBQUksR0FBRywwQkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7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UUFDdkcsTUFBTSxHQUFHLEdBQUcsZ0VBQWdFLFlBQVksa0RBQWtELENBQUM7UUFFM0ksT0FBTyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFhO1FBQ25DLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBVztRQUNyQixPQUFPLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQTJCLEdBQVc7UUFBWCxRQUFHLEdBQUgsR0FBRyxDQUFRO0lBQUcsQ0FBQzs7QUE1RDVDLDhDQTZEQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQUMsR0FBVyxFQUFFLElBQWE7SUFDMUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdkIsT0FBTyxHQUFHLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9zaXggfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGVwZW5kZW5jaWVzLCBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgTm9kZVBhY2thZ2UgfSBmcm9tIFwiLi9qYXZhc2NyaXB0L25vZGUtcGFja2FnZVwiO1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSBcIi4vdGFza1wiO1xuXG4vKipcbiAqIFRoaXMgY29tbWFuZCBkZXRlcm1pbmVzIGlmIHRoZXJlIHdlcmUgYW55IGNoYW5nZXMgc2luY2UgdGhlIGxhc3QgcmVsZWFzZSBpbiBhXG4gKiBjcm9zcy1wbGF0Zm9ybSBjb21wYXRpYmxlIHdheS4gSXQgaXMgdXNlZCBhcyBhIGNvbmRpdGlvbiBmb3IgYm90aCB0aGUgYGJ1bXBgXG4gKiBhbmQgdGhlIGByZWxlYXNlYCB0YXNrczogaXQgZXhpdHMgMCAocHJvY2VlZCkgd2hlbiB0aGUgbW9zdCByZWNlbnQgY29tbWl0IGlzXG4gKiBub3QgYSByZWxlYXNlIGNvbW1pdCwgYW5kIG5vbi16ZXJvIChza2lwKSB3aGVuIHRoZSBtb3N0IHJlY2VudCBjb21taXQgaXMgYVxuICogYGNob3JlKHJlbGVhc2UpOmAgY29tbWl0LlxuICpcbiAqIEV4cGxhbmF0aW9uOlxuICogIC0gYGdpdCBsb2cgLS1vbmVsaW5lIC0xYCAgICAgICAgICB0aGUgbW9zdCByZWNlbnQgY29tbWl0LCBvbmUgbGluZVxuICogIC0gYHwgZ3JlcCAtdiBcImNob3JlKHJlbGVhc2UpOlwiYCAgIHBhc3MgdGhlIGxpbmUgdGhyb3VnaCBvbmx5IGlmIGl0IGlzIE5PVCBhIHJlbGVhc2UgY29tbWl0XG4gKiAgLSBgPiAvZGV2L251bGxgICAgICAgICAgICAgICAgICAgIGRpc2NhcmQgZ3JlcCdzIG91dHB1dDsgb25seSBpdHMgZXhpdCBjb2RlIG1hdHRlcnNcbiAqXG4gKiBncmVwIGV4aXRzIDAgd2hlbiBpdCBwcmludHMgYXQgbGVhc3Qgb25lIG5vbi1tYXRjaGluZyBsaW5lIChhIG5vcm1hbCBjb21taXQsXG4gKiBzbyBwcm9jZWVkKSBhbmQgMSB3aGVuIGV2ZXJ5IGxpbmUgbWF0Y2hlcyAoYSByZWxlYXNlIGNvbW1pdCwgc28gc2tpcCkuXG4gKlxuICogSU1QT1JUQU5UOiBkbyBOT1QgcmVpbnRyb2R1Y2UgYGdyZXAgLXFgIGhlcmUgKGkuZS4gZG8gbm90IFwib3B0aW1pemVcIiB0aGlzIGJhY2tcbiAqIHRvIGBncmVwIC1xdmApLiBgZ3JlcCAtcWAgZXhpdHMgYXMgc29vbiBhcyBpdCBoYXMgYW4gYW5zd2VyIGFuZCBjbG9zZXMgdGhlIHJlYWRcbiAqIGVuZCBvZiB0aGUgcGlwZS4gV2hlbiB0aGlzIGNvbmRpdGlvbiBydW5zIHRocm91Z2ggcHJvamVuJ3MgYnVpbHQtaW4gKGRheClcbiAqIHNoZWxsLCB0aGF0IGVhcmx5IGNsb3NlIHJhY2VzIHdpdGggYGdpdCBsb2dgIHN0aWxsIHdyaXRpbmcgdG8gdGhlIHBpcGUsIGFuZCBkYXhcbiAqIHN1cmZhY2VzIHRoZSBmYWlsZWQgd3JpdGUgYXMgYSBzcHVyaW91cyBub24temVybyBleGl0IChcInN0ZGluIHBpcGUgYnJva2VuLlxuICogSW52YWxpZCBzdGF0ZTogV3JpdGFibGVTdHJlYW0gaXMgY2xvc2VkXCIpLiBUaGUgdGFzayBydW50aW1lIGNhbm5vdCBkaXN0aW5ndWlzaFxuICogdGhhdCBmcm9tIGEgbGVnaXRpbWF0ZSBza2lwIChkYXggcmVwb3J0cyBpdCBhcyBhIHBsYWluIG5vbi16ZXJvIGNvZGUgdW5kZXJcbiAqIGAubm9UaHJvdygpYCwgbm90IGFzIGFuIGVycm9yKSwgc28gdGhlIGJ1bXAvcmVsZWFzZSB0YXNrIGlzIHNpbGVudGx5IHNraXBwZWQ6IGFcbiAqIHJlbGVhc2UgaXMgbWlzc2VkLCBvciBhIGRlcGVuZGVudCBwdWJsaXNoZXMgYSBicm9rZW4gYF4wLjAuMGAgdmVyc2lvbiByYW5nZS5cbiAqIFBsYWluIGBncmVwIC12IC4uLiA+IC9kZXYvbnVsbGAgcmVhZHMgdG8gRU9GIGluc3RlYWQgb2Ygc2hvcnQtY2lyY3VpdGluZywgc28gaXRcbiAqIG5ldmVyIGNsb3NlcyB0aGUgcGlwZSB3aGlsZSB0aGUgd3JpdGVyIGlzIGFjdGl2ZSBhbmQgdGhlIHJhY2UgY2Fubm90IG9jY3VyLiBUaGVcbiAqIGV4aXQgc2VtYW50aWNzIGFyZSBpZGVudGljYWwgdG8gdGhlIHByZXZpb3VzIGBncmVwIC1xdmAuXG4gKi9cbmV4cG9ydCBjb25zdCBDSEFOR0VTX1NJTkNFX0xBU1RfUkVMRUFTRSA9XG4gICdnaXQgbG9nIC0tb25lbGluZSAtMSB8IGdyZXAgLXYgXCJjaG9yZShyZWxlYXNlKTpcIiA+IC9kZXYvbnVsbCc7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgcGFja2FnZSB0byBiZSB1c2VkIGZvciBjb21taXQtYW5kLXRhZy12ZXJzaW9uXG4gKi9cbmNvbnN0IENPTU1JVF9BTkRfVEFHX1ZFUlNJT05fREVGQVVMVCA9IFwiY29tbWl0LWFuZC10YWctdmVyc2lvbkBeMTNcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBgVmVyc2lvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbk9wdGlvbnMge1xuICAvKipcbiAgICogQSBuYW1lIG9mIGEgLmpzb24gZmlsZSB0byBzZXQgdGhlIGB2ZXJzaW9uYCBmaWVsZCBpbiBhZnRlciBhIGJ1bXAuXG4gICAqXG4gICAqIEBleGFtcGxlIFwicGFja2FnZS5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25JbnB1dEZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSBpbnRvIHdoaWNoIGBjaGFuZ2Vsb2cubWRgIGFuZCBgdmVyc2lvbi50eHRgIGZpbGVzXG4gICAqIGFyZSBlbWl0dGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RzRGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBjb25maWd1cmF0aW9uIGZvciB2ZXJzaW9ucmMgZmlsZSB1c2VkIGJ5IHN0YW5kYXJkLXJlbGVhc2VcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25yY09wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgdGFnIHByZWZpeCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ1ByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogRmluZCBjb21taXRzIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgcmVsZWFzYWJsZVxuICAgKiBVc2VkIHRvIGRlY2lkZSBpZiBhIHJlbGVhc2UgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlbGVhc2FibGVDb21taXRzLmV2ZXJ5Q29tbWl0KClcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2FibGVDb21taXRzPzogUmVsZWFzYWJsZUNvbW1pdHM7XG5cbiAgLyoqXG4gICAqIFRoZSBgY29tbWl0LWFuZC10YWctdmVyc2lvbmAgY29tcGF0aWJsZSBwYWNrYWdlIHVzZWQgdG8gYnVtcCB0aGUgcGFja2FnZSB2ZXJzaW9uLCBhcyBhIGRlcGVuZGVuY3kgc3RyaW5nLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSBhbnkgY29tcGF0aWJsZSBwYWNrYWdlIHZlcnNpb24sIGluY2x1ZGluZyB0aGUgZGVwcmVjYXRlZCBgc3RhbmRhcmQtdmVyc2lvbkA5YC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJjb21taXQtYW5kLXRhZy12ZXJzaW9uQDEzXCJcbiAgICovXG4gIHJlYWRvbmx5IGJ1bXBQYWNrYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNoZWxsIGNvbW1hbmQgdG8gY29udHJvbCB0aGUgbmV4dCB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqXG4gICAqIElmIHByZXNlbnQsIHRoaXMgc2hlbGwgY29tbWFuZCB3aWxsIGJlIHJ1biBiZWZvcmUgdGhlIGJ1bXAgaXMgZXhlY3V0ZWQsIGFuZFxuICAgKiBpdCBkZXRlcm1pbmVzIHdoYXQgdmVyc2lvbiB0byByZWxlYXNlLiBJdCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBmb2xsb3dpbmdcbiAgICogZW52aXJvbm1lbnQ6XG4gICAqXG4gICAqIC0gV29ya2luZyBkaXJlY3Rvcnk6IHRoZSBwcm9qZWN0IGRpcmVjdG9yeS5cbiAgICogLSBgJFZFUlNJT05gOiB0aGUgY3VycmVudCB2ZXJzaW9uLiBMb29rcyBsaWtlIGAxLjIuM2AuXG4gICAqIC0gYCRMQVRFU1RfVEFHYDogdGhlIG1vc3QgcmVjZW50IHRhZy4gTG9va3MgbGlrZSBgcHJlZml4LXYxLjIuM2AsIG9yIG1heSBiZSB1bnNldC5cbiAgICogLSBgJFNVR0dFU1RFRF9CVU1QYDogdGhlIHN1Z2dlc3RlZCBidW1wIGFjdGlvbiBiYXNlZCBvbiBjb21taXRzLiBPbmUgb2YgYG1ham9yfG1pbm9yfHBhdGNofG5vbmVgLlxuICAgKlxuICAgKiBUaGUgY29tbWFuZCBzaG91bGQgcHJpbnQgb25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gYHN0ZG91dGA6XG4gICAqXG4gICAqIC0gTm90aGluZzogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIGNvbW1pdCBoaXN0b3J5LlxuICAgKiAtIGB4LnkuemA6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgYHgueS56YC5cbiAgICogLSBgbWFqb3J8bWlub3J8cGF0Y2hgOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIHRoZSBjdXJyZW50IHZlcnNpb24gbnVtYmVyXG4gICAqICAgd2l0aCB0aGUgaW5kaWNhdGVkIGNvbXBvbmVudCBidW1wZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIG5leHQgdmVyc2lvbiB3aWxsIGJlIGRldGVybWluZWQgYmFzZWQgb24gdGhlIGNvbW1pdCBoaXN0b3J5IGFuZCBwcm9qZWN0IHNldHRpbmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV4dFZlcnNpb25Db21tYW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVmVyc2lvbiBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBidW1wVGFzazogVGFzaztcbiAgcHVibGljIHJlYWRvbmx5IHVuYnVtcFRhc2s6IFRhc2s7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXNrIHRoYXQgcHJpbnRzIHRoZSByZWxlYXNhYmxlIGNvbW1pdHMgc2luY2UgdGhlIGxhdGVzdCB0YWcuIFNwYXduZWRcbiAgICogYnkgYGJ1bXBgOyBpdHMgc2hlbGwgY2FuIGJlIG92ZXJyaWRkZW4gdmlhIGB0YXNrLnNoZWxsYC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWxlYXNhYmxlQ29tbWl0c1Rhc2s6IFRhc2s7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXNrIHRoYXQgcnVucyB0aGUgdXNlcidzIGBuZXh0VmVyc2lvbkNvbW1hbmRgLCBpZiBjb25maWd1cmVkLiBTcGF3bmVkXG4gICAqIGJ5IGBidW1wYDsgaXRzIHNoZWxsIGNhbiBiZSBvdmVycmlkZGVuIHZpYSBgdGFzay5zaGVsbGAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dFZlcnNpb25UYXNrPzogVGFzaztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNoYW5nZWxvZyBmaWxlICh1bmRlciBgYXJ0aWZhY3RzRGlyZWN0b3J5YCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlbG9nRmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhhdCBjb250YWlucyB0aGUgdmVyc2lvbiAodW5kZXIgYGFydGlmYWN0c0RpcmVjdG9yeWApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZlcnNpb25GaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSByZWxlYXNlIHRhZyAodW5kZXIgYGFydGlmYWN0c0RpcmVjdG9yeWApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlbGVhc2VUYWdGaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSB1c2VkIHRvIGJ1bXAgcGFja2FnZSB2ZXJzaW9ucywgYXMgYSBkZXBlbmRlbmN5IHN0cmluZy5cbiAgICogVGhpcyBpcyBhIGBjb21taXQtYW5kLXRhZy12ZXJzaW9uYCBjb21wYXRpYmxlIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVtcFBhY2thZ2U6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IG5leHRWZXJzaW9uQ29tbWFuZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogSUNvbnN0cnVjdCwgb3B0aW9uczogVmVyc2lvbk9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSk7XG5cbiAgICB0aGlzLmNoYW5nZWxvZ0ZpbGVOYW1lID0gXCJjaGFuZ2Vsb2cubWRcIjtcbiAgICB0aGlzLnZlcnNpb25GaWxlTmFtZSA9IFwidmVyc2lvbi50eHRcIjtcbiAgICB0aGlzLnJlbGVhc2VUYWdGaWxlTmFtZSA9IFwicmVsZWFzZXRhZy50eHRcIjtcbiAgICB0aGlzLmJ1bXBQYWNrYWdlID0gb3B0aW9ucy5idW1wUGFja2FnZSA/PyBDT01NSVRfQU5EX1RBR19WRVJTSU9OX0RFRkFVTFQ7XG4gICAgdGhpcy5uZXh0VmVyc2lvbkNvbW1hbmQgPSBvcHRpb25zLm5leHRWZXJzaW9uQ29tbWFuZDtcblxuICAgIC8vIFRoaXMgY29tcG9uZW50IGlzIGxhbmd1YWdlIGluZGVwZW5kZW50LlxuICAgIC8vIEhvd2V2ZXIsIHdoZW4gaW4gdGhlIE5vZGUuanMgZWNvc3lzdGVtLCB3ZSBjYW4gaW1wcm92ZSB0aGUgZXhwZXJpZW5jZSBieSBhZGRpbmcgYSBkZXYgZGVwZW5kZW5jeSBvbiB0aGUgYnVtcCBwYWNrYWdlLlxuICAgIGNvbnN0IG5vZGUgPSBOb2RlUGFja2FnZS5vZih0aGlzLnByb2plY3QpO1xuICAgIGlmIChub2RlKSB7XG4gICAgICBjb25zdCB7IG5hbWU6IGJ1bXBOYW1lLCB2ZXJzaW9uOiBidW1wVmVyc2lvbiB9ID1cbiAgICAgICAgRGVwZW5kZW5jaWVzLnBhcnNlRGVwZW5kZW5jeSh0aGlzLmJ1bXBQYWNrYWdlKTtcbiAgICAgIG5vZGUucHJvamVjdC5kZXBzLnJlcXVlc3REZXBlbmRlbmN5KHtcbiAgICAgICAgbmFtZTogYnVtcE5hbWUsXG4gICAgICAgIHZlcnNpb246IGJ1bXBWZXJzaW9uLFxuICAgICAgICB0eXBlOiBEZXBlbmRlbmN5VHlwZS5CVUlMRCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcnNpb25JbnB1dEZpbGUgPSBvcHRpb25zLnZlcnNpb25JbnB1dEZpbGU7XG5cbiAgICBjb25zdCBjaGFuZ2Vsb2dGaWxlID0gcG9zaXguam9pbihcbiAgICAgIG9wdGlvbnMuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgdGhpcy5jaGFuZ2Vsb2dGaWxlTmFtZSxcbiAgICApO1xuICAgIGNvbnN0IGJ1bXBGaWxlID0gcG9zaXguam9pbihcbiAgICAgIG9wdGlvbnMuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgdGhpcy52ZXJzaW9uRmlsZU5hbWUsXG4gICAgKTtcbiAgICBjb25zdCByZWxlYXNlVGFnRmlsZSA9IHBvc2l4LmpvaW4oXG4gICAgICBvcHRpb25zLmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgIHRoaXMucmVsZWFzZVRhZ0ZpbGVOYW1lLFxuICAgICk7XG5cbiAgICBjb25zdCBjb21tb25FbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBPVVRGSUxFOiB2ZXJzaW9uSW5wdXRGaWxlLFxuICAgICAgQ0hBTkdFTE9HOiBjaGFuZ2Vsb2dGaWxlLFxuICAgICAgQlVNUEZJTEU6IGJ1bXBGaWxlLFxuICAgICAgUkVMRUFTRVRBRzogcmVsZWFzZVRhZ0ZpbGUsXG4gICAgICBSRUxFQVNFX1RBR19QUkVGSVg6IG9wdGlvbnMudGFnUHJlZml4ID8/IFwiXCIsXG4gICAgICAvLyBkb2Vzbid0IHdvcmsgaWYgY3VzdG9tIGNvbmZpZ3VyYXRpb24gaXMgbG9uZ1xuICAgICAgVkVSU0lPTlJDT1BUSU9OUzogSlNPTi5zdHJpbmdpZnkob3B0aW9ucy52ZXJzaW9ucmNPcHRpb25zKSxcbiAgICAgIEJVTVBfUEFDS0FHRTogdGhpcy5idW1wUGFja2FnZSxcbiAgICB9O1xuXG4gICAgLy8gVGhlIGNvbW1hbmQgdGhhdCBsaXN0cyByZWxlYXNhYmxlIGNvbW1pdHMsIHJ1biBhcyBpdHMgb3duIHNwYXduYWJsZSB0YXNrXG4gICAgLy8gc28gaXRzIHNoZWxsIGNhbiBiZSBjb25maWd1cmVkIGluZGVwZW5kZW50bHkgKHNlZSBgVGFza1NoZWxsYCkuXG4gICAgLy8gYCRMQVRFU1RfVEFHYCBpcyBwcm92aWRlZCBieSBgYnVtcGAgd2hlbiBzcGF3bmluZyBpdC5cbiAgICB0aGlzLnJlbGVhc2FibGVDb21taXRzVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKFxuICAgICAgXCJidW1wOnJlbGVhc2FibGUtY29tbWl0c1wiLFxuICAgICAge1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGUgcmVsZWFzYWJsZSBjb21taXRzIHNpbmNlIHRoZSBsYXRlc3QgcmVsZWFzZVwiLFxuICAgICAgICBleGVjOiAob3B0aW9ucy5yZWxlYXNhYmxlQ29tbWl0cyA/PyBSZWxlYXNhYmxlQ29tbWl0cy5ldmVyeUNvbW1pdCgpKVxuICAgICAgICAgIC5jbWQsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBUaGUgb3B0aW9uYWwgY29tbWFuZCB0aGF0IGRlY2lkZXMgdGhlIG5leHQgdmVyc2lvbiwgYWxzbyBpdHMgb3duIHRhc2suXG4gICAgaWYgKHRoaXMubmV4dFZlcnNpb25Db21tYW5kKSB7XG4gICAgICB0aGlzLm5leHRWZXJzaW9uVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKFwiYnVtcDpuZXh0LXZlcnNpb25cIiwge1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJEZXRlcm1pbmUgdGhlIG5leHQgdmVyc2lvbiB0byByZWxlYXNlXCIsXG4gICAgICAgIGV4ZWM6IHRoaXMubmV4dFZlcnNpb25Db21tYW5kLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gT3JjaGVzdHJhdGVzIHRoZSByZWxlYXNlIGJ1bXAgYXMgYSBwaXBlbGluZSBvZiBidWlsdGlucyBhbmQgc3Bhd25lZFxuICAgIC8vIHRhc2tzLCBoYW5kaW5nIHJlc3VsdHMgZm9yd2FyZCB2aWEgc3RlcCBgb3V0cHV0RW52YCBjYXB0dXJlcy5cbiAgICB0aGlzLmJ1bXBUYXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soXCJidW1wXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkJ1bXBzIHZlcnNpb24gYmFzZWQgb24gbGF0ZXN0IGdpdCB0YWcgYW5kIGdlbmVyYXRlcyBhIGNoYW5nZWxvZyBlbnRyeVwiLFxuICAgICAgY29uZGl0aW9uOiBDSEFOR0VTX1NJTkNFX0xBU1RfUkVMRUFTRSxcbiAgICAgIGVudjogeyAuLi5jb21tb25FbnYgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYnVtcFRhc2suYWRkU3RlcHMoXG4gICAgICB7IGJ1aWx0aW46IFwicmVsZWFzZS9yZXNvbHZlLWxhdGVzdC10YWdcIiwgb3V0cHV0RW52OiBcIkxBVEVTVF9UQUdcIiB9LFxuICAgICAgLy8gT24gYSBmaXJzdCByZWxlYXNlIHRoZSByZXNvbHZlZCB0YWcgaXMgc3ludGhldGljIGFuZCBkb2VzIG5vdCBleGlzdCwgc29cbiAgICAgIC8vIHRoZXJlIGlzIG5vdGhpbmcgdG8gZGlmZiBhZ2FpbnN0IC0gc2tpcCBsaXN0aW5nIGNvbW1pdHMgaW4gdGhhdCBjYXNlLlxuICAgICAge1xuICAgICAgICBzcGF3bjogXCJidW1wOnJlbGVhc2FibGUtY29tbWl0c1wiLFxuICAgICAgICBvdXRwdXRFbnY6IFwiUkVMRUFTQUJMRV9DT01NSVRTXCIsXG4gICAgICAgIGNvbmRpdGlvbjogJ2dpdCByZXYtcGFyc2UgLS12ZXJpZnkgLS1xdWlldCBcInJlZnMvdGFncy8kTEFURVNUX1RBR1wiJyxcbiAgICAgIH0sXG4gICAgICB7IGJ1aWx0aW46IFwicmVsZWFzZS9zdWdnZXN0LXZlcnNpb24tYnVtcFwiLCBvdXRwdXRFbnY6IFwiU1VHR0VTVEVEX0JVTVBcIiB9LFxuICAgICk7XG4gICAgaWYgKHRoaXMubmV4dFZlcnNpb25UYXNrKSB7XG4gICAgICAvLyBgYnVtcDpuZXh0LXZlcnNpb25gIHJlY2VpdmVzIGAkVkVSU0lPTmAgKHRoZSBjdXJyZW50IHZlcnNpb24pOyByZWFkIGl0XG4gICAgICAvLyBmcm9tIHRoZSB2ZXJzaW9uIGZpbGUgaW50byBgVkVSU0lPTmAgc28gaXQgcHJvcGFnYXRlcyB0byB0aGUgc3Bhd24uXG4gICAgICB0aGlzLmJ1bXBUYXNrLmFkZFN0ZXBzKFxuICAgICAgICB7XG4gICAgICAgICAgZXhlYzogYG5vZGUgLWUgXCJwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnBhcnNlKHJlcXVpcmUoJ2ZzJykucmVhZEZpbGVTeW5jKHByb2Nlc3MuZW52Lk9VVEZJTEUsJ3V0ZjgnKSkudmVyc2lvbilcImAsXG4gICAgICAgICAgb3V0cHV0RW52OiBcIlZFUlNJT05cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBzcGF3bjogXCJidW1wOm5leHQtdmVyc2lvblwiLCBvdXRwdXRFbnY6IFwiQlVNUF9UWVBFXCIgfSxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuYnVtcFRhc2suYWRkU3RlcHMoeyBidWlsdGluOiBcInJlbGVhc2UvYXBwbHktdmVyc2lvbi1idW1wXCIgfSk7XG5cbiAgICAvLyBSZXNldHMgdGhlIHZlcnNpb24gaW4gdGhlIHZlcnNpb24gZmlsZSBiYWNrIHRvIDAuMC4wIGFmdGVyIGEgYnVtcC5cbiAgICB0aGlzLnVuYnVtcFRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayhcInVuYnVtcFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0b3JlcyB2ZXJzaW9uIHRvIDAuMC4wXCIsXG4gICAgICBlbnY6IHsgLi4uY29tbW9uRW52IH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnVuYnVtcFRhc2suYnVpbHRpbihcInJlbGVhc2UvcmVzZXQtdmVyc2lvblwiKTtcblxuICAgIHRoaXMucHJvamVjdC5hZGRHaXRJZ25vcmUoYC8ke2NoYW5nZWxvZ0ZpbGV9YCk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZEdpdElnbm9yZShgLyR7YnVtcEZpbGV9YCk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYC8ke2NoYW5nZWxvZ0ZpbGV9YCk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYC8ke2J1bXBGaWxlfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIG1vZGlmeSB0aGUgYnVtcCBjb21tYW5kIGZvciByZWxlYXNlIGJyYW5jaGVzLlxuICAgKlxuICAgKiBUaGVzZSBvcHRpb25zIGFyZSB1c2VkIHRvIG1vZGlmeSB0aGUgYmVoYXZpb3Igb2YgdGhlIHZlcnNpb24gYnVtcGluZyBzY3JpcHRcbiAgICogZm9yIGFkZGl0aW9uYWwgYnJhbmNoZXMsIGJ5IHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKlxuICAgKiBObyBzZXR0aW5ncyBhcmUgaW5oZXJpdGVkIGZyb20gdGhlIGJhc2UgYFZlcnNpb25gIG9iamVjdCAoYnV0IGFueSBwYXJhbWV0ZXJzIHRoYXRcbiAgICogY29udHJvbCB2ZXJzaW9ucyBkbyBjb25mbGljdCB3aXRoIHRoZSB1c2Ugb2YgYSBgbmV4dFZlcnNpb25Db21tYW5kYCkuXG4gICAqL1xuICBwdWJsaWMgZW52Rm9yQnJhbmNoKFxuICAgIGJyYW5jaE9wdGlvbnM6IFZlcnNpb25CcmFuY2hPcHRpb25zLFxuICApOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBpZiAodGhpcy5uZXh0VmVyc2lvbkNvbW1hbmQgJiYgYnJhbmNoT3B0aW9ucy5taW5NYWpvclZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJtaW5NYWpvclZlcnNpb24gYW5kIG5leHRWZXJzaW9uQ29tbWFuZCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgaWYgKGJyYW5jaE9wdGlvbnMubWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGVudi5NQUpPUiA9IGJyYW5jaE9wdGlvbnMubWFqb3JWZXJzaW9uLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGJyYW5jaE9wdGlvbnMubWluTWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChicmFuY2hPcHRpb25zLm1ham9yVmVyc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgbWluTWFqb3JWZXJzaW9uIGFuZCBtYWpvclZlcnNpb24gY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgZW52Lk1JTl9NQUpPUiA9IGJyYW5jaE9wdGlvbnMubWluTWFqb3JWZXJzaW9uLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGJyYW5jaE9wdGlvbnMucHJlcmVsZWFzZSkge1xuICAgICAgZW52LlBSRVJFTEVBU0UgPSBicmFuY2hPcHRpb25zLnByZXJlbGVhc2U7XG4gICAgfVxuXG4gICAgaWYgKGJyYW5jaE9wdGlvbnMudGFnUHJlZml4KSB7XG4gICAgICBlbnYuUkVMRUFTRV9UQUdfUFJFRklYID0gYnJhbmNoT3B0aW9ucy50YWdQcmVmaXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudjtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gcGFzcyB0byBgbW9kaWZ5QnJhbmNoRW52aXJvbm1lbnRgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbkJyYW5jaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1ham9yIHZlcnNpb25zIHJlbGVhc2VkIGZyb20gdGhpcyBicmFuY2guXG4gICAqL1xuICByZWFkb25seSBtYWpvclZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG1ham9yIHZlcnNpb24gdG8gcmVsZWFzZS5cbiAgICovXG4gIHJlYWRvbmx5IG1pbk1ham9yVmVyc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1pbm9yIHZlcnNpb25zIHJlbGVhc2VkIGZyb20gdGhpcyBicmFuY2guXG4gICAqL1xuICByZWFkb25seSBtaW5vclZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEJ1bXAgdGhlIHZlcnNpb24gYXMgYSBwcmUtcmVsZWFzZSB0YWcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9ybWFsIHJlbGVhc2VzXG4gICAqL1xuICByZWFkb25seSBwcmVyZWxlYXNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZCB0aGUgZ2l2ZW4gcHJlZml4IHRvIHJlbGVhc2UgdGFncy5cbiAgICogVXNlZnVsIGlmIHlvdSBhcmUgcmVsZWFzaW5nIG9uIG11bHRpcGxlIGJyYW5jaGVzIHdpdGggb3ZlcmxhcHBpbmdcbiAgICogdmVyc2lvbiBudW1iZXJzLlxuICAgKlxuICAgKiBOb3RlOiB0aGlzIHByZWZpeCBpcyB1c2VkIHRvIGRldGVjdCB0aGUgbGF0ZXN0IHRhZ2dlZCB2ZXJzaW9uXG4gICAqIHdoZW4gYnVtcGluZywgc28gaWYgeW91IGNoYW5nZSB0aGlzIG9uIGEgcHJvamVjdCB3aXRoIGFuIGV4aXN0aW5nIHZlcnNpb25cbiAgICogaGlzdG9yeSwgeW91IG1heSBuZWVkIHRvIG1hbnVhbGx5IHRhZyB5b3VyIGxhdGVzdCByZWxlYXNlXG4gICAqIHdpdGggdGhlIG5ldyBwcmVmaXguXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJlZml4XG4gICAqL1xuICByZWFkb25seSB0YWdQcmVmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRmluZCBjb21taXRzIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgcmVsZWFzYWJsZSB0byBkZWNpZGUgaWYgYSByZWxlYXNlIGlzIHJlcXVpcmVkLlxuICpcbiAqIFRoaXMgc2V0dGluZyBvbmx5IGNvbnRyb2xzIHdoZXRoZXIgYSByZWxlYXNlIGlzIHRyaWdnZXJlZCwgeWVzIG9yIG5vLiBUaGVcbiAqIHBhdGhzIHVzZWQgaGVyZSBhcmUgaW5kZXBlbmRlbnQgb2YgdGhlIGNvZGUgdGhhdCBjb250cm9scyB3aGF0IGNvbW1pdHMgYXJlIGluc3BlY3RlZFxuICogdG8gZGV0ZXJtaW5lIHRoZSB2ZXJzaW9uIG51bWJlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbGVhc2FibGVDb21taXRzIHtcbiAgLyoqXG4gICAqIFJlbGVhc2UgZXZlcnkgY29tbWl0XG4gICAqXG4gICAqIFRoaXMgd2lsbCBvbmx5IG5vdCByZWxlYXNlIGlmIHRoZSBtb3N0IHJlY2VudCBjb21taXQgaXMgdGFnZ2VkIHdpdGggdGhlIGxhdGVzdCBtYXRjaGluZyB0YWcuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIENvbnNpZGVyIG9ubHkgY29tbWl0cyB0aGF0IGFyZSBlbm91Z2ggdG8gZXhwbGFpbiBob3cgdGhlIGZpbGVzIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBwYXRocyBjYW1lIHRvIGJlLlxuICAgKiBUaGlzIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXIgb2YgdGhlIGBidW1wYCB0YXNrLCBpLmUuIHRvIG9ubHkgY29uc2lkZXIgY29tbWl0cyBvZiBhIHN1YnByb2plY3QgdXNlIGBcIi5cImAuXG4gICAqL1xuICBzdGF0aWMgZXZlcnlDb21taXQocGF0aD86IHN0cmluZykge1xuICAgIGNvbnN0IGNtZCA9IGBnaXQgbG9nIC0tb25lbGluZSAkTEFURVNUX1RBRy4uSEVBRGA7XG4gICAgcmV0dXJuIG5ldyBSZWxlYXNhYmxlQ29tbWl0cyh3aXRoUGF0aChjbWQsIHBhdGgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1pdCBjb21taXRzIGJ5IHRoZWlyIGNvbnZlbnRpb25hbCBjb21taXQgdHlwZVxuICAgKlxuICAgKiBUaGlzIHdpbGwgb25seSByZWxlYXNlIGNvbW1pdCB0aGF0IG1hdGNoIG9uZSBvZiB0aGUgcHJvdmlkZWQgdHlwZXMuXG4gICAqIENvbW1pdHMgYXJlIHJlcXVpcmVkIHRvIGZvbGxvdyB0aGUgY29udmVudGlvbmFsIGNvbW1pdCBzcGVjIGFuZCB3aWxsIGJlIGlnbm9yZWQgb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZXMgTGlzdCBvZiBjb252ZW50aW9uYWwgY29tbWl0IHR5cGVzIHRoYXQgc2hvdWxkIGJlIHJlbGVhc2VkXG4gICAqIEBwYXJhbSBwYXRoIENvbnNpZGVyIG9ubHkgY29tbWl0cyB0aGF0IGFyZSBlbm91Z2ggdG8gZXhwbGFpbiBob3cgdGhlIGZpbGVzIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBwYXRocyBjYW1lIHRvIGJlLlxuICAgKiBUaGlzIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXIgb2YgdGhlIGBidW1wYCB0YXNrLCBpLmUuIHRvIG9ubHkgY29uc2lkZXIgY29tbWl0cyBvZiBhIHN1YnByb2plY3QgdXNlIGBcIi5cImAuXG4gICAqL1xuICBzdGF0aWMgb2ZUeXBlKHR5cGVzOiBzdHJpbmdbXSwgcGF0aD86IHN0cmluZykge1xuICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9IHR5cGVzLmpvaW4oXCJ8XCIpO1xuXG4gICAgLy8gQHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2NvbnZlbnRpb25hbC1jb21taXRzL3BhcnNlci9ibG9iL2VlZWZiOTYxZWJmNWI5ZGZlYTBmZWE4YjA2ZjhhZDM0YTFlNDM5YjkvbGliL3BhcnNlci5qc1xuICAgIC8vIC1FIHJlcXVpcmVzIHRoaXMgdG8gYmUgUE9TSVggRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uLCB3aGljaCBjb21lcyB3aXRoIGNlcnRhaW4gbGltaXRhdGlvbnNcbiAgICAvLyBzZWUgaHR0cHM6Ly9lbi53aWtpYm9va3Mub3JnL3dpa2kvUmVndWxhcl9FeHByZXNzaW9ucy9QT1NJWC1FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zIGZvciBkZXRhaWxzXG4gICAgY29uc3QgY21kID0gYGdpdCBsb2cgLS1uby1tZXJnZXMgLS1vbmVsaW5lICRMQVRFU1RfVEFHLi5IRUFEIC1FIC0tZ3JlcCAnXigke2FsbG93ZWRUeXBlc30pezF9KFxcXFwoW14oKVs6c3BhY2U6XV0rXFxcXCkpPyghKT86W1s6Ymxhbms6XV0rLisnYDtcblxuICAgIHJldHVybiBuZXcgUmVsZWFzYWJsZUNvbW1pdHMod2l0aFBhdGgoY21kLCBwYXRoKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVsZWFzZSBvbmx5IGZlYXR1cmVzIGFuZCBmaXhlc1xuICAgKlxuICAgKiBTaG9ydGhhbmQgZm9yIGBSZWxlYXNhYmxlQ29tbWl0cy5vbmx5T2ZUeXBlKFsnZmVhdCcsICdmaXgnXSlgLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCBDb25zaWRlciBvbmx5IGNvbW1pdHMgdGhhdCBhcmUgZW5vdWdoIHRvIGV4cGxhaW4gaG93IHRoZSBmaWxlcyB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpZWQgcGF0aHMgY2FtZSB0byBiZS5cbiAgICogVGhpcyBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyIG9mIHRoZSBgYnVtcGAgdGFzaywgaS5lLiB0byBvbmx5IGNvbnNpZGVyIGNvbW1pdHMgb2YgYSBzdWJwcm9qZWN0IHVzZSBgXCIuXCJgLlxuICAgKi9cbiAgc3RhdGljIGZlYXR1cmVzQW5kRml4ZXMocGF0aD86IHN0cmluZykge1xuICAgIHJldHVybiBSZWxlYXNhYmxlQ29tbWl0cy5vZlR5cGUoW1wiZmVhdFwiLCBcImZpeFwiXSwgcGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIGFuIGFyYml0cmFyeSBzaGVsbCBjb21tYW5kIHRvIGZpbmQgcmVsZWFzYWJsZSBjb21taXRzIHNpbmNlIHRoZSBsYXRlc3QgdGFnLlxuICAgKlxuICAgKiBBIG5ldyByZWxlYXNlIHdpbGwgYmUgaW5pdGlhdGVkLCBpZiB0aGUgbnVtYmVyIG9mIHJldHVybmVkIGNvbW1pdHMgaXMgZ3JlYXRlciB0aGFuIHplcm8uXG4gICAqIE11c3QgcmV0dXJuIGEgbmV3bGluZSBzZXBhcmF0ZSBsaXN0IG9mIGNvbW1pdHMgdGhhdCBzaG91bGQgY29uc2lkZXJlZCByZWxlYXNhYmxlLlxuICAgKiBgJExBVEVTVF9UQUdgIGlzIGF2YWlsYWJsZSBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSAoc2V0IHRvIHRoZSBhY3R1YWwgbGF0ZXN0IHRhZyBmb3IgdGhlIGdpdmVuIHByZWZpeCkuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiZ2l0IGxvZyAtLW9uZWxpbmUgJExBVEVTVF9UQUcuLkhFQUQgLS0gLlwiXG4gICAqL1xuICBzdGF0aWMgZXhlYyhjbWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgUmVsZWFzYWJsZUNvbW1pdHMoY21kKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHVibGljIGNtZDogc3RyaW5nKSB7fVxufVxuXG4vKipcbiAqIEFwcGVuZCBhIHBhdGggYXJndW1lbnQgdG8gYSBnaXQgY29tbWFuZCBpZiBvbmUgaXMgcHJvdmlkZWRcbiAqL1xuZnVuY3Rpb24gd2l0aFBhdGgoY21kOiBzdHJpbmcsIHBhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAocGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGAke2NtZH0gLS0gJHtwYXRofWA7XG4gIH1cblxuICByZXR1cm4gY21kO1xufVxuIl19
@@ -13,7 +13,7 @@ const DEVCONTAINER_FILE = ".devcontainer.json";
13
13
  * codespaces.
14
14
  */
15
15
  class DevContainer extends component_1.Component {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.DevContainer", version: "0.103.23" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.DevContainer", version: "0.103.24" };
17
17
  dockerImage;
18
18
  postCreateTasks;
19
19
  ports;
@@ -9,7 +9,7 @@ const json_1 = require("../json");
9
9
  * Source: https://code.visualstudio.com/docs/editor/extension-marketplace#_workspace-recommended-extensions
10
10
  */
11
11
  class VsCodeRecommendedExtensions extends component_1.Component {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeRecommendedExtensions", version: "0.103.23" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeRecommendedExtensions", version: "0.103.24" };
13
13
  /**
14
14
  * List of extensions which should be recommended for users of this workspace.
15
15
  * The identifier of an extension is always '${publisher}.${name}'. For example: 'ms-python.python'.
@@ -28,7 +28,7 @@ var InternalConsoleOptions;
28
28
  * VSCode launch configuration file (launch.json), useful for enabling in-editor debugger
29
29
  */
30
30
  class VsCodeLaunchConfig extends component_1.Component {
31
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeLaunchConfig", version: "0.103.23" };
31
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeLaunchConfig", version: "0.103.24" };
32
32
  static renderLaunchConfig(cfg) {
33
33
  if (!cfg.env) {
34
34
  return cfg;
@@ -9,7 +9,7 @@ const json_1 = require("../json");
9
9
  * Source: https://code.visualstudio.com/docs/getstarted/settings#_workspace-settings
10
10
  */
11
11
  class VsCodeSettings extends component_1.Component {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeSettings", version: "0.103.23" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeSettings", version: "0.103.24" };
13
13
  content;
14
14
  file;
15
15
  constructor(vscode) {
@@ -7,7 +7,7 @@ const launch_config_1 = require("./launch-config");
7
7
  const settings_1 = require("./settings");
8
8
  const component_1 = require("../component");
9
9
  class VsCode extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCode", version: "0.103.23" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCode", version: "0.103.24" };
11
11
  _launchConfig;
12
12
  _settings;
13
13
  _extensions;
package/lib/web/next.js CHANGED
@@ -15,7 +15,7 @@ const MINIMUM_NEXT_JS_NODE_VERSION = "16.14.0"; // https://nextjs.org/docs/pages
15
15
  * @pjid nextjs
16
16
  */
17
17
  class NextJsProject extends javascript_1.NodeProject {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsProject", version: "0.103.23" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsProject", version: "0.103.24" };
19
19
  /**
20
20
  * The directory in which source files reside.
21
21
  */
@@ -59,7 +59,7 @@ exports.NextJsProject = NextJsProject;
59
59
  * @pjid nextjs-ts
60
60
  */
61
61
  class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
62
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.103.23" };
62
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.103.24" };
63
63
  /**
64
64
  * The directory in which source files reside.
65
65
  */
@@ -150,7 +150,7 @@ class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
150
150
  }
151
151
  exports.NextJsTypeScriptProject = NextJsTypeScriptProject;
152
152
  class NextComponent extends component_1.Component {
153
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextComponent", version: "0.103.23" };
153
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextComponent", version: "0.103.24" };
154
154
  typescript;
155
155
  tailwind;
156
156
  constructor(project, options) {
@@ -8,7 +8,7 @@ const json_1 = require("../json");
8
8
  * Declares a PostCSS dependency with a default config file.
9
9
  */
10
10
  class PostCss {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.PostCss", version: "0.103.23" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.PostCss", version: "0.103.24" };
12
12
  fileName;
13
13
  file;
14
14
  tailwind;