projen 0.52.23 → 0.52.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 (233) hide show
  1. package/.jsii +3 -3
  2. package/changelog.md +1 -6
  3. package/lib/awscdk/auto-discover.d.ts +14 -46
  4. package/lib/awscdk/auto-discover.js +8 -22
  5. package/lib/awscdk/awscdk-app-java.d.ts +10 -32
  6. package/lib/awscdk/awscdk-app-java.js +5 -9
  7. package/lib/awscdk/awscdk-app-ts.d.ts +15 -35
  8. package/lib/awscdk/awscdk-app-ts.js +6 -14
  9. package/lib/awscdk/awscdk-construct.d.ts +14 -28
  10. package/lib/awscdk/awscdk-construct.js +8 -16
  11. package/lib/awscdk/awscdk-deps-java.d.ts +1 -8
  12. package/lib/awscdk/awscdk-deps-java.js +3 -10
  13. package/lib/awscdk/awscdk-deps-js.d.ts +1 -8
  14. package/lib/awscdk/awscdk-deps-js.js +3 -10
  15. package/lib/awscdk/awscdk-deps.d.ts +28 -67
  16. package/lib/awscdk/awscdk-deps.js +5 -12
  17. package/lib/awscdk/cdk-config.d.ts +19 -51
  18. package/lib/awscdk/cdk-config.js +13 -11
  19. package/lib/awscdk/cdk-tasks.d.ts +7 -24
  20. package/lib/awscdk/cdk-tasks.js +3 -8
  21. package/lib/awscdk/integration-test.d.ts +7 -29
  22. package/lib/awscdk/integration-test.js +3 -8
  23. package/lib/awscdk/lambda-function.d.ts +22 -50
  24. package/lib/awscdk/lambda-function.js +11 -24
  25. package/lib/build/build-workflow.d.ts +33 -78
  26. package/lib/build/build-workflow.js +15 -25
  27. package/lib/cdk/auto-discover-base.d.ts +11 -34
  28. package/lib/cdk/auto-discover-base.js +5 -15
  29. package/lib/cdk/construct-lib.d.ts +8 -22
  30. package/lib/cdk/construct-lib.js +3 -8
  31. package/lib/cdk/integration-test-base.d.ts +12 -38
  32. package/lib/cdk/integration-test-base.js +2 -8
  33. package/lib/cdk/jsii-docgen.d.ts +6 -12
  34. package/lib/cdk/jsii-docgen.js +6 -8
  35. package/lib/cdk/jsii-project.d.ts +16 -95
  36. package/lib/cdk/jsii-project.js +3 -10
  37. package/lib/cdk8s/auto-discover.d.ts +6 -23
  38. package/lib/cdk8s/auto-discover.js +6 -15
  39. package/lib/cdk8s/cdk8s-app-ts.d.ts +21 -43
  40. package/lib/cdk8s/cdk8s-app-ts.js +4 -7
  41. package/lib/cdk8s/cdk8s-construct.d.ts +12 -27
  42. package/lib/cdk8s/cdk8s-construct.js +3 -7
  43. package/lib/cdk8s/integration-test.d.ts +2 -9
  44. package/lib/cdk8s/integration-test.js +3 -8
  45. package/lib/cdktf/cdktf-construct.d.ts +3 -12
  46. package/lib/cdktf/cdktf-construct.js +3 -7
  47. package/lib/component.d.ts +4 -17
  48. package/lib/component.js +6 -19
  49. package/lib/dependencies.d.ts +44 -77
  50. package/lib/dependencies.js +50 -38
  51. package/lib/dev-env.d.ts +26 -53
  52. package/lib/dev-env.js +9 -19
  53. package/lib/docker-compose.d.ts +83 -209
  54. package/lib/docker-compose.js +38 -61
  55. package/lib/file.d.ts +24 -71
  56. package/lib/file.js +4 -16
  57. package/lib/gitattributes.d.ts +3 -14
  58. package/lib/gitattributes.js +5 -16
  59. package/lib/github/auto-approve.d.ts +7 -23
  60. package/lib/github/auto-approve.js +3 -8
  61. package/lib/github/auto-merge.d.ts +7 -29
  62. package/lib/github/auto-merge.js +7 -16
  63. package/lib/github/dependabot.d.ts +54 -147
  64. package/lib/github/dependabot.js +81 -22
  65. package/lib/github/github-project.d.ts +26 -70
  66. package/lib/github/github-project.js +5 -10
  67. package/lib/github/github.d.ts +19 -58
  68. package/lib/github/github.js +9 -30
  69. package/lib/github/mergify.d.ts +9 -54
  70. package/lib/github/mergify.js +2 -14
  71. package/lib/github/pr-template.d.ts +3 -13
  72. package/lib/github/pr-template.js +3 -8
  73. package/lib/github/pull-request-lint.d.ts +8 -28
  74. package/lib/github/pull-request-lint.js +3 -9
  75. package/lib/github/stale.d.ts +17 -47
  76. package/lib/github/stale.js +6 -10
  77. package/lib/github/task-workflow.d.ts +21 -63
  78. package/lib/github/task-workflow.js +3 -8
  79. package/lib/github/workflows-model.d.ts +199 -582
  80. package/lib/github/workflows-model.js +5 -4
  81. package/lib/github/workflows.d.ts +14 -41
  82. package/lib/github/workflows.js +8 -16
  83. package/lib/gitlab/configuration-model.d.ts +145 -947
  84. package/lib/gitlab/configuration-model.js +11 -28
  85. package/lib/gitlab/configuration.d.ts +31 -121
  86. package/lib/gitlab/configuration.js +14 -49
  87. package/lib/gitlab/gitlab-configuration.d.ts +2 -13
  88. package/lib/gitlab/gitlab-configuration.js +4 -15
  89. package/lib/gitlab/nested-configuration.d.ts +1 -9
  90. package/lib/gitlab/nested-configuration.js +3 -8
  91. package/lib/gitpod.d.ts +71 -167
  92. package/lib/gitpod.js +75 -42
  93. package/lib/ignore-file.d.ts +4 -23
  94. package/lib/ignore-file.js +6 -25
  95. package/lib/ini.d.ts +2 -14
  96. package/lib/ini.js +3 -13
  97. package/lib/java/java-project.d.ts +29 -70
  98. package/lib/java/java-project.js +10 -17
  99. package/lib/java/junit.d.ts +5 -17
  100. package/lib/java/junit.js +3 -8
  101. package/lib/java/maven-compile.d.ts +4 -13
  102. package/lib/java/maven-compile.js +3 -8
  103. package/lib/java/maven-packaging.d.ts +6 -21
  104. package/lib/java/maven-packaging.js +3 -8
  105. package/lib/java/maven-sample.d.ts +2 -12
  106. package/lib/java/maven-sample.js +3 -8
  107. package/lib/java/pom.d.ts +38 -100
  108. package/lib/java/pom.js +13 -25
  109. package/lib/java/projenrc.d.ts +7 -22
  110. package/lib/java/projenrc.js +3 -8
  111. package/lib/javascript/bundler.d.ts +30 -72
  112. package/lib/javascript/bundler.js +13 -21
  113. package/lib/javascript/eslint.d.ts +27 -84
  114. package/lib/javascript/eslint.js +11 -30
  115. package/lib/javascript/jest.d.ts +91 -344
  116. package/lib/javascript/jest.js +6 -23
  117. package/lib/javascript/node-package.d.ts +111 -259
  118. package/lib/javascript/node-package.js +64 -81
  119. package/lib/javascript/node-project.d.ts +112 -220
  120. package/lib/javascript/node-project.js +54 -73
  121. package/lib/javascript/npm-config.d.ts +9 -19
  122. package/lib/javascript/npm-config.js +9 -16
  123. package/lib/javascript/prettier.d.ts +65 -196
  124. package/lib/javascript/prettier.js +70 -46
  125. package/lib/javascript/projenrc.d.ts +2 -12
  126. package/lib/javascript/projenrc.js +3 -8
  127. package/lib/javascript/typescript-config.d.ts +62 -158
  128. package/lib/javascript/typescript-config.js +31 -18
  129. package/lib/javascript/upgrade-dependencies.d.ts +34 -94
  130. package/lib/javascript/upgrade-dependencies.js +14 -44
  131. package/lib/json.d.ts +3 -17
  132. package/lib/json.js +3 -13
  133. package/lib/license.d.ts +3 -20
  134. package/lib/license.js +2 -13
  135. package/lib/logger.d.ts +18 -62
  136. package/lib/logger.js +17 -37
  137. package/lib/makefile.d.ts +14 -45
  138. package/lib/makefile.js +7 -25
  139. package/lib/object-file.d.ts +19 -39
  140. package/lib/object-file.js +17 -28
  141. package/lib/option-hints.d.ts +4 -13
  142. package/lib/option-hints.js +11 -5
  143. package/lib/project-build.d.ts +7 -26
  144. package/lib/project-build.js +3 -8
  145. package/lib/project.d.ts +64 -186
  146. package/lib/project.js +43 -91
  147. package/lib/projects.d.ts +11 -32
  148. package/lib/projects.js +4 -8
  149. package/lib/projenrc-json.d.ts +2 -12
  150. package/lib/projenrc-json.js +3 -8
  151. package/lib/python/pip.d.ts +7 -23
  152. package/lib/python/pip.js +8 -17
  153. package/lib/python/poetry.d.ts +36 -121
  154. package/lib/python/poetry.js +12 -26
  155. package/lib/python/projenrc.d.ts +4 -15
  156. package/lib/python/projenrc.js +3 -8
  157. package/lib/python/pytest.d.ts +3 -16
  158. package/lib/python/pytest.js +2 -8
  159. package/lib/python/python-deps.d.ts +7 -21
  160. package/lib/python/python-deps.js +1 -1
  161. package/lib/python/python-env.d.ts +1 -6
  162. package/lib/python/python-env.js +1 -1
  163. package/lib/python/python-packaging.d.ts +12 -34
  164. package/lib/python/python-packaging.js +1 -1
  165. package/lib/python/python-project.d.ts +34 -79
  166. package/lib/python/python-project.js +7 -20
  167. package/lib/python/python-sample.d.ts +2 -9
  168. package/lib/python/python-sample.js +3 -8
  169. package/lib/python/requirements-file.d.ts +4 -19
  170. package/lib/python/requirements-file.js +5 -15
  171. package/lib/python/setuppy.d.ts +11 -39
  172. package/lib/python/setuppy.js +3 -13
  173. package/lib/python/setuptools.d.ts +2 -14
  174. package/lib/python/setuptools.js +3 -8
  175. package/lib/python/venv.d.ts +4 -14
  176. package/lib/python/venv.js +4 -11
  177. package/lib/readme.d.ts +7 -16
  178. package/lib/readme.js +5 -7
  179. package/lib/release/publisher.d.ts +92 -201
  180. package/lib/release/publisher.js +18 -37
  181. package/lib/release/release-trigger.d.ts +16 -48
  182. package/lib/release/release-trigger.js +8 -18
  183. package/lib/release/release.d.ts +50 -110
  184. package/lib/release/release.js +9 -24
  185. package/lib/sample-file.d.ts +14 -47
  186. package/lib/sample-file.js +9 -30
  187. package/lib/semver.d.ts +4 -21
  188. package/lib/semver.js +6 -20
  189. package/lib/source-code.d.ts +7 -23
  190. package/lib/source-code.js +7 -19
  191. package/lib/task-model.d.ts +21 -61
  192. package/lib/task-model.js +1 -1
  193. package/lib/task-runtime.d.ts +7 -24
  194. package/lib/task-runtime.js +7 -20
  195. package/lib/task.d.ts +29 -73
  196. package/lib/task.js +28 -61
  197. package/lib/tasks.d.ts +12 -34
  198. package/lib/tasks.js +14 -36
  199. package/lib/testing.d.ts +6 -10
  200. package/lib/testing.js +8 -12
  201. package/lib/textfile.d.ts +9 -24
  202. package/lib/textfile.js +9 -19
  203. package/lib/toml.d.ts +2 -14
  204. package/lib/toml.js +3 -13
  205. package/lib/typescript/projenrc.d.ts +4 -14
  206. package/lib/typescript/projenrc.js +3 -8
  207. package/lib/typescript/typescript-typedoc.d.ts +1 -6
  208. package/lib/typescript/typescript-typedoc.js +3 -8
  209. package/lib/typescript/typescript.d.ts +24 -82
  210. package/lib/typescript/typescript.js +6 -15
  211. package/lib/version.d.ts +9 -38
  212. package/lib/version.js +2 -11
  213. package/lib/vscode/devcontainer.d.ts +10 -30
  214. package/lib/vscode/devcontainer.js +10 -26
  215. package/lib/vscode/launch-config.d.ts +18 -97
  216. package/lib/vscode/launch-config.js +9 -15
  217. package/lib/vscode/vscode.d.ts +0 -9
  218. package/lib/vscode/vscode.js +2 -11
  219. package/lib/web/next.d.ts +19 -60
  220. package/lib/web/next.js +6 -20
  221. package/lib/web/postcss.d.ts +3 -24
  222. package/lib/web/postcss.js +3 -8
  223. package/lib/web/react.d.ts +13 -60
  224. package/lib/web/react.js +7 -32
  225. package/lib/web/tailwind.d.ts +1 -15
  226. package/lib/web/tailwind.js +3 -7
  227. package/lib/xmlfile.d.ts +2 -14
  228. package/lib/xmlfile.js +3 -13
  229. package/lib/yaml.d.ts +4 -19
  230. package/lib/yaml.js +3 -13
  231. package/package.json +4 -4
  232. package/releasetag.txt +1 -1
  233. package/version.txt +1 -1
