lerna-projen 0.1.855 → 0.1.857
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.
- package/.jsii +28 -28
- package/API.md +120 -6
- package/lib/index.js +22 -10
- package/package.json +3 -3
package/.jsii
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"constructs": "^10.6.0",
|
|
18
|
-
"projen": "^0.101.
|
|
18
|
+
"projen": "^0.101.11"
|
|
19
19
|
},
|
|
20
20
|
"dependencyClosure": {
|
|
21
21
|
"constructs": {
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"lerna-projen.utils": {
|
|
120
120
|
"locationInModule": {
|
|
121
121
|
"filename": "src/index.ts",
|
|
122
|
-
"line":
|
|
122
|
+
"line": 7
|
|
123
123
|
},
|
|
124
124
|
"symbolId": "src/utils:"
|
|
125
125
|
}
|
|
@@ -276,7 +276,7 @@
|
|
|
276
276
|
},
|
|
277
277
|
"locationInModule": {
|
|
278
278
|
"filename": "src/index.ts",
|
|
279
|
-
"line":
|
|
279
|
+
"line": 98
|
|
280
280
|
},
|
|
281
281
|
"parameters": [
|
|
282
282
|
{
|
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
"kind": "class",
|
|
291
291
|
"locationInModule": {
|
|
292
292
|
"filename": "src/index.ts",
|
|
293
|
-
"line":
|
|
293
|
+
"line": 82
|
|
294
294
|
},
|
|
295
295
|
"methods": [
|
|
296
296
|
{
|
|
@@ -300,7 +300,7 @@
|
|
|
300
300
|
},
|
|
301
301
|
"locationInModule": {
|
|
302
302
|
"filename": "src/index.ts",
|
|
303
|
-
"line":
|
|
303
|
+
"line": 123
|
|
304
304
|
},
|
|
305
305
|
"name": "customizeTask",
|
|
306
306
|
"parameters": [
|
|
@@ -331,7 +331,7 @@
|
|
|
331
331
|
},
|
|
332
332
|
"locationInModule": {
|
|
333
333
|
"filename": "src/index.ts",
|
|
334
|
-
"line":
|
|
334
|
+
"line": 127
|
|
335
335
|
},
|
|
336
336
|
"name": "preSynthesize",
|
|
337
337
|
"overrides": "projen.Project"
|
|
@@ -346,7 +346,7 @@
|
|
|
346
346
|
"immutable": true,
|
|
347
347
|
"locationInModule": {
|
|
348
348
|
"filename": "src/index.ts",
|
|
349
|
-
"line":
|
|
349
|
+
"line": 87
|
|
350
350
|
},
|
|
351
351
|
"name": "docgen",
|
|
352
352
|
"type": {
|
|
@@ -360,7 +360,7 @@
|
|
|
360
360
|
"immutable": true,
|
|
361
361
|
"locationInModule": {
|
|
362
362
|
"filename": "src/index.ts",
|
|
363
|
-
"line":
|
|
363
|
+
"line": 86
|
|
364
364
|
},
|
|
365
365
|
"name": "docsDirectory",
|
|
366
366
|
"type": {
|
|
@@ -374,7 +374,7 @@
|
|
|
374
374
|
"immutable": true,
|
|
375
375
|
"locationInModule": {
|
|
376
376
|
"filename": "src/index.ts",
|
|
377
|
-
"line":
|
|
377
|
+
"line": 90
|
|
378
378
|
},
|
|
379
379
|
"name": "independentMode",
|
|
380
380
|
"type": {
|
|
@@ -388,7 +388,7 @@
|
|
|
388
388
|
"immutable": true,
|
|
389
389
|
"locationInModule": {
|
|
390
390
|
"filename": "src/index.ts",
|
|
391
|
-
"line":
|
|
391
|
+
"line": 88
|
|
392
392
|
},
|
|
393
393
|
"name": "sinceLastRelease",
|
|
394
394
|
"type": {
|
|
@@ -402,7 +402,7 @@
|
|
|
402
402
|
"immutable": true,
|
|
403
403
|
"locationInModule": {
|
|
404
404
|
"filename": "src/index.ts",
|
|
405
|
-
"line":
|
|
405
|
+
"line": 92
|
|
406
406
|
},
|
|
407
407
|
"name": "taskCustomizations",
|
|
408
408
|
"type": {
|
|
@@ -421,7 +421,7 @@
|
|
|
421
421
|
"immutable": true,
|
|
422
422
|
"locationInModule": {
|
|
423
423
|
"filename": "src/index.ts",
|
|
424
|
-
"line":
|
|
424
|
+
"line": 89
|
|
425
425
|
},
|
|
426
426
|
"name": "useNx",
|
|
427
427
|
"type": {
|
|
@@ -435,7 +435,7 @@
|
|
|
435
435
|
"immutable": true,
|
|
436
436
|
"locationInModule": {
|
|
437
437
|
"filename": "src/index.ts",
|
|
438
|
-
"line":
|
|
438
|
+
"line": 91
|
|
439
439
|
},
|
|
440
440
|
"name": "useWorkspaces",
|
|
441
441
|
"type": {
|
|
@@ -449,7 +449,7 @@
|
|
|
449
449
|
"immutable": true,
|
|
450
450
|
"locationInModule": {
|
|
451
451
|
"filename": "src/index.ts",
|
|
452
|
-
"line":
|
|
452
|
+
"line": 93
|
|
453
453
|
},
|
|
454
454
|
"name": "pnpmVersion",
|
|
455
455
|
"optional": true,
|
|
@@ -464,7 +464,7 @@
|
|
|
464
464
|
"immutable": true,
|
|
465
465
|
"locationInModule": {
|
|
466
466
|
"filename": "src/index.ts",
|
|
467
|
-
"line":
|
|
467
|
+
"line": 94
|
|
468
468
|
},
|
|
469
469
|
"name": "sinceGitReferenceEnvironmentVariableName",
|
|
470
470
|
"optional": true,
|
|
@@ -566,7 +566,7 @@
|
|
|
566
566
|
},
|
|
567
567
|
"locationInModule": {
|
|
568
568
|
"filename": "src/index.ts",
|
|
569
|
-
"line":
|
|
569
|
+
"line": 152
|
|
570
570
|
},
|
|
571
571
|
"parameters": [
|
|
572
572
|
{
|
|
@@ -580,7 +580,7 @@
|
|
|
580
580
|
"kind": "class",
|
|
581
581
|
"locationInModule": {
|
|
582
582
|
"filename": "src/index.ts",
|
|
583
|
-
"line":
|
|
583
|
+
"line": 141
|
|
584
584
|
},
|
|
585
585
|
"methods": [
|
|
586
586
|
{
|
|
@@ -590,7 +590,7 @@
|
|
|
590
590
|
},
|
|
591
591
|
"locationInModule": {
|
|
592
592
|
"filename": "src/index.ts",
|
|
593
|
-
"line":
|
|
593
|
+
"line": 176
|
|
594
594
|
},
|
|
595
595
|
"name": "customizeTask",
|
|
596
596
|
"parameters": [
|
|
@@ -621,7 +621,7 @@
|
|
|
621
621
|
},
|
|
622
622
|
"locationInModule": {
|
|
623
623
|
"filename": "src/index.ts",
|
|
624
|
-
"line":
|
|
624
|
+
"line": 180
|
|
625
625
|
},
|
|
626
626
|
"name": "preSynthesize",
|
|
627
627
|
"overrides": "projen.Project"
|
|
@@ -636,7 +636,7 @@
|
|
|
636
636
|
"immutable": true,
|
|
637
637
|
"locationInModule": {
|
|
638
638
|
"filename": "src/index.ts",
|
|
639
|
-
"line":
|
|
639
|
+
"line": 144
|
|
640
640
|
},
|
|
641
641
|
"name": "independentMode",
|
|
642
642
|
"type": {
|
|
@@ -650,7 +650,7 @@
|
|
|
650
650
|
"immutable": true,
|
|
651
651
|
"locationInModule": {
|
|
652
652
|
"filename": "src/index.ts",
|
|
653
|
-
"line":
|
|
653
|
+
"line": 142
|
|
654
654
|
},
|
|
655
655
|
"name": "sinceLastRelease",
|
|
656
656
|
"type": {
|
|
@@ -664,7 +664,7 @@
|
|
|
664
664
|
"immutable": true,
|
|
665
665
|
"locationInModule": {
|
|
666
666
|
"filename": "src/index.ts",
|
|
667
|
-
"line":
|
|
667
|
+
"line": 146
|
|
668
668
|
},
|
|
669
669
|
"name": "taskCustomizations",
|
|
670
670
|
"type": {
|
|
@@ -683,7 +683,7 @@
|
|
|
683
683
|
"immutable": true,
|
|
684
684
|
"locationInModule": {
|
|
685
685
|
"filename": "src/index.ts",
|
|
686
|
-
"line":
|
|
686
|
+
"line": 143
|
|
687
687
|
},
|
|
688
688
|
"name": "useNx",
|
|
689
689
|
"type": {
|
|
@@ -697,7 +697,7 @@
|
|
|
697
697
|
"immutable": true,
|
|
698
698
|
"locationInModule": {
|
|
699
699
|
"filename": "src/index.ts",
|
|
700
|
-
"line":
|
|
700
|
+
"line": 145
|
|
701
701
|
},
|
|
702
702
|
"name": "useWorkspaces",
|
|
703
703
|
"type": {
|
|
@@ -711,7 +711,7 @@
|
|
|
711
711
|
"immutable": true,
|
|
712
712
|
"locationInModule": {
|
|
713
713
|
"filename": "src/index.ts",
|
|
714
|
-
"line":
|
|
714
|
+
"line": 147
|
|
715
715
|
},
|
|
716
716
|
"name": "pnpmVersion",
|
|
717
717
|
"optional": true,
|
|
@@ -726,7 +726,7 @@
|
|
|
726
726
|
"immutable": true,
|
|
727
727
|
"locationInModule": {
|
|
728
728
|
"filename": "src/index.ts",
|
|
729
|
-
"line":
|
|
729
|
+
"line": 148
|
|
730
730
|
},
|
|
731
731
|
"name": "sinceGitReferenceEnvironmentVariableName",
|
|
732
732
|
"optional": true,
|
|
@@ -1125,6 +1125,6 @@
|
|
|
1125
1125
|
"symbolId": "src/utils:AddNxTaskDependencyOptions"
|
|
1126
1126
|
}
|
|
1127
1127
|
},
|
|
1128
|
-
"version": "0.1.
|
|
1129
|
-
"fingerprint": "
|
|
1128
|
+
"version": "0.1.857",
|
|
1129
|
+
"fingerprint": "kNqhNiIVYwhlt6P/UmV5KY4hZwrysZ5o1FWWmj+0h/g="
|
|
1130
1130
|
}
|
package/API.md
CHANGED
|
@@ -252,8 +252,10 @@ Synthesize all project files into `outdir`.
|
|
|
252
252
|
2. Delete all generated files
|
|
253
253
|
3. Synthesize all subprojects
|
|
254
254
|
4. Synthesize all components of this project
|
|
255
|
-
5. Call "
|
|
256
|
-
6. Call "
|
|
255
|
+
5. Call "projectCreation()" for all components, only if the project is being created for the first time
|
|
256
|
+
6. Call "postSynthesize()" for all components of this project
|
|
257
|
+
7. Call "this.postSynthesize()"
|
|
258
|
+
8. Call "postProjectCreation()" for all components, only if the project is being created for the first time
|
|
257
259
|
|
|
258
260
|
##### `tryFindFile` <a name="tryFindFile" id="lerna-projen.LernaProject.tryFindFile"></a>
|
|
259
261
|
|
|
@@ -950,7 +952,9 @@ the project is being ejected.
|
|
|
950
952
|
|
|
951
953
|
---
|
|
952
954
|
|
|
953
|
-
#####
|
|
955
|
+
##### ~~`initProject`~~<sup>Optional</sup> <a name="initProject" id="lerna-projen.LernaProject.property.initProject"></a>
|
|
956
|
+
|
|
957
|
+
- *Deprecated:* use the `initProject` argument passed to `Component.projectCreation()` instead.
|
|
954
958
|
|
|
955
959
|
```typescript
|
|
956
960
|
public readonly initProject: InitProject;
|
|
@@ -1619,8 +1623,10 @@ Synthesize all project files into `outdir`.
|
|
|
1619
1623
|
2. Delete all generated files
|
|
1620
1624
|
3. Synthesize all subprojects
|
|
1621
1625
|
4. Synthesize all components of this project
|
|
1622
|
-
5. Call "
|
|
1623
|
-
6. Call "
|
|
1626
|
+
5. Call "projectCreation()" for all components, only if the project is being created for the first time
|
|
1627
|
+
6. Call "postSynthesize()" for all components of this project
|
|
1628
|
+
7. Call "this.postSynthesize()"
|
|
1629
|
+
8. Call "postProjectCreation()" for all components, only if the project is being created for the first time
|
|
1624
1630
|
|
|
1625
1631
|
##### `tryFindFile` <a name="tryFindFile" id="lerna-projen.LernaTypescriptProject.tryFindFile"></a>
|
|
1626
1632
|
|
|
@@ -2326,7 +2332,9 @@ the project is being ejected.
|
|
|
2326
2332
|
|
|
2327
2333
|
---
|
|
2328
2334
|
|
|
2329
|
-
#####
|
|
2335
|
+
##### ~~`initProject`~~<sup>Optional</sup> <a name="initProject" id="lerna-projen.LernaTypescriptProject.property.initProject"></a>
|
|
2336
|
+
|
|
2337
|
+
- *Deprecated:* use the `initProject` argument passed to `Component.projectCreation()` instead.
|
|
2330
2338
|
|
|
2331
2339
|
```typescript
|
|
2332
2340
|
public readonly initProject: InitProject;
|
|
@@ -3190,6 +3198,7 @@ const lernaProjectOptions: LernaProjectOptions = { ... }
|
|
|
3190
3198
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.vscode">vscode</a></code> | <code>boolean</code> | Enable VSCode integration. |
|
|
3191
3199
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.addPackageManagerToDevEngines">addPackageManagerToDevEngines</a></code> | <code>boolean</code> | Automatically add the resolved `packageManager` to `devEngines.packageManager` in `package.json`, setting `onFail` to `ignore`. |
|
|
3192
3200
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.allowLibraryDependencies">allowLibraryDependencies</a></code> | <code>boolean</code> | Allow the project to include `peerDependencies` and `bundledDependencies`. |
|
|
3201
|
+
| <code><a href="#lerna-projen.LernaProjectOptions.property.allowScripts">allowScripts</a></code> | <code>string[]</code> | List of dependency (package) names that are allowed to run lifecycle install scripts (`preinstall`, `install`, `postinstall`, `prepare`) during dependency installation. |
|
|
3193
3202
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.authorEmail">authorEmail</a></code> | <code>string</code> | Author's e-mail. |
|
|
3194
3203
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.authorName">authorName</a></code> | <code>string</code> | Author's name. |
|
|
3195
3204
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.authorOrganization">authorOrganization</a></code> | <code>boolean</code> | Is the author an organization. |
|
|
@@ -3222,6 +3231,7 @@ const lernaProjectOptions: LernaProjectOptions = { ... }
|
|
|
3222
3231
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.packageName">packageName</a></code> | <code>string</code> | The "name" in package.json. |
|
|
3223
3232
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.peerDependencyOptions">peerDependencyOptions</a></code> | <code>projen.javascript.PeerDependencyOptions</code> | Options for `peerDeps`. |
|
|
3224
3233
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.peerDeps">peerDeps</a></code> | <code>string[]</code> | Peer dependencies for this module. |
|
|
3234
|
+
| <code><a href="#lerna-projen.LernaProjectOptions.property.pnpmOptions">pnpmOptions</a></code> | <code>projen.javascript.PnpmOptions</code> | Options for pnpm. |
|
|
3225
3235
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.pnpmVersion">pnpmVersion</a></code> | <code>string</code> | The version of PNPM to use if using PNPM as a package manager. |
|
|
3226
3236
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.repository">repository</a></code> | <code>string</code> | The repository is the location where the actual code for your package lives. |
|
|
3227
3237
|
| <code><a href="#lerna-projen.LernaProjectOptions.property.repositoryDirectory">repositoryDirectory</a></code> | <code>string</code> | If the package.json for your package is not in the root directory (for example if it is part of a monorepo), you can specify the directory in which it lives. |
|
|
@@ -3696,6 +3706,44 @@ for specifying these.
|
|
|
3696
3706
|
|
|
3697
3707
|
---
|
|
3698
3708
|
|
|
3709
|
+
##### `allowScripts`<sup>Optional</sup> <a name="allowScripts" id="lerna-projen.LernaProjectOptions.property.allowScripts"></a>
|
|
3710
|
+
|
|
3711
|
+
```typescript
|
|
3712
|
+
public readonly allowScripts: string[];
|
|
3713
|
+
```
|
|
3714
|
+
|
|
3715
|
+
- *Type:* string[]
|
|
3716
|
+
- *Default:* all install scripts are allowed to run (package manager default)
|
|
3717
|
+
|
|
3718
|
+
List of dependency (package) names that are allowed to run lifecycle install scripts (`preinstall`, `install`, `postinstall`, `prepare`) during dependency installation.
|
|
3719
|
+
|
|
3720
|
+
These scripts can execute arbitrary code, making them a common
|
|
3721
|
+
supply-chain attack vector. Package managers are moving toward
|
|
3722
|
+
blocking them by default and requiring an explicit allowlist.
|
|
3723
|
+
Configuring `allowScripts` sets up that allowlist so scripts only run
|
|
3724
|
+
for the packages you have explicitly reviewed and trust.
|
|
3725
|
+
|
|
3726
|
+
Support for this setting depends on the configured `packageManager`:
|
|
3727
|
+
|
|
3728
|
+
- `NPM`: written to the native `allowScripts` field in `package.json`
|
|
3729
|
+
(requires npm >= 11.16; see https://docs.npmjs.com/cli/v11/commands/npm-approve-scripts).
|
|
3730
|
+
- `BUN`: written to the native `trustedDependencies` field in
|
|
3731
|
+
`package.json` (see https://bun.com/docs/pm/lifecycle).
|
|
3732
|
+
- `PNPM`: written to the `onlyBuiltDependencies` setting in
|
|
3733
|
+
`pnpm-workspace.yaml` (see https://pnpm.io/settings#onlybuiltdependencies).
|
|
3734
|
+
- `YARN2`, `YARN_BERRY`: written to the native
|
|
3735
|
+
`dependenciesMeta.<pkg>.built` allowlist in `package.json`, combined
|
|
3736
|
+
with `enableScripts: false` in `.yarnrc.yml` (see
|
|
3737
|
+
https://yarnpkg.com/features/security#postinstalls). If you set
|
|
3738
|
+
`yarnBerryOptions.yarnRcOptions.enableScripts` explicitly, that value
|
|
3739
|
+
is respected instead of being overridden.
|
|
3740
|
+
- `YARN`, `YARN_CLASSIC`: not supported. Yarn Classic has no native
|
|
3741
|
+
mechanism to allowlist install scripts for specific dependencies.
|
|
3742
|
+
Setting this option with one of these package managers throws an
|
|
3743
|
+
error at synthesis time.
|
|
3744
|
+
|
|
3745
|
+
---
|
|
3746
|
+
|
|
3699
3747
|
##### `authorEmail`<sup>Optional</sup> <a name="authorEmail" id="lerna-projen.LernaProjectOptions.property.authorEmail"></a>
|
|
3700
3748
|
|
|
3701
3749
|
```typescript
|
|
@@ -4207,6 +4255,19 @@ test your module against the lowest peer version required.
|
|
|
4207
4255
|
|
|
4208
4256
|
---
|
|
4209
4257
|
|
|
4258
|
+
##### `pnpmOptions`<sup>Optional</sup> <a name="pnpmOptions" id="lerna-projen.LernaProjectOptions.property.pnpmOptions"></a>
|
|
4259
|
+
|
|
4260
|
+
```typescript
|
|
4261
|
+
public readonly pnpmOptions: PnpmOptions;
|
|
4262
|
+
```
|
|
4263
|
+
|
|
4264
|
+
- *Type:* projen.javascript.PnpmOptions
|
|
4265
|
+
- *Default:* all default options
|
|
4266
|
+
|
|
4267
|
+
Options for pnpm.
|
|
4268
|
+
|
|
4269
|
+
---
|
|
4270
|
+
|
|
4210
4271
|
##### `pnpmVersion`<sup>Optional</sup> <a name="pnpmVersion" id="lerna-projen.LernaProjectOptions.property.pnpmVersion"></a>
|
|
4211
4272
|
|
|
4212
4273
|
```typescript
|
|
@@ -5330,6 +5391,7 @@ const lernaTypescriptProjectOptions: LernaTypescriptProjectOptions = { ... }
|
|
|
5330
5391
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.vscode">vscode</a></code> | <code>boolean</code> | Enable VSCode integration. |
|
|
5331
5392
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.addPackageManagerToDevEngines">addPackageManagerToDevEngines</a></code> | <code>boolean</code> | Automatically add the resolved `packageManager` to `devEngines.packageManager` in `package.json`, setting `onFail` to `ignore`. |
|
|
5332
5393
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.allowLibraryDependencies">allowLibraryDependencies</a></code> | <code>boolean</code> | Allow the project to include `peerDependencies` and `bundledDependencies`. |
|
|
5394
|
+
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.allowScripts">allowScripts</a></code> | <code>string[]</code> | List of dependency (package) names that are allowed to run lifecycle install scripts (`preinstall`, `install`, `postinstall`, `prepare`) during dependency installation. |
|
|
5333
5395
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.authorEmail">authorEmail</a></code> | <code>string</code> | Author's e-mail. |
|
|
5334
5396
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.authorName">authorName</a></code> | <code>string</code> | Author's name. |
|
|
5335
5397
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.authorOrganization">authorOrganization</a></code> | <code>boolean</code> | Is the author an organization. |
|
|
@@ -5362,6 +5424,7 @@ const lernaTypescriptProjectOptions: LernaTypescriptProjectOptions = { ... }
|
|
|
5362
5424
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.packageName">packageName</a></code> | <code>string</code> | The "name" in package.json. |
|
|
5363
5425
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.peerDependencyOptions">peerDependencyOptions</a></code> | <code>projen.javascript.PeerDependencyOptions</code> | Options for `peerDeps`. |
|
|
5364
5426
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.peerDeps">peerDeps</a></code> | <code>string[]</code> | Peer dependencies for this module. |
|
|
5427
|
+
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.pnpmOptions">pnpmOptions</a></code> | <code>projen.javascript.PnpmOptions</code> | Options for pnpm. |
|
|
5365
5428
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.pnpmVersion">pnpmVersion</a></code> | <code>string</code> | The version of PNPM to use if using PNPM as a package manager. |
|
|
5366
5429
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.repository">repository</a></code> | <code>string</code> | The repository is the location where the actual code for your package lives. |
|
|
5367
5430
|
| <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.repositoryDirectory">repositoryDirectory</a></code> | <code>string</code> | If the package.json for your package is not in the root directory (for example if it is part of a monorepo), you can specify the directory in which it lives. |
|
|
@@ -5853,6 +5916,44 @@ for specifying these.
|
|
|
5853
5916
|
|
|
5854
5917
|
---
|
|
5855
5918
|
|
|
5919
|
+
##### `allowScripts`<sup>Optional</sup> <a name="allowScripts" id="lerna-projen.LernaTypescriptProjectOptions.property.allowScripts"></a>
|
|
5920
|
+
|
|
5921
|
+
```typescript
|
|
5922
|
+
public readonly allowScripts: string[];
|
|
5923
|
+
```
|
|
5924
|
+
|
|
5925
|
+
- *Type:* string[]
|
|
5926
|
+
- *Default:* all install scripts are allowed to run (package manager default)
|
|
5927
|
+
|
|
5928
|
+
List of dependency (package) names that are allowed to run lifecycle install scripts (`preinstall`, `install`, `postinstall`, `prepare`) during dependency installation.
|
|
5929
|
+
|
|
5930
|
+
These scripts can execute arbitrary code, making them a common
|
|
5931
|
+
supply-chain attack vector. Package managers are moving toward
|
|
5932
|
+
blocking them by default and requiring an explicit allowlist.
|
|
5933
|
+
Configuring `allowScripts` sets up that allowlist so scripts only run
|
|
5934
|
+
for the packages you have explicitly reviewed and trust.
|
|
5935
|
+
|
|
5936
|
+
Support for this setting depends on the configured `packageManager`:
|
|
5937
|
+
|
|
5938
|
+
- `NPM`: written to the native `allowScripts` field in `package.json`
|
|
5939
|
+
(requires npm >= 11.16; see https://docs.npmjs.com/cli/v11/commands/npm-approve-scripts).
|
|
5940
|
+
- `BUN`: written to the native `trustedDependencies` field in
|
|
5941
|
+
`package.json` (see https://bun.com/docs/pm/lifecycle).
|
|
5942
|
+
- `PNPM`: written to the `onlyBuiltDependencies` setting in
|
|
5943
|
+
`pnpm-workspace.yaml` (see https://pnpm.io/settings#onlybuiltdependencies).
|
|
5944
|
+
- `YARN2`, `YARN_BERRY`: written to the native
|
|
5945
|
+
`dependenciesMeta.<pkg>.built` allowlist in `package.json`, combined
|
|
5946
|
+
with `enableScripts: false` in `.yarnrc.yml` (see
|
|
5947
|
+
https://yarnpkg.com/features/security#postinstalls). If you set
|
|
5948
|
+
`yarnBerryOptions.yarnRcOptions.enableScripts` explicitly, that value
|
|
5949
|
+
is respected instead of being overridden.
|
|
5950
|
+
- `YARN`, `YARN_CLASSIC`: not supported. Yarn Classic has no native
|
|
5951
|
+
mechanism to allowlist install scripts for specific dependencies.
|
|
5952
|
+
Setting this option with one of these package managers throws an
|
|
5953
|
+
error at synthesis time.
|
|
5954
|
+
|
|
5955
|
+
---
|
|
5956
|
+
|
|
5856
5957
|
##### `authorEmail`<sup>Optional</sup> <a name="authorEmail" id="lerna-projen.LernaTypescriptProjectOptions.property.authorEmail"></a>
|
|
5857
5958
|
|
|
5858
5959
|
```typescript
|
|
@@ -6364,6 +6465,19 @@ test your module against the lowest peer version required.
|
|
|
6364
6465
|
|
|
6365
6466
|
---
|
|
6366
6467
|
|
|
6468
|
+
##### `pnpmOptions`<sup>Optional</sup> <a name="pnpmOptions" id="lerna-projen.LernaTypescriptProjectOptions.property.pnpmOptions"></a>
|
|
6469
|
+
|
|
6470
|
+
```typescript
|
|
6471
|
+
public readonly pnpmOptions: PnpmOptions;
|
|
6472
|
+
```
|
|
6473
|
+
|
|
6474
|
+
- *Type:* projen.javascript.PnpmOptions
|
|
6475
|
+
- *Default:* all default options
|
|
6476
|
+
|
|
6477
|
+
Options for pnpm.
|
|
6478
|
+
|
|
6479
|
+
---
|
|
6480
|
+
|
|
6367
6481
|
##### `pnpmVersion`<sup>Optional</sup> <a name="pnpmVersion" id="lerna-projen.LernaTypescriptProjectOptions.property.pnpmVersion"></a>
|
|
6368
6482
|
|
|
6369
6483
|
```typescript
|
package/lib/index.js
CHANGED
|
@@ -40,6 +40,7 @@ exports.LernaTypescriptProject = exports.LernaProject = exports.utils = void 0;
|
|
|
40
40
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
41
41
|
const path = __importStar(require("path"));
|
|
42
42
|
const projen_1 = require("projen");
|
|
43
|
+
const javascript_1 = require("projen/lib/javascript");
|
|
43
44
|
__exportStar(require("./types"), exports);
|
|
44
45
|
exports.utils = __importStar(require("./utils"));
|
|
45
46
|
function getDocsDirectory(project) {
|
|
@@ -70,6 +71,19 @@ function appendWorkflowBootstrapSteps(options) {
|
|
|
70
71
|
],
|
|
71
72
|
};
|
|
72
73
|
}
|
|
74
|
+
function parseOptions(options) {
|
|
75
|
+
if (options.packageManager !== javascript_1.NodePackageManager.PNPM) {
|
|
76
|
+
return options;
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
...options,
|
|
80
|
+
pnpmOptions: {
|
|
81
|
+
workspaceYamlOptions: {
|
|
82
|
+
sharedWorkspaceLockfile: true,
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
73
87
|
function parseTsOptions(options) {
|
|
74
88
|
return {
|
|
75
89
|
...options,
|
|
@@ -81,7 +95,7 @@ const lockedTaskNames = ['build', 'upgrade', 'upgrade-projen', 'clobber', 'post-
|
|
|
81
95
|
* @pjid lerna-project
|
|
82
96
|
*/
|
|
83
97
|
class LernaProject extends projen_1.javascript.NodeProject {
|
|
84
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "lerna-projen.LernaProject", version: "0.1.
|
|
98
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "lerna-projen.LernaProject", version: "0.1.857" };
|
|
85
99
|
projenrcTs;
|
|
86
100
|
docsDirectory;
|
|
87
101
|
docgen;
|
|
@@ -94,7 +108,7 @@ class LernaProject extends projen_1.javascript.NodeProject {
|
|
|
94
108
|
sinceGitReferenceEnvironmentVariableName;
|
|
95
109
|
factory;
|
|
96
110
|
constructor(options) {
|
|
97
|
-
super(appendWorkflowBootstrapSteps(options));
|
|
111
|
+
super(appendWorkflowBootstrapSteps(parseOptions(options)));
|
|
98
112
|
if (options.projenrcTs) {
|
|
99
113
|
this.addDevDeps('ts-node', 'typescript');
|
|
100
114
|
}
|
|
@@ -135,7 +149,7 @@ exports.LernaProject = LernaProject;
|
|
|
135
149
|
* @pjid lerna-ts-project
|
|
136
150
|
*/
|
|
137
151
|
class LernaTypescriptProject extends projen_1.typescript.TypeScriptProject {
|
|
138
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "lerna-projen.LernaTypescriptProject", version: "0.1.
|
|
152
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "lerna-projen.LernaTypescriptProject", version: "0.1.857" };
|
|
139
153
|
sinceLastRelease;
|
|
140
154
|
useNx;
|
|
141
155
|
independentMode;
|
|
@@ -145,7 +159,7 @@ class LernaTypescriptProject extends projen_1.typescript.TypeScriptProject {
|
|
|
145
159
|
sinceGitReferenceEnvironmentVariableName;
|
|
146
160
|
factory;
|
|
147
161
|
constructor(options) {
|
|
148
|
-
super(appendWorkflowBootstrapSteps(parseTsOptions(options)));
|
|
162
|
+
super(appendWorkflowBootstrapSteps(parseTsOptions(parseOptions(options))));
|
|
149
163
|
this.sinceLastRelease = options.sinceLastRelease ?? false;
|
|
150
164
|
this.useNx = options.useNx ?? false;
|
|
151
165
|
this.independentMode = options.independentMode ?? false;
|
|
@@ -199,11 +213,9 @@ class LernaProjectFactory {
|
|
|
199
213
|
const packages = this.project.subprojects.map(subProject => this.getSubProjectPath(subProject));
|
|
200
214
|
if (this.project.useWorkspaces) {
|
|
201
215
|
if (this.project.package.packageManager === projen_1.javascript.NodePackageManager.PNPM) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
},
|
|
206
|
-
});
|
|
216
|
+
const workspaceFileName = 'pnpm-workspace.yaml';
|
|
217
|
+
const file = this.project.tryFindObjectFile(workspaceFileName) ?? new projen_1.YamlFile(this.project, workspaceFileName, {});
|
|
218
|
+
file.patch(projen_1.JsonPatch.add('/packages', packages));
|
|
207
219
|
}
|
|
208
220
|
this.project.package.addField('workspaces', packages);
|
|
209
221
|
}
|
|
@@ -332,4 +344,4 @@ class LernaProjectFactory {
|
|
|
332
344
|
this.project.gitattributes.addAttributes(`/${this.project.docsDirectory}/**`, 'linguist-generated');
|
|
333
345
|
}
|
|
334
346
|
}
|
|
335
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QixtQ0FBMkc7QUFHM0csMENBQXdCO0FBQ3hCLGlEQUFpQztBQUVqQyxTQUFTLGdCQUFnQixDQUFDLE9BQWdCO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLGVBQWUsQ0FBQyxDQUFDO0lBQ2hGLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxPQUFnQjtJQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JGLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUdELFNBQVMscUJBQXFCLENBQUMsS0FBWTtJQUN6QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBRXhHLE9BQU8sV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUFnRSxP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SSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUMzRCxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZCLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxRQUFRLElBQUksQ0FBQyxDQUFDO1lBQ3pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxLQUFLLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN0RyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSnNvbkZpbGUsIGphdmFzY3JpcHQsIFByb2plY3QsIFRhc2tzLCBTb3VyY2VDb2RlLCB0eXBlc2NyaXB0LCBZYW1sRmlsZSwgVGFza1NoZWxsIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IExlcm5hUHJvamVjdE9wdGlvbnMsIExlcm5hVHlwZXNjcmlwdFByb2plY3RPcHRpb25zLCBUYXNrQ3VzdG9taXphdGlvbiwgVGFza0N1c3RvbWl6YXRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIGdldERvY3NEaXJlY3RvcnkocHJvamVjdDogUHJvamVjdCkge1xuICBjb25zdCByZXN1bHQgPSBPYmplY3QuZW50cmllcyhwcm9qZWN0KS5maW5kKChba2V5XSkgPT4ga2V5ID09PSAnZG9jc0RpcmVjdG9yeScpO1xuICByZXR1cm4gcmVzdWx0Py5bMV0ucmVwbGFjZSgvXFwvJC8sICcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0QXJ0aWZhY3RzRGlyZWN0b3J5KHByb2plY3Q6IFByb2plY3QpIHtcbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMocHJvamVjdCkuZmluZCgoW2tleV0pID0+IGtleSA9PT0gJ2FydGlmYWN0c0RpcmVjdG9yeScpO1xuICByZXR1cm4gcmVzdWx0Py5bMV07XG59XG5cblxuZnVuY3Rpb24gZXh0cmFjdEpzaWlEb2NzT3V0cHV0KHRhc2tzOiBUYXNrcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGpzaWlEb2NTdGVwID0gdGFza3MudHJ5RmluZCgnZG9jZ2VuJyk/LnN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLmV4ZWNBcmdzPy5pbmNsdWRlcygnanNpaS1kb2NnZW4nKSk7XG5cbiAgcmV0dXJuIGpzaWlEb2NTdGVwPy5leGVjQXJncz8uWzJdO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRXb3JrZmxvd0Jvb3RzdHJhcFN0ZXBzPFQgZXh0ZW5kcyBMZXJuYVByb2plY3RPcHRpb25zIHwgTGVybmFUeXBlc2NyaXB0UHJvamVjdE9wdGlvbnM+KG9wdGlvbnM6IFQpOiBUIHtcbiAgaWYgKCFvcHRpb25zLnNpbmNlTGFzdFJlbGVhc2UpIHtyZXR1cm4gb3B0aW9uczt9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIHdvcmtmbG93Qm9vdHN0cmFwU3RlcHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ0ZldGNoIHRhZ3MnLFxuICAgICAgICBydW46ICdpZiBbICQoZ2l0IHJldi1wYXJzZSAtLWlzLXNoYWxsb3ctcmVwb3NpdG9yeSkgIT0gXCJmYWxzZVwiIF0gOyB0aGVuIGdpdCBmZXRjaCBvcmlnaW4gbWFpbiAtLXRhZ3MgLS11bnNoYWxsb3c7IGZpJyxcbiAgICAgICAgaWY6ICcke3sgZ2l0aHViLndvcmtmbG93ID09IFxcJ2J1aWxkXFwnIH19JyxcbiAgICAgIH0sXG4gICAgICAuLi5vcHRpb25zLndvcmtmbG93Qm9vdHN0cmFwU3RlcHMgPz8gW10sXG4gICAgXSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUc09wdGlvbnMob3B0aW9uczogTGVybmFUeXBlc2NyaXB0UHJvamVjdE9wdGlvbnMpOiBMZXJuYVR5cGVzY3JpcHRQcm9qZWN0T3B0aW9ucyB7XG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBzcmNkaXI6IG9wdGlvbnMuc3JjZGlyID8/ICdwcm9qZW5yYycsXG4gIH07XG59XG5cbmNvbnN0IGxvY2tlZFRhc2tOYW1lcyA9IFsnYnVpbGQnLCAndXBncmFkZScsICd1cGdyYWRlLXByb2plbicsICdjbG9iYmVyJywgJ3Bvc3QtdXBncmFkZSddO1xuXG5pbnRlcmZhY2UgSUxlcm5hUHJvamVjdCB7XG4gIHJlYWRvbmx5IHNpbmNlTGFzdFJlbGVhc2U6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZU54OiBib29sZWFuO1xuICByZWFkb25seSBpbmRlcGVuZGVudE1vZGU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZVdvcmtzcGFjZXM6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk6IHN0cmluZztcbiAgcmVhZG9ubHkgZG9jZ2VuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGFza0N1c3RvbWl6YXRpb25zOiBUYXNrQ3VzdG9taXphdGlvbnM7XG4gIHJlYWRvbmx5IHBucG1WZXJzaW9uPzogc3RyaW5nO1xuICByZWFkb25seSBzaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lPzogc3RyaW5nO1xuXG4gIGN1c3RvbWl6ZVRhc2sodGFza05hbWU6IHN0cmluZywgY3VzdG9taXphdGlvbjogVGFza0N1c3RvbWl6YXRpb24pOiB2b2lkO1xufVxuXG4vKipcbiAqIEBwamlkIGxlcm5hLXByb2plY3RcbiAqL1xuZXhwb3J0IGNsYXNzIExlcm5hUHJvamVjdCBleHRlbmRzIGphdmFzY3JpcHQuTm9kZVByb2plY3QgaW1wbGVtZW50cyBJTGVybmFQcm9qZWN0IHtcblxuICBwcml2YXRlIHByb2plbnJjVHM6IGJvb2xlYW47XG5cbiAgcmVhZG9ubHkgZG9jc0RpcmVjdG9yeTogc3RyaW5nO1xuICByZWFkb25seSBkb2NnZW46IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNpbmNlTGFzdFJlbGVhc2U6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZU54OiBib29sZWFuO1xuICByZWFkb25seSBpbmRlcGVuZGVudE1vZGU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZVdvcmtzcGFjZXM6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRhc2tDdXN0b21pemF0aW9uczogVGFza0N1c3RvbWl6YXRpb25zO1xuICByZWFkb25seSBwbnBtVmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgc2luY2VHaXRSZWZlcmVuY2VFbnZpcm9ubWVudFZhcmlhYmxlTmFtZT86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGZhY3Rvcnk6IExlcm5hUHJvamVjdEZhY3Rvcnk7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogTGVybmFQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKGFwcGVuZFdvcmtmbG93Qm9vdHN0cmFwU3RlcHMob3B0aW9ucykpO1xuXG4gICAgaWYgKG9wdGlvbnMucHJvamVucmNUcykge3RoaXMuYWRkRGV2RGVwcygndHMtbm9kZScsICd0eXBlc2NyaXB0Jyk7fVxuXG4gICAgdGhpcy5kb2NzRGlyZWN0b3J5ID0gb3B0aW9ucy5kb2NzRGlyZWN0b3J5ID8/ICdkb2NzJztcbiAgICB0aGlzLmRvY2dlbiA9IG9wdGlvbnMuZG9jZ2VuID8/IGZhbHNlO1xuICAgIHRoaXMuc2luY2VMYXN0UmVsZWFzZSA9IG9wdGlvbnMuc2luY2VMYXN0UmVsZWFzZSA/PyBmYWxzZTtcbiAgICB0aGlzLnVzZU54ID0gb3B0aW9ucy51c2VOeCA/PyBmYWxzZTtcbiAgICB0aGlzLnByb2plbnJjVHMgPSBvcHRpb25zLnByb2plbnJjVHMgPz8gZmFsc2U7XG4gICAgdGhpcy5pbmRlcGVuZGVudE1vZGUgPSBvcHRpb25zLmluZGVwZW5kZW50TW9kZSA/PyBmYWxzZTtcbiAgICB0aGlzLnVzZVdvcmtzcGFjZXMgPSBvcHRpb25zLnVzZVdvcmtzcGFjZXMgPz8gZmFsc2U7XG4gICAgdGhpcy50YXNrQ3VzdG9taXphdGlvbnMgPSBvcHRpb25zLnRhc2tDdXN0b21pemF0aW9ucyA/PyB7fTtcbiAgICB0aGlzLnBucG1WZXJzaW9uID0gb3B0aW9ucy5wbnBtVmVyc2lvbjtcbiAgICB0aGlzLnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWUgPSBvcHRpb25zLnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU7XG5cbiAgICB0aGlzLmZhY3RvcnkgPSBuZXcgTGVybmFQcm9qZWN0RmFjdG9yeSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY3VzdG9taXphdGlvbiBmb3IgdGhlIHNwZWNpZmllZCB0YXNrXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrTmFtZSBOYW1lIG9mIHRoZSB0YXNrIHRvIGN1c3RvbWl6ZVxuICAgKiBAcGFyYW0gY3VzdG9taXphdGlvbiBUYXNrQ3VzdG9taXphdGlvbiBvcHRpb25zXG4gICAqL1xuICBjdXN0b21pemVUYXNrKHRhc2tOYW1lOiBzdHJpbmcsIGN1c3RvbWl6YXRpb246IFRhc2tDdXN0b21pemF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy50YXNrQ3VzdG9taXphdGlvbnNbdGFza05hbWVdID0gY3VzdG9taXphdGlvbjtcbiAgfVxuXG4gIHByZVN5bnRoZXNpemUoKSB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuICAgIGNvbnN0IHByb2plbkNvbW1hbmQgPSB0aGlzLnByb2plbnJjVHMgPyAndHMtbm9kZSAtLXNraXAtcHJvamVjdCAucHJvamVucmMudHMnIDogJ25vZGUgLnByb2plbnJjLmpzJztcbiAgICBjb25zdCB7IGRlZmF1bHRUYXNrIH0gPSB0aGlzO1xuICAgIGlmICghZGVmYXVsdFRhc2spIHt0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGRlZmF1bHQgdGFzaycpO31cbiAgICBkZWZhdWx0VGFzay5yZXNldChwcm9qZW5Db21tYW5kKTtcblxuICAgIHRoaXMuZmFjdG9yeS5idWlsZCgpO1xuICB9XG59XG5cbi8qKlxuICogQHBqaWQgbGVybmEtdHMtcHJvamVjdFxuICovXG5leHBvcnQgY2xhc3MgTGVybmFUeXBlc2NyaXB0UHJvamVjdCBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3QgaW1wbGVtZW50cyBJTGVybmFQcm9qZWN0IHtcbiAgcmVhZG9ubHkgc2luY2VMYXN0UmVsZWFzZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlTng6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGluZGVwZW5kZW50TW9kZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlV29ya3NwYWNlczogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGFza0N1c3RvbWl6YXRpb25zOiBUYXNrQ3VzdG9taXphdGlvbnM7XG4gIHJlYWRvbmx5IHBucG1WZXJzaW9uPzogc3RyaW5nO1xuICByZWFkb25seSBzaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZmFjdG9yeTogTGVybmFQcm9qZWN0RmFjdG9yeTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBMZXJuYVR5cGVzY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKGFwcGVuZFdvcmtmbG93Qm9vdHN0cmFwU3RlcHMocGFyc2VUc09wdGlvbnMob3B0aW9ucykpKTtcblxuICAgIHRoaXMuc2luY2VMYXN0UmVsZWFzZSA9IG9wdGlvbnMuc2luY2VMYXN0UmVsZWFzZSA/PyBmYWxzZTtcbiAgICB0aGlzLnVzZU54ID0gb3B0aW9ucy51c2VOeCA/PyBmYWxzZTtcbiAgICB0aGlzLmluZGVwZW5kZW50TW9kZSA9IG9wdGlvbnMuaW5kZXBlbmRlbnRNb2RlID8/IGZhbHNlO1xuICAgIHRoaXMudXNlV29ya3NwYWNlcyA9IG9wdGlvbnMudXNlV29ya3NwYWNlcyA/PyBmYWxzZTtcbiAgICB0aGlzLnRhc2tDdXN0b21pemF0aW9ucyA9IG9wdGlvbnMudGFza0N1c3RvbWl6YXRpb25zID8/IHt9O1xuICAgIHRoaXMucG5wbVZlcnNpb24gPSBvcHRpb25zLnBucG1WZXJzaW9uO1xuICAgIHRoaXMuc2luY2VHaXRSZWZlcmVuY2VFbnZpcm9ubWVudFZhcmlhYmxlTmFtZSA9IG9wdGlvbnMuc2luY2VHaXRSZWZlcmVuY2VFbnZpcm9ubWVudFZhcmlhYmxlTmFtZTtcblxuICAgIGlmICghKG9wdGlvbnMuaGFzUm9vdFNvdXJjZUNvZGUgPz8gZmFsc2UpKSB7dGhpcy50YXNrcy50cnlGaW5kKCdjb21waWxlJyk/LnJlc2V0KCk7fVxuXG4gICAgdGhpcy50YXNrcy50cnlGaW5kKCdkb2NnZW4nKT8ucmVzZXQoKTtcblxuICAgIHRoaXMuZmFjdG9yeSA9IG5ldyBMZXJuYVByb2plY3RGYWN0b3J5KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjdXN0b21pemF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIHRhc2tcbiAgICpcbiAgICogQHBhcmFtIHRhc2tOYW1lIE5hbWUgb2YgdGhlIHRhc2sgdG8gY3VzdG9taXplXG4gICAqIEBwYXJhbSBjdXN0b21pemF0aW9uIFRhc2tDdXN0b21pemF0aW9uIG9wdGlvbnNcbiAgICovXG4gIGN1c3RvbWl6ZVRhc2sodGFza05hbWU6IHN0cmluZywgY3VzdG9taXphdGlvbjogVGFza0N1c3RvbWl6YXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tDdXN0b21pemF0aW9uc1t0YXNrTmFtZV0gPSBjdXN0b21pemF0aW9uO1xuICB9XG5cbiAgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG4gICAgdGhpcy5mYWN0b3J5LmJ1aWxkKCk7XG4gIH1cbn1cblxuY2xhc3MgTGVybmFQcm9qZWN0RmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdDogSUxlcm5hUHJvamVjdCAmIGphdmFzY3JpcHQuTm9kZVByb2plY3QpIHtcbiAgICBwcm9qZWN0LmFkZERldkRlcHMoJ2xlcm5hLXByb2plbicsICdsZXJuYScpO1xuICB9XG5cbiAgYnVpbGQoKSB7XG4gICAgdGhpcy5wcm9qZWN0LnBhY2thZ2VUYXNrLnJlc2V0KGBta2RpciAtcCAke3RoaXMucHJvamVjdC5hcnRpZmFjdHNKYXZhc2NyaXB0RGlyZWN0b3J5fWApO1xuICAgIHRoaXMucHJvamVjdC5wcmVDb21waWxlVGFzay5leGVjKGBsZXJuYS1wcm9qZW4gY2xlYW4tZGlzdCAke3RoaXMucHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9YCk7XG4gICAgdGhpcy5hcHBlbmRMZXJuYUNvbW1hbmRzKCk7XG4gICAgdGhpcy5hZGRDcm9zc0xpbmtzKCk7XG4gICAgdGhpcy51cGRhdGVTdWJQcm9qZWN0cygpO1xuICAgIHRoaXMuYWRkRG9jdW1lbnRzSW5kZXgoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3ViUHJvamVjdFBhdGgoc3ViUHJvamVjdDogUHJvamVjdCkge1xuICAgIHJldHVybiBwYXRoLnJlbGF0aXZlKHRoaXMucHJvamVjdC5vdXRkaXIsIHN1YlByb2plY3Qub3V0ZGlyKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ3Jvc3NMaW5rcygpIHtcblxuICAgIGNvbnN0IGxlcm5hQ29uZmlnOiBhbnkgPSB7XG4gICAgICB1c2VOeDogdGhpcy5wcm9qZWN0LnVzZU54LFxuICAgICAgdmVyc2lvbjogdGhpcy5wcm9qZWN0LmluZGVwZW5kZW50TW9kZSA/ICdpbmRlcGVuZGVudCcgOiAnMC4wLjAnLFxuICAgIH07XG5cbiAgICBjb25zdCBwYWNrYWdlcyA9IHRoaXMucHJvamVjdC5zdWJwcm9qZWN0cy5tYXAoc3ViUHJvamVjdCA9PiB0aGlzLmdldFN1YlByb2plY3RQYXRoKHN1YlByb2plY3QpKTtcblxuICAgIGlmICh0aGlzLnByb2plY3QudXNlV29ya3NwYWNlcykge1xuICAgICAgaWYgKHRoaXMucHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyID09PSBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5QTlBNKSB7XG4gICAgICAgIG5ldyBZYW1sRmlsZSh0aGlzLnByb2plY3QsICdwbnBtLXdvcmtzcGFjZS55YW1sJywge1xuICAgICAgICAgIG9iajoge1xuICAgICAgICAgICAgcGFja2FnZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnByb2plY3QucGFja2FnZS5hZGRGaWVsZCgnd29ya3NwYWNlcycsIHBhY2thZ2VzKTtcbiAgICB9IGVsc2Uge2xlcm5hQ29uZmlnLnBhY2thZ2VzID0gcGFja2FnZXM7fVxuXG5cbiAgICBuZXcgSnNvbkZpbGUodGhpcy5wcm9qZWN0LCAnbGVybmEuanNvbicsIHtcbiAgICAgIG9iajogbGVybmFDb25maWcsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGVuZExlcm5hQ29tbWFuZHMoKSB7XG4gICAgY29uc3QgdXBncmFkZVRhc2tOYW1lID0gJ3VwZ3JhZGUnO1xuICAgIGNvbnN0IHBvc3RVcGdyYWRlVGFza05hbWUgPSAncG9zdC11cGdyYWRlJztcbiAgICBjb25zdCBwb3N0VXBncmFkZVRhc2sgPSB0aGlzLnByb2plY3QudGFza3MudHJ5RmluZChwb3N0VXBncmFkZVRhc2tOYW1lKTtcbiAgICBjb25zdCB1cGdyYWRlTGVybmFDb21tYW5kID0gdGhpcy5nZXRMZXJuYUNvbW1hbmQodXBncmFkZVRhc2tOYW1lLCB7IHNpbmNlTGFzdFJlbGVhc2U6IGZhbHNlIH0pO1xuICAgIHBvc3RVcGdyYWRlVGFzaz8ucHJlcGVuZEV4ZWModXBncmFkZUxlcm5hQ29tbWFuZC5jb21tYW5kLCB7IHNoZWxsOiB1cGdyYWRlTGVybmFDb21tYW5kLnNoZWxsIH0pO1xuICAgIHBvc3RVcGdyYWRlVGFzaz8uZXhlYygnbnB4IHByb2plbicpO1xuXG4gICAgdGhpcy5wcm9qZWN0LnRhc2tzLmFsbFxuICAgICAgLmZvckVhY2godGFzayA9PiB7XG4gICAgICAgIGNvbnN0IGN1c3RvbWl6YXRpb24gPSB0aGlzLnByb2plY3QudGFza0N1c3RvbWl6YXRpb25zW3Rhc2submFtZV07XG4gICAgICAgIGNvbnN0IGFkZExlcm5hU3RlcCA9IGN1c3RvbWl6YXRpb24/LmFkZExlcm5hU3RlcCA/PyB0cnVlO1xuXG4gICAgICAgIGlmIChsb2NrZWRUYXNrTmFtZXMuaW5jbHVkZXModGFzay5uYW1lKSB8fCAhYWRkTGVybmFTdGVwKSB7cmV0dXJuO31cblxuICAgICAgICBjb25zdCBsZXJuYUNvbW1hbmQgPSB0aGlzLmdldExlcm5hQ29tbWFuZCh0YXNrLm5hbWUsIGN1c3RvbWl6YXRpb24pO1xuICAgICAgICB0YXNrLmV4ZWMobGVybmFDb21tYW5kLmNvbW1hbmQsIHsgc2hlbGw6IGxlcm5hQ29tbWFuZC5zaGVsbCB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMZXJuYUNvbW1hbmQodGFza05hbWU6IHN0cmluZywgY3VzdG9taXphdGlvbj86IFRhc2tDdXN0b21pemF0aW9uKSB7XG4gICAgY29uc3QgbWFpbkNvbW1hbmQgPSBgbGVybmEgcnVuICR7dGFza05hbWV9IC0tc3RyZWFtYDtcbiAgICBjb25zdCB1c2VTaW5jZUZsYWcgPSBjdXN0b21pemF0aW9uPy5zaW5jZUxhc3RSZWxlYXNlID8/IHRoaXMucHJvamVjdC5zaW5jZUxhc3RSZWxlYXNlO1xuXG4gICAgY29uc3QgaW5jbHVkZVBhdHRlcm5zID0gY3VzdG9taXphdGlvbj8uaW5jbHVkZSA/PyBbXTtcbiAgICBjb25zdCBleGNsdWRlUGF0dGVybnMgPSBjdXN0b21pemF0aW9uPy5leGNsdWRlID8/IFtdO1xuXG4gICAgY29uc3Qgc2NvcGVGbGFncyA9IGluY2x1ZGVQYXR0ZXJucy5tYXAoKGdsb2IpID0+IGAgLS1zY29wZSAke2dsb2J9YCkuam9pbignJyk7XG4gICAgY29uc3QgaWdub3JlRmxhZ3MgPSBleGNsdWRlUGF0dGVybnMubWFwKChnbG9iKSA9PiBgIC0taWdub3JlICR7Z2xvYn1gKS5qb2luKCcnKTtcblxuXG4gICAgY29uc3QgcG9zdENvbW1hbmQgPSB1c2VTaW5jZUZsYWcgPyBgIC0tc2luY2UgJHt0aGlzLmdldFNpbmNlQ29tbWFuZCgpfWAgOiAnJztcbiAgICBjb25zdCBjb21tYW5kID0gYCR7bWFpbkNvbW1hbmR9JHtwb3N0Q29tbWFuZH0ke3Njb3BlRmxhZ3N9JHtpZ25vcmVGbGFnc31gO1xuICAgIHJldHVybiB7XG4gICAgICBjb21tYW5kLFxuICAgICAgc2hlbGw6IHVzZVNpbmNlRmxhZz8gVGFza1NoZWxsLmJhc2goKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaW5jZUNvbW1hbmQoKSB7XG4gICAgaWYgKHRoaXMucHJvamVjdC5zaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lKSB7XG4gICAgICByZXR1cm4gYFxcJHske3RoaXMucHJvamVjdC5zaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lfTotJChnaXQgZGVzY3JpYmUgLS1hYmJyZXY9MCAtLXRhZ3MgLS1tYXRjaCBcInYqXCIgSEVBRF4pfWA7XG4gICAgfVxuICAgIHJldHVybiAnJChnaXQgZGVzY3JpYmUgLS1hYmJyZXY9MCAtLXRhZ3MgLS1tYXRjaCBcInYqXCIgSEVBRF4pJztcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3ViUHJvamVjdHMoKSB7XG4gICAgY29uc3QgYnVtcFRhc2sgPSB0aGlzLnByb2plY3QudGFza3MudHJ5RmluZCgnYnVtcCcpO1xuICAgIGNvbnN0IHVuYnVtcFRhc2sgPSB0aGlzLnByb2plY3QudGFza3MudHJ5RmluZCgndW5idW1wJyk7XG5cbiAgICB0aGlzLnByb2plY3Quc3VicHJvamVjdHMuZm9yRWFjaCgoc3ViUHJvamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3ViUHJvamVjdERvY3NEaXJlY3RvcnkgPSBnZXREb2NzRGlyZWN0b3J5KHN1YlByb2plY3QpO1xuICAgICAgY29uc3Qgc3ViUHJvamVjdFBhdGggPSB0aGlzLmdldFN1YlByb2plY3RQYXRoKHN1YlByb2plY3QpO1xuICAgICAgaWYgKHRoaXMucHJvamVjdC5kb2NnZW4gJiYgc3ViUHJvamVjdERvY3NEaXJlY3RvcnkpIHt0aGlzLnByb2plY3QucG9zdENvbXBpbGVUYXNrLmV4ZWMoYGxlcm5hLXByb2plbiBtb3ZlLWRvY3MgJHt0aGlzLnByb2plY3QuZG9jc0RpcmVjdG9yeX0gJHtzdWJQcm9qZWN0UGF0aH0gJHtzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeX1gKTt9XG5cbiAgICAgIGNvbnN0IGFydGlmYWN0c0RpcmVjdG9yeSA9IGdldEFydGlmYWN0c0RpcmVjdG9yeShzdWJQcm9qZWN0KTtcblxuICAgICAgdGhpcy5wcm9qZWN0LnBhY2thZ2VUYXNrLmV4ZWMoYGxlcm5hLXByb2plbiBjb3B5LWRpc3QgJHtzdWJQcm9qZWN0UGF0aH0vJHthcnRpZmFjdHNEaXJlY3Rvcnl9ICR7dGhpcy5wcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeX1gKTtcblxuICAgICAgc3ViUHJvamVjdC5kZWZhdWx0VGFzaz8ucmVzZXQoKTtcblxuICAgICAgY29uc3QgYnVtcEVudnMgPSB7XG4gICAgICAgIE9VVEZJTEU6ICdwYWNrYWdlLmpzb24nLFxuICAgICAgICBDSEFOR0VMT0c6IGAke2FydGlmYWN0c0RpcmVjdG9yeX0vY2hhbmdlbG9nLm1kYCxcbiAgICAgICAgQlVNUEZJTEU6IGAke2FydGlmYWN0c0RpcmVjdG9yeX0vdmVyc2lvbi50eHRgLFxuICAgICAgICBSRUxFQVNFVEFHOiBgJHthcnRpZmFjdHNEaXJlY3Rvcnl9L3JlbGVhc2V0YWcudHh0YCxcbiAgICAgICAgUkVMRUFTRV9UQUdfUFJFRklYOiAnJyxcbiAgICAgIH07XG5cbiAgICAgIGlmIChidW1wVGFzayAmJiAhc3ViUHJvamVjdC50YXNrcy50cnlGaW5kKCdidW1wJykpIHtcbiAgICAgICAgY29uc3Qgc3ViQnVtcFRhc2sgPSBzdWJQcm9qZWN0LmFkZFRhc2soYnVtcFRhc2submFtZSwge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBidW1wVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgICBjb25kaXRpb246IGJ1bXBUYXNrLmNvbmRpdGlvbixcbiAgICAgICAgICBlbnY6IGJ1bXBFbnZzLFxuICAgICAgICB9KTtcbiAgICAgICAgc3ViQnVtcFRhc2suYnVpbHRpbigncmVsZWFzZS9idW1wLXZlcnNpb24nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHVuYnVtcFRhc2sgJiYgIXN1YlByb2plY3QudGFza3MudHJ5RmluZCgndW5idW1wJykpIHtcbiAgICAgICAgY29uc3Qgc3ViQnVtcFRhc2sgPSBzdWJQcm9qZWN0LmFkZFRhc2sodW5idW1wVGFzay5uYW1lLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IHVuYnVtcFRhc2suZGVzY3JpcHRpb24sXG4gICAgICAgICAgY29uZGl0aW9uOiB1bmJ1bXBUYXNrLmNvbmRpdGlvbixcbiAgICAgICAgICBlbnY6IGJ1bXBFbnZzLFxuICAgICAgICB9KTtcbiAgICAgICAgc3ViQnVtcFRhc2suYnVpbHRpbigncmVsZWFzZS9yZXNldC12ZXJzaW9uJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZERvY3VtZW50c0luZGV4KCkge1xuICAgIGlmICghdGhpcy5wcm9qZWN0LmRvY2dlbikge3JldHVybjt9XG5cbiAgICBjb25zdCBzdWJQcm9qZWN0c0RvY3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgIGNvbnN0IGluZGV4TWFya2Rvd24gPSBuZXcgU291cmNlQ29kZSh0aGlzLnByb2plY3QsIGAke3RoaXMucHJvamVjdC5kb2NzRGlyZWN0b3J5fS9pbmRleC5tZGApO1xuICAgIGNvbnN0IHJlYWRtZU1hcmtkb3duID0gbmV3IFNvdXJjZUNvZGUodGhpcy5wcm9qZWN0LCBgJHt0aGlzLnByb2plY3QuZG9jc0RpcmVjdG9yeX0vUkVBRE1FLm1kYCk7XG5cbiAgICB0aGlzLnByb2plY3Quc3VicHJvamVjdHMuZm9yRWFjaCgoc3ViUHJvamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3ViUHJvamVjdERvY3NEaXJlY3RvcnkgPSBnZXREb2NzRGlyZWN0b3J5KHN1YlByb2plY3QpO1xuICAgICAgaWYgKCFzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeSkge3JldHVybjt9XG5cbiAgICAgIGNvbnN0IHN1YlByb2plY3RQYXRoID0gdGhpcy5nZXRTdWJQcm9qZWN0UGF0aChzdWJQcm9qZWN0KTtcbiAgICAgIGNvbnN0IGpzaWlEb2NzT3V0cHV0ID0gZXh0cmFjdEpzaWlEb2NzT3V0cHV0KHN1YlByb2plY3QudGFza3MpO1xuICAgICAgaWYgKGpzaWlEb2NzT3V0cHV0KSB7XG4gICAgICAgIGNvbnN0IGRvY3NQYXRoID0gYCR7c3ViUHJvamVjdFBhdGh9LyR7anNpaURvY3NPdXRwdXR9YDtcbiAgICAgICAgaW5kZXhNYXJrZG93bi5saW5lKGAtICMjIFske3N1YlByb2plY3QubmFtZX1dKCR7ZG9jc1BhdGh9KWApO1xuICAgICAgICBzdWJQcm9qZWN0c0RvY3Nbc3ViUHJvamVjdC5uYW1lXSA9IGRvY3NQYXRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3ViUHJvamVjdHNEb2NzW3N1YlByb2plY3QubmFtZV0gPSBgJHtzdWJQcm9qZWN0UGF0aH0vaW5kZXguaHRtbGA7XG4gICAgICB9XG4gICAgICByZWFkbWVNYXJrZG93bi5saW5lKGAtICMjIFske3N1YlByb2plY3QubmFtZX1dKC4uLyR7c3ViUHJvamVjdFBhdGh9L1JFQURNRS5tZClgKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGluZGV4SHRtbCA9IG5ldyBTb3VyY2VDb2RlKHRoaXMucHJvamVjdCwgYCR7dGhpcy5wcm9qZWN0LmRvY3NEaXJlY3Rvcnl9L2luZGV4Lmh0bWxgKTtcbiAgICBpbmRleEh0bWwubGluZSgnPCFET0NUWVBFIGh0bWw+Jyk7XG4gICAgaW5kZXhIdG1sLmxpbmUoJzxodG1sPicpO1xuICAgIGluZGV4SHRtbC5vcGVuKCc8Ym9keT4nKTtcbiAgICBpbmRleEh0bWwub3BlbignPHVsPicpO1xuICAgIE9iamVjdC5lbnRyaWVzKHN1YlByb2plY3RzRG9jcykuZm9yRWFjaCgoW25hbWUsIGRvY3NQYXRoXSkgPT4ge1xuICAgICAgaW5kZXhIdG1sLm9wZW4oJzxsaT4nKTtcbiAgICAgIGluZGV4SHRtbC5vcGVuKGA8YSBocmVmPVwiJHtkb2NzUGF0aH1cIj5gKTtcbiAgICAgIGluZGV4SHRtbC5saW5lKG5hbWUpO1xuICAgICAgaW5kZXhIdG1sLmNsb3NlKCc8L2E+Jyk7XG4gICAgICBpbmRleEh0bWwuY2xvc2UoJzwvbGk+Jyk7XG4gICAgfSk7XG4gICAgaW5kZXhIdG1sLmNsb3NlKCc8L3VsPicpO1xuICAgIGluZGV4SHRtbC5jbG9zZSgnPC9ib2R5PicpO1xuICAgIGluZGV4SHRtbC5saW5lKCc8L2h0bWw+Jyk7XG4gICAgaW5kZXhIdG1sLmxpbmUoKTtcblxuICAgIHRoaXMucHJvamVjdC5naXRhdHRyaWJ1dGVzLmFkZEF0dHJpYnV0ZXMoYC8ke3RoaXMucHJvamVjdC5kb2NzRGlyZWN0b3J5fS8qKmAsICdsaW5ndWlzdC1nZW5lcmF0ZWQnKTtcbiAgfVxufSJdfQ==
|
|
347
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QixtQ0FBc0g7QUFDdEgsc0RBQTJEO0FBRzNELDBDQUF3QjtBQUN4QixpREFBaUM7QUFFakMsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFnQjtJQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxlQUFlLENBQUMsQ0FBQztJQUNoRixPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsT0FBZ0I7SUFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssb0JBQW9CLENBQUMsQ0FBQztJQUNyRixPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFHRCxTQUFTLHFCQUFxQixDQUFDLEtBQVk7SUFDekMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUV4RyxPQUFPLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBUyw0QkFBNEIsQ0FBZ0UsT0FBVTtJQUM3RyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFBQSxPQUFPLE9BQU8sQ0FBQztJQUFBLENBQUM7SUFFaEQsT0FBTztRQUNMLEdBQUcsT0FBTztRQUNWLHNCQUFzQixFQUFFO1lBQ3RCO2dCQUNFLElBQUksRUFBRSxZQUFZO2dCQUNsQixHQUFHLEVBQUUsZ0hBQWdIO2dCQUNySCxFQUFFLEVBQUUscUNBQXFDO2FBQzFDO1lBQ0QsR0FBRyxPQUFPLENBQUMsc0JBQXNCLElBQUksRUFBRTtTQUN4QztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQWdFLE9BQVU7SUFDN0YsSUFBSSxPQUFPLENBQUMsY0FBYyxLQUFLLCtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxPQUFPO1FBQ0wsR0FBRyxPQUFPO1FBQ1YsV0FBVyxFQUFFO1lBQ1gsb0JBQW9CLEVBQUU7Z0JBQ3BCLHVCQUF1QixFQUFFLElBQUk7YUFDOUI7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsT0FBc0M7SUFDNUQsT0FBTztRQUNMLEdBQUcsT0FBTztRQUNWLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLFVBQVU7S0FDckMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBZ0IxRjs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLG1CQUFVLENBQUMsV0FBVzs7SUFFOUMsVUFBVSxDQUFVO0lBRW5CLGFBQWEsQ0FBUztJQUN0QixNQUFNLENBQVU7SUFDaEIsZ0JBQWdCLENBQVU7SUFDMUIsS0FBSyxDQUFVO0lBQ2YsZUFBZSxDQUFVO0lBQ3pCLGFBQWEsQ0FBVTtJQUN2QixrQkFBa0IsQ0FBcUI7SUFDdkMsV0FBVyxDQUFVO0lBQ3JCLHdDQUF3QyxDQUFVO0lBRTFDLE9BQU8sQ0FBc0I7SUFFOUMsWUFBWSxPQUE0QjtRQUN0QyxLQUFLLENBQUMsNEJBQTRCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUzRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQUEsQ0FBQztRQUVuRSxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUM7UUFDeEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztRQUNwRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDdkMsSUFBSSxDQUFDLHdDQUF3QyxHQUFHLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQztRQUVqRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLFFBQWdCLEVBQUUsYUFBZ0M7UUFDOUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLGFBQWEsQ0FBQztJQUNwRCxDQUFDO0lBRUQsYUFBYTtRQUNYLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7UUFDcEcsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFBQSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFBQSxDQUFDO1FBQ25FLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDOztBQXJESCxvQ0FzREM7QUFFRDs7R0FFRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsbUJBQVUsQ0FBQyxpQkFBaUI7O0lBQzdELGdCQUFnQixDQUFVO0lBQzFCLEtBQUssQ0FBVTtJQUNmLGVBQWUsQ0FBVTtJQUN6QixhQUFhLENBQVU7SUFDdkIsa0JBQWtCLENBQXFCO0lBQ3ZDLFdBQVcsQ0FBVTtJQUNyQix3Q0FBd0MsQ0FBVTtJQUUxQyxPQUFPLENBQXNCO0lBRTlDLFlBQVksT0FBc0M7UUFDaEQsS0FBSyxDQUFDLDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0UsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO1FBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUM7UUFDcEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyx3Q0FBd0MsR0FBRyxPQUFPLENBQUMsd0NBQXdDLENBQUM7UUFFakcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUFBLENBQUM7UUFFcEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxRQUFnQixFQUFFLGFBQWdDO1FBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxhQUFhLENBQUM7SUFDcEQsQ0FBQztJQUVELGFBQWE7UUFDWCxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDOztBQTFDSCx3REEyQ0M7QUFFRCxNQUFNLG1CQUFtQjtJQUNNO0lBQTdCLFlBQTZCLE9BQStDO1FBQS9DLFlBQU8sR0FBUCxPQUFPLENBQXdDO1FBQzFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLDJCQUEyQixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFVBQW1CO1FBQzNDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLGFBQWE7UUFFbkIsTUFBTSxXQUFXLEdBQVE7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTztTQUNoRSxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFaEcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxLQUFLLG1CQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQy9FLE1BQU0saUJBQWlCLEdBQUcscUJBQXFCLENBQUM7Z0JBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLGlCQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDcEgsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4RCxDQUFDO2FBQU0sQ0FBQztZQUFBLFdBQVcsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQUEsQ0FBQztRQUd6QyxJQUFJLGlCQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUU7WUFDdkMsR0FBRyxFQUFFLFdBQVc7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDbEMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUM7UUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDeEUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0YsZUFBZSxFQUFFLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoRyxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUc7YUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakUsTUFBTSxZQUFZLEdBQUcsYUFBYSxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUM7WUFFekQsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUFBLE9BQU87WUFBQSxDQUFDO1lBRW5FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sZUFBZSxDQUFDLFFBQWdCLEVBQUUsYUFBaUM7UUFDekUsTUFBTSxXQUFXLEdBQUcsYUFBYSxRQUFRLFdBQVcsQ0FBQztRQUNyRCxNQUFNLFlBQVksR0FBRyxhQUFhLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztRQUV0RixNQUFNLGVBQWUsR0FBRyxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNyRCxNQUFNLGVBQWUsR0FBRyxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUVyRCxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFHaEYsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0UsTUFBTSxPQUFPLEdBQUcsR0FBRyxXQUFXLEdBQUcsV0FBVyxHQUFHLFVBQVUsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUMxRSxPQUFPO1lBQ0wsT0FBTztZQUNQLEtBQUssRUFBRSxZQUFZLENBQUEsQ0FBQyxDQUFDLGtCQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDbEQsQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsRUFBRSxDQUFDO1lBQzFELE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLHdDQUF3Qyx5REFBeUQsQ0FBQztRQUM5SCxDQUFDO1FBQ0QsT0FBTyxzREFBc0QsQ0FBQztJQUNoRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDOUMsTUFBTSx1QkFBdUIsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO2dCQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQywwQkFBMEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksY0FBYyxJQUFJLHVCQUF1QixFQUFFLENBQUMsQ0FBQztZQUFBLENBQUM7WUFFN0wsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUU3RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLGNBQWMsSUFBSSxrQkFBa0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUVuSSxVQUFVLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBRWhDLE1BQU0sUUFBUSxHQUFHO2dCQUNmLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixTQUFTLEVBQUUsR0FBRyxrQkFBa0IsZUFBZTtnQkFDL0MsUUFBUSxFQUFFLEdBQUcsa0JBQWtCLGNBQWM7Z0JBQzdDLFVBQVUsRUFBRSxHQUFHLGtCQUFrQixpQkFBaUI7Z0JBQ2xELGtCQUFrQixFQUFFLEVBQUU7YUFDdkIsQ0FBQztZQUVGLElBQUksUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDbEQsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO29CQUNwRCxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7b0JBQ2pDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztvQkFDN0IsR0FBRyxFQUFFLFFBQVE7aUJBQ2QsQ0FBQyxDQUFDO2dCQUNILFdBQVcsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBRUQsSUFBSSxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7b0JBQ3RELFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVztvQkFDbkMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO29CQUMvQixHQUFHLEVBQUUsUUFBUTtpQkFDZCxDQUFDLENBQUM7Z0JBQ0gsV0FBVyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFBQSxPQUFPO1FBQUEsQ0FBQztRQUVuQyxNQUFNLGVBQWUsR0FBMkIsRUFBRSxDQUFDO1FBRW5ELE1BQU0sYUFBYSxHQUFHLElBQUksbUJBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLFdBQVcsQ0FBQyxDQUFDO1FBQzdGLE1BQU0sY0FBYyxHQUFHLElBQUksbUJBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLFlBQVksQ0FBQyxDQUFDO1FBRS9GLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQzlDLE1BQU0sdUJBQXVCLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQUEsT0FBTztZQUFBLENBQUM7WUFFdkMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFELE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvRCxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixNQUFNLFFBQVEsR0FBRyxHQUFHLGNBQWMsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDdkQsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDN0QsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDOUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFjLGFBQWEsQ0FBQztZQUNwRSxDQUFDO1lBQ0QsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLFVBQVUsQ0FBQyxJQUFJLFFBQVEsY0FBYyxhQUFhLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLElBQUksbUJBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLGFBQWEsQ0FBQyxDQUFDO1FBQzNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekIsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDM0QsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QixTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksUUFBUSxJQUFJLENBQUMsQ0FBQztZQUN6QyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JCLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEIsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsS0FBSyxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDdEcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEpzb25GaWxlLCBqYXZhc2NyaXB0LCBQcm9qZWN0LCBUYXNrcywgU291cmNlQ29kZSwgdHlwZXNjcmlwdCwgWWFtbEZpbGUsIFRhc2tTaGVsbCwgSnNvblBhdGNoIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IE5vZGVQYWNrYWdlTWFuYWdlciB9IGZyb20gJ3Byb2plbi9saWIvamF2YXNjcmlwdCc7XG5pbXBvcnQgeyBMZXJuYVByb2plY3RPcHRpb25zLCBMZXJuYVR5cGVzY3JpcHRQcm9qZWN0T3B0aW9ucywgVGFza0N1c3RvbWl6YXRpb24sIFRhc2tDdXN0b21pemF0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5mdW5jdGlvbiBnZXREb2NzRGlyZWN0b3J5KHByb2plY3Q6IFByb2plY3QpIHtcbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMocHJvamVjdCkuZmluZCgoW2tleV0pID0+IGtleSA9PT0gJ2RvY3NEaXJlY3RvcnknKTtcbiAgcmV0dXJuIHJlc3VsdD8uWzFdLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG59XG5cbmZ1bmN0aW9uIGdldEFydGlmYWN0c0RpcmVjdG9yeShwcm9qZWN0OiBQcm9qZWN0KSB7XG4gIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5lbnRyaWVzKHByb2plY3QpLmZpbmQoKFtrZXldKSA9PiBrZXkgPT09ICdhcnRpZmFjdHNEaXJlY3RvcnknKTtcbiAgcmV0dXJuIHJlc3VsdD8uWzFdO1xufVxuXG5cbmZ1bmN0aW9uIGV4dHJhY3RKc2lpRG9jc091dHB1dCh0YXNrczogVGFza3MpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBqc2lpRG9jU3RlcCA9IHRhc2tzLnRyeUZpbmQoJ2RvY2dlbicpPy5zdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5leGVjQXJncz8uaW5jbHVkZXMoJ2pzaWktZG9jZ2VuJykpO1xuXG4gIHJldHVybiBqc2lpRG9jU3RlcD8uZXhlY0FyZ3M/LlsyXTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kV29ya2Zsb3dCb290c3RyYXBTdGVwczxUIGV4dGVuZHMgTGVybmFQcm9qZWN0T3B0aW9ucyB8IExlcm5hVHlwZXNjcmlwdFByb2plY3RPcHRpb25zPihvcHRpb25zOiBUKTogVCB7XG4gIGlmICghb3B0aW9ucy5zaW5jZUxhc3RSZWxlYXNlKSB7cmV0dXJuIG9wdGlvbnM7fVxuXG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICB3b3JrZmxvd0Jvb3RzdHJhcFN0ZXBzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdGZXRjaCB0YWdzJyxcbiAgICAgICAgcnVuOiAnaWYgWyAkKGdpdCByZXYtcGFyc2UgLS1pcy1zaGFsbG93LXJlcG9zaXRvcnkpICE9IFwiZmFsc2VcIiBdIDsgdGhlbiBnaXQgZmV0Y2ggb3JpZ2luIG1haW4gLS10YWdzIC0tdW5zaGFsbG93OyBmaScsXG4gICAgICAgIGlmOiAnJHt7IGdpdGh1Yi53b3JrZmxvdyA9PSBcXCdidWlsZFxcJyB9fScsXG4gICAgICB9LFxuICAgICAgLi4ub3B0aW9ucy53b3JrZmxvd0Jvb3RzdHJhcFN0ZXBzID8/IFtdLFxuICAgIF0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlT3B0aW9uczxUIGV4dGVuZHMgTGVybmFQcm9qZWN0T3B0aW9ucyB8IExlcm5hVHlwZXNjcmlwdFByb2plY3RPcHRpb25zPihvcHRpb25zOiBUKTogVCB7XG4gIGlmIChvcHRpb25zLnBhY2thZ2VNYW5hZ2VyICE9PSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTSkge1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBwbnBtT3B0aW9uczoge1xuICAgICAgd29ya3NwYWNlWWFtbE9wdGlvbnM6IHtcbiAgICAgICAgc2hhcmVkV29ya3NwYWNlTG9ja2ZpbGU6IHRydWUsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHNPcHRpb25zKG9wdGlvbnM6IExlcm5hVHlwZXNjcmlwdFByb2plY3RPcHRpb25zKTogTGVybmFUeXBlc2NyaXB0UHJvamVjdE9wdGlvbnMge1xuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgc3JjZGlyOiBvcHRpb25zLnNyY2RpciA/PyAncHJvamVucmMnLFxuICB9O1xufVxuXG5jb25zdCBsb2NrZWRUYXNrTmFtZXMgPSBbJ2J1aWxkJywgJ3VwZ3JhZGUnLCAndXBncmFkZS1wcm9qZW4nLCAnY2xvYmJlcicsICdwb3N0LXVwZ3JhZGUnXTtcblxuaW50ZXJmYWNlIElMZXJuYVByb2plY3Qge1xuICByZWFkb25seSBzaW5jZUxhc3RSZWxlYXNlOiBib29sZWFuO1xuICByZWFkb25seSB1c2VOeDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaW5kZXBlbmRlbnRNb2RlOiBib29sZWFuO1xuICByZWFkb25seSB1c2VXb3Jrc3BhY2VzOiBib29sZWFuO1xuICByZWFkb25seSBkb2NzRGlyZWN0b3J5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRvY2dlbj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRhc2tDdXN0b21pemF0aW9uczogVGFza0N1c3RvbWl6YXRpb25zO1xuICByZWFkb25seSBwbnBtVmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgc2luY2VHaXRSZWZlcmVuY2VFbnZpcm9ubWVudFZhcmlhYmxlTmFtZT86IHN0cmluZztcblxuICBjdXN0b21pemVUYXNrKHRhc2tOYW1lOiBzdHJpbmcsIGN1c3RvbWl6YXRpb246IFRhc2tDdXN0b21pemF0aW9uKTogdm9pZDtcbn1cblxuLyoqXG4gKiBAcGppZCBsZXJuYS1wcm9qZWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBMZXJuYVByb2plY3QgZXh0ZW5kcyBqYXZhc2NyaXB0Lk5vZGVQcm9qZWN0IGltcGxlbWVudHMgSUxlcm5hUHJvamVjdCB7XG5cbiAgcHJpdmF0ZSBwcm9qZW5yY1RzOiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk6IHN0cmluZztcbiAgcmVhZG9ubHkgZG9jZ2VuOiBib29sZWFuO1xuICByZWFkb25seSBzaW5jZUxhc3RSZWxlYXNlOiBib29sZWFuO1xuICByZWFkb25seSB1c2VOeDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaW5kZXBlbmRlbnRNb2RlOiBib29sZWFuO1xuICByZWFkb25seSB1c2VXb3Jrc3BhY2VzOiBib29sZWFuO1xuICByZWFkb25seSB0YXNrQ3VzdG9taXphdGlvbnM6IFRhc2tDdXN0b21pemF0aW9ucztcbiAgcmVhZG9ubHkgcG5wbVZlcnNpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBmYWN0b3J5OiBMZXJuYVByb2plY3RGYWN0b3J5O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IExlcm5hUHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcihhcHBlbmRXb3JrZmxvd0Jvb3RzdHJhcFN0ZXBzKHBhcnNlT3B0aW9ucyhvcHRpb25zKSkpO1xuXG4gICAgaWYgKG9wdGlvbnMucHJvamVucmNUcykge3RoaXMuYWRkRGV2RGVwcygndHMtbm9kZScsICd0eXBlc2NyaXB0Jyk7fVxuXG4gICAgdGhpcy5kb2NzRGlyZWN0b3J5ID0gb3B0aW9ucy5kb2NzRGlyZWN0b3J5ID8/ICdkb2NzJztcbiAgICB0aGlzLmRvY2dlbiA9IG9wdGlvbnMuZG9jZ2VuID8/IGZhbHNlO1xuICAgIHRoaXMuc2luY2VMYXN0UmVsZWFzZSA9IG9wdGlvbnMuc2luY2VMYXN0UmVsZWFzZSA/PyBmYWxzZTtcbiAgICB0aGlzLnVzZU54ID0gb3B0aW9ucy51c2VOeCA/PyBmYWxzZTtcbiAgICB0aGlzLnByb2plbnJjVHMgPSBvcHRpb25zLnByb2plbnJjVHMgPz8gZmFsc2U7XG4gICAgdGhpcy5pbmRlcGVuZGVudE1vZGUgPSBvcHRpb25zLmluZGVwZW5kZW50TW9kZSA/PyBmYWxzZTtcbiAgICB0aGlzLnVzZVdvcmtzcGFjZXMgPSBvcHRpb25zLnVzZVdvcmtzcGFjZXMgPz8gZmFsc2U7XG4gICAgdGhpcy50YXNrQ3VzdG9taXphdGlvbnMgPSBvcHRpb25zLnRhc2tDdXN0b21pemF0aW9ucyA/PyB7fTtcbiAgICB0aGlzLnBucG1WZXJzaW9uID0gb3B0aW9ucy5wbnBtVmVyc2lvbjtcbiAgICB0aGlzLnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWUgPSBvcHRpb25zLnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU7XG5cbiAgICB0aGlzLmZhY3RvcnkgPSBuZXcgTGVybmFQcm9qZWN0RmFjdG9yeSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY3VzdG9taXphdGlvbiBmb3IgdGhlIHNwZWNpZmllZCB0YXNrXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrTmFtZSBOYW1lIG9mIHRoZSB0YXNrIHRvIGN1c3RvbWl6ZVxuICAgKiBAcGFyYW0gY3VzdG9taXphdGlvbiBUYXNrQ3VzdG9taXphdGlvbiBvcHRpb25zXG4gICAqL1xuICBjdXN0b21pemVUYXNrKHRhc2tOYW1lOiBzdHJpbmcsIGN1c3RvbWl6YXRpb246IFRhc2tDdXN0b21pemF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy50YXNrQ3VzdG9taXphdGlvbnNbdGFza05hbWVdID0gY3VzdG9taXphdGlvbjtcbiAgfVxuXG4gIHByZVN5bnRoZXNpemUoKSB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuICAgIGNvbnN0IHByb2plbkNvbW1hbmQgPSB0aGlzLnByb2plbnJjVHMgPyAndHMtbm9kZSAtLXNraXAtcHJvamVjdCAucHJvamVucmMudHMnIDogJ25vZGUgLnByb2plbnJjLmpzJztcbiAgICBjb25zdCB7IGRlZmF1bHRUYXNrIH0gPSB0aGlzO1xuICAgIGlmICghZGVmYXVsdFRhc2spIHt0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGRlZmF1bHQgdGFzaycpO31cbiAgICBkZWZhdWx0VGFzay5yZXNldChwcm9qZW5Db21tYW5kKTtcblxuICAgIHRoaXMuZmFjdG9yeS5idWlsZCgpO1xuICB9XG59XG5cbi8qKlxuICogQHBqaWQgbGVybmEtdHMtcHJvamVjdFxuICovXG5leHBvcnQgY2xhc3MgTGVybmFUeXBlc2NyaXB0UHJvamVjdCBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3QgaW1wbGVtZW50cyBJTGVybmFQcm9qZWN0IHtcbiAgcmVhZG9ubHkgc2luY2VMYXN0UmVsZWFzZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlTng6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGluZGVwZW5kZW50TW9kZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlV29ya3NwYWNlczogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGFza0N1c3RvbWl6YXRpb25zOiBUYXNrQ3VzdG9taXphdGlvbnM7XG4gIHJlYWRvbmx5IHBucG1WZXJzaW9uPzogc3RyaW5nO1xuICByZWFkb25seSBzaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZmFjdG9yeTogTGVybmFQcm9qZWN0RmFjdG9yeTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBMZXJuYVR5cGVzY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKGFwcGVuZFdvcmtmbG93Qm9vdHN0cmFwU3RlcHMocGFyc2VUc09wdGlvbnMocGFyc2VPcHRpb25zKG9wdGlvbnMpKSkpO1xuXG4gICAgdGhpcy5zaW5jZUxhc3RSZWxlYXNlID0gb3B0aW9ucy5zaW5jZUxhc3RSZWxlYXNlID8/IGZhbHNlO1xuICAgIHRoaXMudXNlTnggPSBvcHRpb25zLnVzZU54ID8/IGZhbHNlO1xuICAgIHRoaXMuaW5kZXBlbmRlbnRNb2RlID0gb3B0aW9ucy5pbmRlcGVuZGVudE1vZGUgPz8gZmFsc2U7XG4gICAgdGhpcy51c2VXb3Jrc3BhY2VzID0gb3B0aW9ucy51c2VXb3Jrc3BhY2VzID8/IGZhbHNlO1xuICAgIHRoaXMudGFza0N1c3RvbWl6YXRpb25zID0gb3B0aW9ucy50YXNrQ3VzdG9taXphdGlvbnMgPz8ge307XG4gICAgdGhpcy5wbnBtVmVyc2lvbiA9IG9wdGlvbnMucG5wbVZlcnNpb247XG4gICAgdGhpcy5zaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lID0gb3B0aW9ucy5zaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lO1xuXG4gICAgaWYgKCEob3B0aW9ucy5oYXNSb290U291cmNlQ29kZSA/PyBmYWxzZSkpIHt0aGlzLnRhc2tzLnRyeUZpbmQoJ2NvbXBpbGUnKT8ucmVzZXQoKTt9XG5cbiAgICB0aGlzLnRhc2tzLnRyeUZpbmQoJ2RvY2dlbicpPy5yZXNldCgpO1xuXG4gICAgdGhpcy5mYWN0b3J5ID0gbmV3IExlcm5hUHJvamVjdEZhY3RvcnkodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGN1c3RvbWl6YXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdGFza1xuICAgKlxuICAgKiBAcGFyYW0gdGFza05hbWUgTmFtZSBvZiB0aGUgdGFzayB0byBjdXN0b21pemVcbiAgICogQHBhcmFtIGN1c3RvbWl6YXRpb24gVGFza0N1c3RvbWl6YXRpb24gb3B0aW9uc1xuICAgKi9cbiAgY3VzdG9taXplVGFzayh0YXNrTmFtZTogc3RyaW5nLCBjdXN0b21pemF0aW9uOiBUYXNrQ3VzdG9taXphdGlvbik6IHZvaWQge1xuICAgIHRoaXMudGFza0N1c3RvbWl6YXRpb25zW3Rhc2tOYW1lXSA9IGN1c3RvbWl6YXRpb247XG4gIH1cblxuICBwcmVTeW50aGVzaXplKCkge1xuICAgIHN1cGVyLnByZVN5bnRoZXNpemUoKTtcbiAgICB0aGlzLmZhY3RvcnkuYnVpbGQoKTtcbiAgfVxufVxuXG5jbGFzcyBMZXJuYVByb2plY3RGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9qZWN0OiBJTGVybmFQcm9qZWN0ICYgamF2YXNjcmlwdC5Ob2RlUHJvamVjdCkge1xuICAgIHByb2plY3QuYWRkRGV2RGVwcygnbGVybmEtcHJvamVuJywgJ2xlcm5hJyk7XG4gIH1cblxuICBidWlsZCgpIHtcbiAgICB0aGlzLnByb2plY3QucGFja2FnZVRhc2sucmVzZXQoYG1rZGlyIC1wICR7dGhpcy5wcm9qZWN0LmFydGlmYWN0c0phdmFzY3JpcHREaXJlY3Rvcnl9YCk7XG4gICAgdGhpcy5wcm9qZWN0LnByZUNvbXBpbGVUYXNrLmV4ZWMoYGxlcm5hLXByb2plbiBjbGVhbi1kaXN0ICR7dGhpcy5wcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeX1gKTtcbiAgICB0aGlzLmFwcGVuZExlcm5hQ29tbWFuZHMoKTtcbiAgICB0aGlzLmFkZENyb3NzTGlua3MoKTtcbiAgICB0aGlzLnVwZGF0ZVN1YlByb2plY3RzKCk7XG4gICAgdGhpcy5hZGREb2N1bWVudHNJbmRleCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWJQcm9qZWN0UGF0aChzdWJQcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgcmV0dXJuIHBhdGgucmVsYXRpdmUodGhpcy5wcm9qZWN0Lm91dGRpciwgc3ViUHJvamVjdC5vdXRkaXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDcm9zc0xpbmtzKCkge1xuXG4gICAgY29uc3QgbGVybmFDb25maWc6IGFueSA9IHtcbiAgICAgIHVzZU54OiB0aGlzLnByb2plY3QudXNlTngsXG4gICAgICB2ZXJzaW9uOiB0aGlzLnByb2plY3QuaW5kZXBlbmRlbnRNb2RlID8gJ2luZGVwZW5kZW50JyA6ICcwLjAuMCcsXG4gICAgfTtcblxuICAgIGNvbnN0IHBhY2thZ2VzID0gdGhpcy5wcm9qZWN0LnN1YnByb2plY3RzLm1hcChzdWJQcm9qZWN0ID0+IHRoaXMuZ2V0U3ViUHJvamVjdFBhdGgoc3ViUHJvamVjdCkpO1xuXG4gICAgaWYgKHRoaXMucHJvamVjdC51c2VXb3Jrc3BhY2VzKSB7XG4gICAgICBpZiAodGhpcy5wcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IGphdmFzY3JpcHQuTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0pIHtcbiAgICAgICAgY29uc3Qgd29ya3NwYWNlRmlsZU5hbWUgPSAncG5wbS13b3Jrc3BhY2UueWFtbCc7XG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLnByb2plY3QudHJ5RmluZE9iamVjdEZpbGUod29ya3NwYWNlRmlsZU5hbWUpID8/IG5ldyBZYW1sRmlsZSh0aGlzLnByb2plY3QsIHdvcmtzcGFjZUZpbGVOYW1lLCB7fSk7XG4gICAgICAgIGZpbGUucGF0Y2goSnNvblBhdGNoLmFkZCgnL3BhY2thZ2VzJywgcGFja2FnZXMpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKCd3b3Jrc3BhY2VzJywgcGFja2FnZXMpO1xuICAgIH0gZWxzZSB7bGVybmFDb25maWcucGFja2FnZXMgPSBwYWNrYWdlczt9XG5cblxuICAgIG5ldyBKc29uRmlsZSh0aGlzLnByb2plY3QsICdsZXJuYS5qc29uJywge1xuICAgICAgb2JqOiBsZXJuYUNvbmZpZyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kTGVybmFDb21tYW5kcygpIHtcbiAgICBjb25zdCB1cGdyYWRlVGFza05hbWUgPSAndXBncmFkZSc7XG4gICAgY29uc3QgcG9zdFVwZ3JhZGVUYXNrTmFtZSA9ICdwb3N0LXVwZ3JhZGUnO1xuICAgIGNvbnN0IHBvc3RVcGdyYWRlVGFzayA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKHBvc3RVcGdyYWRlVGFza05hbWUpO1xuICAgIGNvbnN0IHVwZ3JhZGVMZXJuYUNvbW1hbmQgPSB0aGlzLmdldExlcm5hQ29tbWFuZCh1cGdyYWRlVGFza05hbWUsIHsgc2luY2VMYXN0UmVsZWFzZTogZmFsc2UgfSk7XG4gICAgcG9zdFVwZ3JhZGVUYXNrPy5wcmVwZW5kRXhlYyh1cGdyYWRlTGVybmFDb21tYW5kLmNvbW1hbmQsIHsgc2hlbGw6IHVwZ3JhZGVMZXJuYUNvbW1hbmQuc2hlbGwgfSk7XG4gICAgcG9zdFVwZ3JhZGVUYXNrPy5leGVjKCducHggcHJvamVuJyk7XG5cbiAgICB0aGlzLnByb2plY3QudGFza3MuYWxsXG4gICAgICAuZm9yRWFjaCh0YXNrID0+IHtcbiAgICAgICAgY29uc3QgY3VzdG9taXphdGlvbiA9IHRoaXMucHJvamVjdC50YXNrQ3VzdG9taXphdGlvbnNbdGFzay5uYW1lXTtcbiAgICAgICAgY29uc3QgYWRkTGVybmFTdGVwID0gY3VzdG9taXphdGlvbj8uYWRkTGVybmFTdGVwID8/IHRydWU7XG5cbiAgICAgICAgaWYgKGxvY2tlZFRhc2tOYW1lcy5pbmNsdWRlcyh0YXNrLm5hbWUpIHx8ICFhZGRMZXJuYVN0ZXApIHtyZXR1cm47fVxuXG4gICAgICAgIGNvbnN0IGxlcm5hQ29tbWFuZCA9IHRoaXMuZ2V0TGVybmFDb21tYW5kKHRhc2submFtZSwgY3VzdG9taXphdGlvbik7XG4gICAgICAgIHRhc2suZXhlYyhsZXJuYUNvbW1hbmQuY29tbWFuZCwgeyBzaGVsbDogbGVybmFDb21tYW5kLnNoZWxsIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldExlcm5hQ29tbWFuZCh0YXNrTmFtZTogc3RyaW5nLCBjdXN0b21pemF0aW9uPzogVGFza0N1c3RvbWl6YXRpb24pIHtcbiAgICBjb25zdCBtYWluQ29tbWFuZCA9IGBsZXJuYSBydW4gJHt0YXNrTmFtZX0gLS1zdHJlYW1gO1xuICAgIGNvbnN0IHVzZVNpbmNlRmxhZyA9IGN1c3RvbWl6YXRpb24/LnNpbmNlTGFzdFJlbGVhc2UgPz8gdGhpcy5wcm9qZWN0LnNpbmNlTGFzdFJlbGVhc2U7XG5cbiAgICBjb25zdCBpbmNsdWRlUGF0dGVybnMgPSBjdXN0b21pemF0aW9uPy5pbmNsdWRlID8/IFtdO1xuICAgIGNvbnN0IGV4Y2x1ZGVQYXR0ZXJucyA9IGN1c3RvbWl6YXRpb24/LmV4Y2x1ZGUgPz8gW107XG5cbiAgICBjb25zdCBzY29wZUZsYWdzID0gaW5jbHVkZVBhdHRlcm5zLm1hcCgoZ2xvYikgPT4gYCAtLXNjb3BlICR7Z2xvYn1gKS5qb2luKCcnKTtcbiAgICBjb25zdCBpZ25vcmVGbGFncyA9IGV4Y2x1ZGVQYXR0ZXJucy5tYXAoKGdsb2IpID0+IGAgLS1pZ25vcmUgJHtnbG9ifWApLmpvaW4oJycpO1xuXG5cbiAgICBjb25zdCBwb3N0Q29tbWFuZCA9IHVzZVNpbmNlRmxhZyA/IGAgLS1zaW5jZSAke3RoaXMuZ2V0U2luY2VDb21tYW5kKCl9YCA6ICcnO1xuICAgIGNvbnN0IGNvbW1hbmQgPSBgJHttYWluQ29tbWFuZH0ke3Bvc3RDb21tYW5kfSR7c2NvcGVGbGFnc30ke2lnbm9yZUZsYWdzfWA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbW1hbmQsXG4gICAgICBzaGVsbDogdXNlU2luY2VGbGFnPyBUYXNrU2hlbGwuYmFzaCgpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFNpbmNlQ29tbWFuZCgpIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0LnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWUpIHtcbiAgICAgIHJldHVybiBgXFwkeyR7dGhpcy5wcm9qZWN0LnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWV9Oi0kKGdpdCBkZXNjcmliZSAtLWFiYnJldj0wIC0tdGFncyAtLW1hdGNoIFwidipcIiBIRUFEXil9YDtcbiAgICB9XG4gICAgcmV0dXJuICckKGdpdCBkZXNjcmliZSAtLWFiYnJldj0wIC0tdGFncyAtLW1hdGNoIFwidipcIiBIRUFEXiknO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdWJQcm9qZWN0cygpIHtcbiAgICBjb25zdCBidW1wVGFzayA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKCdidW1wJyk7XG4gICAgY29uc3QgdW5idW1wVGFzayA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKCd1bmJ1bXAnKTtcblxuICAgIHRoaXMucHJvamVjdC5zdWJwcm9qZWN0cy5mb3JFYWNoKChzdWJQcm9qZWN0KSA9PiB7XG4gICAgICBjb25zdCBzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeSA9IGdldERvY3NEaXJlY3Rvcnkoc3ViUHJvamVjdCk7XG4gICAgICBjb25zdCBzdWJQcm9qZWN0UGF0aCA9IHRoaXMuZ2V0U3ViUHJvamVjdFBhdGgoc3ViUHJvamVjdCk7XG4gICAgICBpZiAodGhpcy5wcm9qZWN0LmRvY2dlbiAmJiBzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeSkge3RoaXMucHJvamVjdC5wb3N0Q29tcGlsZVRhc2suZXhlYyhgbGVybmEtcHJvamVuIG1vdmUtZG9jcyAke3RoaXMucHJvamVjdC5kb2NzRGlyZWN0b3J5fSAke3N1YlByb2plY3RQYXRofSAke3N1YlByb2plY3REb2NzRGlyZWN0b3J5fWApO31cblxuICAgICAgY29uc3QgYXJ0aWZhY3RzRGlyZWN0b3J5ID0gZ2V0QXJ0aWZhY3RzRGlyZWN0b3J5KHN1YlByb2plY3QpO1xuXG4gICAgICB0aGlzLnByb2plY3QucGFja2FnZVRhc2suZXhlYyhgbGVybmEtcHJvamVuIGNvcHktZGlzdCAke3N1YlByb2plY3RQYXRofS8ke2FydGlmYWN0c0RpcmVjdG9yeX0gJHt0aGlzLnByb2plY3QuYXJ0aWZhY3RzRGlyZWN0b3J5fWApO1xuXG4gICAgICBzdWJQcm9qZWN0LmRlZmF1bHRUYXNrPy5yZXNldCgpO1xuXG4gICAgICBjb25zdCBidW1wRW52cyA9IHtcbiAgICAgICAgT1VURklMRTogJ3BhY2thZ2UuanNvbicsXG4gICAgICAgIENIQU5HRUxPRzogYCR7YXJ0aWZhY3RzRGlyZWN0b3J5fS9jaGFuZ2Vsb2cubWRgLFxuICAgICAgICBCVU1QRklMRTogYCR7YXJ0aWZhY3RzRGlyZWN0b3J5fS92ZXJzaW9uLnR4dGAsXG4gICAgICAgIFJFTEVBU0VUQUc6IGAke2FydGlmYWN0c0RpcmVjdG9yeX0vcmVsZWFzZXRhZy50eHRgLFxuICAgICAgICBSRUxFQVNFX1RBR19QUkVGSVg6ICcnLFxuICAgICAgfTtcblxuICAgICAgaWYgKGJ1bXBUYXNrICYmICFzdWJQcm9qZWN0LnRhc2tzLnRyeUZpbmQoJ2J1bXAnKSkge1xuICAgICAgICBjb25zdCBzdWJCdW1wVGFzayA9IHN1YlByb2plY3QuYWRkVGFzayhidW1wVGFzay5uYW1lLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGJ1bXBUYXNrLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGNvbmRpdGlvbjogYnVtcFRhc2suY29uZGl0aW9uLFxuICAgICAgICAgIGVudjogYnVtcEVudnMsXG4gICAgICAgIH0pO1xuICAgICAgICBzdWJCdW1wVGFzay5idWlsdGluKCdyZWxlYXNlL2J1bXAtdmVyc2lvbicpO1xuICAgICAgfVxuXG4gICAgICBpZiAodW5idW1wVGFzayAmJiAhc3ViUHJvamVjdC50YXNrcy50cnlGaW5kKCd1bmJ1bXAnKSkge1xuICAgICAgICBjb25zdCBzdWJCdW1wVGFzayA9IHN1YlByb2plY3QuYWRkVGFzayh1bmJ1bXBUYXNrLm5hbWUsIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdW5idW1wVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgICBjb25kaXRpb246IHVuYnVtcFRhc2suY29uZGl0aW9uLFxuICAgICAgICAgIGVudjogYnVtcEVudnMsXG4gICAgICAgIH0pO1xuICAgICAgICBzdWJCdW1wVGFzay5idWlsdGluKCdyZWxlYXNlL3Jlc2V0LXZlcnNpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRG9jdW1lbnRzSW5kZXgoKSB7XG4gICAgaWYgKCF0aGlzLnByb2plY3QuZG9jZ2VuKSB7cmV0dXJuO31cblxuICAgIGNvbnN0IHN1YlByb2plY3RzRG9jczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgY29uc3QgaW5kZXhNYXJrZG93biA9IG5ldyBTb3VyY2VDb2RlKHRoaXMucHJvamVjdCwgYCR7dGhpcy5wcm9qZWN0LmRvY3NEaXJlY3Rvcnl9L2luZGV4Lm1kYCk7XG4gICAgY29uc3QgcmVhZG1lTWFya2Rvd24gPSBuZXcgU291cmNlQ29kZSh0aGlzLnByb2plY3QsIGAke3RoaXMucHJvamVjdC5kb2NzRGlyZWN0b3J5fS9SRUFETUUubWRgKTtcblxuICAgIHRoaXMucHJvamVjdC5zdWJwcm9qZWN0cy5mb3JFYWNoKChzdWJQcm9qZWN0KSA9PiB7XG4gICAgICBjb25zdCBzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeSA9IGdldERvY3NEaXJlY3Rvcnkoc3ViUHJvamVjdCk7XG4gICAgICBpZiAoIXN1YlByb2plY3REb2NzRGlyZWN0b3J5KSB7cmV0dXJuO31cblxuICAgICAgY29uc3Qgc3ViUHJvamVjdFBhdGggPSB0aGlzLmdldFN1YlByb2plY3RQYXRoKHN1YlByb2plY3QpO1xuICAgICAgY29uc3QganNpaURvY3NPdXRwdXQgPSBleHRyYWN0SnNpaURvY3NPdXRwdXQoc3ViUHJvamVjdC50YXNrcyk7XG4gICAgICBpZiAoanNpaURvY3NPdXRwdXQpIHtcbiAgICAgICAgY29uc3QgZG9jc1BhdGggPSBgJHtzdWJQcm9qZWN0UGF0aH0vJHtqc2lpRG9jc091dHB1dH1gO1xuICAgICAgICBpbmRleE1hcmtkb3duLmxpbmUoYC0gIyMgWyR7c3ViUHJvamVjdC5uYW1lfV0oJHtkb2NzUGF0aH0pYCk7XG4gICAgICAgIHN1YlByb2plY3RzRG9jc1tzdWJQcm9qZWN0Lm5hbWVdID0gZG9jc1BhdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJQcm9qZWN0c0RvY3Nbc3ViUHJvamVjdC5uYW1lXSA9IGAke3N1YlByb2plY3RQYXRofS9pbmRleC5odG1sYDtcbiAgICAgIH1cbiAgICAgIHJlYWRtZU1hcmtkb3duLmxpbmUoYC0gIyMgWyR7c3ViUHJvamVjdC5uYW1lfV0oLi4vJHtzdWJQcm9qZWN0UGF0aH0vUkVBRE1FLm1kKWApO1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW5kZXhIdG1sID0gbmV3IFNvdXJjZUNvZGUodGhpcy5wcm9qZWN0LCBgJHt0aGlzLnByb2plY3QuZG9jc0RpcmVjdG9yeX0vaW5kZXguaHRtbGApO1xuICAgIGluZGV4SHRtbC5saW5lKCc8IURPQ1RZUEUgaHRtbD4nKTtcbiAgICBpbmRleEh0bWwubGluZSgnPGh0bWw+Jyk7XG4gICAgaW5kZXhIdG1sLm9wZW4oJzxib2R5PicpO1xuICAgIGluZGV4SHRtbC5vcGVuKCc8dWw+Jyk7XG4gICAgT2JqZWN0LmVudHJpZXMoc3ViUHJvamVjdHNEb2NzKS5mb3JFYWNoKChbbmFtZSwgZG9jc1BhdGhdKSA9PiB7XG4gICAgICBpbmRleEh0bWwub3BlbignPGxpPicpO1xuICAgICAgaW5kZXhIdG1sLm9wZW4oYDxhIGhyZWY9XCIke2RvY3NQYXRofVwiPmApO1xuICAgICAgaW5kZXhIdG1sLmxpbmUobmFtZSk7XG4gICAgICBpbmRleEh0bWwuY2xvc2UoJzwvYT4nKTtcbiAgICAgIGluZGV4SHRtbC5jbG9zZSgnPC9saT4nKTtcbiAgICB9KTtcbiAgICBpbmRleEh0bWwuY2xvc2UoJzwvdWw+Jyk7XG4gICAgaW5kZXhIdG1sLmNsb3NlKCc8L2JvZHk+Jyk7XG4gICAgaW5kZXhIdG1sLmxpbmUoJzwvaHRtbD4nKTtcbiAgICBpbmRleEh0bWwubGluZSgpO1xuXG4gICAgdGhpcy5wcm9qZWN0LmdpdGF0dHJpYnV0ZXMuYWRkQXR0cmlidXRlcyhgLyR7dGhpcy5wcm9qZWN0LmRvY3NEaXJlY3Rvcnl9LyoqYCwgJ2xpbmd1aXN0LWdlbmVyYXRlZCcpO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -33,14 +33,14 @@
|
|
|
33
33
|
"jsii-docgen": "^10.5.0",
|
|
34
34
|
"jsii-pacmak": "^1.138.0",
|
|
35
35
|
"jsii-rosetta": "5.9.x",
|
|
36
|
-
"projen": "^0.101.
|
|
36
|
+
"projen": "^0.101.11",
|
|
37
37
|
"ts-jest": "^29.4.11",
|
|
38
38
|
"ts-node": "^10.9.2",
|
|
39
39
|
"typescript": "^5.9.3"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"constructs": "^10.6.0",
|
|
43
|
-
"projen": "^0.101.
|
|
43
|
+
"projen": "^0.101.11"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"commander": "^11.1.0",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
74
74
|
},
|
|
75
|
-
"version": "0.1.
|
|
75
|
+
"version": "0.1.857",
|
|
76
76
|
"jest": {
|
|
77
77
|
"coverageProvider": "v8",
|
|
78
78
|
"testMatch": [
|