@@ -3,88 +3,73 @@ import { BundlingOptions } from "../javascript";
3
3
  import { Project } from "../project";
4
4
  import { AwsCdkDeps } from "./awscdk-deps";
5
5
  /**
6
- * (experimental) Common options for `LambdaFunction`.
7
- *
8
- * Applies to all functions in
6
+ * Common options for `LambdaFunction`. Applies to all functions in
9
7
  * auto-discovery.
10
- *
11
- * @experimental
12
8
  */
13
9
  export interface LambdaFunctionCommonOptions {
14
10
  /**
15
- * (experimental) The node.js version to target.
11
+ * The node.js version to target.
16
12
  *
17
13
  * @default Runtime.NODEJS_14_X
18
- * @experimental
19
14
  */
20
15
  readonly runtime?: LambdaRuntime;
21
16
  /**
22
- * (experimental) Bundling options for this AWS Lambda function.
17
+ * Bundling options for this AWS Lambda function.
23
18
  *
24
19
  * If not specified the default bundling options specified for the project
25
20
  * `Bundler` instance will be used.
26
21
  *
27
22
  * @default - defaults
28
- * @experimental
29
23
  */
30
24
  readonly bundlingOptions?: BundlingOptions;
31
25
  /**
32
- * (experimental) Whether to automatically reuse TCP connections when working with the AWS SDK for JavaScript.
26
+ * Whether to automatically reuse TCP connections when working with the AWS
27
+ * SDK for JavaScript.
33
28
  *
34
29
  * This sets the `AWS_NODEJS_CONNECTION_REUSE_ENABLED` environment variable
35
30
  * to `1`.
36
31
  *
37
- * @default true
38
32
  * @see https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
39
- * @experimental
33
+ *
34
+ * @default true
40
35
  */
41
36
  readonly awsSdkConnectionReuse?: boolean;
42
37
  }
43
38
  /**
44
- * (experimental) Options for `Function`.
45
- *
46
- * @experimental
39
+ * Options for `Function`.
47
40
  */
48
41
  export interface LambdaFunctionOptions extends LambdaFunctionCommonOptions {
49
42
  /**
50
- * (experimental) A path from the project root directory to a TypeScript file which contains the AWS Lambda handler entrypoint (exports a `handler` function).
43
+ * A path from the project root directory to a TypeScript file which contains
44
+ * the AWS Lambda handler entrypoint (exports a `handler` function).
51
45
  *
52
46
  * This is relative to the root directory of the project.
53
47
  *
54
- * @experimental
55
- * @example
56
- *
57
- * "src/subdir/foo.lambda.ts"
48
+ * @example "src/subdir/foo.lambda.ts"
58
49
  */
59
50
  readonly entrypoint: string;
60
51
  /**
61
- * (experimental) The name of the generated TypeScript source file.
62
- *
63
- * This file should also be
52
+ * The name of the generated TypeScript source file. This file should also be
64
53
  * under the source tree.
65
54
  *
66
55
  * @default - The name of the entrypoint file, with the `-function.ts` suffix
67
56
  * instead of `.lambda.ts`.
68
- * @experimental
69
57
  */
70
58
  readonly constructFile?: string;
71
59
  /**
72
- * (experimental) The name of the generated `lambda.Function` subclass.
60
+ * The name of the generated `lambda.Function` subclass.
73
61
  *
74
62
  * @default - A pascal cased version of the name of the entrypoint file, with
75
63
  * the extension `Function` (e.g. `ResizeImageFunction`).
76
- * @experimental
77
64
  */
78
65
  readonly constructName?: string;
79
66
  /**
80
- * (experimental) AWS CDK dependency manager.
81
- *
82
- * @experimental
67
+ * AWS CDK dependency manager.
83
68
  */
84
69
  readonly cdkDeps: AwsCdkDeps;
85
70
  }
86
71
  /**
87
- * (experimental) Generates a pre-bundled AWS Lambda function construct from handler code.
72
+ * Generates a pre-bundled AWS Lambda function construct from handler code.
88
73
  *
89
74
  * To use this, create an AWS Lambda handler file under your source tree with
90
75
  * the `.lambda.ts` extension and add a `LambdaFunction` component to your
@@ -96,7 +81,6 @@ export interface LambdaFunctionOptions extends LambdaFunctionCommonOptions {
96
81
  * which extends `@aws-cdk/aws-lambda.Function` which is bound to the bundled
97
82
  * handle through an asset.
98
83
  *
99
- * @experimental
100
84
  * @example
101
85
  *
102
86
  * new LambdaFunction(myProject, {
@@ -106,18 +90,15 @@ export interface LambdaFunctionOptions extends LambdaFunctionCommonOptions {
106
90
  */
107
91
  export declare class LambdaFunction extends Component {
108
92
  /**
109
- * (experimental) Defines a pre-bundled AWS Lambda function construct from handler code.
93
+ * Defines a pre-bundled AWS Lambda function construct from handler code.
110
94
  *
111
- * @param project The project to use.
112
- * @param options Options.
113
- * @experimental
95
+ * @param project The project to use
96
+ * @param options Options
114
97
  */
115
98
  constructor(project: Project, options: LambdaFunctionOptions);
116
99
  }
117
100
  /**
118
- * (experimental) The runtime for the AWS Lambda function.
119
- *
120
- * @experimental
101
+ * The runtime for the AWS Lambda function.
121
102
  */
122
103
  export declare class LambdaRuntime {
123
104
  /**
@@ -129,26 +110,17 @@ export declare class LambdaRuntime {
129
110
  */
130
111
  readonly esbuildTarget: string;
131
112
  /**
132
- * (experimental) Node.js 10.x.
133
- *
134
- * @experimental
113
+ * Node.js 10.x
135
114
  */
136
115
  static readonly NODEJS_10_X: LambdaRuntime;
137
116
  /**
138
- * (experimental) Node.js 12.x.
139
- *
140
- * @experimental
117
+ * Node.js 12.x
141
118
  */
142
119
  static readonly NODEJS_12_X: LambdaRuntime;
143
120
  /**
144
- * (experimental) Node.js 14.x.
145
- *
146
- * @experimental
121
+ * Node.js 14.x
147
122
  */
148
123
  static readonly NODEJS_14_X: LambdaRuntime;
149
- /**
150
- * @experimental
151
- */
152
124
  readonly esbuildPlatform = "node";
153
125
  private constructor();
154
126
  }
@@ -10,7 +10,7 @@ const javascript_1 = require("../javascript");
10
10
  const source_code_1 = require("../source-code");
11
11
  const internal_1 = require("./internal");
12
12
  /**
13
- * (experimental) Generates a pre-bundled AWS Lambda function construct from handler code.
13
+ * Generates a pre-bundled AWS Lambda function construct from handler code.
14
14
  *
15
15
  * To use this, create an AWS Lambda handler file under your source tree with
16
16
  * the `.lambda.ts` extension and add a `LambdaFunction` component to your
@@ -22,7 +22,6 @@ const internal_1 = require("./internal");
22
22
  * which extends `@aws-cdk/aws-lambda.Function` which is bound to the bundled
23
23
  * handle through an asset.
24
24
  *
25
- * @experimental
26
25
  * @example
27
26
  *
28
27
  * new LambdaFunction(myProject, {
@@ -32,11 +31,10 @@ const internal_1 = require("./internal");
32
31
  */
33
32
  class LambdaFunction extends component_1.Component {
34
33
  /**
35
- * (experimental) Defines a pre-bundled AWS Lambda function construct from handler code.
34
+ * Defines a pre-bundled AWS Lambda function construct from handler code.
36
35
  *
37
- * @param project The project to use.
38
- * @param options Options.
39
- * @experimental
36
+ * @param project The project to use
37
+ * @param options Options
40
38
  */
41
39
  constructor(project, options) {
42
40
  var _c, _d, _e, _f;
@@ -126,11 +124,9 @@ class LambdaFunction extends component_1.Component {
126
124
  }
127
125
  exports.LambdaFunction = LambdaFunction;
128
126
  _a = JSII_RTTI_SYMBOL_1;
129
- LambdaFunction[_a] = { fqn: "projen.awscdk.LambdaFunction", version: "0.52.23" };
127
+ LambdaFunction[_a] = { fqn: "projen.awscdk.LambdaFunction", version: "0.52.24" };
130
128
  /**
131
- * (experimental) The runtime for the AWS Lambda function.
132
- *
133
- * @experimental
129
+ * The runtime for the AWS Lambda function.
134
130
  */
135
131
  class LambdaRuntime {
136
132
  constructor(
@@ -144,31 +140,22 @@ class LambdaRuntime {
144
140
  esbuildTarget) {
145
141
  this.functionRuntime = functionRuntime;
146
142
  this.esbuildTarget = esbuildTarget;
147
- /**
148
- * @experimental
149
- */
150
143
  this.esbuildPlatform = "node";
151
144
  }
152
145
  }
153
146
  exports.LambdaRuntime = LambdaRuntime;
154
147
  _b = JSII_RTTI_SYMBOL_1;
155
- LambdaRuntime[_b] = { fqn: "projen.awscdk.LambdaRuntime", version: "0.52.23" };
148
+ LambdaRuntime[_b] = { fqn: "projen.awscdk.LambdaRuntime", version: "0.52.24" };
156
149
  /**
157
- * (experimental) Node.js 10.x.
158
- *
159
- * @experimental
150
+ * Node.js 10.x
160
151
  */
161
152
  LambdaRuntime.NODEJS_10_X = new LambdaRuntime("NODEJS_10_X", "node10");
162
153
  /**
163
- * (experimental) Node.js 12.x.
164
- *
165
- * @experimental
154
+ * Node.js 12.x
166
155
  */
167
156
  LambdaRuntime.NODEJS_12_X = new LambdaRuntime("NODEJS_12_X", "node12");
168
157
  /**
169
- * (experimental) Node.js 14.x.
170
- *
171
- * @experimental
158
+ * Node.js 14.x
172
159
  */
173
160
  LambdaRuntime.NODEJS_14_X = new LambdaRuntime("NODEJS_14_X", "node14");
174
161
  /**
@@ -177,4 +164,4 @@ LambdaRuntime.NODEJS_14_X = new LambdaRuntime("NODEJS_14_X", "node14");
177
164
  function convertToPosixPath(p) {
178
165
  return p.split(path_1.sep).join(path_1.posix.sep);
179
166
  }
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9sYW1iZGEtZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBOEU7QUFDOUUsK0JBQThCO0FBQzlCLDRDQUF5QztBQUN6Qyw4Q0FBaUU7QUFFakUsZ0RBQTRDO0FBRTVDLHlDQUFtRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCbkQsTUFBYSxjQUFlLFNBQVEscUJBQVM7Ozs7Ozs7O0lBRTNDLFlBQVksT0FBZ0IsRUFBRSxPQUE4Qjs7UUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxNQUFNLE9BQU8sR0FBRyxvQkFBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FDYixtRUFBbUUsQ0FDcEUsQ0FBQztTQUNIO1FBRUQsTUFBTSxPQUFPLFNBQUcsT0FBTyxDQUFDLE9BQU8sbUNBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUU3RCwwRUFBMEU7UUFDMUUsa0JBQWtCO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLG1CQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtRQUV6QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBRXRDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGdDQUFxQixDQUFDLEVBQUU7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFVBQVUsZ0JBQWdCLGdDQUFxQixZQUFZLENBQy9ELENBQUM7U0FDSDtRQUVELE1BQU0sUUFBUSxHQUFHLFdBQUks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QU0sQ0FBQyxTQUFTLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUN6QixHQUFHLFFBQVEsd0JBQXdCLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQzVELENBQUM7U0FDSDtJQUNILENBQUM7O0FBaklILHdDQWtJQzs7Ozs7Ozs7QUFHRCxNQUFhLGFBQWE7SUFxQnhCO0lBQ0U7O09BRUc7SUFDYSxlQUF1QjtJQUV2Qzs7T0FFRztJQUNhLGFBQXFCO1FBTHJCLG9CQUFlLEdBQWYsZUFBZSxDQUFRO1FBS3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFROzs7O1FBWHZCLG9CQUFlLEdBQUcsTUFBTSxDQUFDO0lBWXRDLENBQUM7O0FBL0JOLHNDQWdDQzs7Ozs7Ozs7QUE5QndCLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQzs7Ozs7O0FBR3FCLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQzs7Ozs7O0FBR3FCLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQztBQWlCSjs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUMsQ0FBUztJQUNuQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGV4dG5hbWUsIGpvaW4sIHJlbGF0aXZlLCBzZXAsIHBvc2l4IH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHBhc2NhbCB9IGZyb20gXCJjYXNlXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCdW5kbGVyLCBCdW5kbGluZ09wdGlvbnMsIEVzbGludCB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB7IFNvdXJjZUNvZGUgfSBmcm9tIFwiLi4vc291cmNlLWNvZGVcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHMgfSBmcm9tIFwiLi9hd3NjZGstZGVwc1wiO1xuaW1wb3J0IHsgVFlQRVNDUklQVF9MQU1CREFfRVhUIH0gZnJvbSBcIi4vaW50ZXJuYWxcIjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcnVudGltZT86IExhbWJkYVJ1bnRpbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBidW5kbGluZ09wdGlvbnM/OiBCdW5kbGluZ09wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhd3NTZGtDb25uZWN0aW9uUmV1c2U/OiBib29sZWFuO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUZ1bmN0aW9uT3B0aW9ucyBleHRlbmRzIExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZW50cnlwb2ludDogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29uc3RydWN0RmlsZT86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29uc3RydWN0TmFtZT86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrRGVwczogQXdzQ2RrRGVwcztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgTGFtYmRhRnVuY3Rpb24gZXh0ZW5kcyBDb21wb25lbnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IExhbWJkYUZ1bmN0aW9uT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgY2RrRGVwcyA9IG9wdGlvbnMuY2RrRGVwcztcbiAgICBjb25zdCBidW5kbGVyID0gQnVuZGxlci5vZihwcm9qZWN0KTtcbiAgICBpZiAoIWJ1bmRsZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJObyBidW5kbGVyIGZvdW5kLiBQbGVhc2UgYWRkIGEgQnVuZGxlciBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlwiXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bnRpbWUgPSBvcHRpb25zLnJ1bnRpbWUgPz8gTGFtYmRhUnVudGltZS5OT0RFSlNfMTRfWDtcblxuICAgIC8vIGFsbG93IExhbWJkYSBoYW5kbGVyIGNvZGUgdG8gaW1wb3J0IGRldi1kZXBzIHNpbmNlIHRoZXkgYXJlIG9ubHkgbmVlZGVkXG4gICAgLy8gZHVyaW5nIGJ1bmRsaW5nXG4gICAgY29uc3QgZXNsaW50ID0gRXNsaW50Lm9mKHByb2plY3QpO1xuICAgIGVzbGludD8uYWxsb3dEZXZEZXBzKG9wdGlvbnMuZW50cnlwb2ludCk7XG5cbiAgICBjb25zdCBlbnRyeXBvaW50ID0gb3B0aW9ucy5lbnRyeXBvaW50O1xuXG4gICAgaWYgKCFlbnRyeXBvaW50LmVuZHNXaXRoKFRZUEVTQ1JJUFRfTEFNQkRBX0VYVCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7ZW50cnlwb2ludH0gbXVzdCBoYXZlIGEgJHtUWVBFU0NSSVBUX0xBTUJEQV9FWFR9IGV4dGVuc2lvbmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVBhdGggPSBqb2luKFxuICAgICAgZGlybmFtZShlbnRyeXBvaW50KSxcbiAgICAgIGJhc2VuYW1lKGVudHJ5cG9pbnQsIFRZUEVTQ1JJUFRfTEFNQkRBX0VYVClcbiAgICApO1xuICAgIGNvbnN0IGNvbnN0cnVjdEZpbGUgPSBvcHRpb25zLmNvbnN0cnVjdEZpbGUgPz8gYCR7YmFzZVBhdGh9LWZ1bmN0aW9uLnRzYDtcblxuICAgIGlmIChleHRuYW1lKGNvbnN0cnVjdEZpbGUpICE9PSBcIi50c1wiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb25zdHJ1Y3QgZmlsZSBuYW1lIFwiJHtjb25zdHJ1Y3RGaWxlfVwiIG11c3QgaGF2ZSBhIC50cyBleHRlbnNpb25gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHR5cGUgbmFtZXNcbiAgICBjb25zdCBjb25zdHJ1Y3ROYW1lID1cbiAgICAgIG9wdGlvbnMuY29uc3RydWN0TmFtZSA/PyBwYXNjYWwoYmFzZW5hbWUoYmFzZVBhdGgpKSArIFwiRnVuY3Rpb25cIjtcbiAgICBjb25zdCBwcm9wc1R5cGUgPSBgJHtjb25zdHJ1Y3ROYW1lfVByb3BzYDtcblxuICAgIGNvbnN0IGJ1bmRsZSA9IGJ1bmRsZXIuYWRkQnVuZGxlKGVudHJ5cG9pbnQsIHtcbiAgICAgIHRhcmdldDogcnVudGltZS5lc2J1aWxkVGFyZ2V0LFxuICAgICAgcGxhdGZvcm06IHJ1bnRpbWUuZXNidWlsZFBsYXRmb3JtLFxuICAgICAgZXh0ZXJuYWxzOiBbXCJhd3Mtc2RrXCJdLFxuICAgICAgLi4ub3B0aW9ucy5idW5kbGluZ09wdGlvbnMsXG4gICAgfSk7XG5cbiAgICAvLyBjYWxjdWxhdGUgdGhlIHJlbGF0aXZlIHBhdGggYmV0d2VlbiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlXG4gICAgLy8gZ2VuZXJhdGVkIGNvbnN0cnVjdCBzb3VyY2UgZmlsZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGJ1bmRsZVxuICAgIC8vIGluZGV4LmpzIGJ5IHJlc29sdmluZyB0aGVtIGFzIGFic29sdXRlIHBhdGhzIGZpcnN0LlxuICAgIC8vIGUuZzpcbiAgICAvLyAgLSBvdXRmaWxlQWJzID0+IGAvcHJvamVjdC1vdXRkaXIvYXNzZXRzL2Zvby9iYXIvYmF6L2Zvby1mdW5jdGlvbi9pbmRleC5qc2BcbiAgICAvLyAgLSBjb25zdHJ1Y3RBYnMgPT4gYC9wcm9qZWN0LW91dGRpci9zcmMvZm9vL2Jhci9iYXovZm9vLWZ1bmN0aW9uLnRzYFxuICAgIGNvbnN0IG91dGZpbGVBYnMgPSBqb2luKHByb2plY3Qub3V0ZGlyLCBidW5kbGUub3V0ZmlsZSk7XG4gICAgY29uc3QgY29uc3RydWN0QWJzID0gam9pbihwcm9qZWN0Lm91dGRpciwgY29uc3RydWN0RmlsZSk7XG4gICAgY29uc3QgcmVsYXRpdmVPdXRmaWxlID0gcmVsYXRpdmUoXG4gICAgICBkaXJuYW1lKGNvbnN0cnVjdEFicyksXG4gICAgICBkaXJuYW1lKG91dGZpbGVBYnMpXG4gICAgKTtcblxuICAgIGNvbnN0IHNyYyA9IG5ldyBTb3VyY2VDb2RlKHByb2plY3QsIGNvbnN0cnVjdEZpbGUpO1xuICAgIGlmIChzcmMubWFya2VyKSB7XG4gICAgICBzcmMubGluZShgLy8gJHtzcmMubWFya2VyfWApO1xuICAgIH1cbiAgICBzcmMubGluZShcImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XCIpO1xuXG4gICAgaWYgKGNka0RlcHMuY2RrTWFqb3JWZXJzaW9uID09PSAxKSB7XG4gICAgICBzcmMubGluZShcImltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhJztcIik7XG4gICAgICBzcmMubGluZShcImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1wiKTtcbiAgICAgIGNka0RlcHMuYWRkVjFEZXBlbmRlbmNpZXMoXCJAYXdzLWNkay9hd3MtbGFtYmRhXCIpO1xuICAgICAgY2RrRGVwcy5hZGRWMURlcGVuZGVuY2llcyhcIkBhd3MtY2RrL2NvcmVcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNyYy5saW5lKFwiaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1wiKTtcbiAgICAgIHNyYy5saW5lKFwiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XCIpO1xuICAgIH1cblxuICAgIHNyYy5saW5lKCk7XG4gICAgc3JjLmxpbmUoXCIvKipcIik7XG4gICAgc3JjLmxpbmUoYCAqIFByb3BzIGZvciAke2NvbnN0cnVjdE5hbWV9YCk7XG4gICAgc3JjLmxpbmUoXCIgKi9cIik7XG4gICAgc3JjLm9wZW4oYGV4cG9ydCBpbnRlcmZhY2UgJHtwcm9wc1R5cGV9IGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uT3B0aW9ucyB7YCk7XG4gICAgc3JjLmNsb3NlKFwifVwiKTtcbiAgICBzcmMubGluZSgpO1xuICAgIHNyYy5saW5lKFwiLyoqXCIpO1xuICAgIHNyYy5saW5lKFxuICAgICAgYCAqIEFuIEFXUyBMYW1iZGEgZnVuY3Rpb24gd2hpY2ggZXhlY3V0ZXMgJHtjb252ZXJ0VG9Qb3NpeFBhdGgoXG4gICAgICAgIGJhc2VQYXRoXG4gICAgICApfS5gXG4gICAgKTtcbiAgICBzcmMubGluZShcIiAqL1wiKTtcbiAgICBzcmMub3BlbihgZXhwb3J0IGNsYXNzICR7Y29uc3RydWN0TmFtZX0gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge2ApO1xuICAgIHNyYy5vcGVuKFxuICAgICAgYGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogJHtwcm9wc1R5cGV9KSB7YFxuICAgICk7XG4gICAgc3JjLm9wZW4oXCJzdXBlcihzY29wZSwgaWQsIHtcIik7XG4gICAgc3JjLmxpbmUoYGRlc2NyaXB0aW9uOiAnJHtjb252ZXJ0VG9Qb3NpeFBhdGgoZW50cnlwb2ludCl9JyxgKTtcbiAgICBzcmMubGluZShcIi4uLnByb3BzLFwiKTtcbiAgICBzcmMubGluZShgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuJHtydW50aW1lLmZ1bmN0aW9uUnVudGltZX0sYCk7XG4gICAgc3JjLmxpbmUoXCJoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXCIpO1xuICAgIHNyYy5saW5lKFxuICAgICAgYGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnJHtjb252ZXJ0VG9Qb3NpeFBhdGgoXG4gICAgICAgIHJlbGF0aXZlT3V0ZmlsZVxuICAgICAgKX0nKSksYFxuICAgICk7XG4gICAgc3JjLmNsb3NlKFwifSk7XCIpO1xuICAgIGlmIChvcHRpb25zLmF3c1Nka0Nvbm5lY3Rpb25SZXVzZSA/PyB0cnVlKSB7XG4gICAgICBzcmMubGluZShcbiAgICAgICAgXCJ0aGlzLmFkZEVudmlyb25tZW50KCdBV1NfTk9ERUpTX0NPTk5FQ1RJT05fUkVVU0VfRU5BQkxFRCcsICcxJywgeyByZW1vdmVJbkVkZ2U6IHRydWUgfSk7XCJcbiAgICAgICk7XG4gICAgfVxuICAgIHNyYy5jbG9zZShcIn1cIik7XG4gICAgc3JjLmNsb3NlKFwifVwiKTtcblxuICAgIHRoaXMucHJvamVjdC5sb2dnZXIudmVyYm9zZShcbiAgICAgIGAke2Jhc2VQYXRofTogY29uc3RydWN0IFwiJHtjb25zdHJ1Y3ROYW1lfVwiIGdlbmVyYXRlZCB1bmRlciBcIiR7Y29uc3RydWN0RmlsZX1cImBcbiAgICApO1xuICAgIHRoaXMucHJvamVjdC5sb2dnZXIudmVyYm9zZShcbiAgICAgIGAke2Jhc2VQYXRofTogYnVuZGxlIHRhc2sgXCIke2J1bmRsZS5idW5kbGVUYXNrLm5hbWV9XCJgXG4gICAgKTtcbiAgICBpZiAoYnVuZGxlLndhdGNoVGFzaykge1xuICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci52ZXJib3NlKFxuICAgICAgICBgJHtiYXNlUGF0aH06IGJ1bmRsZSB3YXRjaCB0YXNrIFwiJHtidW5kbGUud2F0Y2hUYXNrLm5hbWV9XCJgXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBMYW1iZGFSdW50aW1lIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzEwX1ggPSBuZXcgTGFtYmRhUnVudGltZShcbiAgICBcIk5PREVKU18xMF9YXCIsXG4gICAgXCJub2RlMTBcIlxuICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU18xMl9YID0gbmV3IExhbWJkYVJ1bnRpbWUoXG4gICAgXCJOT0RFSlNfMTJfWFwiLFxuICAgIFwibm9kZTEyXCJcbiAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlNfMTRfWCA9IG5ldyBMYW1iZGFSdW50aW1lKFxuICAgIFwiTk9ERUpTXzE0X1hcIixcbiAgICBcIm5vZGUxNFwiXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVzYnVpbGRQbGF0Zm9ybSA9IFwibm9kZVwiO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogVGhlIGF3cy1sYW1iZGEuUnVudGltZSBtZW1iZXIgbmFtZSB0byB1c2UuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uUnVudGltZTogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogVGhlIGVzYnVpbGQgc2V0dGluZyB0byB1c2UuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGVzYnVpbGRUYXJnZXQ6IHN0cmluZ1xuICApIHt9XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGdpdmVuIHBhdGggc3RyaW5nIHRvIHBvc2l4IGlmIGl0IHdhc24ndCBhbHJlYWR5LlxuICovXG5mdW5jdGlvbiBjb252ZXJ0VG9Qb3NpeFBhdGgocDogc3RyaW5nKSB7XG4gIHJldHVybiBwLnNwbGl0KHNlcCkuam9pbihwb3NpeC5zZXApO1xufVxuIl19
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9sYW1iZGEtZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBOEU7QUFDOUUsK0JBQThCO0FBQzlCLDRDQUF5QztBQUN6Qyw4Q0FBaUU7QUFFakUsZ0RBQTRDO0FBRTVDLHlDQUFtRDtBQTJFbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFhLGNBQWUsU0FBUSxxQkFBUztJQUMzQzs7Ozs7T0FLRztJQUNILFlBQVksT0FBZ0IsRUFBRSxPQUE4Qjs7UUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxNQUFNLE9BQU8sR0FBRyxvQkFBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FDYixtRUFBbUUsQ0FDcEUsQ0FBQztTQUNIO1FBRUQsTUFBTSxPQUFPLFNBQUcsT0FBTyxDQUFDLE9BQU8sbUNBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUU3RCwwRUFBMEU7UUFDMUUsa0JBQWtCO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLG1CQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtRQUV6QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBRXRDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGdDQUFxQixDQUFDLEVBQUU7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFVBQVUsZ0JBQWdCLGdDQUFxQixZQUFZLENBQy9ELENBQUM7U0FDSDtRQUVELE1BQU0s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QUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUN6QixHQUFHLFFBQVEsd0JBQXdCLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQzVELENBQUM7U0FDSDtJQUNILENBQUM7O0FBdElILHdDQXVJQzs7O0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUEyQnhCO0lBQ0U7O09BRUc7SUFDYSxlQUF1QjtJQUV2Qzs7T0FFRztJQUNhLGFBQXFCO1FBTHJCLG9CQUFlLEdBQWYsZUFBZSxDQUFRO1FBS3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBWHZCLG9CQUFlLEdBQUcsTUFBTSxDQUFDO0lBWXRDLENBQUM7O0FBckNOLHNDQXNDQzs7O0FBckNDOztHQUVHO0FBQ29CLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQztBQUVGOztHQUVHO0FBQ29CLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQztBQUVGOztHQUVHO0FBQ29CLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQztBQWlCSjs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUMsQ0FBUztJQUNuQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGV4dG5hbWUsIGpvaW4sIHJlbGF0aXZlLCBzZXAsIHBvc2l4IH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHBhc2NhbCB9IGZyb20gXCJjYXNlXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCdW5kbGVyLCBCdW5kbGluZ09wdGlvbnMsIEVzbGludCB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB7IFNvdXJjZUNvZGUgfSBmcm9tIFwiLi4vc291cmNlLWNvZGVcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHMgfSBmcm9tIFwiLi9hd3NjZGstZGVwc1wiO1xuaW1wb3J0IHsgVFlQRVNDUklQVF9MQU1CREFfRVhUIH0gZnJvbSBcIi4vaW50ZXJuYWxcIjtcblxuLyoqXG4gKiBDb21tb24gb3B0aW9ucyBmb3IgYExhbWJkYUZ1bmN0aW9uYC4gQXBwbGllcyB0byBhbGwgZnVuY3Rpb25zIGluXG4gKiBhdXRvLWRpc2NvdmVyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5vZGUuanMgdmVyc2lvbiB0byB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJ1bnRpbWUuTk9ERUpTXzE0X1hcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnRpbWU/OiBMYW1iZGFSdW50aW1lO1xuXG4gIC8qKlxuICAgKiBCdW5kbGluZyBvcHRpb25zIGZvciB0aGlzIEFXUyBMYW1iZGEgZnVuY3Rpb24uXG4gICAqXG4gICAqIElmIG5vdCBzcGVjaWZpZWQgdGhlIGRlZmF1bHQgYnVuZGxpbmcgb3B0aW9ucyBzcGVjaWZpZWQgZm9yIHRoZSBwcm9qZWN0XG4gICAqIGBCdW5kbGVyYCBpbnN0YW5jZSB3aWxsIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdHNcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsaW5nT3B0aW9ucz86IEJ1bmRsaW5nT3B0aW9ucztcblxuICAvKipcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHJldXNlIFRDUCBjb25uZWN0aW9ucyB3aGVuIHdvcmtpbmcgd2l0aCB0aGUgQVdTXG4gICAqIFNESyBmb3IgSmF2YVNjcmlwdC5cbiAgICpcbiAgICogVGhpcyBzZXRzIHRoZSBgQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRURgIGVudmlyb25tZW50IHZhcmlhYmxlXG4gICAqIHRvIGAxYC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2RrLWZvci1qYXZhc2NyaXB0L3YyL2RldmVsb3Blci1ndWlkZS9ub2RlLXJldXNpbmctY29ubmVjdGlvbnMuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhd3NTZGtDb25uZWN0aW9uUmV1c2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBGdW5jdGlvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhRnVuY3Rpb25PcHRpb25zIGV4dGVuZHMgTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgcGF0aCBmcm9tIHRoZSBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5IHRvIGEgVHlwZVNjcmlwdCBmaWxlIHdoaWNoIGNvbnRhaW5zXG4gICAqIHRoZSBBV1MgTGFtYmRhIGhhbmRsZXIgZW50cnlwb2ludCAoZXhwb3J0cyBhIGBoYW5kbGVyYCBmdW5jdGlvbikuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBwcm9qZWN0LlxuICAgKlxuICAgKiBAZXhhbXBsZSBcInNyYy9zdWJkaXIvZm9vLmxhbWJkYS50c1wiXG4gICAqL1xuICByZWFkb25seSBlbnRyeXBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgVHlwZVNjcmlwdCBzb3VyY2UgZmlsZS4gVGhpcyBmaWxlIHNob3VsZCBhbHNvIGJlXG4gICAqIHVuZGVyIHRoZSBzb3VyY2UgdHJlZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgbmFtZSBvZiB0aGUgZW50cnlwb2ludCBmaWxlLCB3aXRoIHRoZSBgLWZ1bmN0aW9uLnRzYCBzdWZmaXhcbiAgICogaW5zdGVhZCBvZiBgLmxhbWJkYS50c2AuXG4gICAqL1xuICByZWFkb25seSBjb25zdHJ1Y3RGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIGBsYW1iZGEuRnVuY3Rpb25gIHN1YmNsYXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgcGFzY2FsIGNhc2VkIHZlcnNpb24gb2YgdGhlIG5hbWUgb2YgdGhlIGVudHJ5cG9pbnQgZmlsZSwgd2l0aFxuICAgKiB0aGUgZXh0ZW5zaW9uIGBGdW5jdGlvbmAgKGUuZy4gYFJlc2l6ZUltYWdlRnVuY3Rpb25gKS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFXUyBDREsgZGVwZW5kZW5jeSBtYW5hZ2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RrRGVwczogQXdzQ2RrRGVwcztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBwcmUtYnVuZGxlZCBBV1MgTGFtYmRhIGZ1bmN0aW9uIGNvbnN0cnVjdCBmcm9tIGhhbmRsZXIgY29kZS5cbiAqXG4gKiBUbyB1c2UgdGhpcywgY3JlYXRlIGFuIEFXUyBMYW1iZGEgaGFuZGxlciBmaWxlIHVuZGVyIHlvdXIgc291cmNlIHRyZWUgd2l0aFxuICogdGhlIGAubGFtYmRhLnRzYCBleHRlbnNpb24gYW5kIGFkZCBhIGBMYW1iZGFGdW5jdGlvbmAgY29tcG9uZW50IHRvIHlvdXJcbiAqIHR5cGVzY3JpcHQgcHJvamVjdCBwb2ludGluZyB0byB0aGlzIGVudHJ5cG9pbnQuXG4gKlxuICogVGhpcyB3aWxsIGFkZCBhIHRhc2sgdG8geW91ciBcImNvbXBpbGVcIiBzdGVwIHdoaWNoIHdpbGwgdXNlIGBlc2J1aWxkYCB0b1xuICogYnVuZGxlIHRoZSBoYW5kbGVyIGNvZGUgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5LiBJdCB3aWxsIGFsc28gZ2VuZXJhdGUgYVxuICogZmlsZSBgc3JjL2Zvby1mdW5jdGlvbi50c2Agd2l0aCBhIGN1c3RvbSBBV1MgY29uc3RydWN0IGNhbGxlZCBgRm9vRnVuY3Rpb25gXG4gKiB3aGljaCBleHRlbmRzIGBAYXdzLWNkay9hd3MtbGFtYmRhLkZ1bmN0aW9uYCB3aGljaCBpcyBib3VuZCB0byB0aGUgYnVuZGxlZFxuICogaGFuZGxlIHRocm91Z2ggYW4gYXNzZXQuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBuZXcgTGFtYmRhRnVuY3Rpb24obXlQcm9qZWN0LCB7XG4gKiAgIHNyY2RpcjogbXlQcm9qZWN0LnNyY2RpcixcbiAqICAgZW50cnlwb2ludDogJ3NyYy9mb28ubGFtYmRhLnRzJyxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhRnVuY3Rpb24gZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogRGVmaW5lcyBhIHByZS1idW5kbGVkIEFXUyBMYW1iZGEgZnVuY3Rpb24gY29uc3RydWN0IGZyb20gaGFuZGxlciBjb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdCB0byB1c2VcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogTGFtYmRhRnVuY3Rpb25PcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBjb25zdCBjZGtEZXBzID0gb3B0aW9ucy5jZGtEZXBzO1xuICAgIGNvbnN0IGJ1bmRsZXIgPSBCdW5kbGVyLm9mKHByb2plY3QpO1xuICAgIGlmICghYnVuZGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk5vIGJ1bmRsZXIgZm91bmQuIFBsZWFzZSBhZGQgYSBCdW5kbGVyIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcnVudGltZSA9IG9wdGlvbnMucnVudGltZSA/PyBMYW1iZGFSdW50aW1lLk5PREVKU18xNF9YO1xuXG4gICAgLy8gYWxsb3cgTGFtYmRhIGhhbmRsZXIgY29kZSB0byBpbXBvcnQgZGV2LWRlcHMgc2luY2UgdGhleSBhcmUgb25seSBuZWVkZWRcbiAgICAvLyBkdXJpbmcgYnVuZGxpbmdcbiAgICBjb25zdCBlc2xpbnQgPSBFc2xpbnQub2YocHJvamVjdCk7XG4gICAgZXNsaW50Py5hbGxvd0RldkRlcHMob3B0aW9ucy5lbnRyeXBvaW50KTtcblxuICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBvcHRpb25zLmVudHJ5cG9pbnQ7XG5cbiAgICBpZiAoIWVudHJ5cG9pbnQuZW5kc1dpdGgoVFlQRVNDUklQVF9MQU1CREFfRVhUKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHtlbnRyeXBvaW50fSBtdXN0IGhhdmUgYSAke1RZUEVTQ1JJUFRfTEFNQkRBX0VYVH0gZXh0ZW5zaW9uYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlUGF0aCA9IGpvaW4oXG4gICAgICBkaXJuYW1lKGVudHJ5cG9pbnQpLFxuICAgICAgYmFzZW5hbWUoZW50cnlwb2ludCwgVFlQRVNDUklQVF9MQU1CREFfRVhUKVxuICAgICk7XG4gICAgY29uc3QgY29uc3RydWN0RmlsZSA9IG9wdGlvbnMuY29uc3RydWN0RmlsZSA/PyBgJHtiYXNlUGF0aH0tZnVuY3Rpb24udHNgO1xuXG4gICAgaWYgKGV4dG5hbWUoY29uc3RydWN0RmlsZSkgIT09IFwiLnRzXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvbnN0cnVjdCBmaWxlIG5hbWUgXCIke2NvbnN0cnVjdEZpbGV9XCIgbXVzdCBoYXZlIGEgLnRzIGV4dGVuc2lvbmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gdHlwZSBuYW1lc1xuICAgIGNvbnN0IGNvbnN0cnVjdE5hbWUgPVxuICAgICAgb3B0aW9ucy5jb25zdHJ1Y3ROYW1lID8/IHBhc2NhbChiYXNlbmFtZShiYXNlUGF0aCkpICsgXCJGdW5jdGlvblwiO1xuICAgIGNvbnN0IHByb3BzVHlwZSA9IGAke2NvbnN0cnVjdE5hbWV9UHJvcHNgO1xuXG4gICAgY29uc3QgYnVuZGxlID0gYnVuZGxlci5hZGRCdW5kbGUoZW50cnlwb2ludCwge1xuICAgICAgdGFyZ2V0OiBydW50aW1lLmVzYnVpbGRUYXJnZXQsXG4gICAgICBwbGF0Zm9ybTogcnVudGltZS5lc2J1aWxkUGxhdGZvcm0sXG4gICAgICBleHRlcm5hbHM6IFtcImF3cy1zZGtcIl0sXG4gICAgICAuLi5vcHRpb25zLmJ1bmRsaW5nT3B0aW9ucyxcbiAgICB9KTtcblxuICAgIC8vIGNhbGN1bGF0ZSB0aGUgcmVsYXRpdmUgcGF0aCBiZXR3ZWVuIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGVcbiAgICAvLyBnZW5lcmF0ZWQgY29uc3RydWN0IHNvdXJjZSBmaWxlIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgYnVuZGxlXG4gICAgLy8gaW5kZXguanMgYnkgcmVzb2x2aW5nIHRoZW0gYXMgYWJzb2x1dGUgcGF0aHMgZmlyc3QuXG4gICAgLy8gZS5nOlxuICAgIC8vICAtIG91dGZpbGVBYnMgPT4gYC9wcm9qZWN0LW91dGRpci9hc3NldHMvZm9vL2Jhci9iYXovZm9vLWZ1bmN0aW9uL2luZGV4LmpzYFxuICAgIC8vICAtIGNvbnN0cnVjdEFicyA9PiBgL3Byb2plY3Qtb3V0ZGlyL3NyYy9mb28vYmFyL2Jhei9mb28tZnVuY3Rpb24udHNgXG4gICAgY29uc3Qgb3V0ZmlsZUFicyA9IGpvaW4ocHJvamVjdC5vdXRkaXIsIGJ1bmRsZS5vdXRmaWxlKTtcbiAgICBjb25zdCBjb25zdHJ1Y3RBYnMgPSBqb2luKHByb2plY3Qub3V0ZGlyLCBjb25zdHJ1Y3RGaWxlKTtcbiAgICBjb25zdCByZWxhdGl2ZU91dGZpbGUgPSByZWxhdGl2ZShcbiAgICAgIGRpcm5hbWUoY29uc3RydWN0QWJzKSxcbiAgICAgIGRpcm5hbWUob3V0ZmlsZUFicylcbiAgICApO1xuXG4gICAgY29uc3Qgc3JjID0gbmV3IFNvdXJjZUNvZGUocHJvamVjdCwgY29uc3RydWN0RmlsZSk7XG4gICAgaWYgKHNyYy5tYXJrZXIpIHtcbiAgICAgIHNyYy5saW5lKGAvLyAke3NyYy5tYXJrZXJ9YCk7XG4gICAgfVxuICAgIHNyYy5saW5lKFwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcIik7XG5cbiAgICBpZiAoY2RrRGVwcy5jZGtNYWpvclZlcnNpb24gPT09IDEpIHtcbiAgICAgIHNyYy5saW5lKFwiaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEnO1wiKTtcbiAgICAgIHNyYy5saW5lKFwiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XCIpO1xuICAgICAgY2RrRGVwcy5hZGRWMURlcGVuZGVuY2llcyhcIkBhd3MtY2RrL2F3cy1sYW1iZGFcIik7XG4gICAgICBjZGtEZXBzLmFkZFYxRGVwZW5kZW5jaWVzKFwiQGF3cy1jZGsvY29yZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3JjLmxpbmUoXCJpbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XCIpO1xuICAgICAgc3JjLmxpbmUoXCJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcIik7XG4gICAgfVxuXG4gICAgc3JjLmxpbmUoKTtcbiAgICBzcmMubGluZShcIi8qKlwiKTtcbiAgICBzcmMubGluZShgICogUHJvcHMgZm9yICR7Y29uc3RydWN0TmFtZX1gKTtcbiAgICBzcmMubGluZShcIiAqL1wiKTtcbiAgICBzcmMub3BlbihgZXhwb3J0IGludGVyZmFjZSAke3Byb3BzVHlwZX0gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtgKTtcbiAgICBzcmMuY2xvc2UoXCJ9XCIpO1xuICAgIHNyYy5saW5lKCk7XG4gICAgc3JjLmxpbmUoXCIvKipcIik7XG4gICAgc3JjLmxpbmUoXG4gICAgICBgICogQW4gQVdTIExhbWJkYSBmdW5jdGlvbiB3aGljaCBleGVjdXRlcyAke2NvbnZlcnRUb1Bvc2l4UGF0aChcbiAgICAgICAgYmFzZVBhdGhcbiAgICAgICl9LmBcbiAgICApO1xuICAgIHNyYy5saW5lKFwiICovXCIpO1xuICAgIHNyYy5vcGVuKGBleHBvcnQgY2xhc3MgJHtjb25zdHJ1Y3ROYW1lfSBleHRlbmRzIGxhbWJkYS5GdW5jdGlvbiB7YCk7XG4gICAgc3JjLm9wZW4oXG4gICAgICBgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiAke3Byb3BzVHlwZX0pIHtgXG4gICAgKTtcbiAgICBzcmMub3BlbihcInN1cGVyKHNjb3BlLCBpZCwge1wiKTtcbiAgICBzcmMubGluZShgZGVzY3JpcHRpb246ICcke2NvbnZlcnRUb1Bvc2l4UGF0aChlbnRyeXBvaW50KX0nLGApO1xuICAgIHNyYy5saW5lKFwiLi4ucHJvcHMsXCIpO1xuICAgIHNyYy5saW5lKGBydW50aW1lOiBsYW1iZGEuUnVudGltZS4ke3J1bnRpbWUuZnVuY3Rpb25SdW50aW1lfSxgKTtcbiAgICBzcmMubGluZShcImhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcIik7XG4gICAgc3JjLmxpbmUoXG4gICAgICBgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcke2NvbnZlcnRUb1Bvc2l4UGF0aChcbiAgICAgICAgcmVsYXRpdmVPdXRmaWxlXG4gICAgICApfScpKSxgXG4gICAgKTtcbiAgICBzcmMuY2xvc2UoXCJ9KTtcIik7XG4gICAgaWYgKG9wdGlvbnMuYXdzU2RrQ29ubmVjdGlvblJldXNlID8/IHRydWUpIHtcbiAgICAgIHNyYy5saW5lKFxuICAgICAgICBcInRoaXMuYWRkRW52aXJvbm1lbnQoJ0FXU19OT0RFSlNfQ09OTkVDVElPTl9SRVVTRV9FTkFCTEVEJywgJzEnLCB7IHJlbW92ZUluRWRnZTogdHJ1ZSB9KTtcIlxuICAgICAgKTtcbiAgICB9XG4gICAgc3JjLmNsb3NlKFwifVwiKTtcbiAgICBzcmMuY2xvc2UoXCJ9XCIpO1xuXG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci52ZXJib3NlKFxuICAgICAgYCR7YmFzZVBhdGh9OiBjb25zdHJ1Y3QgXCIke2NvbnN0cnVjdE5hbWV9XCIgZ2VuZXJhdGVkIHVuZGVyIFwiJHtjb25zdHJ1Y3RGaWxlfVwiYFxuICAgICk7XG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci52ZXJib3NlKFxuICAgICAgYCR7YmFzZVBhdGh9OiBidW5kbGUgdGFzayBcIiR7YnVuZGxlLmJ1bmRsZVRhc2submFtZX1cImBcbiAgICApO1xuICAgIGlmIChidW5kbGUud2F0Y2hUYXNrKSB7XG4gICAgICB0aGlzLnByb2plY3QubG9nZ2VyLnZlcmJvc2UoXG4gICAgICAgIGAke2Jhc2VQYXRofTogYnVuZGxlIHdhdGNoIHRhc2sgXCIke2J1bmRsZS53YXRjaFRhc2submFtZX1cImBcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhlIHJ1bnRpbWUgZm9yIHRoZSBBV1MgTGFtYmRhIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhUnVudGltZSB7XG4gIC8qKlxuICAgKiBOb2RlLmpzIDEwLnhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzEwX1ggPSBuZXcgTGFtYmRhUnVudGltZShcbiAgICBcIk5PREVKU18xMF9YXCIsXG4gICAgXCJub2RlMTBcIlxuICApO1xuXG4gIC8qKlxuICAgKiBOb2RlLmpzIDEyLnhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzEyX1ggPSBuZXcgTGFtYmRhUnVudGltZShcbiAgICBcIk5PREVKU18xMl9YXCIsXG4gICAgXCJub2RlMTJcIlxuICApO1xuXG4gIC8qKlxuICAgKiBOb2RlLmpzIDE0LnhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzE0X1ggPSBuZXcgTGFtYmRhUnVudGltZShcbiAgICBcIk5PREVKU18xNF9YXCIsXG4gICAgXCJub2RlMTRcIlxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBlc2J1aWxkUGxhdGZvcm0gPSBcIm5vZGVcIjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIFRoZSBhd3MtbGFtYmRhLlJ1bnRpbWUgbWVtYmVyIG5hbWUgdG8gdXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmdW5jdGlvblJ1bnRpbWU6IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIFRoZSBlc2J1aWxkIHNldHRpbmcgdG8gdXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlc2J1aWxkVGFyZ2V0OiBzdHJpbmdcbiAgKSB7fVxufVxuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBnaXZlbiBwYXRoIHN0cmluZyB0byBwb3NpeCBpZiBpdCB3YXNuJ3QgYWxyZWFkeS5cbiAqL1xuZnVuY3Rpb24gY29udmVydFRvUG9zaXhQYXRoKHA6IHN0cmluZykge1xuICByZXR1cm4gcC5zcGxpdChzZXApLmpvaW4ocG9zaXguc2VwKTtcbn1cbiJdfQ==
@@ -3,32 +3,22 @@ import { Component } from "../component";
3
3
  import { GitIdentity } from "../github";
4
4
  import { Job, JobStep, Tools, Triggers } from "../github/workflows-model";
5
5
  import { Project } from "../project";
6
- /**
7
- * @experimental
8
- */
9
6
  export interface BuildWorkflowOptions {
10
7
  /**
11
- * (experimental) The task to execute in order to build the project.
12
- *
13
- * @experimental
8
+ * The task to execute in order to build the project.
14
9
  */
15
10
  readonly buildTask: Task;
16
11
  /**
17
- * (experimental) A name of a directory that includes build artifacts.
18
- *
19
- * @experimental
12
+ * A name of a directory that includes build artifacts.
20
13
  */
21
14
  readonly artifactsDirectory: string;
22
15
  /**
23
- * (experimental) The container image to use for builds.
24
- *
16
+ * The container image to use for builds.
25
17
  * @default - the default workflow container
26
- * @experimental
27
18
  */
28
19
  readonly containerImage?: string;
29
20
  /**
30
- * (experimental) Automatically update files modified during builds to pull-request branches.
31
- *
21
+ * Automatically update files modified during builds to pull-request branches.
32
22
  * This means that any files synthesized by projen or e.g. test snapshots will
33
23
  * always be up-to-date before a PR is merged.
34
24
  *
@@ -39,57 +29,41 @@ export interface BuildWorkflowOptions {
39
29
  * not be pushed back to the branch.
40
30
  *
41
31
  * @default true
42
- * @experimental
43
32
  */
44
33
  readonly mutableBuild?: boolean;
45
34
  /**
46
- * (experimental) Steps to execute before the build.
47
- *
35
+ * Steps to execute before the build.
48
36
  * @default []
49
- * @experimental
50
37
  */
51
38
  readonly preBuildSteps?: JobStep[];
52
39
  /**
53
- * (experimental) Steps to execute after build.
54
- *
40
+ * Steps to execute after build.
55
41
  * @default []
56
- * @experimental
57
42
  */
58
43
  readonly postBuildSteps?: JobStep[];
59
44
  /**
60
- * (experimental) Git identity to use for the workflow.
61
- *
45
+ * Git identity to use for the workflow.
62
46
  * @default - default identity
63
- * @experimental
64
47
  */
65
48
  readonly gitIdentity?: GitIdentity;
66
49
  /**
67
- * (experimental) Build environment variables.
68
- *
50
+ * Build environment variables.
69
51
  * @default {}
70
- * @experimental
71
52
  */
72
53
  readonly env?: {
73
54
  [key: string]: string;
74
55
  };
75
56
  /**
76
- * (experimental) Github Runner selection labels.
77
- *
57
+ * Github Runner selection labels
78
58
  * @default ["ubuntu-latest"]
79
- * @experimental
80
59
  */
81
60
  readonly runsOn?: string[];
82
61
  /**
83
- * (experimental) Build workflow triggers.
84
- *
62
+ * Build workflow triggers
85
63
  * @default "{ pullRequest: {}, workflowDispatch: {} }"
86
- * @experimental
87
64
  */
88
65
  readonly workflowTriggers?: Triggers;
89
66
  }
90
- /**
91
- * @experimental
92
- */
93
67
  export declare class BuildWorkflow extends Component {
94
68
  private readonly postBuildSteps;
95
69
  private readonly preBuildSteps;
@@ -100,38 +74,32 @@ export declare class BuildWorkflow extends Component {
100
74
  private readonly artifactsDirectory;
101
75
  private readonly defaultRunners;
102
76
  private readonly _postBuildJobs;
103
- /**
104
- * @experimental
105
- */
106
77
  constructor(project: Project, options: BuildWorkflowOptions);
107
78
  private addBuildJob;
108
79
  /**
109
- * (experimental) Returns a list of job IDs that are part of the build.
110
- *
111
- * @experimental
80
+ * Returns a list of job IDs that are part of the build.
112
81
  */
113
82
  get buildJobIds(): string[];
114
83
  /**
115
- * (experimental) Adds steps that are executed after the build.
116
- *
117
- * @param steps The job steps.
118
- * @experimental
84
+ * Adds steps that are executed after the build.
85
+ * @param steps The job steps
119
86
  */
120
87
  addPostBuildSteps(...steps: JobStep[]): void;
121
88
  /**
122
- * (experimental) Adds another job to the build workflow which is executed after the build job succeeded.
89
+ * Adds another job to the build workflow which is executed after the build
90
+ * job succeeded.
123
91
  *
124
92
  * Jobs are executed _only_ if the build did NOT self mutate. If the build
125
93
  * self-mutate, the branch will either be updated or the build will fail (in
126
94
  * forks), so there is no point in executing the post-build job.
127
95
  *
128
- * @param id The id of the new job.
129
- * @param job The job specification.
130
- * @experimental
96
+ * @param id The id of the new job
97
+ * @param job The job specification
131
98
  */
132
99
  addPostBuildJob(id: string, job: Job): void;
133
100
  /**
134
- * (experimental) Run a task as a job within the build workflow which is executed after the build job succeeded.
101
+ * Run a task as a job within the build workflow which is executed after the
102
+ * build job succeeded.
135
103
  *
136
104
  * The job will have access to build artifacts and will install project
137
105
  * dependencies in order to be able to run any commands used in the tasks.
@@ -140,19 +108,18 @@ export declare class BuildWorkflow extends Component {
140
108
  * self-mutate, the branch will either be updated or the build will fail (in
141
109
  * forks), so there is no point in executing the post-build job.
142
110
  *
143
- * @param options Specify tools and other options.
144
- * @experimental
111
+ * @param options Specify tools and other options
145
112
  */
146
113
  addPostBuildJobTask(task: Task, options: AddPostBuildJobTaskOptions): void;
147
114
  /**
148
- * (experimental) Run a sequence of commands as a job within the build workflow which is executed after the build job succeeded.
115
+ * Run a sequence of commands as a job within the build workflow which is
116
+ * executed after the build job succeeded.
149
117
  *
150
118
  * Jobs are executed _only_ if the build did NOT self mutate. If the build
151
119
  * self-mutate, the branch will either be updated or the build will fail (in
152
120
  * forks), so there is no point in executing the post-build job.
153
121
  *
154
- * @param options Specify tools and other options.
155
- * @experimental
122
+ * @param options Specify tools and other options
156
123
  */
157
124
  addPostBuildJobCommands(id: string, commands: string[], options?: AddPostBuildJobCommandsOptions): void;
158
125
  private addSelfMutationJob;
@@ -162,58 +129,46 @@ export declare class BuildWorkflow extends Component {
162
129
  private renderBuildSteps;
163
130
  }
164
131
  /**
165
- * (experimental) Options for `BuildWorkflow.addPostBuildJobTask`.
166
- *
167
- * @experimental
132
+ * Options for `BuildWorkflow.addPostBuildJobTask`
168
133
  */
169
134
  export interface AddPostBuildJobTaskOptions {
170
135
  /**
171
- * (experimental) Tools that should be installed before the task is run.
172
- *
173
- * @experimental
136
+ * Tools that should be installed before the task is run.
174
137
  */
175
138
  readonly tools?: Tools;
176
139
  /**
177
- * (experimental) Github Runner selection labels.
178
- *
140
+ * Github Runner selection labels
179
141
  * @default ["ubuntu-latest"]
180
- * @experimental
181
142
  */
182
143
  readonly runsOn?: string[];
183
144
  }
184
145
  /**
185
- * (experimental) Options for `BuildWorkflow.addPostBuildJobCommands`.
186
- *
187
- * @experimental
146
+ * Options for `BuildWorkflow.addPostBuildJobCommands`
188
147
  */
189
148
  export interface AddPostBuildJobCommandsOptions {
190
149
  /**
191
- * (experimental) Tools that should be installed before the commands are run.
192
- *
193
- * @experimental
150
+ * Tools that should be installed before the commands are run.
194
151
  */
195
152
  readonly tools?: Tools;
196
153
  /**
197
- * (experimental) Check out the repository at the pull request branch before commands are run.
154
+ * Check out the repository at the pull request branch before commands are
155
+ * run.
198
156
  *
199
157
  * @default false
200
- * @experimental
201
158
  */
202
159
  readonly checkoutRepo?: boolean;
203
160
  /**
204
- * (experimental) Install project dependencies before running commands. `checkoutRepo` must also be set to true.
161
+ * Install project dependencies before running commands. `checkoutRepo` must
162
+ * also be set to true.
205
163
  *
206
164
  * Currently only supported for `NodeProject`.
207
165
  *
208
166
  * @default false
209
- * @experimental
210
167
  */
211
168
  readonly installDeps?: boolean;
212
169
  /**
213
- * (experimental) Github Runner selection labels.
214
- *
170
+ * Github Runner selection labels
215
171
  * @default ["ubuntu-latest"]
216
- * @experimental
217
172
  */
218
173
  readonly runsOn?: string[];
219
174
  }