@jjrawlins/cdk-diff-pr-github-action 1.3.13 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +17 -17
- package/lib/CdkDiffIamTemplate.js +6 -3
- package/lib/CdkDiffIamTemplateStackSet.js +4 -3
- package/lib/CdkDiffStackWorkflow.js +1 -1
- package/lib/CdkDriftDetectionWorkflow.js +1 -1
- package/lib/CdkDriftIamTemplate.js +2 -2
- package/lib/bin/cdk-changeset-script.js +153 -20
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -3576,7 +3576,7 @@
|
|
|
3576
3576
|
},
|
|
3577
3577
|
"locationInModule": {
|
|
3578
3578
|
"filename": "src/CdkDiffIamTemplate.ts",
|
|
3579
|
-
"line":
|
|
3579
|
+
"line": 507
|
|
3580
3580
|
},
|
|
3581
3581
|
"parameters": [
|
|
3582
3582
|
{
|
|
@@ -3590,7 +3590,7 @@
|
|
|
3590
3590
|
"kind": "class",
|
|
3591
3591
|
"locationInModule": {
|
|
3592
3592
|
"filename": "src/CdkDiffIamTemplate.ts",
|
|
3593
|
-
"line":
|
|
3593
|
+
"line": 506
|
|
3594
3594
|
},
|
|
3595
3595
|
"name": "CdkDiffIamTemplate",
|
|
3596
3596
|
"symbolId": "src/CdkDiffIamTemplate:CdkDiffIamTemplate"
|
|
@@ -3825,7 +3825,7 @@
|
|
|
3825
3825
|
"kind": "interface",
|
|
3826
3826
|
"locationInModule": {
|
|
3827
3827
|
"filename": "src/CdkDiffIamTemplate.ts",
|
|
3828
|
-
"line":
|
|
3828
|
+
"line": 493
|
|
3829
3829
|
},
|
|
3830
3830
|
"name": "CdkDiffIamTemplateProps",
|
|
3831
3831
|
"properties": [
|
|
@@ -3838,7 +3838,7 @@
|
|
|
3838
3838
|
"immutable": true,
|
|
3839
3839
|
"locationInModule": {
|
|
3840
3840
|
"filename": "src/CdkDiffIamTemplate.ts",
|
|
3841
|
-
"line":
|
|
3841
|
+
"line": 495
|
|
3842
3842
|
},
|
|
3843
3843
|
"name": "project",
|
|
3844
3844
|
"type": {
|
|
@@ -3854,7 +3854,7 @@
|
|
|
3854
3854
|
"immutable": true,
|
|
3855
3855
|
"locationInModule": {
|
|
3856
3856
|
"filename": "src/CdkDiffIamTemplate.ts",
|
|
3857
|
-
"line":
|
|
3857
|
+
"line": 497
|
|
3858
3858
|
},
|
|
3859
3859
|
"name": "outputPath",
|
|
3860
3860
|
"optional": true,
|
|
@@ -3879,7 +3879,7 @@
|
|
|
3879
3879
|
},
|
|
3880
3880
|
"locationInModule": {
|
|
3881
3881
|
"filename": "src/CdkDiffIamTemplateStackSet.ts",
|
|
3882
|
-
"line":
|
|
3882
|
+
"line": 546
|
|
3883
3883
|
},
|
|
3884
3884
|
"parameters": [
|
|
3885
3885
|
{
|
|
@@ -3893,7 +3893,7 @@
|
|
|
3893
3893
|
"kind": "class",
|
|
3894
3894
|
"locationInModule": {
|
|
3895
3895
|
"filename": "src/CdkDiffIamTemplateStackSet.ts",
|
|
3896
|
-
"line":
|
|
3896
|
+
"line": 545
|
|
3897
3897
|
},
|
|
3898
3898
|
"name": "CdkDiffIamTemplateStackSet",
|
|
3899
3899
|
"symbolId": "src/CdkDiffIamTemplateStackSet:CdkDiffIamTemplateStackSet"
|
|
@@ -4260,7 +4260,7 @@
|
|
|
4260
4260
|
"kind": "interface",
|
|
4261
4261
|
"locationInModule": {
|
|
4262
4262
|
"filename": "src/CdkDiffIamTemplateStackSet.ts",
|
|
4263
|
-
"line":
|
|
4263
|
+
"line": 509
|
|
4264
4264
|
},
|
|
4265
4265
|
"name": "CdkDiffIamTemplateStackSetProps",
|
|
4266
4266
|
"properties": [
|
|
@@ -4273,7 +4273,7 @@
|
|
|
4273
4273
|
"immutable": true,
|
|
4274
4274
|
"locationInModule": {
|
|
4275
4275
|
"filename": "src/CdkDiffIamTemplateStackSet.ts",
|
|
4276
|
-
"line":
|
|
4276
|
+
"line": 511
|
|
4277
4277
|
},
|
|
4278
4278
|
"name": "project",
|
|
4279
4279
|
"type": {
|
|
@@ -4289,7 +4289,7 @@
|
|
|
4289
4289
|
"immutable": true,
|
|
4290
4290
|
"locationInModule": {
|
|
4291
4291
|
"filename": "src/CdkDiffIamTemplateStackSet.ts",
|
|
4292
|
-
"line":
|
|
4292
|
+
"line": 526
|
|
4293
4293
|
},
|
|
4294
4294
|
"name": "autoDeployment",
|
|
4295
4295
|
"optional": true,
|
|
@@ -4307,7 +4307,7 @@
|
|
|
4307
4307
|
"immutable": true,
|
|
4308
4308
|
"locationInModule": {
|
|
4309
4309
|
"filename": "src/CdkDiffIamTemplateStackSet.ts",
|
|
4310
|
-
"line":
|
|
4310
|
+
"line": 534
|
|
4311
4311
|
},
|
|
4312
4312
|
"name": "delegatedAdmin",
|
|
4313
4313
|
"optional": true,
|
|
@@ -4324,7 +4324,7 @@
|
|
|
4324
4324
|
"immutable": true,
|
|
4325
4325
|
"locationInModule": {
|
|
4326
4326
|
"filename": "src/CdkDiffIamTemplateStackSet.ts",
|
|
4327
|
-
"line":
|
|
4327
|
+
"line": 517
|
|
4328
4328
|
},
|
|
4329
4329
|
"name": "outputPath",
|
|
4330
4330
|
"optional": true,
|
|
@@ -4341,7 +4341,7 @@
|
|
|
4341
4341
|
"immutable": true,
|
|
4342
4342
|
"locationInModule": {
|
|
4343
4343
|
"filename": "src/CdkDiffIamTemplateStackSet.ts",
|
|
4344
|
-
"line":
|
|
4344
|
+
"line": 523
|
|
4345
4345
|
},
|
|
4346
4346
|
"name": "regions",
|
|
4347
4347
|
"optional": true,
|
|
@@ -4363,7 +4363,7 @@
|
|
|
4363
4363
|
"immutable": true,
|
|
4364
4364
|
"locationInModule": {
|
|
4365
4365
|
"filename": "src/CdkDiffIamTemplateStackSet.ts",
|
|
4366
|
-
"line":
|
|
4366
|
+
"line": 514
|
|
4367
4367
|
},
|
|
4368
4368
|
"name": "stackSetName",
|
|
4369
4369
|
"optional": true,
|
|
@@ -4380,7 +4380,7 @@
|
|
|
4380
4380
|
"immutable": true,
|
|
4381
4381
|
"locationInModule": {
|
|
4382
4382
|
"filename": "src/CdkDiffIamTemplateStackSet.ts",
|
|
4383
|
-
"line":
|
|
4383
|
+
"line": 520
|
|
4384
4384
|
},
|
|
4385
4385
|
"name": "targetOrganizationalUnitIds",
|
|
4386
4386
|
"optional": true,
|
|
@@ -5393,6 +5393,6 @@
|
|
|
5393
5393
|
"symbolId": "src/CdkDiffIamTemplateStackSet:StackSetRoleSelection"
|
|
5394
5394
|
}
|
|
5395
5395
|
},
|
|
5396
|
-
"version": "1.
|
|
5397
|
-
"fingerprint": "
|
|
5396
|
+
"version": "1.4.0",
|
|
5397
|
+
"fingerprint": "J1EOWxmcquxx238faYTCw3MiiqqgqlU54KlJ1qfkP6Y="
|
|
5398
5398
|
}
|
|
@@ -115,6 +115,7 @@ class CdkDiffIamTemplateGenerator {
|
|
|
115
115
|
' - cloudformation:DeleteChangeSet',
|
|
116
116
|
' - cloudformation:ListChangeSets',
|
|
117
117
|
' - cloudformation:DescribeStacks',
|
|
118
|
+
' - cloudformation:DescribeStackResourceDrifts',
|
|
118
119
|
' - cloudformation:GetTemplate',
|
|
119
120
|
" Resource: '*'",
|
|
120
121
|
' # CDK bootstrap bucket access (for changeset creation)',
|
|
@@ -227,6 +228,7 @@ class CdkDiffIamTemplateGenerator {
|
|
|
227
228
|
lines.push(' - cloudformation:DeleteChangeSet');
|
|
228
229
|
lines.push(' - cloudformation:ListChangeSets');
|
|
229
230
|
lines.push(' - cloudformation:DescribeStacks');
|
|
231
|
+
lines.push(' - cloudformation:DescribeStackResourceDrifts');
|
|
230
232
|
lines.push(' - cloudformation:GetTemplate');
|
|
231
233
|
lines.push(" Resource: '*'");
|
|
232
234
|
lines.push(' # CDK bootstrap bucket access');
|
|
@@ -320,6 +322,7 @@ class CdkDiffIamTemplateGenerator {
|
|
|
320
322
|
' - cloudformation:DeleteChangeSet',
|
|
321
323
|
' - cloudformation:ListChangeSets',
|
|
322
324
|
' - cloudformation:DescribeStacks',
|
|
325
|
+
' - cloudformation:DescribeStackResourceDrifts',
|
|
323
326
|
' - cloudformation:GetTemplate',
|
|
324
327
|
" Resource: '*'",
|
|
325
328
|
' # CDK bootstrap bucket access (for changeset creation)',
|
|
@@ -394,7 +397,7 @@ class CdkDiffIamTemplateGenerator {
|
|
|
394
397
|
}
|
|
395
398
|
exports.CdkDiffIamTemplateGenerator = CdkDiffIamTemplateGenerator;
|
|
396
399
|
_a = JSII_RTTI_SYMBOL_1;
|
|
397
|
-
CdkDiffIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateGenerator", version: "1.
|
|
400
|
+
CdkDiffIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateGenerator", version: "1.4.0" };
|
|
398
401
|
/**
|
|
399
402
|
* Projen construct that emits a CloudFormation template with minimal IAM permissions
|
|
400
403
|
* for the CDK Diff Stack Workflow.
|
|
@@ -417,5 +420,5 @@ class CdkDiffIamTemplate {
|
|
|
417
420
|
}
|
|
418
421
|
exports.CdkDiffIamTemplate = CdkDiffIamTemplate;
|
|
419
422
|
_b = JSII_RTTI_SYMBOL_1;
|
|
420
|
-
CdkDiffIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplate", version: "1.
|
|
421
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRGlmZklhbVRlbXBsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Nka0RpZmZJYW1UZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFrQztBQW1EbEM7OztHQUdHO0FBQ0gsTUFBYSwyQkFBMkI7SUFDdEM7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBdUM7UUFDN0QsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUM7UUFFckQsaUJBQWlCO1FBQ2pCLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1lBQ3RGLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztZQUMxRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLG9DQUFvQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQUMsZUFBdUIscUNBQXFDO1FBQ3ZGLE9BQU8sNkNBQTZDLFlBQVksOEVBQThFLENBQUM7SUFDakosQ0FBQztJQUVEOztPQUVHO0lBQ0ssTUFBTSxDQUFDLDRCQUE0QixDQUFDLEtBQXVDO1FBQ2pGLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksZ0JBQWdCLENBQUM7UUFDNUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsd0JBQXdCLElBQUksS0FBSyxDQUFDO1FBQ2pFLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFXLENBQUM7UUFFckMsTUFBTSxLQUFLLEdBQWE7WUFDdEIsd0NBQXdDO1lBQ3hDLGdGQUFnRjtZQUNoRixFQUFFO1lBQ0YsWUFBWTtTQUNiLENBQUM7UUFFRix1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELDREQUE0RDtRQUM1RCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFdEcsZ0RBQWdEO1FBQ2hELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFckUsVUFBVTtRQUNWLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDZixLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQztRQUNsRCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUMsQ0FBQztRQUVuRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssTUFBTSxDQUFDLG9DQUFvQyxDQUFDLEtBQXVDO1FBQ3pGLE1BQU0sS0FBSyxHQUFHO1lBQ1osd0NBQXdDO1lBQ3hDLCtEQUErRDtZQUMvRCxFQUFFO1lBQ0YsYUFBYTtZQUNiLHNCQUFzQjtZQUN0QixrQkFBa0I7WUFDbEIsNkZBQTZGO1lBQzdGLGlCQUFpQixLQUFLLENBQUMsV0FBVyxHQUFHO1lBQ3JDLEVBQUU7WUFDRixZQUFZO1lBQ1osa0ZBQWtGO1lBQ2xGLHFCQUFxQjtZQUNyQiwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBRztZQUMxQyxpQ0FBaUM7WUFDakMsK0JBQStCO1lBQy9CLG9CQUFvQjtZQUNwQiwyQkFBMkI7WUFDM0Isd0JBQXdCO1lBQ3hCLDJDQUEyQztZQUMzQyxvQ0FBb0M7WUFDcEMsd0JBQXdCO1lBQ3hCLDZCQUE2QjtZQUM3Qix3Q0FBd0MsR0FBRyxLQUFLLENBQUMsVUFBVSxHQUFHLEdBQUc7WUFDakUsaUJBQWlCO1lBQ2pCLHFEQUFxRDtZQUNyRCwyQkFBMkI7WUFDM0IsbUNBQW1DO1lBQ25DLHdCQUF3QjtZQUN4QixxREFBcUQ7WUFDckQsK0JBQStCO1lBQy9CLHlCQUF5QjtZQUN6QixvREFBb0Q7WUFDcEQsc0RBQXNEO1lBQ3RELG9EQUFvRDtZQUNwRCxtREFBbUQ7WUFDbkQsbURBQW1EO1lBQ25ELGdEQUFnRDtZQUNoRCwrQkFBK0I7WUFDL0Isc0VBQXNFO1lBQ3RFLCtCQUErQjtZQUMvQix5QkFBeUI7WUFDekIsa0NBQWtDO1lBQ2xDLGtDQUFrQztZQUNsQyxxQ0FBcUM7WUFDckMsbUNBQW1DO1lBQ25DLDJCQUEyQjtZQUMzQixnRkFBZ0Y7WUFDaEYsa0ZBQWtGO1lBQ2xGLGdEQUFnRDtZQUNoRCwrQkFBK0I7WUFDL0IseUJBQXlCO1lBQ3pCLHNDQUFzQztZQUN0Qyx1Q0FBdUM7WUFDdkMsNkNBQTZDO1lBQzdDLHlHQUF5RztZQUN6RyxpREFBaUQ7WUFDakQsK0JBQStCO1lBQy9CLHlCQUF5QjtZQUN6QixrQ0FBa0M7WUFDbEMsK0JBQStCO1lBQy9CLDRCQUE0QjtZQUM1QixpQ0FBaUM7WUFDakMsMkVBQTJFO1lBQzNFLEVBQUU7WUFDRixVQUFVO1lBQ1Ysd0JBQXdCO1lBQ3hCLGtEQUFrRDtZQUNsRCx5Q0FBeUM7WUFDekMsYUFBYTtZQUNiLDBEQUEwRDtZQUMxRCxFQUFFO1lBQ0YseUJBQXlCO1lBQ3pCLG1EQUFtRDtZQUNuRCxrQ0FBa0M7WUFDbEMsYUFBYTtZQUNiLDJEQUEyRDtTQUM1RCxDQUFDO1FBRUYsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxNQUFNLENBQUMseUJBQXlCO1FBQ3RDLE9BQU87WUFDTCwwQkFBMEI7WUFDMUIsdUJBQXVCO1lBQ3ZCLGtDQUFrQztZQUNsQyxpQkFBaUI7WUFDakIsd0RBQXdEO1lBQ3hELHFCQUFxQjtZQUNyQiw2QkFBNkI7WUFDN0IsdUJBQXVCO1lBQ3ZCLG9EQUFvRDtZQUNwRCxvREFBb0Q7WUFDcEQsRUFBRTtTQUNILENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLHFCQUFxQixDQUNsQyxRQUFnQixFQUNoQixVQUE0QixFQUM1QixtQkFBNEIsS0FBSyxFQUNqQyxpQkFBMEI7UUFFMUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTFELE1BQU0sS0FBSyxHQUFHO1lBQ1osK0RBQStEO1lBQy9ELG1CQUFtQjtZQUNuQiwwQkFBMEI7U0FDM0IsQ0FBQztRQUVGLG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELEtBQUssQ0FBQyxJQUFJLENBQ1IsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUFHLFFBQVEsR0FBRyxHQUFHLEVBQ3BDLGlDQUFpQyxFQUNqQywrQkFBK0IsRUFDL0Isb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQix3QkFBd0IsRUFDeEIsa0hBQWtILEVBQ2xILG1EQUFtRCxFQUNuRCx3QkFBd0IsRUFDeEIsNkJBQTZCLEVBQzdCLGdGQUFnRixFQUNoRiwyQkFBMkIsRUFDM0IsNERBQTRELENBQzdELENBQUM7UUFFRixxQkFBcUI7UUFDckIsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLHdCQUF3QixLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFFRCw4RkFBOEY7UUFDOUYsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTlCLHlGQUF5RjtRQUN6RixLQUFLLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDeEQsS0FBSyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3hDLEtBQUssQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDckMsS0FBSyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzVDLEtBQUssQ0FBQyxJQUFJLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUNyRCxLQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDeEMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsa0VBQWtFLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUNyRyxDQUFDO1FBQ0Qsc0JBQXNCO1FBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsSUFBSSxDQUFDLDJIQUEySCxDQUFDLENBQUM7UUFDeEksS0FBSyxDQUFDLElBQUksQ0FBQyxvSUFBb0ksQ0FBQyxDQUFDO1FBQ2pKLEtBQUssQ0FBQyxJQUFJLENBQUMscUlBQXFJLENBQUMsQ0FBQztRQUNsSixLQUFLLENBQUMsSUFBSSxDQUFDLDJIQUEySCxDQUFDLENBQUM7UUFFeEksNEVBQTRFO1FBQzVFLEtBQUssQ0FBQyxJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUN2RCxLQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ2hELEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNyQyxLQUFLLENBQUMsSUFBSSxDQUFDLDZFQUE2RSxDQUFDLENBQUM7UUFDMUYsS0FBSyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzVDLEtBQUssQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDbkQsS0FBSyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxJQUFJLENBQUMseUdBQXlHLENBQUMsQ0FBQztRQUN0SCxLQUFLLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxDQUFDLENBQUM7UUFDL0UsS0FBSyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzVDLEtBQUssQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDakUsS0FBSyxDQUFDLElBQUksQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQ25FLEtBQUssQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUNqRSxLQUFLLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDaEUsS0FBSyxDQUFDLElBQUksQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQ2hFLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0RBQWdELENBQUMsQ0FBQztRQUM3RCxLQUFLLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDNUMsS0FBSyxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQzFELEtBQUssQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUM1QyxLQUFLLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQy9DLEtBQUssQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUMvQyxLQUFLLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDaEQsS0FBSyxDQUFDLElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3ZELEtBQUssQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN4QyxLQUFLLENBQUMsSUFBSSxDQUFDLCtGQUErRixDQUFDLENBQUM7UUFDNUcsS0FBSyxDQUFDLElBQUksQ0FBQyxpR0FBaUcsQ0FBQyxDQUFDO1FBQzlHLEtBQUssQ0FBQyxJQUFJLENBQUMsaURBQWlELENBQUMsQ0FBQztRQUM5RCxLQUFLLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDNUMsS0FBSyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUMvQyxLQUFLLENBQUMsSUFBSSxDQUFDLHNGQUFzRixDQUFDLENBQUM7UUFDbkcsS0FBSyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUM5QyxLQUFLLENBQUMsSUFBSSxDQUFDLDJFQUEyRSxDQUFDLENBQUM7UUFFeEYsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUE0QjtRQUM1RCxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTlDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzNDLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNqQiwyREFBMkQ7Z0JBQzNELEtBQUssTUFBTSxNQUFNLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQzlCLElBQUksTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO3dCQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsVUFBVSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7b0JBQzVDLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsVUFBVSxDQUFDLEtBQUsscUJBQXFCLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQ3JFLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixnQkFBZ0I7Z0JBQ2hCLEtBQUssTUFBTSxNQUFNLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQzlCLElBQUksTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO3dCQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsVUFBVSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO29CQUNwRCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxtQkFBbUIsTUFBTSxFQUFFLENBQUMsQ0FBQztvQkFDM0UsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNoRCxLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7d0JBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxVQUFVLENBQUMsS0FBSyxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7b0JBQ3JELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsVUFBVSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDM0QsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sTUFBTSxDQUFDLGdDQUFnQyxDQUFDLFFBQWdCO1FBQzlELE9BQU87WUFDTCxrRkFBa0Y7WUFDbEYscUJBQXFCO1lBQ3JCLDBCQUEwQjtZQUMxQiwrQkFBK0I7WUFDL0IsaUJBQWlCO1lBQ2pCLG1CQUFtQixHQUFHLFFBQVEsR0FBRyxHQUFHO1lBQ3BDLGlDQUFpQztZQUNqQywrQkFBK0I7WUFDL0Isb0JBQW9CO1lBQ3BCLDJCQUEyQjtZQUMzQix3QkFBd0I7WUFDeEIsK0NBQStDO1lBQy9DLG9DQUFvQztZQUNwQyxpQkFBaUI7WUFDakIscURBQXFEO1lBQ3JELDJCQUEyQjtZQUMzQixtQ0FBbUM7WUFDbkMsd0JBQXdCO1lBQ3hCLHFEQUFxRDtZQUNyRCwrQkFBK0I7WUFDL0IseUJBQXlCO1lBQ3pCLG9EQUFvRDtZQUNwRCxzREFBc0Q7WUFDdEQsb0RBQW9EO1lBQ3BELG1EQUFtRDtZQUNuRCxtREFBbUQ7WUFDbkQsZ0RBQWdEO1lBQ2hELCtCQUErQjtZQUMvQixzRUFBc0U7WUFDdEUsK0JBQStCO1lBQy9CLHlCQUF5QjtZQUN6QixrQ0FBa0M7WUFDbEMsa0NBQWtDO1lBQ2xDLHFDQUFxQztZQUNyQyxtQ0FBbUM7WUFDbkMsMkJBQTJCO1lBQzNCLGdGQUFnRjtZQUNoRixrRkFBa0Y7WUFDbEYsZ0RBQWdEO1lBQ2hELCtCQUErQjtZQUMvQix5QkFBeUI7WUFDekIsc0NBQXNDO1lBQ3RDLHVDQUF1QztZQUN2Qyw2Q0FBNkM7WUFDN0MseUdBQXlHO1lBQ3pHLGlEQUFpRDtZQUNqRCwrQkFBK0I7WUFDL0IseUJBQXlCO1lBQ3pCLGtDQUFrQztZQUNsQywrQkFBK0I7WUFDL0IsNEJBQTRCO1lBQzVCLGlDQUFpQztZQUNqQywyRUFBMkU7WUFDM0UsRUFBRTtTQUNILENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLCtCQUErQjtRQUM1QyxPQUFPO1lBQ0wsMEJBQTBCO1lBQzFCLG9EQUFvRDtZQUNwRCwyQ0FBMkM7WUFDM0MsYUFBYTtZQUNiLDREQUE0RDtZQUM1RCxFQUFFO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsMkJBQTJCO1FBQ3hDLE9BQU87WUFDTCxzQkFBc0I7WUFDdEIsZ0RBQWdEO1lBQ2hELHVDQUF1QztZQUN2QyxhQUFhO1lBQ2Isd0RBQXdEO1lBQ3hELEVBQUU7WUFDRix1QkFBdUI7WUFDdkIsaURBQWlEO1lBQ2pELGdDQUFnQztZQUNoQyxhQUFhO1lBQ2IseURBQXlEO1lBQ3pELEVBQUU7U0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyw0QkFBNEI7UUFDekMsT0FBTztZQUNMLHdCQUF3QjtZQUN4QixrREFBa0Q7WUFDbEQseUNBQXlDO1lBQ3pDLGFBQWE7WUFDYiwwREFBMEQ7WUFDMUQsRUFBRTtZQUNGLHlCQUF5QjtZQUN6QixtREFBbUQ7WUFDbkQsa0NBQWtDO1lBQ2xDLGFBQWE7WUFDYiwyREFBMkQ7U0FDNUQsQ0FBQztJQUNKLENBQUM7O0FBNWFILGtFQTZhQzs7O0FBWUQ7Ozs7O0dBS0c7QUFDSCxNQUFhLGtCQUFrQjtJQUM3QixZQUFZLEtBQThCO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUkscUNBQXFDLENBQUM7UUFFN0Usd0NBQXdDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLElBQUksaUJBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6RSxrQkFBa0I7UUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLEVBQUU7WUFDbkQsV0FBVyxFQUNULDRIQUE0SDtZQUM5SCxXQUFXLEVBQUUsSUFBSTtZQUNqQixJQUFJLEVBQUUsMkJBQTJCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDO1NBQ3BFLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBZkgsZ0RBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgR2l0SHViT2lkY0NvbmZpZyB9IGZyb20gJy4vQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQnO1xuXG4vKipcbiAqIFByb3BzIGZvciBnZW5lcmF0aW5nIENESyBEaWZmIElBTSB0ZW1wbGF0ZXMgKG5vIFByb2plbiBkZXBlbmRlbmN5KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0RpZmZJYW1UZW1wbGF0ZUdlbmVyYXRvclByb3BzIHtcbiAgLyoqIE5hbWUgZm9yIHRoZSBjaGFuZ2VzZXQgSUFNIHJvbGUgKi9cbiAgcmVhZG9ubHkgcm9sZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQVJOIG9mIHRoZSBleGlzdGluZyBHaXRIdWIgT0lEQyByb2xlIHRoYXQgY2FuIGFzc3VtZSB0aGlzIGNoYW5nZXNldCByb2xlLlxuICAgKiBSZXF1aXJlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIGZhbHNlIG9yIHVuZGVmaW5lZC5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWdpb24gZm9yIHRoZSBPSURDIHRydXN0IGNvbmRpdGlvbi5cbiAgICogT25seSB1c2VkIHdoZW4gb2lkY1JvbGVBcm4gaXMgcHJvdmlkZWQgKGV4dGVybmFsIE9JREMgcm9sZSkuXG4gICAqL1xuICByZWFkb25seSBvaWRjUmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBHaXRIdWIgT0lEQyByb2xlIHdpdGhpbiB0aGlzIHRlbXBsYXRlIGluc3RlYWQgb2YgdXNpbmcgYW4gZXhpc3Rpbmcgb25lLlxuICAgKiBXaGVuIHRydWUsIGdpdGh1Yk9pZGMgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCBhbmQgb2lkY1JvbGVBcm4gaXMgaWdub3JlZC5cbiAgICogRGVmYXVsdDogZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZU9pZGNSb2xlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgR2l0SHViIE9JREMgcm9sZSB0byBjcmVhdGUuXG4gICAqIE9ubHkgdXNlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIHRydWUuXG4gICAqIERlZmF1bHQ6ICdHaXRIdWJPSURDUm9sZSdcbiAgICovXG4gIHJlYWRvbmx5IG9pZGNSb2xlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0SHViIE9JREMgY29uZmlndXJhdGlvbiBmb3IgcmVwby9icmFuY2ggcmVzdHJpY3Rpb25zLlxuICAgKiBSZXF1aXJlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIHRydWUuXG4gICAqL1xuICByZWFkb25seSBnaXRodWJPaWRjPzogR2l0SHViT2lkY0NvbmZpZztcblxuICAvKipcbiAgICogU2tpcCBjcmVhdGluZyB0aGUgT0lEQyBwcm92aWRlciAodXNlIGV4aXN0aW5nIG9uZSkuXG4gICAqIFNldCB0byB0cnVlIGlmIHRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGEgR2l0SHViIE9JREMgcHJvdmlkZXIuXG4gICAqIE9ubHkgdXNlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIHRydWUuXG4gICAqIERlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwT2lkY1Byb3ZpZGVyQ3JlYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFB1cmUgZ2VuZXJhdG9yIGNsYXNzIGZvciBDREsgRGlmZiBJQU0gdGVtcGxhdGVzLlxuICogTm8gUHJvamVuIGRlcGVuZGVuY3kgLSBjYW4gYmUgdXNlZCBpbiBhbnkgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0RpZmZJYW1UZW1wbGF0ZUdlbmVyYXRvciB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgQ2xvdWRGb3JtYXRpb24gSUFNIHRlbXBsYXRlIGFzIGEgWUFNTCBzdHJpbmcuXG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVUZW1wbGF0ZShwcm9wczogQ2RrRGlmZklhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNyZWF0ZU9pZGNSb2xlID0gcHJvcHMuY3JlYXRlT2lkY1JvbGUgPz8gZmFsc2U7XG5cbiAgICAvLyBWYWxpZGF0ZSBwcm9wc1xuICAgIGlmIChjcmVhdGVPaWRjUm9sZSkge1xuICAgICAgaWYgKCFwcm9wcy5naXRodWJPaWRjKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZ2l0aHViT2lkYyBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIHdoZW4gY3JlYXRlT2lkY1JvbGUgaXMgdHJ1ZScpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXByb3BzLm9pZGNSb2xlQXJuKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignb2lkY1JvbGVBcm4gaXMgcmVxdWlyZWQgd2hlbiBjcmVhdGVPaWRjUm9sZSBpcyBmYWxzZScpO1xuICAgICAgfVxuICAgICAgaWYgKCFwcm9wcy5vaWRjUmVnaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignb2lkY1JlZ2lvbiBpcyByZXF1aXJlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIGZhbHNlJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZU9pZGNSb2xlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVRlbXBsYXRlV2l0aE9pZGNSb2xlKHByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVUZW1wbGF0ZVdpdGhFeHRlcm5hbE9pZGNSb2xlKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdGhlIEFXUyBDTEkgZGVwbG95IGNvbW1hbmQgZm9yIHRoZSBJQU0gdGVtcGxhdGUuXG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVEZXBsb3lDb21tYW5kKHRlbXBsYXRlUGF0aDogc3RyaW5nID0gJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVwbG95IC0tdGVtcGxhdGUtZmlsZSAke3RlbXBsYXRlUGF0aH0gLS1zdGFjay1uYW1lIGNkay1kaWZmLXdvcmtmbG93LWlhbS1yb2xlIC0tY2FwYWJpbGl0aWVzIENBUEFCSUxJVFlfTkFNRURfSUFNYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0ZW1wbGF0ZSB0aGF0IGNyZWF0ZXMgT0lEQyBwcm92aWRlciBhbmQgcm9sZSAoc2VsZi1jb250YWluZWQpXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZVRlbXBsYXRlV2l0aE9pZGNSb2xlKHByb3BzOiBDZGtEaWZmSWFtVGVtcGxhdGVHZW5lcmF0b3JQcm9wcyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb2lkY1JvbGVOYW1lID0gcHJvcHMub2lkY1JvbGVOYW1lID8/ICdHaXRIdWJPSURDUm9sZSc7XG4gICAgY29uc3Qgc2tpcE9pZGNQcm92aWRlciA9IHByb3BzLnNraXBPaWRjUHJvdmlkZXJDcmVhdGlvbiA/PyBmYWxzZTtcbiAgICBjb25zdCBnaXRodWJPaWRjID0gcHJvcHMuZ2l0aHViT2lkYyE7XG5cbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXG4gICAgICBcIkFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbjogJzIwMTAtMDktMDknXCIsXG4gICAgICBcIkRlc2NyaXB0aW9uOiAnR2l0SHViIE9JREMgYW5kIElBTSByb2xlcyBmb3IgQ0RLIERpZmYgU3RhY2sgV29ya2Zsb3cgY29uc3RydWN0J1wiLFxuICAgICAgJycsXG4gICAgICAnUmVzb3VyY2VzOicsXG4gICAgXTtcblxuICAgIC8vIE9JREMgUHJvdmlkZXIgKG9ubHkgaWYgbm90IHNraXBwaW5nKVxuICAgIGlmICghc2tpcE9pZGNQcm92aWRlcikge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlT2lkY1Byb3ZpZGVyTGluZXMoKSk7XG4gICAgfVxuXG4gICAgLy8gT0lEQyBSb2xlIChuZWVkcyBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgY2hhbmdlc2V0IHJvbGUpXG4gICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlT2lkY1JvbGVMaW5lcyhvaWRjUm9sZU5hbWUsIGdpdGh1Yk9pZGMsIHNraXBPaWRjUHJvdmlkZXIsIHByb3BzLnJvbGVOYW1lKSk7XG5cbiAgICAvLyBDaGFuZ2VzZXQgUm9sZSAodHJ1c3RzIHRoZSBjcmVhdGVkIE9JREMgcm9sZSlcbiAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVDaGFuZ2VzZXRSb2xlV2l0aE9pZGNSZWYocHJvcHMucm9sZU5hbWUpKTtcblxuICAgIC8vIE91dHB1dHNcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKCdPdXRwdXRzOicpO1xuXG4gICAgaWYgKCFza2lwT2lkY1Byb3ZpZGVyKSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjUHJvdmlkZXJPdXRwdXRMaW5lcygpKTtcbiAgICB9XG5cbiAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjUm9sZU91dHB1dExpbmVzKCkpO1xuICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZUNoYW5nZXNldE91dHB1dExpbmVzKCkpO1xuXG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRlbXBsYXRlIHRoYXQgdXNlcyBhbiBleHRlcm5hbCBPSURDIHJvbGUgKG9yaWdpbmFsIGJlaGF2aW9yKVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVUZW1wbGF0ZVdpdGhFeHRlcm5hbE9pZGNSb2xlKHByb3BzOiBDZGtEaWZmSWFtVGVtcGxhdGVHZW5lcmF0b3JQcm9wcyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICBcIkFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbjogJzIwMTAtMDktMDknXCIsXG4gICAgICBcIkRlc2NyaXB0aW9uOiAnSUFNIHJvbGUgZm9yIENESyBEaWZmIFN0YWNrIFdvcmtmbG93IGNvbnN0cnVjdCdcIixcbiAgICAgICcnLFxuICAgICAgJ1BhcmFtZXRlcnM6JyxcbiAgICAgICcgIEdpdEh1Yk9JRENSb2xlQXJuOicsXG4gICAgICAnICAgIFR5cGU6IFN0cmluZycsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ0FSTiBvZiB0aGUgZXhpc3RpbmcgR2l0SHViIE9JREMgcm9sZSB0aGF0IGNhbiBhc3N1bWUgdGhpcyBjaGFuZ2VzZXQgcm9sZSdcIixcbiAgICAgIGAgICAgRGVmYXVsdDogJyR7cHJvcHMub2lkY1JvbGVBcm59J2AsXG4gICAgICAnJyxcbiAgICAgICdSZXNvdXJjZXM6JyxcbiAgICAgICcgICMgQ2xvdWRGb3JtYXRpb24gQ2hhbmdlU2V0IFJvbGUgLSBtaW5pbWFsIHBlcm1pc3Npb25zIGZvciBjaGFuZ2VzZXQgb3BlcmF0aW9ucycsXG4gICAgICAnICBDZGtDaGFuZ2VzZXRSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICAgICcgICAgUHJvcGVydGllczonLFxuICAgICAgXCIgICAgICBSb2xlTmFtZTogJ1wiICsgcHJvcHMucm9sZU5hbWUgKyBcIidcIixcbiAgICAgICcgICAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgIFByaW5jaXBhbDonLFxuICAgICAgJyAgICAgICAgICAgICAgQVdTOiAhUmVmIEdpdEh1Yk9JRENSb2xlQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgYXdzOlJlcXVlc3RlZFJlZ2lvbjogJ1wiICsgcHJvcHMub2lkY1JlZ2lvbiArIFwiJ1wiLFxuICAgICAgJyAgICAgIFBvbGljaWVzOicsXG4gICAgICAnICAgICAgICAtIFBvbGljeU5hbWU6IENsb3VkRm9ybWF0aW9uQ2hhbmdlU2V0QWNjZXNzJyxcbiAgICAgICcgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIsXG4gICAgICAnICAgICAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgICAgICAjIENsb3VkRm9ybWF0aW9uIGNoYW5nZXNldCBvcGVyYXRpb25zJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlQ2hhbmdlU2V0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpMaXN0Q2hhbmdlU2V0cycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrcycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpHZXRUZW1wbGF0ZScsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnICAgICAgICAgICAgICAjIENESyBib290c3RyYXAgYnVja2V0IGFjY2VzcyAoZm9yIGNoYW5nZXNldCBjcmVhdGlvbiknLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpHZXRPYmplY3QnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6UHV0T2JqZWN0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOkRlbGV0ZU9iamVjdCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpMaXN0QnVja2V0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgUmVzb3VyY2U6JyxcbiAgICAgIFwiICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOnMzOjo6Y2RrLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259LSonXCIsXG4gICAgICBcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czpzMzo6OmNkay0ke0FXUzo6QWNjb3VudElkfS0ke0FXUzo6UmVnaW9ufS0qLyonXCIsXG4gICAgICAnICAgICAgICAgICAgICAjIENESyBib290c3RyYXAgcGFyYW1ldGVyIGFjY2VzcycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXInLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gc3NtOkdldFBhcmFtZXRlcnMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gc3NtOkdldFBhcmFtZXRlcnNCeVBhdGgnLFxuICAgICAgXCIgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICFTdWIgJ2Fybjphd3M6c3NtOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9OnBhcmFtZXRlci9jZGstYm9vdHN0cmFwLyonXCIsXG4gICAgICAnICAgICAgICAgICAgICAjIElBTSBQYXNzUm9sZSBmb3IgQ0RLIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBpYW06UGFzc1JvbGUnLFxuICAgICAgXCIgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICcqJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6JyxcbiAgICAgIFwiICAgICAgICAgICAgICAgICAgICAnaWFtOlBhc3NlZFRvU2VydmljZSc6ICdjbG91ZGZvcm1hdGlvbi5hbWF6b25hd3MuY29tJ1wiLFxuICAgICAgJycsXG4gICAgICAnT3V0cHV0czonLFxuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZUFybjonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdBUk4gb2YgdGhlIENESyBjaGFuZ2VzZXQgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFHZXRBdHQgQ2RrQ2hhbmdlc2V0Um9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrQ2hhbmdlc2V0Um9sZUFybidcIixcbiAgICAgICcnLFxuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZU5hbWU6JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgQ0RLIGNoYW5nZXNldCByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIVJlZiBDZGtDaGFuZ2VzZXRSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0NoYW5nZXNldFJvbGVOYW1lJ1wiLFxuICAgIF07XG5cbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNQcm92aWRlckxpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgIyBHaXRIdWIgT0lEQyBQcm92aWRlcicsXG4gICAgICAnICBHaXRIdWJPSURDUHJvdmlkZXI6JyxcbiAgICAgICcgICAgVHlwZTogQVdTOjpJQU06Ok9JRENQcm92aWRlcicsXG4gICAgICAnICAgIFByb3BlcnRpZXM6JyxcbiAgICAgICcgICAgICBVcmw6IGh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20nLFxuICAgICAgJyAgICAgIENsaWVudElkTGlzdDonLFxuICAgICAgJyAgICAgICAgLSBzdHMuYW1hem9uYXdzLmNvbScsXG4gICAgICAnICAgICAgVGh1bWJwcmludExpc3Q6JyxcbiAgICAgICcgICAgICAgIC0gNjkzOGZkNGQ5OGJhYjAzZmFhZGI5N2IzNDM5NjgzMWUzNzgwYWVhMScsXG4gICAgICAnICAgICAgICAtIDFjNThhM2E4NTE4ZTg3NTliZjA3NWI3NmI3NTBkNGYyZGYyNjRmY2QnLFxuICAgICAgJycsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlT2lkY1JvbGVMaW5lcyhcbiAgICByb2xlTmFtZTogc3RyaW5nLFxuICAgIGdpdGh1Yk9pZGM6IEdpdEh1Yk9pZGNDb25maWcsXG4gICAgc2tpcE9pZGNQcm92aWRlcjogYm9vbGVhbiA9IGZhbHNlLFxuICAgIGNoYW5nZXNldFJvbGVOYW1lPzogc3RyaW5nLFxuICApOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc3ViamVjdENsYWltcyA9IHRoaXMuYnVpbGRTdWJqZWN0Q2xhaW1zKGdpdGh1Yk9pZGMpO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICAnICAjIEdpdEh1YiBPSURDIFJvbGUgLSBhdXRoZW50aWNhdGVzIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93cycsXG4gICAgICAnICBHaXRIdWJPSURDUm9sZTonLFxuICAgICAgJyAgICBUeXBlOiBBV1M6OklBTTo6Um9sZScsXG4gICAgXTtcblxuICAgIC8vIE9ubHkgYWRkIERlcGVuZHNPbiBpZiB3ZSdyZSBjcmVhdGluZyB0aGUgcHJvdmlkZXJcbiAgICBpZiAoIXNraXBPaWRjUHJvdmlkZXIpIHtcbiAgICAgIGxpbmVzLnB1c2goJyAgICBEZXBlbmRzT246IEdpdEh1Yk9JRENQcm92aWRlcicpO1xuICAgIH1cblxuICAgIGxpbmVzLnB1c2goXG4gICAgICAnICAgIFByb3BlcnRpZXM6JyxcbiAgICAgIFwiICAgICAgUm9sZU5hbWU6ICdcIiArIHJvbGVOYW1lICsgXCInXCIsXG4gICAgICAnICAgICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIsXG4gICAgICAnICAgICAgICBTdGF0ZW1lbnQ6JyxcbiAgICAgICcgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICBQcmluY2lwYWw6JyxcbiAgICAgIFwiICAgICAgICAgICAgICBGZWRlcmF0ZWQ6ICFTdWIgJ2Fybjphd3M6aWFtOjoke0FXUzo6QWNjb3VudElkfTpvaWRjLXByb3ZpZGVyL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tJ1wiLFxuICAgICAgJyAgICAgICAgICAgIEFjdGlvbjogc3RzOkFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHknLFxuICAgICAgJyAgICAgICAgICAgIENvbmRpdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAndG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb206YXVkJzogJ3N0cy5hbWF6b25hd3MuY29tJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgU3RyaW5nTGlrZTonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgJ3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tOnN1Yic6XCIsXG4gICAgKTtcblxuICAgIC8vIEFkZCBzdWJqZWN0IGNsYWltc1xuICAgIGZvciAoY29uc3QgY2xhaW0gb2Ygc3ViamVjdENsYWltcykge1xuICAgICAgbGluZXMucHVzaChgICAgICAgICAgICAgICAgICAgLSAnJHtjbGFpbX0nYCk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHBvbGljaWVzIGZvciBhc3N1bWluZyBjaGFuZ2VzZXQgcm9sZSBhbmQgQ0RLIGJvb3RzdHJhcCByb2xlcywgcGx1cyBDREsgZGlmZiBwZXJtaXNzaW9uc1xuICAgIGxpbmVzLnB1c2goJyAgICAgIFBvbGljaWVzOicpO1xuXG4gICAgLy8gUG9saWN5IDE6IEFzc3VtZUNoYW5nZXNldFJvbGUgLSBhbGxvd3MgYXNzdW1pbmcgY2hhbmdlc2V0IHJvbGUgYW5kIENESyBib290c3RyYXAgcm9sZXNcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgIC0gUG9saWN5TmFtZTogQXNzdW1lQ2hhbmdlc2V0Um9sZScpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICBQb2xpY3lEb2N1bWVudDonKTtcbiAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgIFN0YXRlbWVudDonKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgIFJlc291cmNlOicpO1xuICAgIGlmIChjaGFuZ2VzZXRSb2xlTmFtZSkge1xuICAgICAgbGluZXMucHVzaChgICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOmlhbTo6XFwke0FXUzo6QWNjb3VudElkfTpyb2xlLyR7Y2hhbmdlc2V0Um9sZU5hbWV9J2ApO1xuICAgIH1cbiAgICAvLyBDREsgYm9vdHN0cmFwIHJvbGVzXG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIHJvbGVzJyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czppYW06OiR7QVdTOjpBY2NvdW50SWR9OnJvbGUvY2RrLWhuYjY1OWZkcy1kZXBsb3ktcm9sZS0ke0FXUzo6QWNjb3VudElkfS0ke0FXUzo6UmVnaW9ufSdcIik7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czppYW06OiR7QVdTOjpBY2NvdW50SWR9OnJvbGUvY2RrLWhuYjY1OWZkcy1maWxlLXB1Ymxpc2hpbmctcm9sZS0ke0FXUzo6QWNjb3VudElkfS0ke0FXUzo6UmVnaW9ufSdcIik7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czppYW06OiR7QVdTOjpBY2NvdW50SWR9OnJvbGUvY2RrLWhuYjY1OWZkcy1pbWFnZS1wdWJsaXNoaW5nLXJvbGUtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0nXCIpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6aWFtOjoke0FXUzo6QWNjb3VudElkfTpyb2xlL2Nkay1obmI2NTlmZHMtbG9va3VwLXJvbGUtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0nXCIpO1xuXG4gICAgLy8gUG9saWN5IDI6IENka0RpZmZQZXJtaXNzaW9ucyAtIGRpcmVjdCBwZXJtaXNzaW9ucyBmb3IgQ0RLIGRpZmYgb3BlcmF0aW9uc1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgLSBQb2xpY3lOYW1lOiBDZGtEaWZmUGVybWlzc2lvbnMnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6Jyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICBTdGF0ZW1lbnQ6Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAjIENESyBib290c3RyYXAgcGFyYW1ldGVyIGFjY2VzcyAobmVlZGVkIGZvciBjZGsgZGVwbG95L2RpZmYpJyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgQWN0aW9uOicpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gc3NtOkdldFBhcmFtZXRlcicpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gc3NtOkdldFBhcmFtZXRlcnMnKTtcbiAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAhU3ViICdhcm46YXdzOnNzbToke0FXUzo6UmVnaW9ufToke0FXUzo6QWNjb3VudElkfTpwYXJhbWV0ZXIvY2RrLWJvb3RzdHJhcC8qJ1wiKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICMgQ2xvdWRGb3JtYXRpb24gb3BlcmF0aW9ucyBmb3IgY2hhbmdlc2V0IGNyZWF0aW9uJyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgQWN0aW9uOicpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZUNoYW5nZVNldCcpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVsZXRlQ2hhbmdlU2V0Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpMaXN0Q2hhbmdlU2V0cycpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkdldFRlbXBsYXRlJyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIGJ1Y2tldCBhY2Nlc3MnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBBY3Rpb246Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgLSBzMzpHZXRPYmplY3QnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIHMzOlB1dE9iamVjdCcpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gczM6TGlzdEJ1Y2tldCcpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gczM6R2V0QnVja2V0TG9jYXRpb24nKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgUmVzb3VyY2U6Jyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czpzMzo6OmNkay1obmI2NTlmZHMtYXNzZXRzLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259J1wiKTtcbiAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOnMzOjo6Y2RrLWhuYjY1OWZkcy1hc3NldHMtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0vKidcIik7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAjIElBTSBQYXNzUm9sZSBmb3IgQ0RLIG9wZXJhdGlvbnMnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBBY3Rpb246Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgLSBpYW06UGFzc1JvbGUnKTtcbiAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAhU3ViICdhcm46YXdzOmlhbTo6JHtBV1M6OkFjY291bnRJZH06cm9sZS9jZGstaG5iNjU5ZmRzLSonXCIpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBDb25kaXRpb246Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOicpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICAgICAgICAgICdpYW06UGFzc2VkVG9TZXJ2aWNlJzogJ2Nsb3VkZm9ybWF0aW9uLmFtYXpvbmF3cy5jb20nXCIpO1xuXG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRTdWJqZWN0Q2xhaW1zKGdpdGh1Yk9pZGM6IEdpdEh1Yk9pZGNDb25maWcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhaW1zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGJyYW5jaGVzID0gZ2l0aHViT2lkYy5icmFuY2hlcyA/PyBbJyonXTtcblxuICAgIGZvciAoY29uc3QgcmVwbyBvZiBnaXRodWJPaWRjLnJlcG9zaXRvcmllcykge1xuICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAvLyBXaWxkY2FyZCByZXBvIC0gYWxsb3cgYWxsIHJlcG9zIHdpdGggYnJhbmNoIHJlc3RyaWN0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiBicmFuY2hlcykge1xuICAgICAgICAgIGlmIChicmFuY2ggPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vKjpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNwZWNpZmljIHJlcG9cbiAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgYnJhbmNoZXMpIHtcbiAgICAgICAgICBpZiAoYnJhbmNoID09PSAnKicpIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToqYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfTpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgYW55IGFkZGl0aW9uYWwgY2xhaW1zXG4gICAgaWYgKGdpdGh1Yk9pZGMuYWRkaXRpb25hbENsYWltcykge1xuICAgICAgZm9yIChjb25zdCBjbGFpbSBvZiBnaXRodWJPaWRjLmFkZGl0aW9uYWxDbGFpbXMpIHtcbiAgICAgICAgZm9yIChjb25zdCByZXBvIG9mIGdpdGh1Yk9pZGMucmVwb3NpdG9yaWVzKSB7XG4gICAgICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qOiR7Y2xhaW19YCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToke2NsYWltfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFpbXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZUNoYW5nZXNldFJvbGVXaXRoT2lkY1JlZihyb2xlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIENoYW5nZVNldCBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgY2hhbmdlc2V0IG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZTonLFxuICAgICAgJyAgICBUeXBlOiBBV1M6OklBTTo6Um9sZScsXG4gICAgICAnICAgIERlcGVuZHNPbjogR2l0SHViT0lEQ1JvbGUnLFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICBcIiAgICAgIFJvbGVOYW1lOiAnXCIgKyByb2xlTmFtZSArIFwiJ1wiLFxuICAgICAgJyAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgUHJpbmNpcGFsOicsXG4gICAgICAnICAgICAgICAgICAgICBBV1M6ICFHZXRBdHQgR2l0SHViT0lEQ1JvbGUuQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICBQb2xpY2llczonLFxuICAgICAgJyAgICAgICAgLSBQb2xpY3lOYW1lOiBDbG91ZEZvcm1hdGlvbkNoYW5nZVNldEFjY2VzcycsXG4gICAgICAnICAgICAgICAgIFBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDbG91ZEZvcm1hdGlvbiBjaGFuZ2VzZXQgb3BlcmF0aW9ucycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkNyZWF0ZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZWxldGVDaGFuZ2VTZXQnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdENoYW5nZVNldHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246R2V0VGVtcGxhdGUnLFxuICAgICAgXCIgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICcqJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIGJ1Y2tldCBhY2Nlc3MgKGZvciBjaGFuZ2VzZXQgY3JlYXRpb24pJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6R2V0T2JqZWN0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOlB1dE9iamVjdCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpEZWxldGVPYmplY3QnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6TGlzdEJ1Y2tldCcsXG4gICAgICAnICAgICAgICAgICAgICAgIFJlc291cmNlOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czpzMzo6OmNkay0ke0FXUzo6QWNjb3VudElkfS0ke0FXUzo6UmVnaW9ufS0qJ1wiLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6czM6OjpjZGstJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0tKi8qJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIHBhcmFtZXRlciBhY2Nlc3MnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVyJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXJzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXJzQnlQYXRoJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAhU3ViICdhcm46YXdzOnNzbToke0FXUzo6UmVnaW9ufToke0FXUzo6QWNjb3VudElkfTpwYXJhbWV0ZXIvY2RrLWJvb3RzdHJhcC8qJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBJQU0gUGFzc1JvbGUgZm9yIENESyBvcGVyYXRpb25zJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gaWFtOlBhc3NSb2xlJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAnKidcIixcbiAgICAgICcgICAgICAgICAgICAgICAgQ29uZGl0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAgICAgJ2lhbTpQYXNzZWRUb1NlcnZpY2UnOiAnY2xvdWRmb3JtYXRpb24uYW1hem9uYXdzLmNvbSdcIixcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNQcm92aWRlck91dHB1dExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgR2l0SHViT0lEQ1Byb3ZpZGVyQXJuOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ0FSTiBvZiB0aGUgR2l0SHViIE9JREMgcHJvdmlkZXInXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IEdpdEh1Yk9JRENQcm92aWRlci5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tR2l0SHViT0lEQ1Byb3ZpZGVyQXJuJ1wiLFxuICAgICAgJycsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlT2lkY1JvbGVPdXRwdXRMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgIEdpdEh1Yk9JRENSb2xlQXJuOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ0FSTiBvZiB0aGUgR2l0SHViIE9JREMgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFHZXRBdHQgR2l0SHViT0lEQ1JvbGUuQXJuJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUdpdEh1Yk9JRENSb2xlQXJuJ1wiLFxuICAgICAgJycsXG4gICAgICAnICBHaXRIdWJPSURDUm9sZU5hbWU6JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgR2l0SHViIE9JREMgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgR2l0SHViT0lEQ1JvbGUnLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tR2l0SHViT0lEQ1JvbGVOYW1lJ1wiLFxuICAgICAgJycsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlQ2hhbmdlc2V0T3V0cHV0TGluZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICBDZGtDaGFuZ2VzZXRSb2xlQXJuOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ0FSTiBvZiB0aGUgQ0RLIGNoYW5nZXNldCByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIUdldEF0dCBDZGtDaGFuZ2VzZXRSb2xlLkFybicsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1DZGtDaGFuZ2VzZXRSb2xlQXJuJ1wiLFxuICAgICAgJycsXG4gICAgICAnICBDZGtDaGFuZ2VzZXRSb2xlTmFtZTonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBDREsgY2hhbmdlc2V0IHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhUmVmIENka0NoYW5nZXNldFJvbGUnLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrQ2hhbmdlc2V0Um9sZU5hbWUnXCIsXG4gICAgXTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgUHJvamVuLWludGVncmF0ZWQgQ0RLIERpZmYgSUFNIHRlbXBsYXRlIGNvbnN0cnVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0RpZmZJYW1UZW1wbGF0ZVByb3BzIGV4dGVuZHMgQ2RrRGlmZklhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMge1xuICAvKiogUHJvamVuIHByb2plY3QgaW5zdGFuY2UgKi9cbiAgcmVhZG9ubHkgcHJvamVjdDogYW55O1xuICAvKiogT3V0cHV0IHBhdGggZm9yIHRoZSB0ZW1wbGF0ZSBmaWxlIChkZWZhdWx0OiAnY2RrLWRpZmYtd29ya2Zsb3ctaWFtLXRlbXBsYXRlLnlhbWwnKSAqL1xuICByZWFkb25seSBvdXRwdXRQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb2plbiBjb25zdHJ1Y3QgdGhhdCBlbWl0cyBhIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIHdpdGggbWluaW1hbCBJQU0gcGVybWlzc2lvbnNcbiAqIGZvciB0aGUgQ0RLIERpZmYgU3RhY2sgV29ya2Zsb3cuXG4gKlxuICogRm9yIG5vbi1Qcm9qZW4gcHJvamVjdHMsIHVzZSBgQ2RrRGlmZklhbVRlbXBsYXRlR2VuZXJhdG9yYCBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0RpZmZJYW1UZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDZGtEaWZmSWFtVGVtcGxhdGVQcm9wcykge1xuICAgIGNvbnN0IG91dHB1dFBhdGggPSBwcm9wcy5vdXRwdXRQYXRoID8/ICdjZGstZGlmZi13b3JrZmxvdy1pYW0tdGVtcGxhdGUueWFtbCc7XG5cbiAgICAvLyBHZW5lcmF0ZSB0ZW1wbGF0ZSB1c2luZyB0aGUgZ2VuZXJhdG9yXG4gICAgY29uc3QgdGVtcGxhdGUgPSBDZGtEaWZmSWFtVGVtcGxhdGVHZW5lcmF0b3IuZ2VuZXJhdGVUZW1wbGF0ZShwcm9wcyk7XG4gICAgbmV3IFRleHRGaWxlKHByb3BzLnByb2plY3QsIG91dHB1dFBhdGgsIHsgbGluZXM6IHRlbXBsYXRlLnNwbGl0KCdcXG4nKSB9KTtcblxuICAgIC8vIEFkZCBkZXBsb3kgdGFza1xuICAgIHByb3BzLnByb2plY3QuYWRkVGFzaygnZGVwbG95LWNka2RpZmYtaWFtLXRlbXBsYXRlJywge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdEZXBsb3kgdGhlIENESyBEaWZmIElBTSB0ZW1wbGF0ZSB2aWEgQ2xvdWRGb3JtYXRpb24gKGFjY2VwdHMgZXh0cmEgQVdTIENMSSBhcmdzLCBlLmcuLCAtLXBhcmFtZXRlci1vdmVycmlkZXMgS2V5PVZhbHVlLi4uKScsXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgIGV4ZWM6IENka0RpZmZJYW1UZW1wbGF0ZUdlbmVyYXRvci5nZW5lcmF0ZURlcGxveUNvbW1hbmQob3V0cHV0UGF0aCksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
423
|
+
CdkDiffIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplate", version: "1.4.0" };
|
|
424
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRGlmZklhbVRlbXBsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Nka0RpZmZJYW1UZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFrQztBQW1EbEM7OztHQUdHO0FBQ0gsTUFBYSwyQkFBMkI7SUFDdEM7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBdUM7UUFDN0QsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUM7UUFFckQsaUJBQWlCO1FBQ2pCLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1lBQ3RGLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztZQUMxRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLG9DQUFvQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQUMsZUFBdUIscUNBQXFDO1FBQ3ZGLE9BQU8sNkNBQTZDLFlBQVksOEVBQThFLENBQUM7SUFDakosQ0FBQztJQUVEOztPQUVHO0lBQ0ss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QUM3QixZQUFZLEtBQThCO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUkscUNBQXFDLENBQUM7UUFFN0Usd0NBQXdDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLElBQUksaUJBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6RSxrQkFBa0I7UUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLEVBQUU7WUFDbkQsV0FBVyxFQUNULDRIQUE0SDtZQUM5SCxXQUFXLEVBQUUsSUFBSTtZQUNqQixJQUFJLEVBQUUsMkJBQTJCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDO1NBQ3BFLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBZkgsZ0RBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgR2l0SHViT2lkY0NvbmZpZyB9IGZyb20gJy4vQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQnO1xuXG4vKipcbiAqIFByb3BzIGZvciBnZW5lcmF0aW5nIENESyBEaWZmIElBTSB0ZW1wbGF0ZXMgKG5vIFByb2plbiBkZXBlbmRlbmN5KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0RpZmZJYW1UZW1wbGF0ZUdlbmVyYXRvclByb3BzIHtcbiAgLyoqIE5hbWUgZm9yIHRoZSBjaGFuZ2VzZXQgSUFNIHJvbGUgKi9cbiAgcmVhZG9ubHkgcm9sZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQVJOIG9mIHRoZSBleGlzdGluZyBHaXRIdWIgT0lEQyByb2xlIHRoYXQgY2FuIGFzc3VtZSB0aGlzIGNoYW5nZXNldCByb2xlLlxuICAgKiBSZXF1aXJlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIGZhbHNlIG9yIHVuZGVmaW5lZC5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWdpb24gZm9yIHRoZSBPSURDIHRydXN0IGNvbmRpdGlvbi5cbiAgICogT25seSB1c2VkIHdoZW4gb2lkY1JvbGVBcm4gaXMgcHJvdmlkZWQgKGV4dGVybmFsIE9JREMgcm9sZSkuXG4gICAqL1xuICByZWFkb25seSBvaWRjUmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBHaXRIdWIgT0lEQyByb2xlIHdpdGhpbiB0aGlzIHRlbXBsYXRlIGluc3RlYWQgb2YgdXNpbmcgYW4gZXhpc3Rpbmcgb25lLlxuICAgKiBXaGVuIHRydWUsIGdpdGh1Yk9pZGMgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCBhbmQgb2lkY1JvbGVBcm4gaXMgaWdub3JlZC5cbiAgICogRGVmYXVsdDogZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZU9pZGNSb2xlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgR2l0SHViIE9JREMgcm9sZSB0byBjcmVhdGUuXG4gICAqIE9ubHkgdXNlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIHRydWUuXG4gICAqIERlZmF1bHQ6ICdHaXRIdWJPSURDUm9sZSdcbiAgICovXG4gIHJlYWRvbmx5IG9pZGNSb2xlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0SHViIE9JREMgY29uZmlndXJhdGlvbiBmb3IgcmVwby9icmFuY2ggcmVzdHJpY3Rpb25zLlxuICAgKiBSZXF1aXJlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIHRydWUuXG4gICAqL1xuICByZWFkb25seSBnaXRodWJPaWRjPzogR2l0SHViT2lkY0NvbmZpZztcblxuICAvKipcbiAgICogU2tpcCBjcmVhdGluZyB0aGUgT0lEQyBwcm92aWRlciAodXNlIGV4aXN0aW5nIG9uZSkuXG4gICAqIFNldCB0byB0cnVlIGlmIHRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGEgR2l0SHViIE9JREMgcHJvdmlkZXIuXG4gICAqIE9ubHkgdXNlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIHRydWUuXG4gICAqIERlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwT2lkY1Byb3ZpZGVyQ3JlYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFB1cmUgZ2VuZXJhdG9yIGNsYXNzIGZvciBDREsgRGlmZiBJQU0gdGVtcGxhdGVzLlxuICogTm8gUHJvamVuIGRlcGVuZGVuY3kgLSBjYW4gYmUgdXNlZCBpbiBhbnkgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0RpZmZJYW1UZW1wbGF0ZUdlbmVyYXRvciB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgQ2xvdWRGb3JtYXRpb24gSUFNIHRlbXBsYXRlIGFzIGEgWUFNTCBzdHJpbmcuXG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVUZW1wbGF0ZShwcm9wczogQ2RrRGlmZklhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNyZWF0ZU9pZGNSb2xlID0gcHJvcHMuY3JlYXRlT2lkY1JvbGUgPz8gZmFsc2U7XG5cbiAgICAvLyBWYWxpZGF0ZSBwcm9wc1xuICAgIGlmIChjcmVhdGVPaWRjUm9sZSkge1xuICAgICAgaWYgKCFwcm9wcy5naXRodWJPaWRjKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZ2l0aHViT2lkYyBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIHdoZW4gY3JlYXRlT2lkY1JvbGUgaXMgdHJ1ZScpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXByb3BzLm9pZGNSb2xlQXJuKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignb2lkY1JvbGVBcm4gaXMgcmVxdWlyZWQgd2hlbiBjcmVhdGVPaWRjUm9sZSBpcyBmYWxzZScpO1xuICAgICAgfVxuICAgICAgaWYgKCFwcm9wcy5vaWRjUmVnaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignb2lkY1JlZ2lvbiBpcyByZXF1aXJlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIGZhbHNlJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZU9pZGNSb2xlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVRlbXBsYXRlV2l0aE9pZGNSb2xlKHByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVUZW1wbGF0ZVdpdGhFeHRlcm5hbE9pZGNSb2xlKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdGhlIEFXUyBDTEkgZGVwbG95IGNvbW1hbmQgZm9yIHRoZSBJQU0gdGVtcGxhdGUuXG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVEZXBsb3lDb21tYW5kKHRlbXBsYXRlUGF0aDogc3RyaW5nID0gJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVwbG95IC0tdGVtcGxhdGUtZmlsZSAke3RlbXBsYXRlUGF0aH0gLS1zdGFjay1uYW1lIGNkay1kaWZmLXdvcmtmbG93LWlhbS1yb2xlIC0tY2FwYWJpbGl0aWVzIENBUEFCSUxJVFlfTkFNRURfSUFNYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0ZW1wbGF0ZSB0aGF0IGNyZWF0ZXMgT0lEQyBwcm92aWRlciBhbmQgcm9sZSAoc2VsZi1jb250YWluZWQpXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZVRlbXBsYXRlV2l0aE9pZGNSb2xlKHByb3BzOiBDZGtEaWZmSWFtVGVtcGxhdGVHZW5lcmF0b3JQcm9wcyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb2lkY1JvbGVOYW1lID0gcHJvcHMub2lkY1JvbGVOYW1lID8/ICdHaXRIdWJPSURDUm9sZSc7XG4gICAgY29uc3Qgc2tpcE9pZGNQcm92aWRlciA9IHByb3BzLnNraXBPaWRjUHJvdmlkZXJDcmVhdGlvbiA/PyBmYWxzZTtcbiAgICBjb25zdCBnaXRodWJPaWRjID0gcHJvcHMuZ2l0aHViT2lkYyE7XG5cbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXG4gICAgICBcIkFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbjogJzIwMTAtMDktMDknXCIsXG4gICAgICBcIkRlc2NyaXB0aW9uOiAnR2l0SHViIE9JREMgYW5kIElBTSByb2xlcyBmb3IgQ0RLIERpZmYgU3RhY2sgV29ya2Zsb3cgY29uc3RydWN0J1wiLFxuICAgICAgJycsXG4gICAgICAnUmVzb3VyY2VzOicsXG4gICAgXTtcblxuICAgIC8vIE9JREMgUHJvdmlkZXIgKG9ubHkgaWYgbm90IHNraXBwaW5nKVxuICAgIGlmICghc2tpcE9pZGNQcm92aWRlcikge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlT2lkY1Byb3ZpZGVyTGluZXMoKSk7XG4gICAgfVxuXG4gICAgLy8gT0lEQyBSb2xlIChuZWVkcyBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgY2hhbmdlc2V0IHJvbGUpXG4gICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlT2lkY1JvbGVMaW5lcyhvaWRjUm9sZU5hbWUsIGdpdGh1Yk9pZGMsIHNraXBPaWRjUHJvdmlkZXIsIHByb3BzLnJvbGVOYW1lKSk7XG5cbiAgICAvLyBDaGFuZ2VzZXQgUm9sZSAodHJ1c3RzIHRoZSBjcmVhdGVkIE9JREMgcm9sZSlcbiAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVDaGFuZ2VzZXRSb2xlV2l0aE9pZGNSZWYocHJvcHMucm9sZU5hbWUpKTtcblxuICAgIC8vIE91dHB1dHNcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKCdPdXRwdXRzOicpO1xuXG4gICAgaWYgKCFza2lwT2lkY1Byb3ZpZGVyKSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjUHJvdmlkZXJPdXRwdXRMaW5lcygpKTtcbiAgICB9XG5cbiAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjUm9sZU91dHB1dExpbmVzKCkpO1xuICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZUNoYW5nZXNldE91dHB1dExpbmVzKCkpO1xuXG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRlbXBsYXRlIHRoYXQgdXNlcyBhbiBleHRlcm5hbCBPSURDIHJvbGUgKG9yaWdpbmFsIGJlaGF2aW9yKVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVUZW1wbGF0ZVdpdGhFeHRlcm5hbE9pZGNSb2xlKHByb3BzOiBDZGtEaWZmSWFtVGVtcGxhdGVHZW5lcmF0b3JQcm9wcyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICBcIkFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbjogJzIwMTAtMDktMDknXCIsXG4gICAgICBcIkRlc2NyaXB0aW9uOiAnSUFNIHJvbGUgZm9yIENESyBEaWZmIFN0YWNrIFdvcmtmbG93IGNvbnN0cnVjdCdcIixcbiAgICAgICcnLFxuICAgICAgJ1BhcmFtZXRlcnM6JyxcbiAgICAgICcgIEdpdEh1Yk9JRENSb2xlQXJuOicsXG4gICAgICAnICAgIFR5cGU6IFN0cmluZycsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ0FSTiBvZiB0aGUgZXhpc3RpbmcgR2l0SHViIE9JREMgcm9sZSB0aGF0IGNhbiBhc3N1bWUgdGhpcyBjaGFuZ2VzZXQgcm9sZSdcIixcbiAgICAgIGAgICAgRGVmYXVsdDogJyR7cHJvcHMub2lkY1JvbGVBcm59J2AsXG4gICAgICAnJyxcbiAgICAgICdSZXNvdXJjZXM6JyxcbiAgICAgICcgICMgQ2xvdWRGb3JtYXRpb24gQ2hhbmdlU2V0IFJvbGUgLSBtaW5pbWFsIHBlcm1pc3Npb25zIGZvciBjaGFuZ2VzZXQgb3BlcmF0aW9ucycsXG4gICAgICAnICBDZGtDaGFuZ2VzZXRSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICAgICcgICAgUHJvcGVydGllczonLFxuICAgICAgXCIgICAgICBSb2xlTmFtZTogJ1wiICsgcHJvcHMucm9sZU5hbWUgKyBcIidcIixcbiAgICAgICcgICAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgIFByaW5jaXBhbDonLFxuICAgICAgJyAgICAgICAgICAgICAgQVdTOiAhUmVmIEdpdEh1Yk9JRENSb2xlQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgYXdzOlJlcXVlc3RlZFJlZ2lvbjogJ1wiICsgcHJvcHMub2lkY1JlZ2lvbiArIFwiJ1wiLFxuICAgICAgJyAgICAgIFBvbGljaWVzOicsXG4gICAgICAnICAgICAgICAtIFBvbGljeU5hbWU6IENsb3VkRm9ybWF0aW9uQ2hhbmdlU2V0QWNjZXNzJyxcbiAgICAgICcgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIsXG4gICAgICAnICAgICAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgICAgICAjIENsb3VkRm9ybWF0aW9uIGNoYW5nZXNldCBvcGVyYXRpb25zJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlQ2hhbmdlU2V0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpMaXN0Q2hhbmdlU2V0cycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrcycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246R2V0VGVtcGxhdGUnLFxuICAgICAgXCIgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICcqJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIGJ1Y2tldCBhY2Nlc3MgKGZvciBjaGFuZ2VzZXQgY3JlYXRpb24pJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6R2V0T2JqZWN0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOlB1dE9iamVjdCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpEZWxldGVPYmplY3QnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6TGlzdEJ1Y2tldCcsXG4gICAgICAnICAgICAgICAgICAgICAgIFJlc291cmNlOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czpzMzo6OmNkay0ke0FXUzo6QWNjb3VudElkfS0ke0FXUzo6UmVnaW9ufS0qJ1wiLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6czM6OjpjZGstJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0tKi8qJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIHBhcmFtZXRlciBhY2Nlc3MnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVyJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXJzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXJzQnlQYXRoJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAhU3ViICdhcm46YXdzOnNzbToke0FXUzo6UmVnaW9ufToke0FXUzo6QWNjb3VudElkfTpwYXJhbWV0ZXIvY2RrLWJvb3RzdHJhcC8qJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBJQU0gUGFzc1JvbGUgZm9yIENESyBvcGVyYXRpb25zJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gaWFtOlBhc3NSb2xlJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAnKidcIixcbiAgICAgICcgICAgICAgICAgICAgICAgQ29uZGl0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAgICAgJ2lhbTpQYXNzZWRUb1NlcnZpY2UnOiAnY2xvdWRmb3JtYXRpb24uYW1hem9uYXdzLmNvbSdcIixcbiAgICAgICcnLFxuICAgICAgJ091dHB1dHM6JyxcbiAgICAgICcgIENka0NoYW5nZXNldFJvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBDREsgY2hhbmdlc2V0IHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IENka0NoYW5nZXNldFJvbGUuQXJuJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0NoYW5nZXNldFJvbGVBcm4nXCIsXG4gICAgICAnJyxcbiAgICAgICcgIENka0NoYW5nZXNldFJvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIENESyBjaGFuZ2VzZXQgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgQ2RrQ2hhbmdlc2V0Um9sZScsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1DZGtDaGFuZ2VzZXRSb2xlTmFtZSdcIixcbiAgICBdO1xuXG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVPaWRjUHJvdmlkZXJMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgICMgR2l0SHViIE9JREMgUHJvdmlkZXInLFxuICAgICAgJyAgR2l0SHViT0lEQ1Byb3ZpZGVyOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpPSURDUHJvdmlkZXInLFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICAnICAgICAgVXJsOiBodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tJyxcbiAgICAgICcgICAgICBDbGllbnRJZExpc3Q6JyxcbiAgICAgICcgICAgICAgIC0gc3RzLmFtYXpvbmF3cy5jb20nLFxuICAgICAgJyAgICAgIFRodW1icHJpbnRMaXN0OicsXG4gICAgICAnICAgICAgICAtIDY5MzhmZDRkOThiYWIwM2ZhYWRiOTdiMzQzOTY4MzFlMzc4MGFlYTEnLFxuICAgICAgJyAgICAgICAgLSAxYzU4YTNhODUxOGU4NzU5YmYwNzViNzZiNzUwZDRmMmRmMjY0ZmNkJyxcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNSb2xlTGluZXMoXG4gICAgcm9sZU5hbWU6IHN0cmluZyxcbiAgICBnaXRodWJPaWRjOiBHaXRIdWJPaWRjQ29uZmlnLFxuICAgIHNraXBPaWRjUHJvdmlkZXI6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBjaGFuZ2VzZXRSb2xlTmFtZT86IHN0cmluZyxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHN1YmplY3RDbGFpbXMgPSB0aGlzLmJ1aWxkU3ViamVjdENsYWltcyhnaXRodWJPaWRjKTtcblxuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgJyAgIyBHaXRIdWIgT0lEQyBSb2xlIC0gYXV0aGVudGljYXRlcyBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvd3MnLFxuICAgICAgJyAgR2l0SHViT0lEQ1JvbGU6JyxcbiAgICAgICcgICAgVHlwZTogQVdTOjpJQU06OlJvbGUnLFxuICAgIF07XG5cbiAgICAvLyBPbmx5IGFkZCBEZXBlbmRzT24gaWYgd2UncmUgY3JlYXRpbmcgdGhlIHByb3ZpZGVyXG4gICAgaWYgKCFza2lwT2lkY1Byb3ZpZGVyKSB7XG4gICAgICBsaW5lcy5wdXNoKCcgICAgRGVwZW5kc09uOiBHaXRIdWJPSURDUHJvdmlkZXInKTtcbiAgICB9XG5cbiAgICBsaW5lcy5wdXNoKFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICBcIiAgICAgIFJvbGVOYW1lOiAnXCIgKyByb2xlTmFtZSArIFwiJ1wiLFxuICAgICAgJyAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgUHJpbmNpcGFsOicsXG4gICAgICBcIiAgICAgICAgICAgICAgRmVkZXJhdGVkOiAhU3ViICdhcm46YXdzOmlhbTo6JHtBV1M6OkFjY291bnRJZH06b2lkYy1wcm92aWRlci90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbSdcIixcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlV2l0aFdlYklkZW50aXR5JyxcbiAgICAgICcgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgJ3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tOmF1ZCc6ICdzdHMuYW1hem9uYXdzLmNvbSdcIixcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0xpa2U6JyxcbiAgICAgIFwiICAgICAgICAgICAgICAgICd0b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTpzdWInOlwiLFxuICAgICk7XG5cbiAgICAvLyBBZGQgc3ViamVjdCBjbGFpbXNcbiAgICBmb3IgKGNvbnN0IGNsYWltIG9mIHN1YmplY3RDbGFpbXMpIHtcbiAgICAgIGxpbmVzLnB1c2goYCAgICAgICAgICAgICAgICAgIC0gJyR7Y2xhaW19J2ApO1xuICAgIH1cblxuICAgIC8vIEFkZCBwb2xpY2llcyBmb3IgYXNzdW1pbmcgY2hhbmdlc2V0IHJvbGUgYW5kIENESyBib290c3RyYXAgcm9sZXMsIHBsdXMgQ0RLIGRpZmYgcGVybWlzc2lvbnNcbiAgICBsaW5lcy5wdXNoKCcgICAgICBQb2xpY2llczonKTtcblxuICAgIC8vIFBvbGljeSAxOiBBc3N1bWVDaGFuZ2VzZXRSb2xlIC0gYWxsb3dzIGFzc3VtaW5nIGNoYW5nZXNldCByb2xlIGFuZCBDREsgYm9vdHN0cmFwIHJvbGVzXG4gICAgbGluZXMucHVzaCgnICAgICAgICAtIFBvbGljeU5hbWU6IEFzc3VtZUNoYW5nZXNldFJvbGUnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6Jyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICBTdGF0ZW1lbnQ6Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgQWN0aW9uOiBzdHM6QXNzdW1lUm9sZScpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBSZXNvdXJjZTonKTtcbiAgICBpZiAoY2hhbmdlc2V0Um9sZU5hbWUpIHtcbiAgICAgIGxpbmVzLnB1c2goYCAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czppYW06OlxcJHtBV1M6OkFjY291bnRJZH06cm9sZS8ke2NoYW5nZXNldFJvbGVOYW1lfSdgKTtcbiAgICB9XG4gICAgLy8gQ0RLIGJvb3RzdHJhcCByb2xlc1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgICMgQ0RLIGJvb3RzdHJhcCByb2xlcycpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6aWFtOjoke0FXUzo6QWNjb3VudElkfTpyb2xlL2Nkay1obmI2NTlmZHMtZGVwbG95LXJvbGUtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0nXCIpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6aWFtOjoke0FXUzo6QWNjb3VudElkfTpyb2xlL2Nkay1obmI2NTlmZHMtZmlsZS1wdWJsaXNoaW5nLXJvbGUtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0nXCIpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6aWFtOjoke0FXUzo6QWNjb3VudElkfTpyb2xlL2Nkay1obmI2NTlmZHMtaW1hZ2UtcHVibGlzaGluZy1yb2xlLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259J1wiKTtcbiAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOmlhbTo6JHtBV1M6OkFjY291bnRJZH06cm9sZS9jZGstaG5iNjU5ZmRzLWxvb2t1cC1yb2xlLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259J1wiKTtcblxuICAgIC8vIFBvbGljeSAyOiBDZGtEaWZmUGVybWlzc2lvbnMgLSBkaXJlY3QgcGVybWlzc2lvbnMgZm9yIENESyBkaWZmIG9wZXJhdGlvbnNcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgIC0gUG9saWN5TmFtZTogQ2RrRGlmZlBlcm1pc3Npb25zJyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgIFBvbGljeURvY3VtZW50OicpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIik7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgU3RhdGVtZW50OicpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIHBhcmFtZXRlciBhY2Nlc3MgKG5lZWRlZCBmb3IgY2RrIGRlcGxveS9kaWZmKScpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgIEFjdGlvbjonKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXInKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXJzJyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogIVN1YiAnYXJuOmF3czpzc206JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH06cGFyYW1ldGVyL2Nkay1ib290c3RyYXAvKidcIik7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAjIENsb3VkRm9ybWF0aW9uIG9wZXJhdGlvbnMgZm9yIGNoYW5nZXNldCBjcmVhdGlvbicpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgIEFjdGlvbjonKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkNyZWF0ZUNoYW5nZVNldCcpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVDaGFuZ2VTZXQnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldCcpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdENoYW5nZVNldHMnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tzJyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHMnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkdldFRlbXBsYXRlJyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIGJ1Y2tldCBhY2Nlc3MnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBBY3Rpb246Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgLSBzMzpHZXRPYmplY3QnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIHMzOlB1dE9iamVjdCcpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gczM6TGlzdEJ1Y2tldCcpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gczM6R2V0QnVja2V0TG9jYXRpb24nKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgUmVzb3VyY2U6Jyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czpzMzo6OmNkay1obmI2NTlmZHMtYXNzZXRzLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259J1wiKTtcbiAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOnMzOjo6Y2RrLWhuYjY1OWZkcy1hc3NldHMtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0vKidcIik7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAjIElBTSBQYXNzUm9sZSBmb3IgQ0RLIG9wZXJhdGlvbnMnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBBY3Rpb246Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgLSBpYW06UGFzc1JvbGUnKTtcbiAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAhU3ViICdhcm46YXdzOmlhbTo6JHtBV1M6OkFjY291bnRJZH06cm9sZS9jZGstaG5iNjU5ZmRzLSonXCIpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBDb25kaXRpb246Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOicpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICAgICAgICAgICdpYW06UGFzc2VkVG9TZXJ2aWNlJzogJ2Nsb3VkZm9ybWF0aW9uLmFtYXpvbmF3cy5jb20nXCIpO1xuXG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRTdWJqZWN0Q2xhaW1zKGdpdGh1Yk9pZGM6IEdpdEh1Yk9pZGNDb25maWcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhaW1zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGJyYW5jaGVzID0gZ2l0aHViT2lkYy5icmFuY2hlcyA/PyBbJyonXTtcblxuICAgIGZvciAoY29uc3QgcmVwbyBvZiBnaXRodWJPaWRjLnJlcG9zaXRvcmllcykge1xuICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAvLyBXaWxkY2FyZCByZXBvIC0gYWxsb3cgYWxsIHJlcG9zIHdpdGggYnJhbmNoIHJlc3RyaWN0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiBicmFuY2hlcykge1xuICAgICAgICAgIGlmIChicmFuY2ggPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vKjpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNwZWNpZmljIHJlcG9cbiAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgYnJhbmNoZXMpIHtcbiAgICAgICAgICBpZiAoYnJhbmNoID09PSAnKicpIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToqYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfTpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgYW55IGFkZGl0aW9uYWwgY2xhaW1zXG4gICAgaWYgKGdpdGh1Yk9pZGMuYWRkaXRpb25hbENsYWltcykge1xuICAgICAgZm9yIChjb25zdCBjbGFpbSBvZiBnaXRodWJPaWRjLmFkZGl0aW9uYWxDbGFpbXMpIHtcbiAgICAgICAgZm9yIChjb25zdCByZXBvIG9mIGdpdGh1Yk9pZGMucmVwb3NpdG9yaWVzKSB7XG4gICAgICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qOiR7Y2xhaW19YCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToke2NsYWltfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFpbXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZUNoYW5nZXNldFJvbGVXaXRoT2lkY1JlZihyb2xlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIENoYW5nZVNldCBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgY2hhbmdlc2V0IG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZTonLFxuICAgICAgJyAgICBUeXBlOiBBV1M6OklBTTo6Um9sZScsXG4gICAgICAnICAgIERlcGVuZHNPbjogR2l0SHViT0lEQ1JvbGUnLFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICBcIiAgICAgIFJvbGVOYW1lOiAnXCIgKyByb2xlTmFtZSArIFwiJ1wiLFxuICAgICAgJyAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgUHJpbmNpcGFsOicsXG4gICAgICAnICAgICAgICAgICAgICBBV1M6ICFHZXRBdHQgR2l0SHViT0lEQ1JvbGUuQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICBQb2xpY2llczonLFxuICAgICAgJyAgICAgICAgLSBQb2xpY3lOYW1lOiBDbG91ZEZvcm1hdGlvbkNoYW5nZVNldEFjY2VzcycsXG4gICAgICAnICAgICAgICAgIFBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDbG91ZEZvcm1hdGlvbiBjaGFuZ2VzZXQgb3BlcmF0aW9ucycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkNyZWF0ZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZWxldGVDaGFuZ2VTZXQnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdENoYW5nZVNldHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja1Jlc291cmNlRHJpZnRzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkdldFRlbXBsYXRlJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAnKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgQ0RLIGJvb3RzdHJhcCBidWNrZXQgYWNjZXNzIChmb3IgY2hhbmdlc2V0IGNyZWF0aW9uKScsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOkdldE9iamVjdCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpQdXRPYmplY3QnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6RGVsZXRlT2JqZWN0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOkxpc3RCdWNrZXQnLFxuICAgICAgJyAgICAgICAgICAgICAgICBSZXNvdXJjZTonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6czM6OjpjZGstJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0tKidcIixcbiAgICAgIFwiICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOnMzOjo6Y2RrLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259LSovKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgQ0RLIGJvb3RzdHJhcCBwYXJhbWV0ZXIgYWNjZXNzJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gc3NtOkdldFBhcmFtZXRlcicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVycycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVyc0J5UGF0aCcsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogIVN1YiAnYXJuOmF3czpzc206JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH06cGFyYW1ldGVyL2Nkay1ib290c3RyYXAvKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgSUFNIFBhc3NSb2xlIGZvciBDREsgb3BlcmF0aW9ucycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGlhbTpQYXNzUm9sZScsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnICAgICAgICAgICAgICAgIENvbmRpdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAgICdpYW06UGFzc2VkVG9TZXJ2aWNlJzogJ2Nsb3VkZm9ybWF0aW9uLmFtYXpvbmF3cy5jb20nXCIsXG4gICAgICAnJyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVPaWRjUHJvdmlkZXJPdXRwdXRMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgIEdpdEh1Yk9JRENQcm92aWRlckFybjonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdBUk4gb2YgdGhlIEdpdEh1YiBPSURDIHByb3ZpZGVyJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIUdldEF0dCBHaXRIdWJPSURDUHJvdmlkZXIuQXJuJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUdpdEh1Yk9JRENQcm92aWRlckFybidcIixcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNSb2xlT3V0cHV0TGluZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICBHaXRIdWJPSURDUm9sZUFybjonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdBUk4gb2YgdGhlIEdpdEh1YiBPSURDIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IEdpdEh1Yk9JRENSb2xlLkFybicsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1HaXRIdWJPSURDUm9sZUFybidcIixcbiAgICAgICcnLFxuICAgICAgJyAgR2l0SHViT0lEQ1JvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIEdpdEh1YiBPSURDIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhUmVmIEdpdEh1Yk9JRENSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUdpdEh1Yk9JRENSb2xlTmFtZSdcIixcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZUNoYW5nZXNldE91dHB1dExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZUFybjonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdBUk4gb2YgdGhlIENESyBjaGFuZ2VzZXQgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFHZXRBdHQgQ2RrQ2hhbmdlc2V0Um9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrQ2hhbmdlc2V0Um9sZUFybidcIixcbiAgICAgICcnLFxuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZU5hbWU6JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgQ0RLIGNoYW5nZXNldCByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIVJlZiBDZGtDaGFuZ2VzZXRSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0NoYW5nZXNldFJvbGVOYW1lJ1wiLFxuICAgIF07XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIFByb2plbi1pbnRlZ3JhdGVkIENESyBEaWZmIElBTSB0ZW1wbGF0ZSBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtEaWZmSWFtVGVtcGxhdGVQcm9wcyBleHRlbmRzIENka0RpZmZJYW1UZW1wbGF0ZUdlbmVyYXRvclByb3BzIHtcbiAgLyoqIFByb2plbiBwcm9qZWN0IGluc3RhbmNlICovXG4gIHJlYWRvbmx5IHByb2plY3Q6IGFueTtcbiAgLyoqIE91dHB1dCBwYXRoIGZvciB0aGUgdGVtcGxhdGUgZmlsZSAoZGVmYXVsdDogJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJykgKi9cbiAgcmVhZG9ubHkgb3V0cHV0UGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9qZW4gY29uc3RydWN0IHRoYXQgZW1pdHMgYSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSB3aXRoIG1pbmltYWwgSUFNIHBlcm1pc3Npb25zXG4gKiBmb3IgdGhlIENESyBEaWZmIFN0YWNrIFdvcmtmbG93LlxuICpcbiAqIEZvciBub24tUHJvamVuIHByb2plY3RzLCB1c2UgYENka0RpZmZJYW1UZW1wbGF0ZUdlbmVyYXRvcmAgZGlyZWN0bHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtEaWZmSWFtVGVtcGxhdGUge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogQ2RrRGlmZklhbVRlbXBsYXRlUHJvcHMpIHtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcHJvcHMub3V0cHV0UGF0aCA/PyAnY2RrLWRpZmYtd29ya2Zsb3ctaWFtLXRlbXBsYXRlLnlhbWwnO1xuXG4gICAgLy8gR2VuZXJhdGUgdGVtcGxhdGUgdXNpbmcgdGhlIGdlbmVyYXRvclxuICAgIGNvbnN0IHRlbXBsYXRlID0gQ2RrRGlmZklhbVRlbXBsYXRlR2VuZXJhdG9yLmdlbmVyYXRlVGVtcGxhdGUocHJvcHMpO1xuICAgIG5ldyBUZXh0RmlsZShwcm9wcy5wcm9qZWN0LCBvdXRwdXRQYXRoLCB7IGxpbmVzOiB0ZW1wbGF0ZS5zcGxpdCgnXFxuJykgfSk7XG5cbiAgICAvLyBBZGQgZGVwbG95IHRhc2tcbiAgICBwcm9wcy5wcm9qZWN0LmFkZFRhc2soJ2RlcGxveS1jZGtkaWZmLWlhbS10ZW1wbGF0ZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGVwbG95IHRoZSBDREsgRGlmZiBJQU0gdGVtcGxhdGUgdmlhIENsb3VkRm9ybWF0aW9uIChhY2NlcHRzIGV4dHJhIEFXUyBDTEkgYXJncywgZS5nLiwgLS1wYXJhbWV0ZXItb3ZlcnJpZGVzIEtleT1WYWx1ZS4uLiknLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgICBleGVjOiBDZGtEaWZmSWFtVGVtcGxhdGVHZW5lcmF0b3IuZ2VuZXJhdGVEZXBsb3lDb21tYW5kKG91dHB1dFBhdGgpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -221,6 +221,7 @@ class CdkDiffIamTemplateStackSetGenerator {
|
|
|
221
221
|
' - cloudformation:DeleteChangeSet',
|
|
222
222
|
' - cloudformation:ListChangeSets',
|
|
223
223
|
' - cloudformation:DescribeStacks',
|
|
224
|
+
' - cloudformation:DescribeStackResourceDrifts',
|
|
224
225
|
" Resource: '*'",
|
|
225
226
|
' # CDK bootstrap bucket access (for changeset creation)',
|
|
226
227
|
' - Effect: Allow',
|
|
@@ -343,7 +344,7 @@ class CdkDiffIamTemplateStackSetGenerator {
|
|
|
343
344
|
}
|
|
344
345
|
exports.CdkDiffIamTemplateStackSetGenerator = CdkDiffIamTemplateStackSetGenerator;
|
|
345
346
|
_a = JSII_RTTI_SYMBOL_1;
|
|
346
|
-
CdkDiffIamTemplateStackSetGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSetGenerator", version: "1.
|
|
347
|
+
CdkDiffIamTemplateStackSetGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSetGenerator", version: "1.4.0" };
|
|
347
348
|
/**
|
|
348
349
|
* Projen construct that creates a CloudFormation StackSet template for org-wide deployment of
|
|
349
350
|
* GitHub OIDC provider, OIDC role, and CDK Diff/Drift IAM roles.
|
|
@@ -388,5 +389,5 @@ class CdkDiffIamTemplateStackSet {
|
|
|
388
389
|
}
|
|
389
390
|
exports.CdkDiffIamTemplateStackSet = CdkDiffIamTemplateStackSet;
|
|
390
391
|
_b = JSII_RTTI_SYMBOL_1;
|
|
391
|
-
CdkDiffIamTemplateStackSet[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSet", version: "1.
|
|
392
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBa0M7QUFFbEM7O0dBRUc7QUFDSCxJQUFZLHFCQU9YO0FBUEQsV0FBWSxxQkFBcUI7SUFDL0IseURBQXlEO0lBQ3pELDBEQUFpQyxDQUFBO0lBQ2pDLGlEQUFpRDtJQUNqRCxrREFBeUIsQ0FBQTtJQUN6QixtQ0FBbUM7SUFDbkMsc0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFQVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQU9oQztBQWtHRDs7O0dBR0c7QUFDSCxNQUFhLG1DQUFtQztJQUM5Qzs7T0FFRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUErQztRQUNyRSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLGdCQUFnQixDQUFDO1FBQzVELE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLGtCQUFrQixDQUFDO1FBQ3hFLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksY0FBYyxDQUFDO1FBQzVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDO1FBQ3hFLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixJQUFJLEtBQUssQ0FBQztRQUVqRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQ3RDLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLFlBQVksRUFDWixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGFBQWEsRUFDYixLQUFLLENBQUMsV0FBVyxFQUNqQixnQkFBZ0IsQ0FDakIsQ0FBQztRQUVGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7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QUFFLDhCQUE4QjtZQUNqRCwyQkFBMkIsRUFDekIseUhBQXlIO1lBQzNILDJCQUEyQixFQUFFLG9EQUFvRDtZQUNqRixpQkFBaUIsRUFBRSxrRUFBa0U7WUFDckYsbUJBQW1CLEVBQUUsZ0RBQWdEO1lBQ3JFLHlCQUF5QixFQUFFLDZDQUE2QztTQUN6RSxDQUFDO1FBRUYsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQzlCLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7Z0JBQ3ZDLFdBQVcsRUFBRSxRQUFRLEtBQUssaUJBQWlCO2dCQUMzQyxJQUFJLEVBQUUsT0FBTzthQUNkLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQXJDSCxnRUFzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0RmlsZSB9IGZyb20gJ3Byb2plbic7XG5cbi8qKlxuICogV2hpY2ggcm9sZXMgdG8gaW5jbHVkZSBpbiB0aGUgU3RhY2tTZXRcbiAqL1xuZXhwb3J0IGVudW0gU3RhY2tTZXRSb2xlU2VsZWN0aW9uIHtcbiAgLyoqIEluY2x1ZGUgb25seSB0aGUgY2hhbmdlc2V0IHJvbGUgKENka0NoYW5nZXNldFJvbGUpICovXG4gIENIQU5HRVNFVF9PTkxZID0gJ0NIQU5HRVNFVF9PTkxZJyxcbiAgLyoqIEluY2x1ZGUgb25seSB0aGUgZHJpZnQgcm9sZSAoQ2RrRHJpZnRSb2xlKSAqL1xuICBEUklGVF9PTkxZID0gJ0RSSUZUX09OTFknLFxuICAvKiogSW5jbHVkZSBib3RoIHJvbGVzIChkZWZhdWx0KSAqL1xuICBCT1RIID0gJ0JPVEgnLFxufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIFN0YWNrU2V0IGF1dG8tZGVwbG95bWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrU2V0QXV0b0RlcGxveW1lbnQge1xuICAvKiogRW5hYmxlIGF1dG8tZGVwbG95bWVudCB0byBuZXcgYWNjb3VudHMgaW4gdGFyZ2V0IE9VcyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBSZXRhaW4gc3RhY2tzIHdoZW4gYWNjb3VudCBsZWF2ZXMgT1UgKGRlZmF1bHQ6IGZhbHNlKSAqL1xuICByZWFkb25seSByZXRhaW5TdGFja3NPbkFjY291bnRSZW1vdmFsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHaXRIdWIgcmVwb3NpdG9yeSByZXN0cmljdGlvbnMgZm9yIE9JREMgYXV0aGVudGljYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRIdWJPaWRjQ29uZmlnIHtcbiAgLyoqXG4gICAqIEdpdEh1YiBvcmdhbml6YXRpb24gb3IgdXNlcm5hbWUgKGUuZy4sICdteS1vcmcnIG9yICdteS11c2VybmFtZScpXG4gICAqL1xuICByZWFkb25seSBvd25lcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXBvc2l0b3J5IG5hbWVzIGFsbG93ZWQgdG8gYXNzdW1lIHRoZSByb2xlIChlLmcuLCBbJ3JlcG8xJywgJ3JlcG8yJ10pXG4gICAqIFVzZSBbJyonXSB0byBhbGxvdyBhbGwgcmVwb3MgaW4gdGhlIG9yZ2FuaXphdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yaWVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQnJhbmNoIHBhdHRlcm5zIGFsbG93ZWQgKGUuZy4sIFsnbWFpbicsICdyZWxlYXNlLyonXSlcbiAgICogRGVmYXVsdDogWycqJ10gKGFsbCBicmFuY2hlcylcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgc3ViamVjdCBjbGFpbXMgZm9yIGZpbmUtZ3JhaW5lZCBhY2Nlc3NcbiAgICogZS5nLiwgWydwdWxsX3JlcXVlc3QnLCAnZW52aXJvbm1lbnQ6cHJvZHVjdGlvbiddXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsQ2xhaW1zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIGdlbmVyYXRpbmcgU3RhY2tTZXQgdGVtcGxhdGVzIChubyBQcm9qZW4gZGVwZW5kZW5jeSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldEdlbmVyYXRvclByb3BzIHtcbiAgLyoqIEdpdEh1YiBPSURDIGNvbmZpZ3VyYXRpb24gZm9yIHJlcG8vYnJhbmNoIHJlc3RyaWN0aW9ucyAqL1xuICByZWFkb25seSBnaXRodWJPaWRjOiBHaXRIdWJPaWRjQ29uZmlnO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBHaXRIdWIgT0lEQyByb2xlIChkZWZhdWx0OiAnR2l0SHViT0lEQ1JvbGUnKSAqL1xuICByZWFkb25seSBvaWRjUm9sZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIE5hbWUgb2YgdGhlIENka0NoYW5nZXNldFJvbGUgKGRlZmF1bHQ6ICdDZGtDaGFuZ2VzZXRSb2xlJykgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc2V0Um9sZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIE5hbWUgb2YgdGhlIENka0RyaWZ0Um9sZSAoZGVmYXVsdDogJ0Nka0RyaWZ0Um9sZScpICovXG4gIHJlYWRvbmx5IGRyaWZ0Um9sZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIFdoaWNoIHJvbGVzIHRvIGluY2x1ZGUgKGRlZmF1bHQ6IEJPVEgpICovXG4gIHJlYWRvbmx5IHJvbGVTZWxlY3Rpb24/OiBTdGFja1NldFJvbGVTZWxlY3Rpb247XG5cbiAgLyoqIERlc2NyaXB0aW9uIGZvciB0aGUgU3RhY2tTZXQgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNraXAgY3JlYXRpbmcgdGhlIE9JREMgcHJvdmlkZXIgKHVzZSBleGlzdGluZyBvbmUpLlxuICAgKiBTZXQgdG8gdHJ1ZSBpZiBhY2NvdW50cyBhbHJlYWR5IGhhdmUgYSBHaXRIdWIgT0lEQyBwcm92aWRlci5cbiAgICogVGhlIHRlbXBsYXRlIHdpbGwgcmVmZXJlbmNlIHRoZSBleGlzdGluZyBwcm92aWRlciBieSBBUk4uXG4gICAqIERlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwT2lkY1Byb3ZpZGVyQ3JlYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciBnZW5lcmF0aW5nIFN0YWNrU2V0IENMSSBjb21tYW5kcyAobm8gUHJvamVuIGRlcGVuZGVuY3kpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRDb21tYW5kc1Byb3BzIHtcbiAgLyoqIE5hbWUgb2YgdGhlIFN0YWNrU2V0IChkZWZhdWx0OiAnY2RrLWRpZmYtd29ya2Zsb3ctaWFtLXN0YWNrc2V0JykgKi9cbiAgcmVhZG9ubHkgc3RhY2tTZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBQYXRoIHRvIHRoZSB0ZW1wbGF0ZSBmaWxlIChkZWZhdWx0OiAnY2RrLWRpZmYtd29ya2Zsb3ctc3RhY2tzZXQtdGVtcGxhdGUueWFtbCcpICovXG4gIHJlYWRvbmx5IHRlbXBsYXRlUGF0aD86IHN0cmluZztcblxuICAvKiogVGFyZ2V0IE9VcyBmb3IgZGVwbG95bWVudCAoZS5nLiwgWydvdS14eHh4LXh4eHh4eHh4JywgJ3IteHh4eCddKSAqL1xuICByZWFkb25seSB0YXJnZXRPcmdhbml6YXRpb25hbFVuaXRJZHM/OiBzdHJpbmdbXTtcblxuICAvKiogVGFyZ2V0IHJlZ2lvbnMgZm9yIGRlcGxveW1lbnQgKGUuZy4sIFsndXMtZWFzdC0xJywgJ2V1LXdlc3QtMSddKSAqL1xuICByZWFkb25seSByZWdpb25zPzogc3RyaW5nW107XG5cbiAgLyoqIEF1dG8tZGVwbG95bWVudCBjb25maWd1cmF0aW9uICovXG4gIHJlYWRvbmx5IGF1dG9EZXBsb3ltZW50PzogU3RhY2tTZXRBdXRvRGVwbG95bWVudDtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1c2UgZGVsZWdhdGVkIGFkbWluIG1vZGUgZm9yIFN0YWNrU2V0IG9wZXJhdGlvbnMuXG4gICAqIElmIHRydWUsIGFkZHMgLS1jYWxsLWFzIERFTEVHQVRFRF9BRE1JTiB0byBjb21tYW5kcy5cbiAgICogRGVmYXVsdDogdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZWdhdGVkQWRtaW4/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFB1cmUgZ2VuZXJhdG9yIGNsYXNzIGZvciBTdGFja1NldCB0ZW1wbGF0ZXMgYW5kIGNvbW1hbmRzLlxuICogTm8gUHJvamVuIGRlcGVuZGVuY3kgLSBjYW4gYmUgdXNlZCBpbiBhbnkgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0R2VuZXJhdG9yIHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBDbG91ZEZvcm1hdGlvbiBTdGFja1NldCB0ZW1wbGF0ZSBhcyBhIFlBTUwgc3RyaW5nLlxuICAgKi9cbiAgc3RhdGljIGdlbmVyYXRlVGVtcGxhdGUocHJvcHM6IENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0R2VuZXJhdG9yUHJvcHMpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9pZGNSb2xlTmFtZSA9IHByb3BzLm9pZGNSb2xlTmFtZSA/PyAnR2l0SHViT0lEQ1JvbGUnO1xuICAgIGNvbnN0IGNoYW5nZXNldFJvbGVOYW1lID0gcHJvcHMuY2hhbmdlc2V0Um9sZU5hbWUgPz8gJ0Nka0NoYW5nZXNldFJvbGUnO1xuICAgIGNvbnN0IGRyaWZ0Um9sZU5hbWUgPSBwcm9wcy5kcmlmdFJvbGVOYW1lID8/ICdDZGtEcmlmdFJvbGUnO1xuICAgIGNvbnN0IHJvbGVTZWxlY3Rpb24gPSBwcm9wcy5yb2xlU2VsZWN0aW9uID8/IFN0YWNrU2V0Um9sZVNlbGVjdGlvbi5CT1RIO1xuICAgIGNvbnN0IHNraXBPaWRjUHJvdmlkZXIgPSBwcm9wcy5za2lwT2lkY1Byb3ZpZGVyQ3JlYXRpb24gPz8gZmFsc2U7XG5cbiAgICBjb25zdCBsaW5lcyA9IHRoaXMuZ2VuZXJhdGVUZW1wbGF0ZUxpbmVzKFxuICAgICAgcHJvcHMuZ2l0aHViT2lkYyxcbiAgICAgIG9pZGNSb2xlTmFtZSxcbiAgICAgIGNoYW5nZXNldFJvbGVOYW1lLFxuICAgICAgZHJpZnRSb2xlTmFtZSxcbiAgICAgIHJvbGVTZWxlY3Rpb24sXG4gICAgICBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHNraXBPaWRjUHJvdmlkZXIsXG4gICAgKTtcblxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBBV1MgQ0xJIGNvbW1hbmRzIGZvciBTdGFja1NldCBvcGVyYXRpb25zLlxuICAgKiBSZXR1cm5zIGEgbWFwIG9mIGNvbW1hbmQgbmFtZXMgdG8gc2hlbGwgY29tbWFuZHMuXG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVDb21tYW5kcyhwcm9wczogQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRDb21tYW5kc1Byb3BzID0ge30pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBzdGFja1NldE5hbWUgPSBwcm9wcy5zdGFja1NldE5hbWUgPz8gJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS1zdGFja3NldCc7XG4gICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcHJvcHMudGVtcGxhdGVQYXRoID8/ICdjZGstZGlmZi13b3JrZmxvdy1zdGFja3NldC10ZW1wbGF0ZS55YW1sJztcbiAgICBjb25zdCByZWdpb25zID0gcHJvcHMucmVnaW9ucyA/PyBbJ3VzLWVhc3QtMSddO1xuICAgIGNvbnN0IHRhcmdldE9VcyA9IHByb3BzLnRhcmdldE9yZ2FuaXphdGlvbmFsVW5pdElkcyA/PyBbXTtcbiAgICBjb25zdCBhdXRvRGVwbG95RW5hYmxlZCA9IHByb3BzLmF1dG9EZXBsb3ltZW50Py5lbmFibGVkID8/IHRydWU7XG4gICAgY29uc3QgcmV0YWluU3RhY2tzID0gcHJvcHMuYXV0b0RlcGxveW1lbnQ/LnJldGFpblN0YWNrc09uQWNjb3VudFJlbW92YWwgPz8gZmFsc2U7XG4gICAgY29uc3QgZGVsZWdhdGVkQWRtaW4gPSBwcm9wcy5kZWxlZ2F0ZWRBZG1pbiA/PyB0cnVlO1xuICAgIGNvbnN0IGNhbGxBcyA9IGRlbGVnYXRlZEFkbWluID8gJyAtLWNhbGwtYXMgREVMRUdBVEVEX0FETUlOJyA6ICcnO1xuXG4gICAgY29uc3Qgb3VMaXN0ID0gdGFyZ2V0T1VzLmxlbmd0aCA+IDAgPyB0YXJnZXRPVXMuam9pbignLCcpIDogJzxPVV9JRFM+JztcbiAgICBjb25zdCByZWdpb25MaXN0ID0gcmVnaW9ucy5qb2luKCcgJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgJ3N0YWNrc2V0LWNyZWF0ZSc6IGBhd3MgY2xvdWRmb3JtYXRpb24gY3JlYXRlLXN0YWNrLXNldCAtLXN0YWNrLXNldC1uYW1lICR7c3RhY2tTZXROYW1lfSAtLXRlbXBsYXRlLWJvZHkgZmlsZTovLyR7dGVtcGxhdGVQYXRofSAtLWNhcGFiaWxpdGllcyBDQVBBQklMSVRZX05BTUVEX0lBTSAtLXBlcm1pc3Npb24tbW9kZWwgU0VSVklDRV9NQU5BR0VEIC0tYXV0by1kZXBsb3ltZW50IEVuYWJsZWQ9JHthdXRvRGVwbG95RW5hYmxlZH0sUmV0YWluU3RhY2tzT25BY2NvdW50UmVtb3ZhbD0ke3JldGFpblN0YWNrc30ke2NhbGxBc31gLFxuICAgICAgJ3N0YWNrc2V0LXVwZGF0ZSc6IGBhd3MgY2xvdWRmb3JtYXRpb24gdXBkYXRlLXN0YWNrLXNldCAtLXN0YWNrLXNldC1uYW1lICR7c3RhY2tTZXROYW1lfSAtLXRlbXBsYXRlLWJvZHkgZmlsZTovLyR7dGVtcGxhdGVQYXRofSAtLWNhcGFiaWxpdGllcyBDQVBBQklMSVRZX05BTUVEX0lBTSR7Y2FsbEFzfWAsXG4gICAgICAnc3RhY2tzZXQtZGVwbG95LWluc3RhbmNlcyc6IGBhd3MgY2xvdWRmb3JtYXRpb24gY3JlYXRlLXN0YWNrLWluc3RhbmNlcyAtLXN0YWNrLXNldC1uYW1lICR7c3RhY2tTZXROYW1lfSAtLWRlcGxveW1lbnQtdGFyZ2V0cyBPcmdhbml6YXRpb25hbFVuaXRJZHM9JHtvdUxpc3R9IC0tcmVnaW9ucyAke3JlZ2lvbkxpc3R9JHtjYWxsQXN9YCxcbiAgICAgICdzdGFja3NldC1kZWxldGUtaW5zdGFuY2VzJzogYGF3cyBjbG91ZGZvcm1hdGlvbiBkZWxldGUtc3RhY2staW5zdGFuY2VzIC0tc3RhY2stc2V0LW5hbWUgJHtzdGFja1NldE5hbWV9IC0tZGVwbG95bWVudC10YXJnZXRzIE9yZ2FuaXphdGlvbmFsVW5pdElkcz0ke291TGlzdH0gLS1yZWdpb25zICR7cmVnaW9uTGlzdH0gLS1uby1yZXRhaW4tc3RhY2tzJHtjYWxsQXN9YCxcbiAgICAgICdzdGFja3NldC1kZWxldGUnOiBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1zdGFjay1zZXQgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0ke2NhbGxBc31gLFxuICAgICAgJ3N0YWNrc2V0LWRlc2NyaWJlJzogYGF3cyBjbG91ZGZvcm1hdGlvbiBkZXNjcmliZS1zdGFjay1zZXQgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0ke2NhbGxBc31gLFxuICAgICAgJ3N0YWNrc2V0LWxpc3QtaW5zdGFuY2VzJzogYGF3cyBjbG91ZGZvcm1hdGlvbiBsaXN0LXN0YWNrLWluc3RhbmNlcyAtLXN0YWNrLXNldC1uYW1lICR7c3RhY2tTZXROYW1lfSR7Y2FsbEFzfWAsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlVGVtcGxhdGVMaW5lcyhcbiAgICBnaXRodWJPaWRjOiBHaXRIdWJPaWRjQ29uZmlnLFxuICAgIG9pZGNSb2xlTmFtZTogc3RyaW5nLFxuICAgIGNoYW5nZXNldFJvbGVOYW1lOiBzdHJpbmcsXG4gICAgZHJpZnRSb2xlTmFtZTogc3RyaW5nLFxuICAgIHJvbGVTZWxlY3Rpb246IFN0YWNrU2V0Um9sZVNlbGVjdGlvbixcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICBza2lwT2lkY1Byb3ZpZGVyOiBib29sZWFuID0gZmFsc2UsXG4gICk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBkZXNjID0gZGVzY3JpcHRpb24gPz8gJ0dpdEh1YiBPSURDIGFuZCBJQU0gcm9sZXMgZm9yIENESyBEaWZmL0RyaWZ0IHdvcmtmbG93cyAoU3RhY2tTZXQgZGVwbG95bWVudCknO1xuXG4gICAgY29uc3QgaW5jbHVkZUNoYW5nZXNldCA9XG4gICAgICByb2xlU2VsZWN0aW9uID09PSBTdGFja1NldFJvbGVTZWxlY3Rpb24uQk9USCB8fCByb2xlU2VsZWN0aW9uID09PSBTdGFja1NldFJvbGVTZWxlY3Rpb24uQ0hBTkdFU0VUX09OTFk7XG4gICAgY29uc3QgaW5jbHVkZURyaWZ0ID1cbiAgICAgIHJvbGVTZWxlY3Rpb24gPT09IFN0YWNrU2V0Um9sZVNlbGVjdGlvbi5CT1RIIHx8IHJvbGVTZWxlY3Rpb24gPT09IFN0YWNrU2V0Um9sZVNlbGVjdGlvbi5EUklGVF9PTkxZO1xuXG4gICAgLy8gSGVhZGVyXG4gICAgbGluZXMucHVzaChcIkFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbjogJzIwMTAtMDktMDknXCIpO1xuICAgIGxpbmVzLnB1c2goYERlc2NyaXB0aW9uOiAnJHtkZXNjfSdgKTtcbiAgICBsaW5lcy5wdXNoKCcnKTtcblxuICAgIC8vIFJlc291cmNlc1xuICAgIGxpbmVzLnB1c2goJ1Jlc291cmNlczonKTtcblxuICAgIC8vIE9JREMgUHJvdmlkZXIgKG9ubHkgaWYgbm90IHNraXBwaW5nKVxuICAgIGlmICghc2tpcE9pZGNQcm92aWRlcikge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlT2lkY1Byb3ZpZGVyTGluZXMoKSk7XG4gICAgfVxuXG4gICAgLy8gT0lEQyBSb2xlIChuZWVkcyBwZXJtaXNzaW9ucyB0byBhc3N1bWUgY2hhbmdlc2V0L2RyaWZ0IHJvbGVzKVxuICAgIGNvbnN0IHRhcmdldFJvbGVOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoaW5jbHVkZUNoYW5nZXNldCkgdGFyZ2V0Um9sZU5hbWVzLnB1c2goY2hhbmdlc2V0Um9sZU5hbWUpO1xuICAgIGlmIChpbmNsdWRlRHJpZnQpIHRhcmdldFJvbGVOYW1lcy5wdXNoKGRyaWZ0Um9sZU5hbWUpO1xuICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZU9pZGNSb2xlTGluZXMob2lkY1JvbGVOYW1lLCBnaXRodWJPaWRjLCBza2lwT2lkY1Byb3ZpZGVyLCB0YXJnZXRSb2xlTmFtZXMpKTtcblxuICAgIC8vIENoYW5nZXNldC9EcmlmdCByb2xlc1xuICAgIGlmIChpbmNsdWRlQ2hhbmdlc2V0KSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVDaGFuZ2VzZXRSb2xlTGluZXMoY2hhbmdlc2V0Um9sZU5hbWUpKTtcbiAgICB9XG5cbiAgICBpZiAoaW5jbHVkZURyaWZ0KSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVEcmlmdFJvbGVMaW5lcyhkcmlmdFJvbGVOYW1lKSk7XG4gICAgfVxuXG4gICAgLy8gT3V0cHV0c1xuICAgIGxpbmVzLnB1c2goJycpO1xuICAgIGxpbmVzLnB1c2goJ091dHB1dHM6Jyk7XG4gICAgaWYgKCFza2lwT2lkY1Byb3ZpZGVyKSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjT3V0cHV0TGluZXMoKSk7XG4gICAgfVxuXG4gICAgLy8gQWx3YXlzIG91dHB1dCB0aGUgT0lEQyByb2xlIEFSTlxuICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZU9pZGNSb2xlT3V0cHV0TGluZXMoKSk7XG5cbiAgICBpZiAoaW5jbHVkZUNoYW5nZXNldCkge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlQ2hhbmdlc2V0T3V0cHV0TGluZXMoKSk7XG4gICAgfVxuXG4gICAgaWYgKGluY2x1ZGVEcmlmdCkge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlRHJpZnRPdXRwdXRMaW5lcygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGluZXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNQcm92aWRlckxpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgIyBHaXRIdWIgT0lEQyBQcm92aWRlcicsXG4gICAgICAnICBHaXRIdWJPSURDUHJvdmlkZXI6JyxcbiAgICAgICcgICAgVHlwZTogQVdTOjpJQU06Ok9JRENQcm92aWRlcicsXG4gICAgICAnICAgIFByb3BlcnRpZXM6JyxcbiAgICAgICcgICAgICBVcmw6IGh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20nLFxuICAgICAgJyAgICAgIENsaWVudElkTGlzdDonLFxuICAgICAgJyAgICAgICAgLSBzdHMuYW1hem9uYXdzLmNvbScsXG4gICAgICAnICAgICAgVGh1bWJwcmludExpc3Q6JyxcbiAgICAgICcgICAgICAgIC0gNjkzOGZkNGQ5OGJhYjAzZmFhZGI5N2IzNDM5NjgzMWUzNzgwYWVhMScsXG4gICAgICAnICAgICAgICAtIDFjNThhM2E4NTE4ZTg3NTliZjA3NWI3NmI3NTBkNGYyZGYyNjRmY2QnLFxuICAgICAgJycsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlT2lkY1JvbGVMaW5lcyhcbiAgICByb2xlTmFtZTogc3RyaW5nLFxuICAgIGdpdGh1Yk9pZGM6IEdpdEh1Yk9pZGNDb25maWcsXG4gICAgc2tpcE9pZGNQcm92aWRlcjogYm9vbGVhbiA9IGZhbHNlLFxuICAgIHRhcmdldFJvbGVOYW1lczogc3RyaW5nW10gPSBbXSxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHN1YmplY3RDbGFpbXMgPSB0aGlzLmJ1aWxkU3ViamVjdENsYWltcyhnaXRodWJPaWRjKTtcblxuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgJyAgIyBHaXRIdWIgT0lEQyBSb2xlIC0gYXV0aGVudGljYXRlcyBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvd3MnLFxuICAgICAgJyAgR2l0SHViT0lEQ1JvbGU6JyxcbiAgICAgICcgICAgVHlwZTogQVdTOjpJQU06OlJvbGUnLFxuICAgIF07XG5cbiAgICAvLyBPbmx5IGFkZCBEZXBlbmRzT24gaWYgd2UncmUgY3JlYXRpbmcgdGhlIHByb3ZpZGVyXG4gICAgaWYgKCFza2lwT2lkY1Byb3ZpZGVyKSB7XG4gICAgICBsaW5lcy5wdXNoKCcgICAgRGVwZW5kc09uOiBHaXRIdWJPSURDUHJvdmlkZXInKTtcbiAgICB9XG5cbiAgICBsaW5lcy5wdXNoKFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICBcIiAgICAgIFJvbGVOYW1lOiAnXCIgKyByb2xlTmFtZSArIFwiJ1wiLFxuICAgICAgJyAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgUHJpbmNpcGFsOicsXG4gICAgICBcIiAgICAgICAgICAgICAgRmVkZXJhdGVkOiAhU3ViICdhcm46YXdzOmlhbTo6JHtBV1M6OkFjY291bnRJZH06b2lkYy1wcm92aWRlci90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbSdcIixcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlV2l0aFdlYklkZW50aXR5JyxcbiAgICAgICcgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgJ3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tOmF1ZCc6ICdzdHMuYW1hem9uYXdzLmNvbSdcIixcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0xpa2U6JyxcbiAgICAgIFwiICAgICAgICAgICAgICAgICd0b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTpzdWInOlwiLFxuICAgICk7XG5cbiAgICAvLyBBZGQgc3ViamVjdCBjbGFpbXNcbiAgICBmb3IgKGNvbnN0IGNsYWltIG9mIHN1YmplY3RDbGFpbXMpIHtcbiAgICAgIGxpbmVzLnB1c2goYCAgICAgICAgICAgICAgICAgIC0gJyR7Y2xhaW19J2ApO1xuICAgIH1cblxuICAgIC8vIEFkZCBwb2xpY3kgdG8gYWxsb3cgYXNzdW1pbmcgdGhlIHRhcmdldCByb2xlcyAoY2hhbmdlc2V0L2RyaWZ0KVxuICAgIGlmICh0YXJnZXRSb2xlTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgbGluZXMucHVzaCgnICAgICAgUG9saWNpZXM6Jyk7XG4gICAgICBsaW5lcy5wdXNoKCcgICAgICAgIC0gUG9saWN5TmFtZTogQXNzdW1lVGFyZ2V0Um9sZXMnKTtcbiAgICAgIGxpbmVzLnB1c2goJyAgICAgICAgICBQb2xpY3lEb2N1bWVudDonKTtcbiAgICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIik7XG4gICAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICBTdGF0ZW1lbnQ6Jyk7XG4gICAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycpO1xuICAgICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgIEFjdGlvbjogc3RzOkFzc3VtZVJvbGUnKTtcbiAgICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBSZXNvdXJjZTonKTtcbiAgICAgIGZvciAoY29uc3QgdGFyZ2V0Um9sZU5hbWUgb2YgdGFyZ2V0Um9sZU5hbWVzKSB7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czppYW06OlxcJHtBV1M6OkFjY291bnRJZH06cm9sZS8ke3RhcmdldFJvbGVOYW1lfSdgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICByZXR1cm4gbGluZXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBidWlsZFN1YmplY3RDbGFpbXMoZ2l0aHViT2lkYzogR2l0SHViT2lkY0NvbmZpZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjbGFpbXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgYnJhbmNoZXMgPSBnaXRodWJPaWRjLmJyYW5jaGVzID8/IFsnKiddO1xuXG4gICAgZm9yIChjb25zdCByZXBvIG9mIGdpdGh1Yk9pZGMucmVwb3NpdG9yaWVzKSB7XG4gICAgICBpZiAocmVwbyA9PT0gJyonKSB7XG4gICAgICAgIC8vIFdpbGRjYXJkIHJlcG8gLSBhbGxvdyBhbGwgcmVwb3Mgd2l0aCBicmFuY2ggcmVzdHJpY3Rpb25zXG4gICAgICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIGJyYW5jaGVzKSB7XG4gICAgICAgICAgaWYgKGJyYW5jaCA9PT0gJyonKSB7XG4gICAgICAgICAgICBjbGFpbXMucHVzaChgcmVwbzoke2dpdGh1Yk9pZGMub3duZXJ9LypgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qOnJlZjpyZWZzL2hlYWRzLyR7YnJhbmNofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU3BlY2lmaWMgcmVwb1xuICAgICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiBicmFuY2hlcykge1xuICAgICAgICAgIGlmIChicmFuY2ggPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8ke3JlcG99OipgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8ke3JlcG99OnJlZjpyZWZzL2hlYWRzLyR7YnJhbmNofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBhbnkgYWRkaXRpb25hbCBjbGFpbXNcbiAgICBpZiAoZ2l0aHViT2lkYy5hZGRpdGlvbmFsQ2xhaW1zKSB7XG4gICAgICBmb3IgKGNvbnN0IGNsYWltIG9mIGdpdGh1Yk9pZGMuYWRkaXRpb25hbENsYWltcykge1xuICAgICAgICBmb3IgKGNvbnN0IHJlcG8gb2YgZ2l0aHViT2lkYy5yZXBvc2l0b3JpZXMpIHtcbiAgICAgICAgICBpZiAocmVwbyA9PT0gJyonKSB7XG4gICAgICAgICAgICBjbGFpbXMucHVzaChgcmVwbzoke2dpdGh1Yk9pZGMub3duZXJ9Lyo6JHtjbGFpbX1gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8ke3JlcG99OiR7Y2xhaW19YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYWltcztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlQ2hhbmdlc2V0Um9sZUxpbmVzKHJvbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgICMgQ2xvdWRGb3JtYXRpb24gQ2hhbmdlU2V0IFJvbGUgLSBtaW5pbWFsIHBlcm1pc3Npb25zIGZvciBjaGFuZ2VzZXQgb3BlcmF0aW9ucycsXG4gICAgICAnICBDZGtDaGFuZ2VzZXRSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICAgICcgICAgRGVwZW5kc09uOiBHaXRIdWJPSURDUm9sZScsXG4gICAgICAnICAgIFByb3BlcnRpZXM6JyxcbiAgICAgIFwiICAgICAgUm9sZU5hbWU6ICdcIiArIHJvbGVOYW1lICsgXCInXCIsXG4gICAgICAnICAgICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIsXG4gICAgICAnICAgICAgICBTdGF0ZW1lbnQ6JyxcbiAgICAgICcgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICBQcmluY2lwYWw6JyxcbiAgICAgICcgICAgICAgICAgICAgIEFXUzogIUdldEF0dCBHaXRIdWJPSURDUm9sZS5Bcm4nLFxuICAgICAgJyAgICAgICAgICAgIEFjdGlvbjogc3RzOkFzc3VtZVJvbGUnLFxuICAgICAgJyAgICAgIFBvbGljaWVzOicsXG4gICAgICAnICAgICAgICAtIFBvbGljeU5hbWU6IENsb3VkRm9ybWF0aW9uQ2hhbmdlU2V0QWNjZXNzJyxcbiAgICAgICcgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIsXG4gICAgICAnICAgICAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgICAgICAjIENsb3VkRm9ybWF0aW9uIGNoYW5nZXNldCBvcGVyYXRpb25zJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlQ2hhbmdlU2V0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpMaXN0Q2hhbmdlU2V0cycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrcycsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnICAgICAgICAgICAgICAjIENESyBib290c3RyYXAgYnVja2V0IGFjY2VzcyAoZm9yIGNoYW5nZXNldCBjcmVhdGlvbiknLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpHZXRPYmplY3QnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6UHV0T2JqZWN0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOkRlbGV0ZU9iamVjdCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpMaXN0QnVja2V0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgUmVzb3VyY2U6JyxcbiAgICAgIFwiICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOnMzOjo6Y2RrLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259LSonXCIsXG4gICAgICBcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czpzMzo6OmNkay0ke0FXUzo6QWNjb3VudElkfS0ke0FXUzo6UmVnaW9ufS0qLyonXCIsXG4gICAgICAnICAgICAgICAgICAgICAjIENESyBib290c3RyYXAgcGFyYW1ldGVyIGFjY2VzcycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXInLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gc3NtOkdldFBhcmFtZXRlcnMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gc3NtOkdldFBhcmFtZXRlcnNCeVBhdGgnLFxuICAgICAgXCIgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICFTdWIgJ2Fybjphd3M6c3NtOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9OnBhcmFtZXRlci9jZGstYm9vdHN0cmFwLyonXCIsXG4gICAgICAnICAgICAgICAgICAgICAjIElBTSBQYXNzUm9sZSBmb3IgQ0RLIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBpYW06UGFzc1JvbGUnLFxuICAgICAgXCIgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICcqJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6JyxcbiAgICAgIFwiICAgICAgICAgICAgICAgICAgICAnaWFtOlBhc3NlZFRvU2VydmljZSc6ICdjbG91ZGZvcm1hdGlvbi5hbWF6b25hd3MuY29tJ1wiLFxuICAgICAgJycsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlRHJpZnRSb2xlTGluZXMocm9sZU5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgIyBDbG91ZEZvcm1hdGlvbiBEcmlmdCBEZXRlY3Rpb24gUm9sZSAtIG1pbmltYWwgcGVybWlzc2lvbnMgZm9yIGRyaWZ0IGRldGVjdGlvbiBvcGVyYXRpb25zJyxcbiAgICAgICcgIENka0RyaWZ0Um9sZTonLFxuICAgICAgJyAgICBUeXBlOiBBV1M6OklBTTo6Um9sZScsXG4gICAgICAnICAgIERlcGVuZHNPbjogR2l0SHViT0lEQ1JvbGUnLFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICBcIiAgICAgIFJvbGVOYW1lOiAnXCIgKyByb2xlTmFtZSArIFwiJ1wiLFxuICAgICAgJyAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgUHJpbmNpcGFsOicsXG4gICAgICAnICAgICAgICAgICAgICBBV1M6ICFHZXRBdHQgR2l0SHViT0lEQ1JvbGUuQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICBQb2xpY2llczonLFxuICAgICAgJyAgICAgICAgLSBQb2xpY3lOYW1lOiBDbG91ZEZvcm1hdGlvbkRyaWZ0QWNjZXNzJyxcbiAgICAgICcgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIsXG4gICAgICAnICAgICAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgICAgICAjIENsb3VkRm9ybWF0aW9uIGRyaWZ0IGRldGVjdGlvbiBvcGVyYXRpb25zJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGV0ZWN0U3RhY2tEcmlmdCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrRHJpZnREZXRlY3Rpb25TdGF0dXMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja1Jlc291cmNlRHJpZnRzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkxpc3RTdGFja1Jlc291cmNlcycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXRlY3RTdGFja1Jlc291cmNlRHJpZnQnLFxuICAgICAgXCIgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICcqJ1wiLFxuICAgICAgJycsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlT2lkY091dHB1dExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgR2l0SHViT0lEQ1Byb3ZpZGVyQXJuOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ0FSTiBvZiB0aGUgR2l0SHViIE9JREMgcHJvdmlkZXInXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IEdpdEh1Yk9JRENQcm92aWRlci5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tR2l0SHViT0lEQ1Byb3ZpZGVyQXJuJ1wiLFxuICAgICAgJycsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlT2lkY1JvbGVPdXRwdXRMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgIEdpdEh1Yk9JRENSb2xlQXJuOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ0FSTiBvZiB0aGUgR2l0SHViIE9JREMgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFHZXRBdHQgR2l0SHViT0lEQ1JvbGUuQXJuJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUdpdEh1Yk9JRENSb2xlQXJuJ1wiLFxuICAgICAgJycsXG4gICAgICAnICBHaXRIdWJPSURDUm9sZU5hbWU6JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgR2l0SHViIE9JREMgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgR2l0SHViT0lEQ1JvbGUnLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tR2l0SHViT0lEQ1JvbGVOYW1lJ1wiLFxuICAgICAgJycsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlQ2hhbmdlc2V0T3V0cHV0TGluZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICBDZGtDaGFuZ2VzZXRSb2xlQXJuOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ0FSTiBvZiB0aGUgQ0RLIGNoYW5nZXNldCByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIUdldEF0dCBDZGtDaGFuZ2VzZXRSb2xlLkFybicsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1DZGtDaGFuZ2VzZXRSb2xlQXJuJ1wiLFxuICAgICAgJycsXG4gICAgICAnICBDZGtDaGFuZ2VzZXRSb2xlTmFtZTonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBDREsgY2hhbmdlc2V0IHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhUmVmIENka0NoYW5nZXNldFJvbGUnLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrQ2hhbmdlc2V0Um9sZU5hbWUnXCIsXG4gICAgICAnJyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVEcmlmdE91dHB1dExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgQ2RrRHJpZnRSb2xlQXJuOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ0FSTiBvZiB0aGUgQ0RLIGRyaWZ0IGRldGVjdGlvbiByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIUdldEF0dCBDZGtEcmlmdFJvbGUuQXJuJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0RyaWZ0Um9sZUFybidcIixcbiAgICAgICcnLFxuICAgICAgJyAgQ2RrRHJpZnRSb2xlTmFtZTonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBDREsgZHJpZnQgZGV0ZWN0aW9uIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhUmVmIENka0RyaWZ0Um9sZScsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1DZGtEcmlmdFJvbGVOYW1lJ1wiLFxuICAgIF07XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIFByb2plbi1pbnRlZ3JhdGVkIFN0YWNrU2V0IGNvbnN0cnVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0UHJvcHMgZXh0ZW5kcyBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldEdlbmVyYXRvclByb3BzIHtcbiAgLyoqIFByb2plbiBwcm9qZWN0IGluc3RhbmNlICovXG4gIHJlYWRvbmx5IHByb2plY3Q6IGFueTtcblxuICAvKiogTmFtZSBvZiB0aGUgU3RhY2tTZXQgKGRlZmF1bHQ6ICdjZGstZGlmZi13b3JrZmxvdy1pYW0tc3RhY2tzZXQnKSAqL1xuICByZWFkb25seSBzdGFja1NldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIE91dHB1dCBwYXRoIGZvciB0aGUgdGVtcGxhdGUgZmlsZSAoZGVmYXVsdDogJ2Nkay1kaWZmLXdvcmtmbG93LXN0YWNrc2V0LXRlbXBsYXRlLnlhbWwnKSAqL1xuICByZWFkb25seSBvdXRwdXRQYXRoPzogc3RyaW5nO1xuXG4gIC8qKiBUYXJnZXQgT1VzIGZvciBkZXBsb3ltZW50IChlLmcuLCBbJ291LXh4eHgteHh4eHh4eHgnLCAnci14eHh4J10pICovXG4gIHJlYWRvbmx5IHRhcmdldE9yZ2FuaXphdGlvbmFsVW5pdElkcz86IHN0cmluZ1tdO1xuXG4gIC8qKiBUYXJnZXQgcmVnaW9ucyBmb3IgZGVwbG95bWVudCAoZS5nLiwgWyd1cy1lYXN0LTEnLCAnZXUtd2VzdC0xJ10pICovXG4gIHJlYWRvbmx5IHJlZ2lvbnM/OiBzdHJpbmdbXTtcblxuICAvKiogQXV0by1kZXBsb3ltZW50IGNvbmZpZ3VyYXRpb24gKi9cbiAgcmVhZG9ubHkgYXV0b0RlcGxveW1lbnQ/OiBTdGFja1NldEF1dG9EZXBsb3ltZW50O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSBkZWxlZ2F0ZWQgYWRtaW4gbW9kZSBmb3IgU3RhY2tTZXQgb3BlcmF0aW9ucy5cbiAgICogSWYgdHJ1ZSwgYWRkcyAtLWNhbGwtYXMgREVMRUdBVEVEX0FETUlOIHRvIGNvbW1hbmRzLlxuICAgKiBJZiBmYWxzZSwgYXNzdW1lcyBydW5uaW5nIGZyb20gdGhlIG1hbmFnZW1lbnQgYWNjb3VudC5cbiAgICogRGVmYXVsdDogdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZWdhdGVkQWRtaW4/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb2plbiBjb25zdHJ1Y3QgdGhhdCBjcmVhdGVzIGEgQ2xvdWRGb3JtYXRpb24gU3RhY2tTZXQgdGVtcGxhdGUgZm9yIG9yZy13aWRlIGRlcGxveW1lbnQgb2ZcbiAqIEdpdEh1YiBPSURDIHByb3ZpZGVyLCBPSURDIHJvbGUsIGFuZCBDREsgRGlmZi9EcmlmdCBJQU0gcm9sZXMuXG4gKlxuICogVGhpcyBwcm92aWRlcyBhIHNlbGYtY29udGFpbmVkIHBlci1hY2NvdW50IGRlcGxveW1lbnQgd2l0aCBubyByb2xlIGNoYWluaW5nIHJlcXVpcmVkLlxuICpcbiAqIEZvciBub24tUHJvamVuIHByb2plY3RzLCB1c2UgYENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0R2VuZXJhdG9yYCBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0UHJvcHMpIHtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcHJvcHMub3V0cHV0UGF0aCA/PyAnY2RrLWRpZmYtd29ya2Zsb3ctc3RhY2tzZXQtdGVtcGxhdGUueWFtbCc7XG4gICAgY29uc3Qgc3RhY2tTZXROYW1lID0gcHJvcHMuc3RhY2tTZXROYW1lID8/ICdjZGstZGlmZi13b3JrZmxvdy1pYW0tc3RhY2tzZXQnO1xuXG4gICAgLy8gR2VuZXJhdGUgdGVtcGxhdGUgdXNpbmcgdGhlIGdlbmVyYXRvclxuICAgIGNvbnN0IHRlbXBsYXRlID0gQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRHZW5lcmF0b3IuZ2VuZXJhdGVUZW1wbGF0ZShwcm9wcyk7XG4gICAgbmV3IFRleHRGaWxlKHByb3BzLnByb2plY3QsIG91dHB1dFBhdGgsIHsgbGluZXM6IHRlbXBsYXRlLnNwbGl0KCdcXG4nKSB9KTtcblxuICAgIC8vIEdlbmVyYXRlIGNvbW1hbmRzIGFuZCBhZGQgYXMgUHJvamVuIHRhc2tzXG4gICAgY29uc3QgY29tbWFuZHMgPSBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldEdlbmVyYXRvci5nZW5lcmF0ZUNvbW1hbmRzKHtcbiAgICAgIHN0YWNrU2V0TmFtZSxcbiAgICAgIHRlbXBsYXRlUGF0aDogb3V0cHV0UGF0aCxcbiAgICAgIHRhcmdldE9yZ2FuaXphdGlvbmFsVW5pdElkczogcHJvcHMudGFyZ2V0T3JnYW5pemF0aW9uYWxVbml0SWRzLFxuICAgICAgcmVnaW9uczogcHJvcHMucmVnaW9ucyxcbiAgICAgIGF1dG9EZXBsb3ltZW50OiBwcm9wcy5hdXRvRGVwbG95bWVudCxcbiAgICAgIGRlbGVnYXRlZEFkbWluOiBwcm9wcy5kZWxlZ2F0ZWRBZG1pbixcbiAgICB9KTtcblxuICAgIGNvbnN0IHRhc2tEZXNjcmlwdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnc3RhY2tzZXQtY3JlYXRlJzogJ0NyZWF0ZSB0aGUgU3RhY2tTZXQgZm9yIG9yZy13aWRlIElBTSByb2xlIGRlcGxveW1lbnQnLFxuICAgICAgJ3N0YWNrc2V0LXVwZGF0ZSc6ICdVcGRhdGUgdGhlIFN0YWNrU2V0IHRlbXBsYXRlJyxcbiAgICAgICdzdGFja3NldC1kZXBsb3ktaW5zdGFuY2VzJzpcbiAgICAgICAgJ0RlcGxveSBzdGFjayBpbnN0YW5jZXMgdG8gdGFyZ2V0IE9VcyBhbmQgcmVnaW9ucyAocGFzcyAtLWRlcGxveW1lbnQtdGFyZ2V0cyBPcmdhbml6YXRpb25hbFVuaXRJZHM9PG91LWlkcz4gdG8gb3ZlcnJpZGUpJyxcbiAgICAgICdzdGFja3NldC1kZWxldGUtaW5zdGFuY2VzJzogJ0RlbGV0ZSBzdGFjayBpbnN0YW5jZXMgZnJvbSB0YXJnZXQgT1VzIGFuZCByZWdpb25zJyxcbiAgICAgICdzdGFja3NldC1kZWxldGUnOiAnRGVsZXRlIHRoZSBTdGFja1NldCAocmVxdWlyZXMgYWxsIGluc3RhbmNlcyB0byBiZSBkZWxldGVkIGZpcnN0KScsXG4gICAgICAnc3RhY2tzZXQtZGVzY3JpYmUnOiAnRGVzY3JpYmUgdGhlIFN0YWNrU2V0IHN0YXR1cyBhbmQgY29uZmlndXJhdGlvbicsXG4gICAgICAnc3RhY2tzZXQtbGlzdC1pbnN0YW5jZXMnOiAnTGlzdCBhbGwgc3RhY2sgaW5zdGFuY2VzIGFuZCB0aGVpciBzdGF0dXNlcycsXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgW3Rhc2tOYW1lLCBjb21tYW5kXSBvZiBPYmplY3QuZW50cmllcyhjb21tYW5kcykpIHtcbiAgICAgIHByb3BzLnByb2plY3QuYWRkVGFzayh0YXNrTmFtZSwge1xuICAgICAgICBkZXNjcmlwdGlvbjogdGFza0Rlc2NyaXB0aW9uc1t0YXNrTmFtZV0sXG4gICAgICAgIHJlY2VpdmVBcmdzOiB0YXNrTmFtZSAhPT0gJ3N0YWNrc2V0LWRlbGV0ZScsXG4gICAgICAgIGV4ZWM6IGNvbW1hbmQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
392
|
+
CdkDiffIamTemplateStackSet[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSet", version: "1.4.0" };
|
|
393
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBa0M7QUFFbEM7O0dBRUc7QUFDSCxJQUFZLHFCQU9YO0FBUEQsV0FBWSxxQkFBcUI7SUFDL0IseURBQXlEO0lBQ3pELDBEQUFpQyxDQUFBO0lBQ2pDLGlEQUFpRDtJQUNqRCxrREFBeUIsQ0FBQTtJQUN6QixtQ0FBbUM7SUFDbkMsc0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFQVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQU9oQztBQWtHRDs7O0dBR0c7QUFDSCxNQUFhLG1DQUFtQztJQUM5Qzs7T0FFRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUErQztRQUNyRSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLGdCQUFnQixDQUFDO1FBQzVELE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLGtCQUFrQixDQUFDO1FBQ3hFLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksY0FBYyxDQUFDO1FBQzVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDO1FBQ3hFLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixJQUFJLEtBQUssQ0FBQztRQUVqRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQ3RDLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLFlBQVksRUFDWixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGFBQWEsRUFDYixLQUFLLENBQUMsV0FBVyxFQUNqQixnQkFBZ0IsQ0FDakIsQ0FBQztRQUVGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7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QUN6RSxpQkFBaUIsRUFBRSw4QkFBOEI7WUFDakQsMkJBQTJCLEVBQ3pCLHlIQUF5SDtZQUMzSCwyQkFBMkIsRUFBRSxvREFBb0Q7WUFDakYsaUJBQWlCLEVBQUUsa0VBQWtFO1lBQ3JGLG1CQUFtQixFQUFFLGdEQUFnRDtZQUNyRSx5QkFBeUIsRUFBRSw2Q0FBNkM7U0FDekUsQ0FBQztRQUVGLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDM0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUM5QixXQUFXLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO2dCQUN2QyxXQUFXLEVBQUUsUUFBUSxLQUFLLGlCQUFpQjtnQkFDM0MsSUFBSSxFQUFFLE9BQU87YUFDZCxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUFyQ0gsZ0VBc0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuXG4vKipcbiAqIFdoaWNoIHJvbGVzIHRvIGluY2x1ZGUgaW4gdGhlIFN0YWNrU2V0XG4gKi9cbmV4cG9ydCBlbnVtIFN0YWNrU2V0Um9sZVNlbGVjdGlvbiB7XG4gIC8qKiBJbmNsdWRlIG9ubHkgdGhlIGNoYW5nZXNldCByb2xlIChDZGtDaGFuZ2VzZXRSb2xlKSAqL1xuICBDSEFOR0VTRVRfT05MWSA9ICdDSEFOR0VTRVRfT05MWScsXG4gIC8qKiBJbmNsdWRlIG9ubHkgdGhlIGRyaWZ0IHJvbGUgKENka0RyaWZ0Um9sZSkgKi9cbiAgRFJJRlRfT05MWSA9ICdEUklGVF9PTkxZJyxcbiAgLyoqIEluY2x1ZGUgYm90aCByb2xlcyAoZGVmYXVsdCkgKi9cbiAgQk9USCA9ICdCT1RIJyxcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBTdGFja1NldCBhdXRvLWRlcGxveW1lbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFja1NldEF1dG9EZXBsb3ltZW50IHtcbiAgLyoqIEVuYWJsZSBhdXRvLWRlcGxveW1lbnQgdG8gbmV3IGFjY291bnRzIGluIHRhcmdldCBPVXMgKGRlZmF1bHQ6IHRydWUpICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogUmV0YWluIHN0YWNrcyB3aGVuIGFjY291bnQgbGVhdmVzIE9VIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgcmVhZG9ubHkgcmV0YWluU3RhY2tzT25BY2NvdW50UmVtb3ZhbD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogR2l0SHViIHJlcG9zaXRvcnkgcmVzdHJpY3Rpb25zIGZvciBPSURDIGF1dGhlbnRpY2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2l0SHViT2lkY0NvbmZpZyB7XG4gIC8qKlxuICAgKiBHaXRIdWIgb3JnYW5pemF0aW9uIG9yIHVzZXJuYW1lIChlLmcuLCAnbXktb3JnJyBvciAnbXktdXNlcm5hbWUnKVxuICAgKi9cbiAgcmVhZG9ubHkgb3duZXI6IHN0cmluZztcblxuICAvKipcbiAgICogUmVwb3NpdG9yeSBuYW1lcyBhbGxvd2VkIHRvIGFzc3VtZSB0aGUgcm9sZSAoZS5nLiwgWydyZXBvMScsICdyZXBvMiddKVxuICAgKiBVc2UgWycqJ10gdG8gYWxsb3cgYWxsIHJlcG9zIGluIHRoZSBvcmdhbml6YXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcmllczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEJyYW5jaCBwYXR0ZXJucyBhbGxvd2VkIChlLmcuLCBbJ21haW4nLCAncmVsZWFzZS8qJ10pXG4gICAqIERlZmF1bHQ6IFsnKiddIChhbGwgYnJhbmNoZXMpXG4gICAqL1xuICByZWFkb25seSBicmFuY2hlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHN1YmplY3QgY2xhaW1zIGZvciBmaW5lLWdyYWluZWQgYWNjZXNzXG4gICAqIGUuZy4sIFsncHVsbF9yZXF1ZXN0JywgJ2Vudmlyb25tZW50OnByb2R1Y3Rpb24nXVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbENsYWltcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciBnZW5lcmF0aW5nIFN0YWNrU2V0IHRlbXBsYXRlcyAobm8gUHJvamVuIGRlcGVuZGVuY3kpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRHZW5lcmF0b3JQcm9wcyB7XG4gIC8qKiBHaXRIdWIgT0lEQyBjb25maWd1cmF0aW9uIGZvciByZXBvL2JyYW5jaCByZXN0cmljdGlvbnMgKi9cbiAgcmVhZG9ubHkgZ2l0aHViT2lkYzogR2l0SHViT2lkY0NvbmZpZztcblxuICAvKiogTmFtZSBvZiB0aGUgR2l0SHViIE9JREMgcm9sZSAoZGVmYXVsdDogJ0dpdEh1Yk9JRENSb2xlJykgKi9cbiAgcmVhZG9ubHkgb2lkY1JvbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBDZGtDaGFuZ2VzZXRSb2xlIChkZWZhdWx0OiAnQ2RrQ2hhbmdlc2V0Um9sZScpICovXG4gIHJlYWRvbmx5IGNoYW5nZXNldFJvbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBDZGtEcmlmdFJvbGUgKGRlZmF1bHQ6ICdDZGtEcmlmdFJvbGUnKSAqL1xuICByZWFkb25seSBkcmlmdFJvbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBXaGljaCByb2xlcyB0byBpbmNsdWRlIChkZWZhdWx0OiBCT1RIKSAqL1xuICByZWFkb25seSByb2xlU2VsZWN0aW9uPzogU3RhY2tTZXRSb2xlU2VsZWN0aW9uO1xuXG4gIC8qKiBEZXNjcmlwdGlvbiBmb3IgdGhlIFN0YWNrU2V0ICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTa2lwIGNyZWF0aW5nIHRoZSBPSURDIHByb3ZpZGVyICh1c2UgZXhpc3Rpbmcgb25lKS5cbiAgICogU2V0IHRvIHRydWUgaWYgYWNjb3VudHMgYWxyZWFkeSBoYXZlIGEgR2l0SHViIE9JREMgcHJvdmlkZXIuXG4gICAqIFRoZSB0ZW1wbGF0ZSB3aWxsIHJlZmVyZW5jZSB0aGUgZXhpc3RpbmcgcHJvdmlkZXIgYnkgQVJOLlxuICAgKiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcE9pZGNQcm92aWRlckNyZWF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgZ2VuZXJhdGluZyBTdGFja1NldCBDTEkgY29tbWFuZHMgKG5vIFByb2plbiBkZXBlbmRlbmN5KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0Q29tbWFuZHNQcm9wcyB7XG4gIC8qKiBOYW1lIG9mIHRoZSBTdGFja1NldCAoZGVmYXVsdDogJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS1zdGFja3NldCcpICovXG4gIHJlYWRvbmx5IHN0YWNrU2V0TmFtZT86IHN0cmluZztcblxuICAvKiogUGF0aCB0byB0aGUgdGVtcGxhdGUgZmlsZSAoZGVmYXVsdDogJ2Nkay1kaWZmLXdvcmtmbG93LXN0YWNrc2V0LXRlbXBsYXRlLnlhbWwnKSAqL1xuICByZWFkb25seSB0ZW1wbGF0ZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqIFRhcmdldCBPVXMgZm9yIGRlcGxveW1lbnQgKGUuZy4sIFsnb3UteHh4eC14eHh4eHh4eCcsICdyLXh4eHgnXSkgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0T3JnYW5pemF0aW9uYWxVbml0SWRzPzogc3RyaW5nW107XG5cbiAgLyoqIFRhcmdldCByZWdpb25zIGZvciBkZXBsb3ltZW50IChlLmcuLCBbJ3VzLWVhc3QtMScsICdldS13ZXN0LTEnXSkgKi9cbiAgcmVhZG9ubHkgcmVnaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKiBBdXRvLWRlcGxveW1lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBhdXRvRGVwbG95bWVudD86IFN0YWNrU2V0QXV0b0RlcGxveW1lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIGRlbGVnYXRlZCBhZG1pbiBtb2RlIGZvciBTdGFja1NldCBvcGVyYXRpb25zLlxuICAgKiBJZiB0cnVlLCBhZGRzIC0tY2FsbC1hcyBERUxFR0FURURfQURNSU4gdG8gY29tbWFuZHMuXG4gICAqIERlZmF1bHQ6IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlbGVnYXRlZEFkbWluPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQdXJlIGdlbmVyYXRvciBjbGFzcyBmb3IgU3RhY2tTZXQgdGVtcGxhdGVzIGFuZCBjb21tYW5kcy5cbiAqIE5vIFByb2plbiBkZXBlbmRlbmN5IC0gY2FuIGJlIHVzZWQgaW4gYW55IHByb2plY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldEdlbmVyYXRvciB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgQ2xvdWRGb3JtYXRpb24gU3RhY2tTZXQgdGVtcGxhdGUgYXMgYSBZQU1MIHN0cmluZy5cbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZVRlbXBsYXRlKHByb3BzOiBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldEdlbmVyYXRvclByb3BzKTogc3RyaW5nIHtcbiAgICBjb25zdCBvaWRjUm9sZU5hbWUgPSBwcm9wcy5vaWRjUm9sZU5hbWUgPz8gJ0dpdEh1Yk9JRENSb2xlJztcbiAgICBjb25zdCBjaGFuZ2VzZXRSb2xlTmFtZSA9IHByb3BzLmNoYW5nZXNldFJvbGVOYW1lID8/ICdDZGtDaGFuZ2VzZXRSb2xlJztcbiAgICBjb25zdCBkcmlmdFJvbGVOYW1lID0gcHJvcHMuZHJpZnRSb2xlTmFtZSA/PyAnQ2RrRHJpZnRSb2xlJztcbiAgICBjb25zdCByb2xlU2VsZWN0aW9uID0gcHJvcHMucm9sZVNlbGVjdGlvbiA/PyBTdGFja1NldFJvbGVTZWxlY3Rpb24uQk9USDtcbiAgICBjb25zdCBza2lwT2lkY1Byb3ZpZGVyID0gcHJvcHMuc2tpcE9pZGNQcm92aWRlckNyZWF0aW9uID8/IGZhbHNlO1xuXG4gICAgY29uc3QgbGluZXMgPSB0aGlzLmdlbmVyYXRlVGVtcGxhdGVMaW5lcyhcbiAgICAgIHByb3BzLmdpdGh1Yk9pZGMsXG4gICAgICBvaWRjUm9sZU5hbWUsXG4gICAgICBjaGFuZ2VzZXRSb2xlTmFtZSxcbiAgICAgIGRyaWZ0Um9sZU5hbWUsXG4gICAgICByb2xlU2VsZWN0aW9uLFxuICAgICAgcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBza2lwT2lkY1Byb3ZpZGVyLFxuICAgICk7XG5cbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgQVdTIENMSSBjb21tYW5kcyBmb3IgU3RhY2tTZXQgb3BlcmF0aW9ucy5cbiAgICogUmV0dXJucyBhIG1hcCBvZiBjb21tYW5kIG5hbWVzIHRvIHNoZWxsIGNvbW1hbmRzLlxuICAgKi9cbiAgc3RhdGljIGdlbmVyYXRlQ29tbWFuZHMocHJvcHM6IENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0Q29tbWFuZHNQcm9wcyA9IHt9KTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3Qgc3RhY2tTZXROYW1lID0gcHJvcHMuc3RhY2tTZXROYW1lID8/ICdjZGstZGlmZi13b3JrZmxvdy1pYW0tc3RhY2tzZXQnO1xuICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHByb3BzLnRlbXBsYXRlUGF0aCA/PyAnY2RrLWRpZmYtd29ya2Zsb3ctc3RhY2tzZXQtdGVtcGxhdGUueWFtbCc7XG4gICAgY29uc3QgcmVnaW9ucyA9IHByb3BzLnJlZ2lvbnMgPz8gWyd1cy1lYXN0LTEnXTtcbiAgICBjb25zdCB0YXJnZXRPVXMgPSBwcm9wcy50YXJnZXRPcmdhbml6YXRpb25hbFVuaXRJZHMgPz8gW107XG4gICAgY29uc3QgYXV0b0RlcGxveUVuYWJsZWQgPSBwcm9wcy5hdXRvRGVwbG95bWVudD8uZW5hYmxlZCA/PyB0cnVlO1xuICAgIGNvbnN0IHJldGFpblN0YWNrcyA9IHByb3BzLmF1dG9EZXBsb3ltZW50Py5yZXRhaW5TdGFja3NPbkFjY291bnRSZW1vdmFsID8/IGZhbHNlO1xuICAgIGNvbnN0IGRlbGVnYXRlZEFkbWluID0gcHJvcHMuZGVsZWdhdGVkQWRtaW4gPz8gdHJ1ZTtcbiAgICBjb25zdCBjYWxsQXMgPSBkZWxlZ2F0ZWRBZG1pbiA/ICcgLS1jYWxsLWFzIERFTEVHQVRFRF9BRE1JTicgOiAnJztcblxuICAgIGNvbnN0IG91TGlzdCA9IHRhcmdldE9Vcy5sZW5ndGggPiAwID8gdGFyZ2V0T1VzLmpvaW4oJywnKSA6ICc8T1VfSURTPic7XG4gICAgY29uc3QgcmVnaW9uTGlzdCA9IHJlZ2lvbnMuam9pbignICcpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICdzdGFja3NldC1jcmVhdGUnOiBgYXdzIGNsb3VkZm9ybWF0aW9uIGNyZWF0ZS1zdGFjay1zZXQgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0gLS10ZW1wbGF0ZS1ib2R5IGZpbGU6Ly8ke3RlbXBsYXRlUGF0aH0gLS1jYXBhYmlsaXRpZXMgQ0FQQUJJTElUWV9OQU1FRF9JQU0gLS1wZXJtaXNzaW9uLW1vZGVsIFNFUlZJQ0VfTUFOQUdFRCAtLWF1dG8tZGVwbG95bWVudCBFbmFibGVkPSR7YXV0b0RlcGxveUVuYWJsZWR9LFJldGFpblN0YWNrc09uQWNjb3VudFJlbW92YWw9JHtyZXRhaW5TdGFja3N9JHtjYWxsQXN9YCxcbiAgICAgICdzdGFja3NldC11cGRhdGUnOiBgYXdzIGNsb3VkZm9ybWF0aW9uIHVwZGF0ZS1zdGFjay1zZXQgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0gLS10ZW1wbGF0ZS1ib2R5IGZpbGU6Ly8ke3RlbXBsYXRlUGF0aH0gLS1jYXBhYmlsaXRpZXMgQ0FQQUJJTElUWV9OQU1FRF9JQU0ke2NhbGxBc31gLFxuICAgICAgJ3N0YWNrc2V0LWRlcGxveS1pbnN0YW5jZXMnOiBgYXdzIGNsb3VkZm9ybWF0aW9uIGNyZWF0ZS1zdGFjay1pbnN0YW5jZXMgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0gLS1kZXBsb3ltZW50LXRhcmdldHMgT3JnYW5pemF0aW9uYWxVbml0SWRzPSR7b3VMaXN0fSAtLXJlZ2lvbnMgJHtyZWdpb25MaXN0fSR7Y2FsbEFzfWAsXG4gICAgICAnc3RhY2tzZXQtZGVsZXRlLWluc3RhbmNlcyc6IGBhd3MgY2xvdWRmb3JtYXRpb24gZGVsZXRlLXN0YWNrLWluc3RhbmNlcyAtLXN0YWNrLXNldC1uYW1lICR7c3RhY2tTZXROYW1lfSAtLWRlcGxveW1lbnQtdGFyZ2V0cyBPcmdhbml6YXRpb25hbFVuaXRJZHM9JHtvdUxpc3R9IC0tcmVnaW9ucyAke3JlZ2lvbkxpc3R9IC0tbm8tcmV0YWluLXN0YWNrcyR7Y2FsbEFzfWAsXG4gICAgICAnc3RhY2tzZXQtZGVsZXRlJzogYGF3cyBjbG91ZGZvcm1hdGlvbiBkZWxldGUtc3RhY2stc2V0IC0tc3RhY2stc2V0LW5hbWUgJHtzdGFja1NldE5hbWV9JHtjYWxsQXN9YCxcbiAgICAgICdzdGFja3NldC1kZXNjcmliZSc6IGBhd3MgY2xvdWRmb3JtYXRpb24gZGVzY3JpYmUtc3RhY2stc2V0IC0tc3RhY2stc2V0LW5hbWUgJHtzdGFja1NldE5hbWV9JHtjYWxsQXN9YCxcbiAgICAgICdzdGFja3NldC1saXN0LWluc3RhbmNlcyc6IGBhd3MgY2xvdWRmb3JtYXRpb24gbGlzdC1zdGFjay1pbnN0YW5jZXMgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0ke2NhbGxBc31gLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZVRlbXBsYXRlTGluZXMoXG4gICAgZ2l0aHViT2lkYzogR2l0SHViT2lkY0NvbmZpZyxcbiAgICBvaWRjUm9sZU5hbWU6IHN0cmluZyxcbiAgICBjaGFuZ2VzZXRSb2xlTmFtZTogc3RyaW5nLFxuICAgIGRyaWZ0Um9sZU5hbWU6IHN0cmluZyxcbiAgICByb2xlU2VsZWN0aW9uOiBTdGFja1NldFJvbGVTZWxlY3Rpb24sXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgc2tpcE9pZGNQcm92aWRlcjogYm9vbGVhbiA9IGZhbHNlLFxuICApOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZGVzYyA9IGRlc2NyaXB0aW9uID8/ICdHaXRIdWIgT0lEQyBhbmQgSUFNIHJvbGVzIGZvciBDREsgRGlmZi9EcmlmdCB3b3JrZmxvd3MgKFN0YWNrU2V0IGRlcGxveW1lbnQpJztcblxuICAgIGNvbnN0IGluY2x1ZGVDaGFuZ2VzZXQgPVxuICAgICAgcm9sZVNlbGVjdGlvbiA9PT0gU3RhY2tTZXRSb2xlU2VsZWN0aW9uLkJPVEggfHwgcm9sZVNlbGVjdGlvbiA9PT0gU3RhY2tTZXRSb2xlU2VsZWN0aW9uLkNIQU5HRVNFVF9PTkxZO1xuICAgIGNvbnN0IGluY2x1ZGVEcmlmdCA9XG4gICAgICByb2xlU2VsZWN0aW9uID09PSBTdGFja1NldFJvbGVTZWxlY3Rpb24uQk9USCB8fCByb2xlU2VsZWN0aW9uID09PSBTdGFja1NldFJvbGVTZWxlY3Rpb24uRFJJRlRfT05MWTtcblxuICAgIC8vIEhlYWRlclxuICAgIGxpbmVzLnB1c2goXCJBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb246ICcyMDEwLTA5LTA5J1wiKTtcbiAgICBsaW5lcy5wdXNoKGBEZXNjcmlwdGlvbjogJyR7ZGVzY30nYCk7XG4gICAgbGluZXMucHVzaCgnJyk7XG5cbiAgICAvLyBSZXNvdXJjZXNcbiAgICBsaW5lcy5wdXNoKCdSZXNvdXJjZXM6Jyk7XG5cbiAgICAvLyBPSURDIFByb3ZpZGVyIChvbmx5IGlmIG5vdCBza2lwcGluZylcbiAgICBpZiAoIXNraXBPaWRjUHJvdmlkZXIpIHtcbiAgICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZU9pZGNQcm92aWRlckxpbmVzKCkpO1xuICAgIH1cblxuICAgIC8vIE9JREMgUm9sZSAobmVlZHMgcGVybWlzc2lvbnMgdG8gYXNzdW1lIGNoYW5nZXNldC9kcmlmdCByb2xlcylcbiAgICBjb25zdCB0YXJnZXRSb2xlTmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKGluY2x1ZGVDaGFuZ2VzZXQpIHRhcmdldFJvbGVOYW1lcy5wdXNoKGNoYW5nZXNldFJvbGVOYW1lKTtcbiAgICBpZiAoaW5jbHVkZURyaWZ0KSB0YXJnZXRSb2xlTmFtZXMucHVzaChkcmlmdFJvbGVOYW1lKTtcbiAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjUm9sZUxpbmVzKG9pZGNSb2xlTmFtZSwgZ2l0aHViT2lkYywgc2tpcE9pZGNQcm92aWRlciwgdGFyZ2V0Um9sZU5hbWVzKSk7XG5cbiAgICAvLyBDaGFuZ2VzZXQvRHJpZnQgcm9sZXNcbiAgICBpZiAoaW5jbHVkZUNoYW5nZXNldCkge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlQ2hhbmdlc2V0Um9sZUxpbmVzKGNoYW5nZXNldFJvbGVOYW1lKSk7XG4gICAgfVxuXG4gICAgaWYgKGluY2x1ZGVEcmlmdCkge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlRHJpZnRSb2xlTGluZXMoZHJpZnRSb2xlTmFtZSkpO1xuICAgIH1cblxuICAgIC8vIE91dHB1dHNcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKCdPdXRwdXRzOicpO1xuICAgIGlmICghc2tpcE9pZGNQcm92aWRlcikge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlT2lkY091dHB1dExpbmVzKCkpO1xuICAgIH1cblxuICAgIC8vIEFsd2F5cyBvdXRwdXQgdGhlIE9JREMgcm9sZSBBUk5cbiAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjUm9sZU91dHB1dExpbmVzKCkpO1xuXG4gICAgaWYgKGluY2x1ZGVDaGFuZ2VzZXQpIHtcbiAgICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZUNoYW5nZXNldE91dHB1dExpbmVzKCkpO1xuICAgIH1cblxuICAgIGlmIChpbmNsdWRlRHJpZnQpIHtcbiAgICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZURyaWZ0T3V0cHV0TGluZXMoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVPaWRjUHJvdmlkZXJMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgICMgR2l0SHViIE9JREMgUHJvdmlkZXInLFxuICAgICAgJyAgR2l0SHViT0lEQ1Byb3ZpZGVyOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpPSURDUHJvdmlkZXInLFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICAnICAgICAgVXJsOiBodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tJyxcbiAgICAgICcgICAgICBDbGllbnRJZExpc3Q6JyxcbiAgICAgICcgICAgICAgIC0gc3RzLmFtYXpvbmF3cy5jb20nLFxuICAgICAgJyAgICAgIFRodW1icHJpbnRMaXN0OicsXG4gICAgICAnICAgICAgICAtIDY5MzhmZDRkOThiYWIwM2ZhYWRiOTdiMzQzOTY4MzFlMzc4MGFlYTEnLFxuICAgICAgJyAgICAgICAgLSAxYzU4YTNhODUxOGU4NzU5YmYwNzViNzZiNzUwZDRmMmRmMjY0ZmNkJyxcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNSb2xlTGluZXMoXG4gICAgcm9sZU5hbWU6IHN0cmluZyxcbiAgICBnaXRodWJPaWRjOiBHaXRIdWJPaWRjQ29uZmlnLFxuICAgIHNraXBPaWRjUHJvdmlkZXI6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICB0YXJnZXRSb2xlTmFtZXM6IHN0cmluZ1tdID0gW10sXG4gICk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdWJqZWN0Q2xhaW1zID0gdGhpcy5idWlsZFN1YmplY3RDbGFpbXMoZ2l0aHViT2lkYyk7XG5cbiAgICBjb25zdCBsaW5lcyA9IFtcbiAgICAgICcgICMgR2l0SHViIE9JREMgUm9sZSAtIGF1dGhlbnRpY2F0ZXMgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3dzJyxcbiAgICAgICcgIEdpdEh1Yk9JRENSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICBdO1xuXG4gICAgLy8gT25seSBhZGQgRGVwZW5kc09uIGlmIHdlJ3JlIGNyZWF0aW5nIHRoZSBwcm92aWRlclxuICAgIGlmICghc2tpcE9pZGNQcm92aWRlcikge1xuICAgICAgbGluZXMucHVzaCgnICAgIERlcGVuZHNPbjogR2l0SHViT0lEQ1Byb3ZpZGVyJyk7XG4gICAgfVxuXG4gICAgbGluZXMucHVzaChcbiAgICAgICcgICAgUHJvcGVydGllczonLFxuICAgICAgXCIgICAgICBSb2xlTmFtZTogJ1wiICsgcm9sZU5hbWUgKyBcIidcIixcbiAgICAgICcgICAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgIFByaW5jaXBhbDonLFxuICAgICAgXCIgICAgICAgICAgICAgIEZlZGVyYXRlZDogIVN1YiAnYXJuOmF3czppYW06OiR7QVdTOjpBY2NvdW50SWR9Om9pZGMtcHJvdmlkZXIvdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20nXCIsXG4gICAgICAnICAgICAgICAgICAgQWN0aW9uOiBzdHM6QXNzdW1lUm9sZVdpdGhXZWJJZGVudGl0eScsXG4gICAgICAnICAgICAgICAgICAgQ29uZGl0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6JyxcbiAgICAgIFwiICAgICAgICAgICAgICAgICd0b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTphdWQnOiAnc3RzLmFtYXpvbmF3cy5jb20nXCIsXG4gICAgICAnICAgICAgICAgICAgICBTdHJpbmdMaWtlOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAndG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb206c3ViJzpcIixcbiAgICApO1xuXG4gICAgLy8gQWRkIHN1YmplY3QgY2xhaW1zXG4gICAgZm9yIChjb25zdCBjbGFpbSBvZiBzdWJqZWN0Q2xhaW1zKSB7XG4gICAgICBsaW5lcy5wdXNoKGAgICAgICAgICAgICAgICAgICAtICcke2NsYWltfSdgKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgcG9saWN5IHRvIGFsbG93IGFzc3VtaW5nIHRoZSB0YXJnZXQgcm9sZXMgKGNoYW5nZXNldC9kcmlmdClcbiAgICBpZiAodGFyZ2V0Um9sZU5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGxpbmVzLnB1c2goJyAgICAgIFBvbGljaWVzOicpO1xuICAgICAgbGluZXMucHVzaCgnICAgICAgICAtIFBvbGljeU5hbWU6IEFzc3VtZVRhcmdldFJvbGVzJyk7XG4gICAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6Jyk7XG4gICAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIpO1xuICAgICAgbGluZXMucHVzaCgnICAgICAgICAgICAgU3RhdGVtZW50OicpO1xuICAgICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnKTtcbiAgICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyk7XG4gICAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgUmVzb3VyY2U6Jyk7XG4gICAgICBmb3IgKGNvbnN0IHRhcmdldFJvbGVOYW1lIG9mIHRhcmdldFJvbGVOYW1lcykge1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6aWFtOjpcXCR7QVdTOjpBY2NvdW50SWR9OnJvbGUvJHt0YXJnZXRSb2xlTmFtZX0nYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRTdWJqZWN0Q2xhaW1zKGdpdGh1Yk9pZGM6IEdpdEh1Yk9pZGNDb25maWcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhaW1zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGJyYW5jaGVzID0gZ2l0aHViT2lkYy5icmFuY2hlcyA/PyBbJyonXTtcblxuICAgIGZvciAoY29uc3QgcmVwbyBvZiBnaXRodWJPaWRjLnJlcG9zaXRvcmllcykge1xuICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAvLyBXaWxkY2FyZCByZXBvIC0gYWxsb3cgYWxsIHJlcG9zIHdpdGggYnJhbmNoIHJlc3RyaWN0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiBicmFuY2hlcykge1xuICAgICAgICAgIGlmIChicmFuY2ggPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vKjpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNwZWNpZmljIHJlcG9cbiAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgYnJhbmNoZXMpIHtcbiAgICAgICAgICBpZiAoYnJhbmNoID09PSAnKicpIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToqYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfTpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgYW55IGFkZGl0aW9uYWwgY2xhaW1zXG4gICAgaWYgKGdpdGh1Yk9pZGMuYWRkaXRpb25hbENsYWltcykge1xuICAgICAgZm9yIChjb25zdCBjbGFpbSBvZiBnaXRodWJPaWRjLmFkZGl0aW9uYWxDbGFpbXMpIHtcbiAgICAgICAgZm9yIChjb25zdCByZXBvIG9mIGdpdGh1Yk9pZGMucmVwb3NpdG9yaWVzKSB7XG4gICAgICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qOiR7Y2xhaW19YCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToke2NsYWltfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFpbXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZUNoYW5nZXNldFJvbGVMaW5lcyhyb2xlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIENoYW5nZVNldCBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgY2hhbmdlc2V0IG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZTonLFxuICAgICAgJyAgICBUeXBlOiBBV1M6OklBTTo6Um9sZScsXG4gICAgICAnICAgIERlcGVuZHNPbjogR2l0SHViT0lEQ1JvbGUnLFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICBcIiAgICAgIFJvbGVOYW1lOiAnXCIgKyByb2xlTmFtZSArIFwiJ1wiLFxuICAgICAgJyAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgUHJpbmNpcGFsOicsXG4gICAgICAnICAgICAgICAgICAgICBBV1M6ICFHZXRBdHQgR2l0SHViT0lEQ1JvbGUuQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICBQb2xpY2llczonLFxuICAgICAgJyAgICAgICAgLSBQb2xpY3lOYW1lOiBDbG91ZEZvcm1hdGlvbkNoYW5nZVNldEFjY2VzcycsXG4gICAgICAnICAgICAgICAgIFBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDbG91ZEZvcm1hdGlvbiBjaGFuZ2VzZXQgb3BlcmF0aW9ucycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkNyZWF0ZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZWxldGVDaGFuZ2VTZXQnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdENoYW5nZVNldHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja1Jlc291cmNlRHJpZnRzJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAnKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgQ0RLIGJvb3RzdHJhcCBidWNrZXQgYWNjZXNzIChmb3IgY2hhbmdlc2V0IGNyZWF0aW9uKScsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOkdldE9iamVjdCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpQdXRPYmplY3QnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6RGVsZXRlT2JqZWN0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOkxpc3RCdWNrZXQnLFxuICAgICAgJyAgICAgICAgICAgICAgICBSZXNvdXJjZTonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6czM6OjpjZGstJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0tKidcIixcbiAgICAgIFwiICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOnMzOjo6Y2RrLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259LSovKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgQ0RLIGJvb3RzdHJhcCBwYXJhbWV0ZXIgYWNjZXNzJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gc3NtOkdldFBhcmFtZXRlcicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVycycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVyc0J5UGF0aCcsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogIVN1YiAnYXJuOmF3czpzc206JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH06cGFyYW1ldGVyL2Nkay1ib290c3RyYXAvKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgSUFNIFBhc3NSb2xlIGZvciBDREsgb3BlcmF0aW9ucycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGlhbTpQYXNzUm9sZScsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnICAgICAgICAgICAgICAgIENvbmRpdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAgICdpYW06UGFzc2VkVG9TZXJ2aWNlJzogJ2Nsb3VkZm9ybWF0aW9uLmFtYXpvbmF3cy5jb20nXCIsXG4gICAgICAnJyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVEcmlmdFJvbGVMaW5lcyhyb2xlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIERyaWZ0IERldGVjdGlvbiBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrRHJpZnRSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICAgICcgICAgRGVwZW5kc09uOiBHaXRIdWJPSURDUm9sZScsXG4gICAgICAnICAgIFByb3BlcnRpZXM6JyxcbiAgICAgIFwiICAgICAgUm9sZU5hbWU6ICdcIiArIHJvbGVOYW1lICsgXCInXCIsXG4gICAgICAnICAgICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIsXG4gICAgICAnICAgICAgICBTdGF0ZW1lbnQ6JyxcbiAgICAgICcgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICBQcmluY2lwYWw6JyxcbiAgICAgICcgICAgICAgICAgICAgIEFXUzogIUdldEF0dCBHaXRIdWJPSURDUm9sZS5Bcm4nLFxuICAgICAgJyAgICAgICAgICAgIEFjdGlvbjogc3RzOkFzc3VtZVJvbGUnLFxuICAgICAgJyAgICAgIFBvbGljaWVzOicsXG4gICAgICAnICAgICAgICAtIFBvbGljeU5hbWU6IENsb3VkRm9ybWF0aW9uRHJpZnRBY2Nlc3MnLFxuICAgICAgJyAgICAgICAgICBQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgICAgICBTdGF0ZW1lbnQ6JyxcbiAgICAgICcgICAgICAgICAgICAgICMgQ2xvdWRGb3JtYXRpb24gZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXRlY3RTdGFja0RyaWZ0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tEcmlmdERldGVjdGlvblN0YXR1cycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdFN0YWNrUmVzb3VyY2VzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRldGVjdFN0YWNrUmVzb3VyY2VEcmlmdCcsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnJyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVPaWRjT3V0cHV0TGluZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICBHaXRIdWJPSURDUHJvdmlkZXJBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBHaXRIdWIgT0lEQyBwcm92aWRlcidcIixcbiAgICAgICcgICAgVmFsdWU6ICFHZXRBdHQgR2l0SHViT0lEQ1Byb3ZpZGVyLkFybicsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1HaXRIdWJPSURDUHJvdmlkZXJBcm4nXCIsXG4gICAgICAnJyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVPaWRjUm9sZU91dHB1dExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgR2l0SHViT0lEQ1JvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBHaXRIdWIgT0lEQyByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIUdldEF0dCBHaXRIdWJPSURDUm9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tR2l0SHViT0lEQ1JvbGVBcm4nXCIsXG4gICAgICAnJyxcbiAgICAgICcgIEdpdEh1Yk9JRENSb2xlTmFtZTonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBHaXRIdWIgT0lEQyByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIVJlZiBHaXRIdWJPSURDUm9sZScsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1HaXRIdWJPSURDUm9sZU5hbWUnXCIsXG4gICAgICAnJyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVDaGFuZ2VzZXRPdXRwdXRMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgIENka0NoYW5nZXNldFJvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBDREsgY2hhbmdlc2V0IHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IENka0NoYW5nZXNldFJvbGUuQXJuJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0NoYW5nZXNldFJvbGVBcm4nXCIsXG4gICAgICAnJyxcbiAgICAgICcgIENka0NoYW5nZXNldFJvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIENESyBjaGFuZ2VzZXQgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgQ2RrQ2hhbmdlc2V0Um9sZScsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1DZGtDaGFuZ2VzZXRSb2xlTmFtZSdcIixcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZURyaWZ0T3V0cHV0TGluZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICBDZGtEcmlmdFJvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBDREsgZHJpZnQgZGV0ZWN0aW9uIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IENka0RyaWZ0Um9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrRHJpZnRSb2xlQXJuJ1wiLFxuICAgICAgJycsXG4gICAgICAnICBDZGtEcmlmdFJvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIENESyBkcmlmdCBkZXRlY3Rpb24gcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgQ2RrRHJpZnRSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0RyaWZ0Um9sZU5hbWUnXCIsXG4gICAgXTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgUHJvamVuLWludGVncmF0ZWQgU3RhY2tTZXQgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRQcm9wcyBleHRlbmRzIENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0R2VuZXJhdG9yUHJvcHMge1xuICAvKiogUHJvamVuIHByb2plY3QgaW5zdGFuY2UgKi9cbiAgcmVhZG9ubHkgcHJvamVjdDogYW55O1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBTdGFja1NldCAoZGVmYXVsdDogJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS1zdGFja3NldCcpICovXG4gIHJlYWRvbmx5IHN0YWNrU2V0TmFtZT86IHN0cmluZztcblxuICAvKiogT3V0cHV0IHBhdGggZm9yIHRoZSB0ZW1wbGF0ZSBmaWxlIChkZWZhdWx0OiAnY2RrLWRpZmYtd29ya2Zsb3ctc3RhY2tzZXQtdGVtcGxhdGUueWFtbCcpICovXG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqIFRhcmdldCBPVXMgZm9yIGRlcGxveW1lbnQgKGUuZy4sIFsnb3UteHh4eC14eHh4eHh4eCcsICdyLXh4eHgnXSkgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0T3JnYW5pemF0aW9uYWxVbml0SWRzPzogc3RyaW5nW107XG5cbiAgLyoqIFRhcmdldCByZWdpb25zIGZvciBkZXBsb3ltZW50IChlLmcuLCBbJ3VzLWVhc3QtMScsICdldS13ZXN0LTEnXSkgKi9cbiAgcmVhZG9ubHkgcmVnaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKiBBdXRvLWRlcGxveW1lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBhdXRvRGVwbG95bWVudD86IFN0YWNrU2V0QXV0b0RlcGxveW1lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIGRlbGVnYXRlZCBhZG1pbiBtb2RlIGZvciBTdGFja1NldCBvcGVyYXRpb25zLlxuICAgKiBJZiB0cnVlLCBhZGRzIC0tY2FsbC1hcyBERUxFR0FURURfQURNSU4gdG8gY29tbWFuZHMuXG4gICAqIElmIGZhbHNlLCBhc3N1bWVzIHJ1bm5pbmcgZnJvbSB0aGUgbWFuYWdlbWVudCBhY2NvdW50LlxuICAgKiBEZWZhdWx0OiB0cnVlXG4gICAqL1xuICByZWFkb25seSBkZWxlZ2F0ZWRBZG1pbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvamVuIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBDbG91ZEZvcm1hdGlvbiBTdGFja1NldCB0ZW1wbGF0ZSBmb3Igb3JnLXdpZGUgZGVwbG95bWVudCBvZlxuICogR2l0SHViIE9JREMgcHJvdmlkZXIsIE9JREMgcm9sZSwgYW5kIENESyBEaWZmL0RyaWZ0IElBTSByb2xlcy5cbiAqXG4gKiBUaGlzIHByb3ZpZGVzIGEgc2VsZi1jb250YWluZWQgcGVyLWFjY291bnQgZGVwbG95bWVudCB3aXRoIG5vIHJvbGUgY2hhaW5pbmcgcmVxdWlyZWQuXG4gKlxuICogRm9yIG5vbi1Qcm9qZW4gcHJvamVjdHMsIHVzZSBgQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRHZW5lcmF0b3JgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgY2xhc3MgQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRQcm9wcykge1xuICAgIGNvbnN0IG91dHB1dFBhdGggPSBwcm9wcy5vdXRwdXRQYXRoID8/ICdjZGstZGlmZi13b3JrZmxvdy1zdGFja3NldC10ZW1wbGF0ZS55YW1sJztcbiAgICBjb25zdCBzdGFja1NldE5hbWUgPSBwcm9wcy5zdGFja1NldE5hbWUgPz8gJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS1zdGFja3NldCc7XG5cbiAgICAvLyBHZW5lcmF0ZSB0ZW1wbGF0ZSB1c2luZyB0aGUgZ2VuZXJhdG9yXG4gICAgY29uc3QgdGVtcGxhdGUgPSBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldEdlbmVyYXRvci5nZW5lcmF0ZVRlbXBsYXRlKHByb3BzKTtcbiAgICBuZXcgVGV4dEZpbGUocHJvcHMucHJvamVjdCwgb3V0cHV0UGF0aCwgeyBsaW5lczogdGVtcGxhdGUuc3BsaXQoJ1xcbicpIH0pO1xuXG4gICAgLy8gR2VuZXJhdGUgY29tbWFuZHMgYW5kIGFkZCBhcyBQcm9qZW4gdGFza3NcbiAgICBjb25zdCBjb21tYW5kcyA9IENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0R2VuZXJhdG9yLmdlbmVyYXRlQ29tbWFuZHMoe1xuICAgICAgc3RhY2tTZXROYW1lLFxuICAgICAgdGVtcGxhdGVQYXRoOiBvdXRwdXRQYXRoLFxuICAgICAgdGFyZ2V0T3JnYW5pemF0aW9uYWxVbml0SWRzOiBwcm9wcy50YXJnZXRPcmdhbml6YXRpb25hbFVuaXRJZHMsXG4gICAgICByZWdpb25zOiBwcm9wcy5yZWdpb25zLFxuICAgICAgYXV0b0RlcGxveW1lbnQ6IHByb3BzLmF1dG9EZXBsb3ltZW50LFxuICAgICAgZGVsZWdhdGVkQWRtaW46IHByb3BzLmRlbGVnYXRlZEFkbWluLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdGFza0Rlc2NyaXB0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdzdGFja3NldC1jcmVhdGUnOiAnQ3JlYXRlIHRoZSBTdGFja1NldCBmb3Igb3JnLXdpZGUgSUFNIHJvbGUgZGVwbG95bWVudCcsXG4gICAgICAnc3RhY2tzZXQtdXBkYXRlJzogJ1VwZGF0ZSB0aGUgU3RhY2tTZXQgdGVtcGxhdGUnLFxuICAgICAgJ3N0YWNrc2V0LWRlcGxveS1pbnN0YW5jZXMnOlxuICAgICAgICAnRGVwbG95IHN0YWNrIGluc3RhbmNlcyB0byB0YXJnZXQgT1VzIGFuZCByZWdpb25zIChwYXNzIC0tZGVwbG95bWVudC10YXJnZXRzIE9yZ2FuaXphdGlvbmFsVW5pdElkcz08b3UtaWRzPiB0byBvdmVycmlkZSknLFxuICAgICAgJ3N0YWNrc2V0LWRlbGV0ZS1pbnN0YW5jZXMnOiAnRGVsZXRlIHN0YWNrIGluc3RhbmNlcyBmcm9tIHRhcmdldCBPVXMgYW5kIHJlZ2lvbnMnLFxuICAgICAgJ3N0YWNrc2V0LWRlbGV0ZSc6ICdEZWxldGUgdGhlIFN0YWNrU2V0IChyZXF1aXJlcyBhbGwgaW5zdGFuY2VzIHRvIGJlIGRlbGV0ZWQgZmlyc3QpJyxcbiAgICAgICdzdGFja3NldC1kZXNjcmliZSc6ICdEZXNjcmliZSB0aGUgU3RhY2tTZXQgc3RhdHVzIGFuZCBjb25maWd1cmF0aW9uJyxcbiAgICAgICdzdGFja3NldC1saXN0LWluc3RhbmNlcyc6ICdMaXN0IGFsbCBzdGFjayBpbnN0YW5jZXMgYW5kIHRoZWlyIHN0YXR1c2VzJyxcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBbdGFza05hbWUsIGNvbW1hbmRdIG9mIE9iamVjdC5lbnRyaWVzKGNvbW1hbmRzKSkge1xuICAgICAgcHJvcHMucHJvamVjdC5hZGRUYXNrKHRhc2tOYW1lLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiB0YXNrRGVzY3JpcHRpb25zW3Rhc2tOYW1lXSxcbiAgICAgICAgcmVjZWl2ZUFyZ3M6IHRhc2tOYW1lICE9PSAnc3RhY2tzZXQtZGVsZXRlJyxcbiAgICAgICAgZXhlYzogY29tbWFuZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -177,7 +177,7 @@ class CdkDiffStackWorkflow {
|
|
|
177
177
|
}
|
|
178
178
|
exports.CdkDiffStackWorkflow = CdkDiffStackWorkflow;
|
|
179
179
|
_a = JSII_RTTI_SYMBOL_1;
|
|
180
|
-
CdkDiffStackWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffStackWorkflow", version: "1.
|
|
180
|
+
CdkDiffStackWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffStackWorkflow", version: "1.4.0" };
|
|
181
181
|
CdkDiffStackWorkflow.scriptCreated = false;
|
|
182
182
|
function sanitizeForFileName(name) {
|
|
183
183
|
return name.replace(/[^a-zA-Z0-9]+/g, '-').replace(/^-+|-+$/g, '').toLowerCase();
|
|
@@ -193,7 +193,7 @@ class CdkDriftDetectionWorkflow {
|
|
|
193
193
|
}
|
|
194
194
|
exports.CdkDriftDetectionWorkflow = CdkDriftDetectionWorkflow;
|
|
195
195
|
_a = JSII_RTTI_SYMBOL_1;
|
|
196
|
-
CdkDriftDetectionWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflow", version: "1.
|
|
196
|
+
CdkDriftDetectionWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflow", version: "1.4.0" };
|
|
197
197
|
CdkDriftDetectionWorkflow.scriptCreated = false;
|
|
198
198
|
function issueScript(stack, region, resultsFile) {
|
|
199
199
|
// Construct a plain JS script string (no template string nesting mishaps)
|
|
@@ -79,7 +79,7 @@ class CdkDriftIamTemplateGenerator {
|
|
|
79
79
|
}
|
|
80
80
|
exports.CdkDriftIamTemplateGenerator = CdkDriftIamTemplateGenerator;
|
|
81
81
|
_a = JSII_RTTI_SYMBOL_1;
|
|
82
|
-
CdkDriftIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplateGenerator", version: "1.
|
|
82
|
+
CdkDriftIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplateGenerator", version: "1.4.0" };
|
|
83
83
|
/**
|
|
84
84
|
* Projen construct that emits a CloudFormation template with minimal IAM permissions
|
|
85
85
|
* for the CDK Drift Detection Workflow.
|
|
@@ -102,5 +102,5 @@ class CdkDriftIamTemplate {
|
|
|
102
102
|
}
|
|
103
103
|
exports.CdkDriftIamTemplate = CdkDriftIamTemplate;
|
|
104
104
|
_b = JSII_RTTI_SYMBOL_1;
|
|
105
|
-
CdkDriftIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplate", version: "1.
|
|
105
|
+
CdkDriftIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplate", version: "1.4.0" };
|
|
106
106
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRHJpZnRJYW1UZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DZGtEcmlmdElhbVRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQWtDO0FBY2xDOzs7R0FHRztBQUNILE1BQWEsNEJBQTRCO0lBQ3ZDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQXdDO1FBQzlELE1BQU0sS0FBSyxHQUFHO1lBQ1osd0NBQXdDO1lBQ3hDLDBEQUEwRDtZQUMxRCxFQUFFO1lBQ0YsYUFBYTtZQUNiLHNCQUFzQjtZQUN0QixrQkFBa0I7WUFDbEIseUZBQXlGO1lBQ3pGLGlCQUFpQixLQUFLLENBQUMsV0FBVyxHQUFHO1lBQ3JDLEVBQUU7WUFDRixZQUFZO1lBQ1osOEZBQThGO1lBQzlGLGlCQUFpQjtZQUNqQiwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBRztZQUMxQyxpQ0FBaUM7WUFDakMsK0JBQStCO1lBQy9CLG9CQUFvQjtZQUNwQiwyQkFBMkI7WUFDM0Isd0JBQXdCO1lBQ3hCLDJDQUEyQztZQUMzQyxvQ0FBb0M7WUFDcEMsd0JBQXdCO1lBQ3hCLDZCQUE2QjtZQUM3Qix3Q0FBd0MsR0FBRyxLQUFLLENBQUMsVUFBVSxHQUFHLEdBQUc7WUFDakUsaUJBQWlCO1lBQ2pCLGlEQUFpRDtZQUNqRCwyQkFBMkI7WUFDM0IsbUNBQW1DO1lBQ25DLHdCQUF3QjtZQUN4QiwyREFBMkQ7WUFDM0QsK0JBQStCO1lBQy9CLHlCQUF5QjtZQUN6QixxREFBcUQ7WUFDckQsc0VBQXNFO1lBQ3RFLGdFQUFnRTtZQUNoRSxtREFBbUQ7WUFDbkQsdURBQXVEO1lBQ3ZELDZEQUE2RDtZQUM3RCwrQkFBK0I7WUFDL0IsRUFBRTtZQUNGLFVBQVU7WUFDVixvQkFBb0I7WUFDcEIsd0RBQXdEO1lBQ3hELHFDQUFxQztZQUNyQyxhQUFhO1lBQ2Isc0RBQXNEO1lBQ3RELEVBQUU7WUFDRixxQkFBcUI7WUFDckIseURBQXlEO1lBQ3pELDhCQUE4QjtZQUM5QixhQUFhO1lBQ2IsdURBQXVEO1NBQ3hELENBQUM7UUFFRixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLHFCQUFxQixDQUFDLGVBQXVCLHNDQUFzQztRQUN4RixPQUFPLDZDQUE2QyxZQUFZLCtFQUErRSxDQUFDO0lBQ2xKLENBQUM7O0FBckVILG9FQXNFQzs7O0FBWUQ7Ozs7O0dBS0c7QUFDSCxNQUFhLG1CQUFtQjtJQUM5QixZQUFZLEtBQStCO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksc0NBQXNDLENBQUM7UUFFOUUsd0NBQXdDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLElBQUksaUJBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6RSxrQkFBa0I7UUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsOEJBQThCLEVBQUU7WUFDcEQsV0FBVyxFQUNULHVJQUF1STtZQUN6SSxXQUFXLEVBQUUsSUFBSTtZQUNqQixJQUFJLEVBQUUsNEJBQTRCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDO1NBQ3JFLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBZkgsa0RBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuXG4vKipcbiAqIFByb3BzIGZvciBnZW5lcmF0aW5nIENESyBEcmlmdCBJQU0gdGVtcGxhdGVzIChubyBQcm9qZW4gZGVwZW5kZW5jeSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMge1xuICAvKiogTmFtZSBmb3IgdGhlIElBTSByb2xlICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lOiBzdHJpbmc7XG4gIC8qKiBBUk4gb2YgdGhlIGV4aXN0aW5nIEdpdEh1YiBPSURDIHJvbGUgdGhhdCBjYW4gYXNzdW1lIHRoaXMgZHJpZnQgcm9sZSAqL1xuICByZWFkb25seSBvaWRjUm9sZUFybjogc3RyaW5nO1xuICAvKiogUmVnaW9uIGZvciB0aGUgT0lEQyB0cnVzdCBjb25kaXRpb24gKi9cbiAgcmVhZG9ubHkgb2lkY1JlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFB1cmUgZ2VuZXJhdG9yIGNsYXNzIGZvciBDREsgRHJpZnQgSUFNIHRlbXBsYXRlcy5cbiAqIE5vIFByb2plbiBkZXBlbmRlbmN5IC0gY2FuIGJlIHVzZWQgaW4gYW55IHByb2plY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yIHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBDbG91ZEZvcm1hdGlvbiBJQU0gdGVtcGxhdGUgYXMgYSBZQU1MIHN0cmluZy5cbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZVRlbXBsYXRlKHByb3BzOiBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgXCJBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb246ICcyMDEwLTA5LTA5J1wiLFxuICAgICAgXCJEZXNjcmlwdGlvbjogJ0lBTSByb2xlIGZvciBDREsgRHJpZnQgRGV0ZWN0aW9uIFdvcmtmbG93J1wiLFxuICAgICAgJycsXG4gICAgICAnUGFyYW1ldGVyczonLFxuICAgICAgJyAgR2l0SHViT0lEQ1JvbGVBcm46JyxcbiAgICAgICcgICAgVHlwZTogU3RyaW5nJyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBleGlzdGluZyBHaXRIdWIgT0lEQyByb2xlIHRoYXQgY2FuIGFzc3VtZSB0aGlzIGRyaWZ0IHJvbGUnXCIsXG4gICAgICBgICAgIERlZmF1bHQ6ICcke3Byb3BzLm9pZGNSb2xlQXJufSdgLFxuICAgICAgJycsXG4gICAgICAnUmVzb3VyY2VzOicsXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIERyaWZ0IERldGVjdGlvbiBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrRHJpZnRSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICAgICcgICAgUHJvcGVydGllczonLFxuICAgICAgXCIgICAgICBSb2xlTmFtZTogJ1wiICsgcHJvcHMucm9sZU5hbWUgKyBcIidcIixcbiAgICAgICcgICAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgIFByaW5jaXBhbDonLFxuICAgICAgJyAgICAgICAgICAgICAgQVdTOiAhUmVmIEdpdEh1Yk9JRENSb2xlQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgYXdzOlJlcXVlc3RlZFJlZ2lvbjogJ1wiICsgcHJvcHMub2lkY1JlZ2lvbiArIFwiJ1wiLFxuICAgICAgJyAgICAgIFBvbGljaWVzOicsXG4gICAgICAnICAgICAgICAtIFBvbGljeU5hbWU6IENsb3VkRm9ybWF0aW9uRHJpZnRBY2Nlc3MnLFxuICAgICAgJyAgICAgICAgICBQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgICAgICBTdGF0ZW1lbnQ6JyxcbiAgICAgICcgICAgICAgICAgICAgICMgQ2xvdWRGb3JtYXRpb24gZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXRlY3RTdGFja0RyaWZ0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tEcmlmdERldGVjdGlvblN0YXR1cycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdFN0YWNrUmVzb3VyY2VzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRldGVjdFN0YWNrUmVzb3VyY2VEcmlmdCcsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnJyxcbiAgICAgICdPdXRwdXRzOicsXG4gICAgICAnICBDZGtEcmlmdFJvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBDREsgZHJpZnQgZGV0ZWN0aW9uIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IENka0RyaWZ0Um9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrRHJpZnRSb2xlQXJuJ1wiLFxuICAgICAgJycsXG4gICAgICAnICBDZGtEcmlmdFJvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIENESyBkcmlmdCBkZXRlY3Rpb24gcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgQ2RrRHJpZnRSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0RyaWZ0Um9sZU5hbWUnXCIsXG4gICAgXTtcblxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgQVdTIENMSSBkZXBsb3kgY29tbWFuZCBmb3IgdGhlIElBTSB0ZW1wbGF0ZS5cbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZURlcGxveUNvbW1hbmQodGVtcGxhdGVQYXRoOiBzdHJpbmcgPSAnY2RrLWRyaWZ0LXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVwbG95IC0tdGVtcGxhdGUtZmlsZSAke3RlbXBsYXRlUGF0aH0gLS1zdGFjay1uYW1lIGNkay1kcmlmdC13b3JrZmxvdy1pYW0tcm9sZSAtLWNhcGFiaWxpdGllcyBDQVBBQklMSVRZX05BTUVEX0lBTWA7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIFByb2plbi1pbnRlZ3JhdGVkIENESyBEcmlmdCBJQU0gdGVtcGxhdGUgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrRHJpZnRJYW1UZW1wbGF0ZVByb3BzIGV4dGVuZHMgQ2RrRHJpZnRJYW1UZW1wbGF0ZUdlbmVyYXRvclByb3BzIHtcbiAgLyoqIFByb2plbiBwcm9qZWN0IGluc3RhbmNlICovXG4gIHJlYWRvbmx5IHByb2plY3Q6IGFueTtcbiAgLyoqIE91dHB1dCBwYXRoIGZvciB0aGUgdGVtcGxhdGUgZmlsZSAoZGVmYXVsdDogJ2Nkay1kcmlmdC13b3JrZmxvdy1pYW0tdGVtcGxhdGUueWFtbCcpICovXG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvamVuIGNvbnN0cnVjdCB0aGF0IGVtaXRzIGEgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgd2l0aCBtaW5pbWFsIElBTSBwZXJtaXNzaW9uc1xuICogZm9yIHRoZSBDREsgRHJpZnQgRGV0ZWN0aW9uIFdvcmtmbG93LlxuICpcbiAqIEZvciBub24tUHJvamVuIHByb2plY3RzLCB1c2UgYENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3JgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgY2xhc3MgQ2RrRHJpZnRJYW1UZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDZGtEcmlmdElhbVRlbXBsYXRlUHJvcHMpIHtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcHJvcHMub3V0cHV0UGF0aCA/PyAnY2RrLWRyaWZ0LXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJztcblxuICAgIC8vIEdlbmVyYXRlIHRlbXBsYXRlIHVzaW5nIHRoZSBnZW5lcmF0b3JcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3IuZ2VuZXJhdGVUZW1wbGF0ZShwcm9wcyk7XG4gICAgbmV3IFRleHRGaWxlKHByb3BzLnByb2plY3QsIG91dHB1dFBhdGgsIHsgbGluZXM6IHRlbXBsYXRlLnNwbGl0KCdcXG4nKSB9KTtcblxuICAgIC8vIEFkZCBkZXBsb3kgdGFza1xuICAgIHByb3BzLnByb2plY3QuYWRkVGFzaygnZGVwbG95LWNka2RyaWZ0LWlhbS10ZW1wbGF0ZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGVwbG95IHRoZSBDREsgRHJpZnQgRGV0ZWN0aW9uIElBTSB0ZW1wbGF0ZSB2aWEgQ2xvdWRGb3JtYXRpb24gKGFjY2VwdHMgZXh0cmEgQVdTIENMSSBhcmdzLCBlLmcuLCAtLXBhcmFtZXRlci1vdmVycmlkZXMgS2V5PVZhbHVlLi4uKScsXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgIGV4ZWM6IENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3IuZ2VuZXJhdGVEZXBsb3lDb21tYW5kKG91dHB1dFBhdGgpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -8,7 +8,7 @@ class CdkChangesetScript {
|
|
|
8
8
|
new projen_1.TextFile(props.project, outputPath, {
|
|
9
9
|
lines: [
|
|
10
10
|
"import { appendFile } from 'fs/promises';",
|
|
11
|
-
"import { CloudFormationClient, DescribeChangeSetCommand } from '@aws-sdk/client-cloudformation';",
|
|
11
|
+
"import { CloudFormationClient, DescribeChangeSetCommand, DescribeStacksCommand, DescribeStackResourceDriftsCommand } from '@aws-sdk/client-cloudformation';",
|
|
12
12
|
'',
|
|
13
13
|
'/**',
|
|
14
14
|
' * Small sleep helper.',
|
|
@@ -175,20 +175,81 @@ class CdkChangesetScript {
|
|
|
175
175
|
" throw new Error('Timed out waiting for change set to reach a terminal status.');",
|
|
176
176
|
'}',
|
|
177
177
|
'',
|
|
178
|
-
'
|
|
179
|
-
'
|
|
180
|
-
|
|
181
|
-
'
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
"
|
|
185
|
-
'
|
|
186
|
-
'
|
|
187
|
-
' }
|
|
178
|
+
'/**',
|
|
179
|
+
' * Parse the Link header from GitHub API responses for pagination.',
|
|
180
|
+
' */',
|
|
181
|
+
'function parseLinkHeader(header: string | null): Record<string, string> {',
|
|
182
|
+
' const links: Record<string, string> = {};',
|
|
183
|
+
' if (!header) return links;',
|
|
184
|
+
" for (const part of header.split(',')) {",
|
|
185
|
+
' const match = part.match(/<([^>]+)>;\\s*rel="([^"]+)"/);',
|
|
186
|
+
' if (match) links[match[2]] = match[1];',
|
|
187
|
+
' }',
|
|
188
|
+
' return links;',
|
|
189
|
+
'}',
|
|
190
|
+
'',
|
|
191
|
+
'/**',
|
|
192
|
+
' * Search existing PR comments for one containing the given marker.',
|
|
193
|
+
' * Returns the comment ID if found, null otherwise.',
|
|
194
|
+
' */',
|
|
195
|
+
'async function findExistingComment(commentsUrl: string, token: string, marker: string): Promise<number | null> {',
|
|
196
|
+
' let url: string | undefined = `${commentsUrl}?per_page=100`;',
|
|
197
|
+
' while (url) {',
|
|
198
|
+
' const res = await fetch(url, {',
|
|
199
|
+
' headers: {',
|
|
200
|
+
" 'Authorization': `token ${token}`,",
|
|
201
|
+
" 'Accept': 'application/vnd.github+json',",
|
|
202
|
+
' },',
|
|
203
|
+
' });',
|
|
204
|
+
' if (!res.ok) return null;',
|
|
205
|
+
' const comments: any[] = await res.json();',
|
|
206
|
+
' for (const c of comments) {',
|
|
207
|
+
" if (typeof c.body === 'string' && c.body.includes(marker)) {",
|
|
208
|
+
' return c.id;',
|
|
209
|
+
' }',
|
|
210
|
+
' }',
|
|
211
|
+
" const links = parseLinkHeader(res.headers.get('link'));",
|
|
212
|
+
' url = links.next;',
|
|
213
|
+
' }',
|
|
214
|
+
' return null;',
|
|
215
|
+
'}',
|
|
216
|
+
'',
|
|
217
|
+
'/**',
|
|
218
|
+
' * Create or update a PR comment. Uses an HTML marker to find existing comments.',
|
|
219
|
+
' * If found, PATCHes the existing comment; otherwise POSTs a new one.',
|
|
220
|
+
' */',
|
|
221
|
+
'async function upsertGithubComment(commentsUrl: string, token: string, body: string, marker: string): Promise<void> {',
|
|
222
|
+
' const markedBody = `${marker}\\n${body}`;',
|
|
223
|
+
' const existingId = await findExistingComment(commentsUrl, token, marker);',
|
|
224
|
+
'',
|
|
225
|
+
' let res: Response;',
|
|
226
|
+
' if (existingId) {',
|
|
227
|
+
" const baseUrl = commentsUrl.substring(0, commentsUrl.indexOf('/issues/'));",
|
|
228
|
+
' const patchUrl = `${baseUrl}/issues/comments/${existingId}`;',
|
|
229
|
+
' res = await fetch(patchUrl, {',
|
|
230
|
+
" method: 'PATCH',",
|
|
231
|
+
' headers: {',
|
|
232
|
+
" 'Authorization': `token ${token}`,",
|
|
233
|
+
" 'Content-Type': 'application/json',",
|
|
234
|
+
" 'Accept': 'application/vnd.github+json',",
|
|
235
|
+
' },',
|
|
236
|
+
' body: JSON.stringify({ body: markedBody }),',
|
|
237
|
+
' });',
|
|
238
|
+
' } else {',
|
|
239
|
+
' res = await fetch(commentsUrl, {',
|
|
240
|
+
" method: 'POST',",
|
|
241
|
+
' headers: {',
|
|
242
|
+
" 'Authorization': `token ${token}`,",
|
|
243
|
+
" 'Content-Type': 'application/json',",
|
|
244
|
+
" 'Accept': 'application/vnd.github+json',",
|
|
245
|
+
' },',
|
|
246
|
+
' body: JSON.stringify({ body: markedBody }),',
|
|
247
|
+
' });',
|
|
248
|
+
' }',
|
|
188
249
|
'',
|
|
189
250
|
' if (!res.ok) {',
|
|
190
251
|
" const text = await res.text().catch(() => '');",
|
|
191
|
-
|
|
252
|
+
" throw new Error(`Failed to ${existingId ? 'update' : 'post'} GitHub comment: ${res.status} ${res.statusText} ${text}`);",
|
|
192
253
|
' }',
|
|
193
254
|
'}',
|
|
194
255
|
'',
|
|
@@ -196,6 +257,69 @@ class CdkChangesetScript {
|
|
|
196
257
|
" await appendFile(summaryPath, `${content}\\n`, { encoding: 'utf8' });",
|
|
197
258
|
'}',
|
|
198
259
|
'',
|
|
260
|
+
'/**',
|
|
261
|
+
' * Check cached drift status for the stack and return an HTML banner.',
|
|
262
|
+
' * Non-fatal: returns empty string on any error.',
|
|
263
|
+
' */',
|
|
264
|
+
'async function getDriftBannerHtml(client: CloudFormationClient, stackName: string): Promise<string> {',
|
|
265
|
+
' const stackResp = await client.send(new DescribeStacksCommand({ StackName: stackName }));',
|
|
266
|
+
' const stack = stackResp.Stacks?.[0];',
|
|
267
|
+
" if (!stack) return '';",
|
|
268
|
+
'',
|
|
269
|
+
' const driftInfo = stack.DriftInformation;',
|
|
270
|
+
' const driftStatus = driftInfo?.StackDriftStatus;',
|
|
271
|
+
' const lastChecked = driftInfo?.LastCheckTimestamp;',
|
|
272
|
+
'',
|
|
273
|
+
" if (driftStatus === 'IN_SYNC') return '';",
|
|
274
|
+
'',
|
|
275
|
+
" if (driftStatus === 'NOT_CHECKED') {",
|
|
276
|
+
" return '<blockquote><p>ℹ️ Drift detection has not been run for this stack.</p></blockquote>';",
|
|
277
|
+
' }',
|
|
278
|
+
'',
|
|
279
|
+
" if (driftStatus === 'DETECTION_IN_PROGRESS') {",
|
|
280
|
+
" return '<blockquote><p>⏳ Drift detection is currently in progress.</p></blockquote>';",
|
|
281
|
+
' }',
|
|
282
|
+
'',
|
|
283
|
+
" if (driftStatus === 'DRIFTED') {",
|
|
284
|
+
" let banner = '<blockquote>';",
|
|
285
|
+
'',
|
|
286
|
+
' try {',
|
|
287
|
+
' const driftsResp = await client.send(new DescribeStackResourceDriftsCommand({',
|
|
288
|
+
' StackName: stackName,',
|
|
289
|
+
" StackResourceDriftStatusFilters: ['MODIFIED', 'DELETED'],",
|
|
290
|
+
' }));',
|
|
291
|
+
' const drifts = driftsResp.StackResourceDrifts ?? [];',
|
|
292
|
+
' const count = drifts.length;',
|
|
293
|
+
" const ts = lastChecked ? lastChecked.toISOString() : 'unknown';",
|
|
294
|
+
'',
|
|
295
|
+
" banner += `<h3>⚠️ Stack has drifted (${count} resource${count !== 1 ? 's' : ''} out of sync)</h3>`;",
|
|
296
|
+
' banner += `<p>Last drift check: <em>${ts}</em></p>`;',
|
|
297
|
+
'',
|
|
298
|
+
' if (count > 0) {',
|
|
299
|
+
" banner += '<details><summary>View drifted resources</summary>';",
|
|
300
|
+
" banner += '<table><tr><th>Resource</th><th>Type</th><th>Drift Status</th></tr>';",
|
|
301
|
+
' for (const d of drifts) {',
|
|
302
|
+
" const logicalId = d.LogicalResourceId ?? '-';",
|
|
303
|
+
" const resourceType = d.ResourceType ?? '-';",
|
|
304
|
+
" const status = d.StackResourceDriftStatus ?? '-';",
|
|
305
|
+
' banner += `<tr><td>${logicalId}</td><td>${resourceType}</td><td>${status}</td></tr>`;',
|
|
306
|
+
' }',
|
|
307
|
+
" banner += '</table></details>';",
|
|
308
|
+
' }',
|
|
309
|
+
' } catch (e: any) {',
|
|
310
|
+
" const ts = lastChecked ? lastChecked.toISOString() : 'unknown';",
|
|
311
|
+
" banner += '<h3>⚠️ Stack has drifted</h3>';",
|
|
312
|
+
' banner += `<p>Last drift check: <em>${ts}</em></p>`;',
|
|
313
|
+
" banner += `<p><em>Could not retrieve drift details: ${e?.message ?? 'unknown error'}</em></p>`;",
|
|
314
|
+
' }',
|
|
315
|
+
'',
|
|
316
|
+
" banner += '</blockquote>';",
|
|
317
|
+
' return banner;',
|
|
318
|
+
' }',
|
|
319
|
+
'',
|
|
320
|
+
" return '';",
|
|
321
|
+
'}',
|
|
322
|
+
'',
|
|
199
323
|
'async function main() {',
|
|
200
324
|
' const {',
|
|
201
325
|
' STACK_NAME,',
|
|
@@ -217,6 +341,7 @@ class CdkChangesetScript {
|
|
|
217
341
|
' }',
|
|
218
342
|
'',
|
|
219
343
|
' const changeSetName = CHANGE_SET_NAME || STACK_NAME;',
|
|
344
|
+
' const marker = `<!-- cdk-diff:stack:${STACK_NAME} -->`;',
|
|
220
345
|
'',
|
|
221
346
|
' const client = new CloudFormationClient({ region });',
|
|
222
347
|
'',
|
|
@@ -254,27 +379,35 @@ class CdkChangesetScript {
|
|
|
254
379
|
' // Build HTML exactly like pretty_format.py logic (table when there are changes; "no change." otherwise).',
|
|
255
380
|
' const html = buildHtml(STACK_NAME, filteredChanges);',
|
|
256
381
|
'',
|
|
382
|
+
' // Check cached drift status (non-fatal)',
|
|
383
|
+
" let driftBanner = '';",
|
|
384
|
+
' try {',
|
|
385
|
+
' driftBanner = await getDriftBannerHtml(client, STACK_NAME);',
|
|
386
|
+
' } catch (e: any) {',
|
|
387
|
+
" console.error('Drift check failed:', e?.message || e);",
|
|
388
|
+
' }',
|
|
389
|
+
' const fullHtml = driftBanner + html;',
|
|
390
|
+
'',
|
|
257
391
|
' // Print to stdout',
|
|
258
|
-
'
|
|
259
|
-
' console.log(html);',
|
|
392
|
+
' console.log(fullHtml);',
|
|
260
393
|
'',
|
|
261
394
|
' // Optionally append to GitHub Step Summary',
|
|
262
395
|
' if (GITHUB_STEP_SUMMARY) {',
|
|
263
396
|
' try {',
|
|
264
|
-
' await appendStepSummary(GITHUB_STEP_SUMMARY,
|
|
397
|
+
' await appendStepSummary(GITHUB_STEP_SUMMARY, fullHtml);',
|
|
265
398
|
' console.error(`Appended HTML to GITHUB_STEP_SUMMARY: ${GITHUB_STEP_SUMMARY}`);',
|
|
266
399
|
' } catch (e: any) {',
|
|
267
400
|
" console.error('Failed to append to GITHUB_STEP_SUMMARY:', e?.message || e);",
|
|
268
401
|
' }',
|
|
269
402
|
' }',
|
|
270
403
|
'',
|
|
271
|
-
' //
|
|
404
|
+
' // Upsert PR comment (find existing by marker, update or create)',
|
|
272
405
|
' if (GITHUB_TOKEN && GITHUB_COMMENT_URL) {',
|
|
273
406
|
' try {',
|
|
274
|
-
' await
|
|
275
|
-
" console.error('
|
|
407
|
+
' await upsertGithubComment(GITHUB_COMMENT_URL, GITHUB_TOKEN, fullHtml, marker);',
|
|
408
|
+
" console.error('Upserted GitHub PR comment.');",
|
|
276
409
|
' } catch (e: any) {',
|
|
277
|
-
" console.error('Failed to
|
|
410
|
+
" console.error('Failed to upsert GitHub PR comment:', e?.message || e);",
|
|
278
411
|
' // Do not fail the whole script just for comment posting',
|
|
279
412
|
' }',
|
|
280
413
|
' }',
|
|
@@ -294,4 +427,4 @@ class CdkChangesetScript {
|
|
|
294
427
|
}
|
|
295
428
|
}
|
|
296
429
|
exports.CdkChangesetScript = CdkChangesetScript;
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNoYW5nZXNldC1zY3JpcHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL2Nkay1jaGFuZ2VzZXQtc2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFrQztBQVFsQyxNQUFhLGtCQUFrQjtJQUM3QixZQUFZLEtBQThCO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksb0NBQW9DLENBQUM7UUFFNUUsSUFBSSxpQkFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFO1lBQ3RDLEtBQUssRUFBRTtnQkFDTCwyQ0FBMkM7Z0JBQzNDLGtHQUFrRztnQkFDbEcsRUFBRTtnQkFDRixLQUFLO2dCQUNMLHdCQUF3QjtnQkFDeEIsS0FBSztnQkFDTCwwRUFBMEU7Z0JBQzFFLEVBQUU7Z0JBQ0YsS0FBSztnQkFDTCw2Q0FBNkM7Z0JBQzdDLGlFQUFpRTtnQkFDakUsS0FBSztnQkFDTCxnREFBZ0Q7Z0JBQ2hELDJEQUEyRDtnQkFDM0QsOENBQThDO2dCQUM5QyxtQkFBbUI7Z0JBQ25CLGdCQUFnQjtnQkFDaEIsbUJBQW1CO2dCQUNuQixNQUFNO2dCQUNOLDBEQUEwRDtnQkFDMUQsc0NBQXNDO2dCQUN0QyxHQUFHO2dCQUNILEVBQUU7Z0JBQ0YsS0FBSztnQkFDTCxvQ0FBb0M7Z0JBQ3BDLEtBQUs7Z0JBQ0wsNENBQTRDO2dCQUM1QyxrRkFBa0Y7Z0JBQ2xGLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRixLQUFLO2dCQUNMLGtDQUFrQztnQkFDbEMsS0FBSztnQkFDTCxzSUFBc0k7Z0JBQ3RJLDRGQUE0RjtnQkFDNUYsSUFBSTtnQkFDSixvRUFBb0U7Z0JBQ3BFLDBDQUEwQztnQkFDMUMsd0NBQXdDO2dCQUN4QyxvREFBb0Q7Z0JBQ3BELElBQUk7Z0JBQ0osMEJBQTBCO2dCQUMxQixvQkFBb0I7Z0JBQ3BCLG9PQUFvTztnQkFDcE8sT0FBTztnQkFDUCwySUFBMkk7Z0JBQzNJLHVCQUF1QjtnQkFDdkIsb0JBQW9CO2dCQUNwQixrSkFBa0o7Z0JBQ2xKLE9BQU87Z0JBQ1Asc0dBQXNHO2dCQUN0Ryx3QkFBd0I7Z0JBQ3hCLG9CQUFvQjtnQkFDcEIscUpBQXFKO2dCQUNySixPQUFPO2dCQUNQLDhHQUE4RztnQkFDOUcsS0FBSztnQkFDTCw4REFBOEQ7Z0JBQzlELGlFQUFpRTtnQkFDakUsR0FBRztnQkFDSCxFQUFFO2dCQUNGLEtBQUs7Z0JBQ0wseUVBQXlFO2dCQUN6RSxLQUFLO2dCQUNMLHVEQUF1RDtnQkFDdkQsMERBQTBEO2dCQUMxRCwrQkFBK0I7Z0JBQy9CLDhCQUE4QjtnQkFDOUIsd0NBQXdDO2dCQUN4QyxxRUFBcUU7Z0JBQ3JFLHdEQUF3RDtnQkFDeEQsd0RBQXdEO2dCQUN4RCw0Q0FBNEM7Z0JBQzVDLDBDQUEwQztnQkFDMUMsZ0VBQWdFO2dCQUNoRSxLQUFLO2dCQUNMLDhCQUE4QjtnQkFDOUIsR0FBRztnQkFDSCxFQUFFO2dCQUNGLEtBQUs7Z0JBQ0wsd0ZBQXdGO2dCQUN4Rix5R0FBeUc7Z0JBQ3pHLDJHQUEyRztnQkFDM0csS0FBSztnQkFDTCx1R0FBdUc7Z0JBQ3ZHLDRDQUE0QztnQkFDNUMsa0VBQWtFO2dCQUNsRSxnRUFBZ0U7Z0JBQ2hFLDJEQUEyRDtnQkFDM0QsbUVBQW1FO2dCQUNuRSxpQkFBaUI7Z0JBQ2pCLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRixLQUFLO2dCQUNMLHVEQUF1RDtnQkFDdkQsS0FBSztnQkFDTCxpRUFBaUU7Z0JBQ2pFLDBFQUEwRTtnQkFDMUUscUNBQXFDO2dCQUNyQyxzSkFBc0o7Z0JBQ3RKLGdDQUFnQztnQkFDaEMsMkNBQTJDO2dCQUMzQyw4Q0FBOEM7Z0JBQzlDLHVEQUF1RDtnQkFDdkQsNkNBQTZDO2dCQUM3QyxtREFBbUQ7Z0JBQ25ELGlEQUFpRDtnQkFDakQsRUFBRTtnQkFDRix1QkFBdUI7Z0JBQ3ZCLHFDQUFxQztnQkFDckMsd0NBQXdDO2dCQUN4QyxtQ0FBbUM7Z0JBQ25DLDBDQUEwQztnQkFDMUMsc0NBQXNDO2dCQUN0Qyx3QkFBd0I7Z0JBQ3hCLE9BQU87Z0JBQ1AseUJBQXlCO2dCQUN6QixZQUFZO2dCQUNaLDJCQUEyQjtnQkFDM0IsS0FBSztnQkFDTCxnQkFBZ0I7Z0JBQ2hCLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRixLQUFLO2dCQUNMLDJGQUEyRjtnQkFDM0YsS0FBSztnQkFDTCxzQ0FBc0M7Z0JBQ3RDLGlDQUFpQztnQkFDakMsc0JBQXNCO2dCQUN0QiwwQkFBMEI7Z0JBQzFCLHFCQUFxQjtnQkFDckIsbUJBQW1CO2dCQUNuQiwwRUFBMEU7Z0JBQzFFLDhEQUE4RDtnQkFDOUQsbUVBQW1FO2dCQUNuRSw2QkFBNkI7Z0JBQzdCLHFDQUFxQztnQkFDckMsb0NBQW9DO2dCQUNwQyxVQUFVO2dCQUNWLEVBQUU7Z0JBQ0YsaUNBQWlDO2dCQUNqQyw2Q0FBNkM7Z0JBQzdDLEVBQUU7Z0JBQ0YsZ0VBQWdFO2dCQUNoRSwyQkFBMkI7Z0JBQzNCLGtDQUFrQztnQkFDbEMsd0RBQXdEO2dCQUN4RCxrQ0FBa0M7Z0JBQ2xDLHNCQUFzQjtnQkFDdEIsdUVBQXVFO2dCQUN2RSxpQ0FBaUM7Z0JBQ2pDLHlDQUF5QztnQkFDekMsd0NBQXdDO2dCQUN4Qyw0QkFBNEI7Z0JBQzVCLGNBQWM7Z0JBQ2QsMERBQTBEO2dCQUMxRCxnQ0FBZ0M7Z0JBQ2hDLFNBQVM7Z0JBQ1QsaURBQWlEO2dCQUNqRCxPQUFPO2dCQUNQLEVBQUU7Z0JBQ0YseUNBQXlDO2dCQUN6QywyQkFBMkI7Z0JBQzNCLEtBQUs7Z0JBQ0wsRUFBRTtnQkFDRixvRkFBb0Y7Z0JBQ3BGLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRiw2RkFBNkY7Z0JBQzdGLGtDQUFrQztnQkFDbEMscUJBQXFCO2dCQUNyQixnQkFBZ0I7Z0JBQ2hCLDBDQUEwQztnQkFDMUMsMkNBQTJDO2dCQUMzQyxnREFBZ0Q7Z0JBQ2hELFFBQVE7Z0JBQ1IscUNBQXFDO2dCQUNyQyxPQUFPO2dCQUNQLEVBQUU7Z0JBQ0Ysa0JBQWtCO2dCQUNsQixvREFBb0Q7Z0JBQ3BELGdHQUFnRztnQkFDaEcsS0FBSztnQkFDTCxHQUFHO2dCQUNILEVBQUU7Z0JBQ0YseUZBQXlGO2dCQUN6Rix5RUFBeUU7Z0JBQ3pFLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRix5QkFBeUI7Z0JBQ3pCLFdBQVc7Z0JBQ1gsaUJBQWlCO2dCQUNqQixzQkFBc0I7Z0JBQ3RCLGlCQUFpQjtnQkFDakIsbUJBQW1CO2dCQUNuQix5QkFBeUI7Z0JBQ3pCLDBCQUEwQjtnQkFDMUIseUJBQXlCO2dCQUN6Qiw0QkFBNEI7Z0JBQzVCLG9CQUFvQjtnQkFDcEIsRUFBRTtnQkFDRixzQkFBc0I7Z0JBQ3RCLGdEQUFnRDtnQkFDaEQsS0FBSztnQkFDTCxnRUFBZ0U7Z0JBQ2hFLGtCQUFrQjtnQkFDbEIsZ0RBQWdEO2dCQUNoRCxLQUFLO2dCQUNMLEVBQUU7Z0JBQ0Ysd0RBQXdEO2dCQUN4RCxFQUFFO2dCQUNGLHdEQUF3RDtnQkFDeEQsRUFBRTtnQkFDRixtQ0FBbUM7Z0JBQ25DLHlDQUF5QztnQkFDekMsNEJBQTRCO2dCQUM1QixFQUFFO2dCQUNGLFNBQVM7Z0JBQ1QsbUZBQW1GO2dCQUNuRiw2QkFBNkI7Z0JBQzdCLHlDQUF5QztnQkFDekMscUNBQXFDO2dCQUNyQyx3QkFBd0I7Z0JBQ3hCLCtEQUErRDtnQkFDL0QseUVBQXlFO2dCQUN6RSwyQkFBMkI7Z0JBQzNCLGFBQWE7Z0JBQ2IsS0FBSztnQkFDTCxFQUFFO2dCQUNGLDZGQUE2RjtnQkFDN0YsZ0NBQWdDO2dCQUNoQywyQ0FBMkM7Z0JBQzNDLG1CQUFtQjtnQkFDbkIsMkJBQTJCO2dCQUMzQix5QkFBeUI7Z0JBQ3pCLE1BQU07Z0JBQ04sa0NBQWtDO2dCQUNsQyxtQ0FBbUM7Z0JBQ25DLG1CQUFtQjtnQkFDbkIsMkJBQTJCO2dCQUMzQix5QkFBeUI7Z0JBQ3pCLE1BQU07Z0JBQ04sb0dBQW9HO2dCQUNwRyxFQUFFO2dCQUNGLDZHQUE2RztnQkFDN0csd0RBQXdEO2dCQUN4RCxFQUFFO2dCQUNGLHNCQUFzQjtnQkFDdEIsdUVBQXVFO2dCQUN2RSxzQkFBc0I7Z0JBQ3RCLEVBQUU7Z0JBQ0YsK0NBQStDO2dCQUMvQyw4QkFBOEI7Z0JBQzlCLFdBQVc7Z0JBQ1gsMkRBQTJEO2dCQUMzRCxzRkFBc0Y7Z0JBQ3RGLHdCQUF3QjtnQkFDeEIsbUZBQW1GO2dCQUNuRixPQUFPO2dCQUNQLEtBQUs7Z0JBQ0wsRUFBRTtnQkFDRixtQ0FBbUM7Z0JBQ25DLDZDQUE2QztnQkFDN0MsV0FBVztnQkFDWCx3RUFBd0U7Z0JBQ3hFLDZEQUE2RDtnQkFDN0Qsd0JBQXdCO2dCQUN4Qiw0RUFBNEU7Z0JBQzVFLGdFQUFnRTtnQkFDaEUsT0FBTztnQkFDUCxLQUFLO2dCQUNMLEVBQUU7Z0JBQ0YsNEdBQTRHO2dCQUM1Ryw4Q0FBOEM7Z0JBQzlDLDBFQUEwRTtnQkFDMUUsS0FBSztnQkFDTCxHQUFHO2dCQUNILEVBQUU7Z0JBQ0YseUJBQXlCO2dCQUN6Qix1QkFBdUI7Z0JBQ3ZCLHlCQUF5QjtnQkFDekIsS0FBSzthQUNOO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBblNELGdEQW1TQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEF3c0Nka1R5cGVTY3JpcHRBcHAgfSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5cbmludGVyZmFjZSBDZGtDaGFuZ2VzZXRTY3JpcHRQcm9wcyB7XG4gIHByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHA7XG4gIG91dHB1dFBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDZGtDaGFuZ2VzZXRTY3JpcHQge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogQ2RrQ2hhbmdlc2V0U2NyaXB0UHJvcHMpIHtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcHJvcHMub3V0cHV0UGF0aCA/PyAncHJvamVucmMvZGVzY3JpYmUtY2ZuLWNoYW5nZXNldC50cyc7XG5cbiAgICBuZXcgVGV4dEZpbGUocHJvcHMucHJvamVjdCwgb3V0cHV0UGF0aCwge1xuICAgICAgbGluZXM6IFtcbiAgICAgICAgXCJpbXBvcnQgeyBhcHBlbmRGaWxlIH0gZnJvbSAnZnMvcHJvbWlzZXMnO1wiLFxuICAgICAgICBcImltcG9ydCB7IENsb3VkRm9ybWF0aW9uQ2xpZW50LCBEZXNjcmliZUNoYW5nZVNldENvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1wiLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBTbWFsbCBzbGVlcCBoZWxwZXIuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdjb25zdCBzbGVlcCA9IChtczogbnVtYmVyKSA9PiBuZXcgUHJvbWlzZSgocmVzKSA9PiBzZXRUaW1lb3V0KHJlcywgbXMpKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBCdWlsZCB0aGUgSFRNTCBjb2xvciBjaGlwIGZvciBhbiBhY3Rpb24uJyxcbiAgICAgICAgJyAqIE1vZGlmeT1ibHVlLCBBZGQ9Z3JlZW4sIFJlbW92ZT1yZWQgKG1hdGNoIHByZXR0eV9mb3JtYXQucHkpLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnZnVuY3Rpb24gYWN0aW9uQ2hpcChhY3Rpb24/OiBzdHJpbmcpOiBzdHJpbmcgeycsXG4gICAgICAgICcgIC8vIFVzZSBlbW9qaSBpbnN0ZWFkIG9mIGV4dGVybmFsIGltYWdlcyBmb3IgcmVsaWFiaWxpdHknLFxuICAgICAgICAnICBjb25zdCBlbW9qaU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsnLFxuICAgICAgICBcIiAgICBNb2RpZnk6ICfwn5S1JyxcIixcbiAgICAgICAgXCIgICAgQWRkOiAn8J+foicsXCIsXG4gICAgICAgIFwiICAgIFJlbW92ZTogJ/CflLQnLFwiLFxuICAgICAgICAnICB9OycsXG4gICAgICAgIFwiICBjb25zdCBtYXJrID0gYWN0aW9uID8gKGVtb2ppTWFwW2FjdGlvbl0gPz8gJ+KaqicpIDogJ+Kaqic7XCIsXG4gICAgICAgIFwiICByZXR1cm4gYCR7bWFya30gJHthY3Rpb24gPz8gJy0nfWA7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogRXNjYXBlIEhUTUwgc3BlY2lhbCBjaGFyYWN0ZXJzLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnZnVuY3Rpb24gZXNjYXBlSHRtbChzdHI6IHN0cmluZyk6IHN0cmluZyB7JyxcbiAgICAgICAgXCIgIHJldHVybiBzdHIucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIEZvcm1hdCBhIGJlZm9yZeKGkmFmdGVyIGNoYW5nZS4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2Z1bmN0aW9uIGZvcm1hdENoYW5nZShuYW1lOiBzdHJpbmcsIGNoYW5nZVR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgYmVmb3JlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGFmdGVyOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgeycsXG4gICAgICAgIFwiICBjb25zdCBjaGFuZ2VFbW9qaSA9IGNoYW5nZVR5cGUgPT09ICdBZGQnID8gJ/Cfn6InIDogY2hhbmdlVHlwZSA9PT0gJ1JlbW92ZScgPyAn8J+UtCcgOiAn8J+UtSc7XCIsXG4gICAgICAgICcgICcsXG4gICAgICAgICcgIC8vIElmIGJvdGggdmFsdWVzIGV4aXN0IGFuZCBhcmUgbGFyZ2UsIHVzZSBhIG1vcmUgY29tcGFjdCBmb3JtYXQnLFxuICAgICAgICAnICBjb25zdCBiZWZvcmVMZW4gPSBiZWZvcmU/Lmxlbmd0aCA/PyAwOycsXG4gICAgICAgICcgIGNvbnN0IGFmdGVyTGVuID0gYWZ0ZXI/Lmxlbmd0aCA/PyAwOycsXG4gICAgICAgICcgIGNvbnN0IGlzTGFyZ2UgPSBiZWZvcmVMZW4gPiA4MCB8fCBhZnRlckxlbiA+IDgwOycsXG4gICAgICAgICcgICcsXG4gICAgICAgICcgIGlmIChiZWZvcmUgJiYgYWZ0ZXIpIHsnLFxuICAgICAgICAnICAgIGlmIChpc0xhcmdlKSB7JyxcbiAgICAgICAgJyAgICAgIHJldHVybiBgPGRldGFpbHM+PHN1bW1hcnk+JHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+IChtb2RpZmllZCk8L3N1bW1hcnk+PHN0cm9uZz5CZWZvcmU6PC9zdHJvbmc+PHByZT4ke2VzY2FwZUh0bWwoYmVmb3JlKX08L3ByZT48c3Ryb25nPkFmdGVyOjwvc3Ryb25nPjxwcmU+JHtlc2NhcGVIdG1sKGFmdGVyKX08L3ByZT48L2RldGFpbHM+YDsnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnICAgIHJldHVybiBgJHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+OiA8Y29kZT4ke2VzY2FwZUh0bWwoYmVmb3JlKX08L2NvZGU+IOKGkiA8Y29kZT4ke2VzY2FwZUh0bWwoYWZ0ZXIpfTwvY29kZT5gOycsXG4gICAgICAgICcgIH0gZWxzZSBpZiAoYWZ0ZXIpIHsnLFxuICAgICAgICAnICAgIGlmIChpc0xhcmdlKSB7JyxcbiAgICAgICAgJyAgICAgIHJldHVybiBgPGRldGFpbHM+PHN1bW1hcnk+JHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+IChhZGRlZCk8L3N1bW1hcnk+PHByZT4ke2VzY2FwZUh0bWwoYWZ0ZXIpfTwvcHJlPjwvZGV0YWlscz5gOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgICAgcmV0dXJuIGAke2NoYW5nZUVtb2ppfSA8c3Ryb25nPiR7ZXNjYXBlSHRtbChuYW1lKX08L3N0cm9uZz46IDxjb2RlPiR7ZXNjYXBlSHRtbChhZnRlcil9PC9jb2RlPmA7JyxcbiAgICAgICAgJyAgfSBlbHNlIGlmIChiZWZvcmUpIHsnLFxuICAgICAgICAnICAgIGlmIChpc0xhcmdlKSB7JyxcbiAgICAgICAgJyAgICAgIHJldHVybiBgPGRldGFpbHM+PHN1bW1hcnk+JHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+IChyZW1vdmVkKTwvc3VtbWFyeT48cHJlPiR7ZXNjYXBlSHRtbChiZWZvcmUpfTwvcHJlPjwvZGV0YWlscz5gOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgICAgcmV0dXJuIGAke2NoYW5nZUVtb2ppfSA8c3Ryb25nPiR7ZXNjYXBlSHRtbChuYW1lKX08L3N0cm9uZz46IDxzPjxjb2RlPiR7ZXNjYXBlSHRtbChiZWZvcmUpfTwvY29kZT48L3M+YDsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJyAgLy8gRmFsbGJhY2s6IG5vIHZhbHVlcyBhdmFpbGFibGUgKEFQSSBkaWQgbm90IHJldHVybiB0aGVtKScsXG4gICAgICAgICcgIHJldHVybiBgJHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+YDsnLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIEV4dHJhY3QgY2hhbmdlZCBwcm9wZXJ0aWVzL3RhZ3MvYXR0cmlidXRlcyB3aXRoIGJlZm9yZS9hZnRlciB2YWx1ZXMuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdmdW5jdGlvbiBjaGFuZ2VkUHJvcGVydGllc0hUTUwoY2hhbmdlOiBhbnkpOiBzdHJpbmcgeycsXG4gICAgICAgICcgIGNvbnN0IGRldGFpbHMgPSBjaGFuZ2U/LlJlc291cmNlQ2hhbmdlPy5EZXRhaWxzID8/IFtdOycsXG4gICAgICAgICcgIGNvbnN0IHByb3BzOiBzdHJpbmdbXSA9IFtdOycsXG4gICAgICAgICcgIGZvciAoY29uc3QgZCBvZiBkZXRhaWxzKSB7JyxcbiAgICAgICAgJyAgICBjb25zdCBhdHRyID0gZD8uVGFyZ2V0Py5BdHRyaWJ1dGU7JyxcbiAgICAgICAgJyAgICAvLyBVc2UgcHJvcGVydHkgbmFtZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSB1c2UgYXR0cmlidXRlIHR5cGUnLFxuICAgICAgICBcIiAgICBjb25zdCBuYW1lID0gZD8uVGFyZ2V0Py5OYW1lID8/IGF0dHIgPz8gJ3Vua25vd24nO1wiLFxuICAgICAgICAnICAgIGNvbnN0IGNoYW5nZVR5cGUgPSBkPy5UYXJnZXQ/LkF0dHJpYnV0ZUNoYW5nZVR5cGU7JyxcbiAgICAgICAgJyAgICBjb25zdCBiZWZvcmUgPSBkPy5UYXJnZXQ/LkJlZm9yZVZhbHVlOycsXG4gICAgICAgICcgICAgY29uc3QgYWZ0ZXIgPSBkPy5UYXJnZXQ/LkFmdGVyVmFsdWU7JyxcbiAgICAgICAgJyAgICBwcm9wcy5wdXNoKGZvcm1hdENoYW5nZShuYW1lLCBjaGFuZ2VUeXBlLCBiZWZvcmUsIGFmdGVyKSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgIFwiICByZXR1cm4gcHJvcHMuam9pbignPGJyPicpO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIERldGVybWluZSBpZiBhIGNoYW5nZSBzaG91bGQgYmUgaWdub3JlZCBiYXNlZCBvbiBsb2dpY2FsIElEcyBhbmQvb3IgcmVzb3VyY2UgdHlwZXMuJyxcbiAgICAgICAgXCIgKiAtIElHTk9SRV9MT0dJQ0FMX0lEUzogY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbG9naWNhbCBJRHMgdG8gaWdub3JlIChkZWZhdWx0IGluY2x1ZGVzICdDREtNZXRhZGF0YScpXCIsXG4gICAgICAgIFwiICogLSBJR05PUkVfUkVTT1VSQ0VfVFlQRVM6IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHJlc291cmNlIHR5cGVzIHRvIGlnbm9yZSAoZS5nLiwgJ0FXUzo6Q0RLOjpNZXRhZGF0YScpXCIsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnZnVuY3Rpb24gc2hvdWxkSWdub3JlQ2hhbmdlKGNoYW5nZTogYW55LCBpZ25vcmVJZHM6IFNldDxzdHJpbmc+LCBpZ25vcmVUeXBlczogU2V0PHN0cmluZz4pOiBib29sZWFuIHsnLFxuICAgICAgICAnICBjb25zdCByYyA9IGNoYW5nZT8uUmVzb3VyY2VDaGFuZ2UgPz8ge307JyxcbiAgICAgICAgJyAgY29uc3QgbG9naWNhbElkID0gcmM/LkxvZ2ljYWxSZXNvdXJjZUlkIGFzIHN0cmluZyB8IHVuZGVmaW5lZDsnLFxuICAgICAgICAnICBjb25zdCByZXNvdXJjZVR5cGUgPSByYz8uUmVzb3VyY2VUeXBlIGFzIHN0cmluZyB8IHVuZGVmaW5lZDsnLFxuICAgICAgICAnICBpZiAobG9naWNhbElkICYmIGlnbm9yZUlkcy5oYXMobG9naWNhbElkKSkgcmV0dXJuIHRydWU7JyxcbiAgICAgICAgJyAgaWYgKHJlc291cmNlVHlwZSAmJiBpZ25vcmVUeXBlcy5oYXMocmVzb3VyY2VUeXBlKSkgcmV0dXJuIHRydWU7JyxcbiAgICAgICAgJyAgcmV0dXJuIGZhbHNlOycsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogR2VuZXJhdGUgdGhlIEhUTUwgYm9keSBzaW1pbGFyIHRvIHByZXR0eV9mb3JtYXQucHknLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2Z1bmN0aW9uIGJ1aWxkSHRtbChzdGFja05hbWU6IHN0cmluZywgY2hhbmdlczogYW55W10pOiBzdHJpbmcgeycsXG4gICAgICAgICcgIGxldCBib2R5ID0gYDxoMT5DaGFuZ2Ugc2V0PC9oMT48aDI+U3RhY2sgTmFtZTogJHtzdGFja05hbWV9PC9oMj48YnI+YDsnLFxuICAgICAgICAnICBpZiAoKGNoYW5nZXM/Lmxlbmd0aCA/PyAwKSA+IDApIHsnLFxuICAgICAgICBcIiAgICBib2R5ICs9ICc8dGFibGU+PHRyPjx0aD5BY3Rpb24mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3RoPjx0aD5JRDwvdGg+PHRoPlR5cGU8L3RoPjx0aD5SZXBsYWNlbWVudDwvdGg+PHRoPkRldGFpbHM8L3RoPjwvdHI+JztcIixcbiAgICAgICAgJyAgICBmb3IgKGNvbnN0IGMgb2YgY2hhbmdlcykgeycsXG4gICAgICAgICcgICAgICBjb25zdCByYyA9IGM/LlJlc291cmNlQ2hhbmdlID8/IHt9OycsXG4gICAgICAgICcgICAgICBjb25zdCBhY3Rpb24gPSBhY3Rpb25DaGlwKHJjPy5BY3Rpb24pOycsXG4gICAgICAgIFwiICAgICAgY29uc3QgbG9naWNhbElkID0gcmM/LkxvZ2ljYWxSZXNvdXJjZUlkID8/ICctJztcIixcbiAgICAgICAgXCIgICAgICBjb25zdCB0eXBlID0gcmM/LlJlc291cmNlVHlwZSA/PyAnLSc7XCIsXG4gICAgICAgIFwiICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSByYz8uUmVwbGFjZW1lbnQgPz8gJy0nO1wiLFxuICAgICAgICAnICAgICAgY29uc3QgZGV0YWlscyA9IGNoYW5nZWRQcm9wZXJ0aWVzSFRNTChjKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgXCIgICAgICBib2R5ICs9ICc8dHI+JztcIixcbiAgICAgICAgJyAgICAgIGJvZHkgKz0gYDx0ZD4ke2FjdGlvbn08L3RkPmA7JyxcbiAgICAgICAgJyAgICAgIGJvZHkgKz0gYDx0ZD4ke2xvZ2ljYWxJZH08L3RkPmA7JyxcbiAgICAgICAgJyAgICAgIGJvZHkgKz0gYDx0ZD4ke3R5cGV9PC90ZD5gOycsXG4gICAgICAgICcgICAgICBib2R5ICs9IGA8dGQ+JHtyZXBsYWNlbWVudH08L3RkPmA7JyxcbiAgICAgICAgJyAgICAgIGJvZHkgKz0gYDx0ZD4ke2RldGFpbHN9PC90ZD5gOycsXG4gICAgICAgIFwiICAgICAgYm9keSArPSAnPC90cj4nO1wiLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICBcIiAgICBib2R5ICs9ICc8L3RhYmxlPic7XCIsXG4gICAgICAgICcgIH0gZWxzZSB7JyxcbiAgICAgICAgXCIgICAgYm9keSArPSAnbm8gY2hhbmdlLic7XCIsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnICByZXR1cm4gYm9keTsnLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIFBvbGwgRGVzY3JpYmVDaGFuZ2VTZXQgdW50aWwgYSB0ZXJtaW5hbCBzdGF0dXMsIHRoZW4gcGFnaW5hdGUgdG8gcmV0cmlldmUgYWxsIENoYW5nZXMuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdhc3luYyBmdW5jdGlvbiBnZXRUZXJtaW5hbENoYW5nZVNldCgnLFxuICAgICAgICAnICBjbGllbnQ6IENsb3VkRm9ybWF0aW9uQ2xpZW50LCcsXG4gICAgICAgICcgIHN0YWNrTmFtZTogc3RyaW5nLCcsXG4gICAgICAgICcgIGNoYW5nZVNldE5hbWU6IHN0cmluZywnLFxuICAgICAgICAnICBtYXhBdHRlbXB0cyA9IDYwLCcsXG4gICAgICAgICcgIGRlbGF5TXMgPSAzMDAwLCcsXG4gICAgICAgICcpOiBQcm9taXNlPHsgc3RhdHVzPzogc3RyaW5nOyBzdGF0dXNSZWFzb24/OiBzdHJpbmc7IGNoYW5nZXM6IGFueVtdIH0+IHsnLFxuICAgICAgICAnICBmb3IgKGxldCBhdHRlbXB0ID0gMTsgYXR0ZW1wdCA8PSBtYXhBdHRlbXB0czsgYXR0ZW1wdCsrKSB7JyxcbiAgICAgICAgJyAgICBjb25zdCByZXNwID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZCh7JyxcbiAgICAgICAgJyAgICAgIFN0YWNrTmFtZTogc3RhY2tOYW1lLCcsXG4gICAgICAgICcgICAgICBDaGFuZ2VTZXROYW1lOiBjaGFuZ2VTZXROYW1lLCcsXG4gICAgICAgICcgICAgICBJbmNsdWRlUHJvcGVydHlWYWx1ZXM6IHRydWUsJyxcbiAgICAgICAgJyAgICB9KSk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgY29uc3Qgc3RhdHVzID0gcmVzcC5TdGF0dXM7JyxcbiAgICAgICAgJyAgICBjb25zdCBzdGF0dXNSZWFzb24gPSByZXNwLlN0YXR1c1JlYXNvbjsnLFxuICAgICAgICAnJyxcbiAgICAgICAgXCIgICAgaWYgKHN0YXR1cyA9PT0gJ0NSRUFURV9DT01QTEVURScgfHwgc3RhdHVzID09PSAnRkFJTEVEJykge1wiLFxuICAgICAgICAnICAgICAgLy8gR2F0aGVyIGFsbCBwYWdlcycsXG4gICAgICAgICcgICAgICBjb25zdCBjaGFuZ2VzOiBhbnlbXSA9IFtdOycsXG4gICAgICAgICcgICAgICBpZiAocmVzcC5DaGFuZ2VzKSBjaGFuZ2VzLnB1c2goLi4ucmVzcC5DaGFuZ2VzKTsnLFxuICAgICAgICAnICAgICAgbGV0IG5leHQgPSByZXNwLk5leHRUb2tlbjsnLFxuICAgICAgICAnICAgICAgd2hpbGUgKG5leHQpIHsnLFxuICAgICAgICAnICAgICAgICBjb25zdCBwYWdlID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZCh7JyxcbiAgICAgICAgJyAgICAgICAgICBTdGFja05hbWU6IHN0YWNrTmFtZSwnLFxuICAgICAgICAnICAgICAgICAgIENoYW5nZVNldE5hbWU6IGNoYW5nZVNldE5hbWUsJyxcbiAgICAgICAgJyAgICAgICAgICBJbmNsdWRlUHJvcGVydHlWYWx1ZXM6IHRydWUsJyxcbiAgICAgICAgJyAgICAgICAgICBOZXh0VG9rZW46IG5leHQsJyxcbiAgICAgICAgJyAgICAgICAgfSkpOycsXG4gICAgICAgICcgICAgICAgIGlmIChwYWdlLkNoYW5nZXMpIGNoYW5nZXMucHVzaCguLi5wYWdlLkNoYW5nZXMpOycsXG4gICAgICAgICcgICAgICAgIG5leHQgPSBwYWdlLk5leHRUb2tlbjsnLFxuICAgICAgICAnICAgICAgfScsXG4gICAgICAgICcgICAgICByZXR1cm4geyBzdGF0dXMsIHN0YXR1c1JlYXNvbiwgY2hhbmdlcyB9OycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIC8vIE5vdCB0ZXJtaW5hbCB5ZXQ7IHdhaXQgYW5kIHJldHJ5JyxcbiAgICAgICAgJyAgICBhd2FpdCBzbGVlcChkZWxheU1zKTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICB0aHJvdyBuZXcgRXJyb3IoJ1RpbWVkIG91dCB3YWl0aW5nIGZvciBjaGFuZ2Ugc2V0IHRvIHJlYWNoIGEgdGVybWluYWwgc3RhdHVzLicpO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnYXN5bmMgZnVuY3Rpb24gcG9zdEdpdGh1YkNvbW1lbnQodXJsOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGJvZHk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4geycsXG4gICAgICAgICcgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCwgeycsXG4gICAgICAgIFwiICAgIG1ldGhvZDogJ1BPU1QnLFwiLFxuICAgICAgICAnICAgIGhlYWRlcnM6IHsnLFxuICAgICAgICBcIiAgICAgICdBdXRob3JpemF0aW9uJzogYHRva2VuICR7dG9rZW59YCxcIixcbiAgICAgICAgXCIgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFwiLFxuICAgICAgICBcIiAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vdm5kLmdpdGh1Yitqc29uJyxcIixcbiAgICAgICAgJyAgICB9LCcsXG4gICAgICAgICcgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBib2R5IH0pLCcsXG4gICAgICAgICcgIH0pOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICBpZiAoIXJlcy5vaykgeycsXG4gICAgICAgIFwiICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXMudGV4dCgpLmNhdGNoKCgpID0+ICcnKTtcIixcbiAgICAgICAgJyAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwb3N0IEdpdEh1YiBjb21tZW50OiAke3Jlcy5zdGF0dXN9ICR7cmVzLnN0YXR1c1RleHR9ICR7dGV4dH1gKTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ2FzeW5jIGZ1bmN0aW9uIGFwcGVuZFN0ZXBTdW1tYXJ5KHN1bW1hcnlQYXRoOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4geycsXG4gICAgICAgIFwiICBhd2FpdCBhcHBlbmRGaWxlKHN1bW1hcnlQYXRoLCBgJHtjb250ZW50fVxcXFxuYCwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnYXN5bmMgZnVuY3Rpb24gbWFpbigpIHsnLFxuICAgICAgICAnICBjb25zdCB7JyxcbiAgICAgICAgJyAgICBTVEFDS19OQU1FLCcsXG4gICAgICAgICcgICAgQ0hBTkdFX1NFVF9OQU1FLCcsXG4gICAgICAgICcgICAgQVdTX1JFR0lPTiwnLFxuICAgICAgICAnICAgIEdJVEhVQl9UT0tFTiwnLFxuICAgICAgICAnICAgIEdJVEhVQl9DT01NRU5UX1VSTCwnLFxuICAgICAgICAnICAgIEdJVEhVQl9TVEVQX1NVTU1BUlksJyxcbiAgICAgICAgJyAgICBJR05PUkVfTE9HSUNBTF9JRFMsJyxcbiAgICAgICAgJyAgICBJR05PUkVfUkVTT1VSQ0VfVFlQRVMsJyxcbiAgICAgICAgJyAgfSA9IHByb2Nlc3MuZW52OycsXG4gICAgICAgICcnLFxuICAgICAgICAnICBpZiAoIVNUQUNLX05BTUUpIHsnLFxuICAgICAgICBcIiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NUQUNLX05BTUUgaXMgcmVxdWlyZWQnKTtcIixcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIGNvbnN0IHJlZ2lvbiA9IEFXU19SRUdJT04gfHwgcHJvY2Vzcy5lbnYuQVdTX0RFRkFVTFRfUkVHSU9OOycsXG4gICAgICAgICcgIGlmICghcmVnaW9uKSB7JyxcbiAgICAgICAgXCIgICAgdGhyb3cgbmV3IEVycm9yKCdBV1NfUkVHSU9OIGlzIHJlcXVpcmVkJyk7XCIsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgY29uc3QgY2hhbmdlU2V0TmFtZSA9IENIQU5HRV9TRVRfTkFNRSB8fCBTVEFDS19OQU1FOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICBjb25zdCBjbGllbnQgPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQoeyByZWdpb24gfSk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIGxldCBzdGF0dXM6IHN0cmluZyB8IHVuZGVmaW5lZDsnLFxuICAgICAgICAnICBsZXQgc3RhdHVzUmVhc29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7JyxcbiAgICAgICAgJyAgbGV0IGNoYW5nZXM6IGFueVtdID0gW107JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHRyeSB7JyxcbiAgICAgICAgJyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRUZXJtaW5hbENoYW5nZVNldChjbGllbnQsIFNUQUNLX05BTUUsIGNoYW5nZVNldE5hbWUpOycsXG4gICAgICAgICcgICAgc3RhdHVzID0gcmVzdWx0LnN0YXR1czsnLFxuICAgICAgICAnICAgIHN0YXR1c1JlYXNvbiA9IHJlc3VsdC5zdGF0dXNSZWFzb247JyxcbiAgICAgICAgJyAgICBjaGFuZ2VzID0gcmVzdWx0LmNoYW5nZXMgPz8gW107JyxcbiAgICAgICAgJyAgfSBjYXRjaCAoZXJyOiBhbnkpIHsnLFxuICAgICAgICAnICAgIC8vIElmIERlc2NyaWJlQ2hhbmdlU2V0IGZhaWxzIGVudGlyZWx5LCBzdXJmYWNlIHRoZSBlcnJvcicsXG4gICAgICAgIFwiICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRlc2NyaWJpbmcgY2hhbmdlIHNldDonLCBlcnI/Lm1lc3NhZ2UgfHwgZXJyKTtcIixcbiAgICAgICAgJyAgICBwcm9jZXNzLmV4aXRDb2RlID0gMTsnLFxuICAgICAgICAnICAgIHJldHVybjsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICAvLyBBcHBseSBpZ25vcmVzIGZyb20gZW52IHZhcnMgKElEcyBhbmQgdHlwZXMpLiBEZWZhdWx0IGlnbm9yZSBJRHMgaW5jbHVkZSAnQ0RLTWV0YWRhdGEnLlwiLFxuICAgICAgICAnICBjb25zdCBpZ25vcmVJZFNldCA9IG5ldyBTZXQoJyxcbiAgICAgICAgXCIgICAgKElHTk9SRV9MT0dJQ0FMX0lEUyA/PyAnQ0RLTWV0YWRhdGEnKVwiLFxuICAgICAgICBcIiAgICAgIC5zcGxpdCgnLCcpXCIsXG4gICAgICAgICcgICAgICAubWFwKHMgPT4gcy50cmltKCkpJyxcbiAgICAgICAgJyAgICAgIC5maWx0ZXIoQm9vbGVhbiksJyxcbiAgICAgICAgJyAgKTsnLFxuICAgICAgICAnICBjb25zdCBpZ25vcmVUeXBlU2V0ID0gbmV3IFNldCgnLFxuICAgICAgICBcIiAgICAoSUdOT1JFX1JFU09VUkNFX1RZUEVTID8/ICcnKVwiLFxuICAgICAgICBcIiAgICAgIC5zcGxpdCgnLCcpXCIsXG4gICAgICAgICcgICAgICAubWFwKHMgPT4gcy50cmltKCkpJyxcbiAgICAgICAgJyAgICAgIC5maWx0ZXIoQm9vbGVhbiksJyxcbiAgICAgICAgJyAgKTsnLFxuICAgICAgICAnICBjb25zdCBmaWx0ZXJlZENoYW5nZXMgPSBjaGFuZ2VzLmZpbHRlcihjID0+ICFzaG91bGRJZ25vcmVDaGFuZ2UoYywgaWdub3JlSWRTZXQsIGlnbm9yZVR5cGVTZXQpKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLy8gQnVpbGQgSFRNTCBleGFjdGx5IGxpa2UgcHJldHR5X2Zvcm1hdC5weSBsb2dpYyAodGFibGUgd2hlbiB0aGVyZSBhcmUgY2hhbmdlczsgXCJubyBjaGFuZ2UuXCIgb3RoZXJ3aXNlKS4nLFxuICAgICAgICAnICBjb25zdCBodG1sID0gYnVpbGRIdG1sKFNUQUNLX05BTUUsIGZpbHRlcmVkQ2hhbmdlcyk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8vIFByaW50IHRvIHN0ZG91dCcsXG4gICAgICAgICcgIC8vIFRoaXMgYWxsb3dzIGNhcHR1cmluZyBvdXRwdXQgb3IgcmVkaXJlY3RpbmcgdG8gYSBmaWxlIGlmIG5lZWRlZC4nLFxuICAgICAgICAnICBjb25zb2xlLmxvZyhodG1sKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLy8gT3B0aW9uYWxseSBhcHBlbmQgdG8gR2l0SHViIFN0ZXAgU3VtbWFyeScsXG4gICAgICAgICcgIGlmIChHSVRIVUJfU1RFUF9TVU1NQVJZKSB7JyxcbiAgICAgICAgJyAgICB0cnkgeycsXG4gICAgICAgICcgICAgICBhd2FpdCBhcHBlbmRTdGVwU3VtbWFyeShHSVRIVUJfU1RFUF9TVU1NQVJZLCBodG1sKTsnLFxuICAgICAgICAnICAgICAgY29uc29sZS5lcnJvcihgQXBwZW5kZWQgSFRNTCB0byBHSVRIVUJfU1RFUF9TVU1NQVJZOiAke0dJVEhVQl9TVEVQX1NVTU1BUll9YCk7JyxcbiAgICAgICAgJyAgICB9IGNhdGNoIChlOiBhbnkpIHsnLFxuICAgICAgICBcIiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBhcHBlbmQgdG8gR0lUSFVCX1NURVBfU1VNTUFSWTonLCBlPy5tZXNzYWdlIHx8IGUpO1wiLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8vIE9wdGlvbmFsbHkgcG9zdCBhIFBSIGNvbW1lbnQnLFxuICAgICAgICAnICBpZiAoR0lUSFVCX1RPS0VOICYmIEdJVEhVQl9DT01NRU5UX1VSTCkgeycsXG4gICAgICAgICcgICAgdHJ5IHsnLFxuICAgICAgICAnICAgICAgYXdhaXQgcG9zdEdpdGh1YkNvbW1lbnQoR0lUSFVCX0NPTU1FTlRfVVJMLCBHSVRIVUJfVE9LRU4sIGh0bWwpOycsXG4gICAgICAgIFwiICAgICAgY29uc29sZS5lcnJvcignUG9zdGVkIEhUTUwgYXMgYSBHaXRIdWIgUFIgY29tbWVudC4nKTtcIixcbiAgICAgICAgJyAgICB9IGNhdGNoIChlOiBhbnkpIHsnLFxuICAgICAgICBcIiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBwb3N0IEdpdEh1YiBQUiBjb21tZW50OicsIGU/Lm1lc3NhZ2UgfHwgZSk7XCIsXG4gICAgICAgICcgICAgICAvLyBEbyBub3QgZmFpbCB0aGUgd2hvbGUgc2NyaXB0IGp1c3QgZm9yIGNvbW1lbnQgcG9zdGluZycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgXCIgIC8vIE5vdGU6IFdoZW4gc3RhdHVzIGlzIEZBSUxFRCBkdWUgdG8gXFxcImRpZG4ndCBjb250YWluIGNoYW5nZXNcXFwiLCB0aGUgSFRNTCBuYXR1cmFsbHkgc2F5cyBcXFwibm8gY2hhbmdlLlxcXCJcIixcbiAgICAgICAgXCIgIGlmIChzdGF0dXMgPT09ICdGQUlMRUQnICYmIHN0YXR1c1JlYXNvbikge1wiLFxuICAgICAgICAnICAgIGNvbnNvbGUuZXJyb3IoYENoYW5nZSBzZXQgc3RhdHVzOiBGQUlMRUQuIFJlYXNvbjogJHtzdGF0dXNSZWFzb259YCk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdtYWluKCkuY2F0Y2goKGVycikgPT4geycsXG4gICAgICAgICcgIGNvbnNvbGUuZXJyb3IoZXJyKTsnLFxuICAgICAgICAnICBwcm9jZXNzLmV4aXRDb2RlID0gMTsnLFxuICAgICAgICAnfSk7JyxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
430
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNoYW5nZXNldC1zY3JpcHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL2Nkay1jaGFuZ2VzZXQtc2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFrQztBQVFsQyxNQUFhLGtCQUFrQjtJQUM3QixZQUFZLEtBQThCO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksb0NBQW9DLENBQUM7UUFFNUUsSUFBSSxpQkFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFO1lBQ3RDLEtBQUssRUFBRTtnQkFDTCwyQ0FBMkM7Z0JBQzNDLDZKQUE2SjtnQkFDN0osRUFBRTtnQkFDRixLQUFLO2dCQUNMLHdCQUF3QjtnQkFDeEIsS0FBSztnQkFDTCwwRUFBMEU7Z0JBQzFFLEVBQUU7Z0JBQ0YsS0FBSztnQkFDTCw2Q0FBNkM7Z0JBQzdDLGlFQUFpRTtnQkFDakUsS0FBSztnQkFDTCxnREFBZ0Q7Z0JBQ2hELDJEQUEyRDtnQkFDM0QsOENBQThDO2dCQUM5QyxtQkFBbUI7Z0JBQ25CLGdCQUFnQjtnQkFDaEIsbUJBQW1CO2dCQUNuQixNQUFNO2dCQUNOLDBEQUEwRDtnQkFDMUQsc0NBQXNDO2dCQUN0QyxHQUFHO2dCQUNILEVBQUU7Z0JBQ0YsS0FBSztnQkFDTCxvQ0FBb0M7Z0JBQ3BDLEtBQUs7Z0JBQ0wsNENBQTRDO2dCQUM1QyxrRkFBa0Y7Z0JBQ2xGLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRixLQUFLO2dCQUNMLGtDQUFrQztnQkFDbEMsS0FBSztnQkFDTCxzSUFBc0k7Z0JBQ3RJLDRGQUE0RjtnQkFDNUYsSUFBSTtnQkFDSixvRUFBb0U7Z0JBQ3BFLDBDQUEwQztnQkFDMUMsd0NBQXdDO2dCQUN4QyxvREFBb0Q7Z0JBQ3BELElBQUk7Z0JBQ0osMEJBQTBCO2dCQUMxQixvQkFBb0I7Z0JBQ3BCLG9PQUFvTztnQkFDcE8sT0FBTztnQkFDUCwySUFBMkk7Z0JB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bUY7Z0JBQ25GLE9BQU87Z0JBQ1AsS0FBSztnQkFDTCxFQUFFO2dCQUNGLG9FQUFvRTtnQkFDcEUsNkNBQTZDO2dCQUM3QyxXQUFXO2dCQUNYLHNGQUFzRjtnQkFDdEYscURBQXFEO2dCQUNyRCx3QkFBd0I7Z0JBQ3hCLDhFQUE4RTtnQkFDOUUsZ0VBQWdFO2dCQUNoRSxPQUFPO2dCQUNQLEtBQUs7Z0JBQ0wsRUFBRTtnQkFDRiw0R0FBNEc7Z0JBQzVHLDhDQUE4QztnQkFDOUMsMEVBQTBFO2dCQUMxRSxLQUFLO2dCQUNMLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRix5QkFBeUI7Z0JBQ3pCLHVCQUF1QjtnQkFDdkIseUJBQXlCO2dCQUN6QixLQUFLO2FBQ047U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF4YUQsZ0RBd2FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gJ3Byb2plbi9saWIvYXdzY2RrJztcblxuaW50ZXJmYWNlIENka0NoYW5nZXNldFNjcmlwdFByb3BzIHtcbiAgcHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcDtcbiAgb3V0cHV0UGF0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIENka0NoYW5nZXNldFNjcmlwdCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDZGtDaGFuZ2VzZXRTY3JpcHRQcm9wcykge1xuICAgIGNvbnN0IG91dHB1dFBhdGggPSBwcm9wcy5vdXRwdXRQYXRoID8/ICdwcm9qZW5yYy9kZXNjcmliZS1jZm4tY2hhbmdlc2V0LnRzJztcblxuICAgIG5ldyBUZXh0RmlsZShwcm9wcy5wcm9qZWN0LCBvdXRwdXRQYXRoLCB7XG4gICAgICBsaW5lczogW1xuICAgICAgICBcImltcG9ydCB7IGFwcGVuZEZpbGUgfSBmcm9tICdmcy9wcm9taXNlcyc7XCIsXG4gICAgICAgIFwiaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25DbGllbnQsIERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZCwgRGVzY3JpYmVTdGFja3NDb21tYW5kLCBEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHNDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcIixcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogU21hbGwgc2xlZXAgaGVscGVyLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnY29uc3Qgc2xlZXAgPSAobXM6IG51bWJlcikgPT4gbmV3IFByb21pc2UoKHJlcykgPT4gc2V0VGltZW91dChyZXMsIG1zKSk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogQnVpbGQgdGhlIEhUTUwgY29sb3IgY2hpcCBmb3IgYW4gYWN0aW9uLicsXG4gICAgICAgICcgKiBNb2RpZnk9Ymx1ZSwgQWRkPWdyZWVuLCBSZW1vdmU9cmVkIChtYXRjaCBwcmV0dHlfZm9ybWF0LnB5KS4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2Z1bmN0aW9uIGFjdGlvbkNoaXAoYWN0aW9uPzogc3RyaW5nKTogc3RyaW5nIHsnLFxuICAgICAgICAnICAvLyBVc2UgZW1vamkgaW5zdGVhZCBvZiBleHRlcm5hbCBpbWFnZXMgZm9yIHJlbGlhYmlsaXR5JyxcbiAgICAgICAgJyAgY29uc3QgZW1vamlNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7JyxcbiAgICAgICAgXCIgICAgTW9kaWZ5OiAn8J+UtScsXCIsXG4gICAgICAgIFwiICAgIEFkZDogJ/Cfn6InLFwiLFxuICAgICAgICBcIiAgICBSZW1vdmU6ICfwn5S0JyxcIixcbiAgICAgICAgJyAgfTsnLFxuICAgICAgICBcIiAgY29uc3QgbWFyayA9IGFjdGlvbiA/IChlbW9qaU1hcFthY3Rpb25dID8/ICfimqonKSA6ICfimqonO1wiLFxuICAgICAgICBcIiAgcmV0dXJuIGAke21hcmt9ICR7YWN0aW9uID8/ICctJ31gO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIEVzY2FwZSBIVE1MIHNwZWNpYWwgY2hhcmFjdGVycy4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2Z1bmN0aW9uIGVzY2FwZUh0bWwoc3RyOiBzdHJpbmcpOiBzdHJpbmcgeycsXG4gICAgICAgIFwiICByZXR1cm4gc3RyLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcIixcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBGb3JtYXQgYSBiZWZvcmXihpJhZnRlciBjaGFuZ2UuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdmdW5jdGlvbiBmb3JtYXRDaGFuZ2UobmFtZTogc3RyaW5nLCBjaGFuZ2VUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGJlZm9yZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBhZnRlcjogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHsnLFxuICAgICAgICBcIiAgY29uc3QgY2hhbmdlRW1vamkgPSBjaGFuZ2VUeXBlID09PSAnQWRkJyA/ICfwn5+iJyA6IGNoYW5nZVR5cGUgPT09ICdSZW1vdmUnID8gJ/CflLQnIDogJ/CflLUnO1wiLFxuICAgICAgICAnICAnLFxuICAgICAgICAnICAvLyBJZiBib3RoIHZhbHVlcyBleGlzdCBhbmQgYXJlIGxhcmdlLCB1c2UgYSBtb3JlIGNvbXBhY3QgZm9ybWF0JyxcbiAgICAgICAgJyAgY29uc3QgYmVmb3JlTGVuID0gYmVmb3JlPy5sZW5ndGggPz8gMDsnLFxuICAgICAgICAnICBjb25zdCBhZnRlckxlbiA9IGFmdGVyPy5sZW5ndGggPz8gMDsnLFxuICAgICAgICAnICBjb25zdCBpc0xhcmdlID0gYmVmb3JlTGVuID4gODAgfHwgYWZ0ZXJMZW4gPiA4MDsnLFxuICAgICAgICAnICAnLFxuICAgICAgICAnICBpZiAoYmVmb3JlICYmIGFmdGVyKSB7JyxcbiAgICAgICAgJyAgICBpZiAoaXNMYXJnZSkgeycsXG4gICAgICAgICcgICAgICByZXR1cm4gYDxkZXRhaWxzPjxzdW1tYXJ5PiR7Y2hhbmdlRW1vaml9IDxzdHJvbmc+JHtlc2NhcGVIdG1sKG5hbWUpfTwvc3Ryb25nPiAobW9kaWZpZWQpPC9zdW1tYXJ5PjxzdHJvbmc+QmVmb3JlOjwvc3Ryb25nPjxwcmU+JHtlc2NhcGVIdG1sKGJlZm9yZSl9PC9wcmU+PHN0cm9uZz5BZnRlcjo8L3N0cm9uZz48cHJlPiR7ZXNjYXBlSHRtbChhZnRlcil9PC9wcmU+PC9kZXRhaWxzPmA7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJyAgICByZXR1cm4gYCR7Y2hhbmdlRW1vaml9IDxzdHJvbmc+JHtlc2NhcGVIdG1sKG5hbWUpfTwvc3Ryb25nPjogPGNvZGU+JHtlc2NhcGVIdG1sKGJlZm9yZSl9PC9jb2RlPiDihpIgPGNvZGU+JHtlc2NhcGVIdG1sKGFmdGVyKX08L2NvZGU+YDsnLFxuICAgICAgICAnICB9IGVsc2UgaWYgKGFmdGVyKSB7JyxcbiAgICAgICAgJyAgICBpZiAoaXNMYXJnZSkgeycsXG4gICAgICAgICcgICAgICByZXR1cm4gYDxkZXRhaWxzPjxzdW1tYXJ5PiR7Y2hhbmdlRW1vaml9IDxzdHJvbmc+JHtlc2NhcGVIdG1sKG5hbWUpfTwvc3Ryb25nPiAoYWRkZWQpPC9zdW1tYXJ5PjxwcmU+JHtlc2NhcGVIdG1sKGFmdGVyKX08L3ByZT48L2RldGFpbHM+YDsnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnICAgIHJldHVybiBgJHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+OiA8Y29kZT4ke2VzY2FwZUh0bWwoYWZ0ZXIpfTwvY29kZT5gOycsXG4gICAgICAgICcgIH0gZWxzZSBpZiAoYmVmb3JlKSB7JyxcbiAgICAgICAgJyAgICBpZiAoaXNMYXJnZSkgeycsXG4gICAgICAgICcgICAgICByZXR1cm4gYDxkZXRhaWxzPjxzdW1tYXJ5PiR7Y2hhbmdlRW1vaml9IDxzdHJvbmc+JHtlc2NhcGVIdG1sKG5hbWUpfTwvc3Ryb25nPiAocmVtb3ZlZCk8L3N1bW1hcnk+PHByZT4ke2VzY2FwZUh0bWwoYmVmb3JlKX08L3ByZT48L2RldGFpbHM+YDsnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnICAgIHJldHVybiBgJHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+OiA8cz48Y29kZT4ke2VzY2FwZUh0bWwoYmVmb3JlKX08L2NvZGU+PC9zPmA7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIC8vIEZhbGxiYWNrOiBubyB2YWx1ZXMgYXZhaWxhYmxlIChBUEkgZGlkIG5vdCByZXR1cm4gdGhlbSknLFxuICAgICAgICAnICByZXR1cm4gYCR7Y2hhbmdlRW1vaml9IDxzdHJvbmc+JHtlc2NhcGVIdG1sKG5hbWUpfTwvc3Ryb25nPmA7JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBFeHRyYWN0IGNoYW5nZWQgcHJvcGVydGllcy90YWdzL2F0dHJpYnV0ZXMgd2l0aCBiZWZvcmUvYWZ0ZXIgdmFsdWVzLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnZnVuY3Rpb24gY2hhbmdlZFByb3BlcnRpZXNIVE1MKGNoYW5nZTogYW55KTogc3RyaW5nIHsnLFxuICAgICAgICAnICBjb25zdCBkZXRhaWxzID0gY2hhbmdlPy5SZXNvdXJjZUNoYW5nZT8uRGV0YWlscyA/PyBbXTsnLFxuICAgICAgICAnICBjb25zdCBwcm9wczogc3RyaW5nW10gPSBbXTsnLFxuICAgICAgICAnICBmb3IgKGNvbnN0IGQgb2YgZGV0YWlscykgeycsXG4gICAgICAgICcgICAgY29uc3QgYXR0ciA9IGQ/LlRhcmdldD8uQXR0cmlidXRlOycsXG4gICAgICAgICcgICAgLy8gVXNlIHByb3BlcnR5IG5hbWUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgdXNlIGF0dHJpYnV0ZSB0eXBlJyxcbiAgICAgICAgXCIgICAgY29uc3QgbmFtZSA9IGQ/LlRhcmdldD8uTmFtZSA/PyBhdHRyID8/ICd1bmtub3duJztcIixcbiAgICAgICAgJyAgICBjb25zdCBjaGFuZ2VUeXBlID0gZD8uVGFyZ2V0Py5BdHRyaWJ1dGVDaGFuZ2VUeXBlOycsXG4gICAgICAgICcgICAgY29uc3QgYmVmb3JlID0gZD8uVGFyZ2V0Py5CZWZvcmVWYWx1ZTsnLFxuICAgICAgICAnICAgIGNvbnN0IGFmdGVyID0gZD8uVGFyZ2V0Py5BZnRlclZhbHVlOycsXG4gICAgICAgICcgICAgcHJvcHMucHVzaChmb3JtYXRDaGFuZ2UobmFtZSwgY2hhbmdlVHlwZSwgYmVmb3JlLCBhZnRlcikpOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICBcIiAgcmV0dXJuIHByb3BzLmpvaW4oJzxicj4nKTtcIixcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBEZXRlcm1pbmUgaWYgYSBjaGFuZ2Ugc2hvdWxkIGJlIGlnbm9yZWQgYmFzZWQgb24gbG9naWNhbCBJRHMgYW5kL29yIHJlc291cmNlIHR5cGVzLicsXG4gICAgICAgIFwiICogLSBJR05PUkVfTE9HSUNBTF9JRFM6IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGxvZ2ljYWwgSURzIHRvIGlnbm9yZSAoZGVmYXVsdCBpbmNsdWRlcyAnQ0RLTWV0YWRhdGEnKVwiLFxuICAgICAgICBcIiAqIC0gSUdOT1JFX1JFU09VUkNFX1RZUEVTOiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiByZXNvdXJjZSB0eXBlcyB0byBpZ25vcmUgKGUuZy4sICdBV1M6OkNESzo6TWV0YWRhdGEnKVwiLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2Z1bmN0aW9uIHNob3VsZElnbm9yZUNoYW5nZShjaGFuZ2U6IGFueSwgaWdub3JlSWRzOiBTZXQ8c3RyaW5nPiwgaWdub3JlVHlwZXM6IFNldDxzdHJpbmc+KTogYm9vbGVhbiB7JyxcbiAgICAgICAgJyAgY29uc3QgcmMgPSBjaGFuZ2U/LlJlc291cmNlQ2hhbmdlID8/IHt9OycsXG4gICAgICAgICcgIGNvbnN0IGxvZ2ljYWxJZCA9IHJjPy5Mb2dpY2FsUmVzb3VyY2VJZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7JyxcbiAgICAgICAgJyAgY29uc3QgcmVzb3VyY2VUeXBlID0gcmM/LlJlc291cmNlVHlwZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7JyxcbiAgICAgICAgJyAgaWYgKGxvZ2ljYWxJZCAmJiBpZ25vcmVJZHMuaGFzKGxvZ2ljYWxJZCkpIHJldHVybiB0cnVlOycsXG4gICAgICAgICcgIGlmIChyZXNvdXJjZVR5cGUgJiYgaWdub3JlVHlwZXMuaGFzKHJlc291cmNlVHlwZSkpIHJldHVybiB0cnVlOycsXG4gICAgICAgICcgIHJldHVybiBmYWxzZTsnLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIEdlbmVyYXRlIHRoZSBIVE1MIGJvZHkgc2ltaWxhciB0byBwcmV0dHlfZm9ybWF0LnB5JyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdmdW5jdGlvbiBidWlsZEh0bWwoc3RhY2tOYW1lOiBzdHJpbmcsIGNoYW5nZXM6IGFueVtdKTogc3RyaW5nIHsnLFxuICAgICAgICAnICBsZXQgYm9keSA9IGA8aDE+Q2hhbmdlIHNldDwvaDE+PGgyPlN0YWNrIE5hbWU6ICR7c3RhY2tOYW1lfTwvaDI+PGJyPmA7JyxcbiAgICAgICAgJyAgaWYgKChjaGFuZ2VzPy5sZW5ndGggPz8gMCkgPiAwKSB7JyxcbiAgICAgICAgXCIgICAgYm9keSArPSAnPHRhYmxlPjx0cj48dGg+QWN0aW9uJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90aD48dGg+SUQ8L3RoPjx0aD5UeXBlPC90aD48dGg+UmVwbGFjZW1lbnQ8L3RoPjx0aD5EZXRhaWxzPC90aD48L3RyPic7XCIsXG4gICAgICAgICcgICAgZm9yIChjb25zdCBjIG9mIGNoYW5nZXMpIHsnLFxuICAgICAgICAnICAgICAgY29uc3QgcmMgPSBjPy5SZXNvdXJjZUNoYW5nZSA/PyB7fTsnLFxuICAgICAgICAnICAgICAgY29uc3QgYWN0aW9uID0gYWN0aW9uQ2hpcChyYz8uQWN0aW9uKTsnLFxuICAgICAgICBcIiAgICAgIGNvbnN0IGxvZ2ljYWxJZCA9IHJjPy5Mb2dpY2FsUmVzb3VyY2VJZCA/PyAnLSc7XCIsXG4gICAgICAgIFwiICAgICAgY29uc3QgdHlwZSA9IHJjPy5SZXNvdXJjZVR5cGUgPz8gJy0nO1wiLFxuICAgICAgICBcIiAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gcmM/LlJlcGxhY2VtZW50ID8/ICctJztcIixcbiAgICAgICAgJyAgICAgIGNvbnN0IGRldGFpbHMgPSBjaGFuZ2VkUHJvcGVydGllc0hUTUwoYyk7JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICAgICAgYm9keSArPSAnPHRyPic7XCIsXG4gICAgICAgICcgICAgICBib2R5ICs9IGA8dGQ+JHthY3Rpb259PC90ZD5gOycsXG4gICAgICAgICcgICAgICBib2R5ICs9IGA8dGQ+JHtsb2dpY2FsSWR9PC90ZD5gOycsXG4gICAgICAgICcgICAgICBib2R5ICs9IGA8dGQ+JHt0eXBlfTwvdGQ+YDsnLFxuICAgICAgICAnICAgICAgYm9keSArPSBgPHRkPiR7cmVwbGFjZW1lbnR9PC90ZD5gOycsXG4gICAgICAgICcgICAgICBib2R5ICs9IGA8dGQ+JHtkZXRhaWxzfTwvdGQ+YDsnLFxuICAgICAgICBcIiAgICAgIGJvZHkgKz0gJzwvdHI+JztcIixcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgXCIgICAgYm9keSArPSAnPC90YWJsZT4nO1wiLFxuICAgICAgICAnICB9IGVsc2UgeycsXG4gICAgICAgIFwiICAgIGJvZHkgKz0gJ25vIGNoYW5nZS4nO1wiLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJyAgcmV0dXJuIGJvZHk7JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBQb2xsIERlc2NyaWJlQ2hhbmdlU2V0IHVudGlsIGEgdGVybWluYWwgc3RhdHVzLCB0aGVuIHBhZ2luYXRlIHRvIHJldHJpZXZlIGFsbCBDaGFuZ2VzLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnYXN5bmMgZnVuY3Rpb24gZ2V0VGVybWluYWxDaGFuZ2VTZXQoJyxcbiAgICAgICAgJyAgY2xpZW50OiBDbG91ZEZvcm1hdGlvbkNsaWVudCwnLFxuICAgICAgICAnICBzdGFja05hbWU6IHN0cmluZywnLFxuICAgICAgICAnICBjaGFuZ2VTZXROYW1lOiBzdHJpbmcsJyxcbiAgICAgICAgJyAgbWF4QXR0ZW1wdHMgPSA2MCwnLFxuICAgICAgICAnICBkZWxheU1zID0gMzAwMCwnLFxuICAgICAgICAnKTogUHJvbWlzZTx7IHN0YXR1cz86IHN0cmluZzsgc3RhdHVzUmVhc29uPzogc3RyaW5nOyBjaGFuZ2VzOiBhbnlbXSB9PiB7JyxcbiAgICAgICAgJyAgZm9yIChsZXQgYXR0ZW1wdCA9IDE7IGF0dGVtcHQgPD0gbWF4QXR0ZW1wdHM7IGF0dGVtcHQrKykgeycsXG4gICAgICAgICcgICAgY29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUNoYW5nZVNldENvbW1hbmQoeycsXG4gICAgICAgICcgICAgICBTdGFja05hbWU6IHN0YWNrTmFtZSwnLFxuICAgICAgICAnICAgICAgQ2hhbmdlU2V0TmFtZTogY2hhbmdlU2V0TmFtZSwnLFxuICAgICAgICAnICAgICAgSW5jbHVkZVByb3BlcnR5VmFsdWVzOiB0cnVlLCcsXG4gICAgICAgICcgICAgfSkpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIGNvbnN0IHN0YXR1cyA9IHJlc3AuU3RhdHVzOycsXG4gICAgICAgICcgICAgY29uc3Qgc3RhdHVzUmVhc29uID0gcmVzcC5TdGF0dXNSZWFzb247JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICAgIGlmIChzdGF0dXMgPT09ICdDUkVBVEVfQ09NUExFVEUnIHx8IHN0YXR1cyA9PT0gJ0ZBSUxFRCcpIHtcIixcbiAgICAgICAgJyAgICAgIC8vIEdhdGhlciBhbGwgcGFnZXMnLFxuICAgICAgICAnICAgICAgY29uc3QgY2hhbmdlczogYW55W10gPSBbXTsnLFxuICAgICAgICAnICAgICAgaWYgKHJlc3AuQ2hhbmdlcykgY2hhbmdlcy5wdXNoKC4uLnJlc3AuQ2hhbmdlcyk7JyxcbiAgICAgICAgJyAgICAgIGxldCBuZXh0ID0gcmVzcC5OZXh0VG9rZW47JyxcbiAgICAgICAgJyAgICAgIHdoaWxlIChuZXh0KSB7JyxcbiAgICAgICAgJyAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUNoYW5nZVNldENvbW1hbmQoeycsXG4gICAgICAgICcgICAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsJyxcbiAgICAgICAgJyAgICAgICAgICBDaGFuZ2VTZXROYW1lOiBjaGFuZ2VTZXROYW1lLCcsXG4gICAgICAgICcgICAgICAgICAgSW5jbHVkZVByb3BlcnR5VmFsdWVzOiB0cnVlLCcsXG4gICAgICAgICcgICAgICAgICAgTmV4dFRva2VuOiBuZXh0LCcsXG4gICAgICAgICcgICAgICAgIH0pKTsnLFxuICAgICAgICAnICAgICAgICBpZiAocGFnZS5DaGFuZ2VzKSBjaGFuZ2VzLnB1c2goLi4ucGFnZS5DaGFuZ2VzKTsnLFxuICAgICAgICAnICAgICAgICBuZXh0ID0gcGFnZS5OZXh0VG9rZW47JyxcbiAgICAgICAgJyAgICAgIH0nLFxuICAgICAgICAnICAgICAgcmV0dXJuIHsgc3RhdHVzLCBzdGF0dXNSZWFzb24sIGNoYW5nZXMgfTsnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICAvLyBOb3QgdGVybWluYWwgeWV0OyB3YWl0IGFuZCByZXRyeScsXG4gICAgICAgICcgICAgYXdhaXQgc2xlZXAoZGVsYXlNcyk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgdGhyb3cgbmV3IEVycm9yKCdUaW1lZCBvdXQgd2FpdGluZyBmb3IgY2hhbmdlIHNldCB0byByZWFjaCBhIHRlcm1pbmFsIHN0YXR1cy4nKTtcIixcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBQYXJzZSB0aGUgTGluayBoZWFkZXIgZnJvbSBHaXRIdWIgQVBJIHJlc3BvbnNlcyBmb3IgcGFnaW5hdGlvbi4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2Z1bmN0aW9uIHBhcnNlTGlua0hlYWRlcihoZWFkZXI6IHN0cmluZyB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHsnLFxuICAgICAgICAnICBjb25zdCBsaW5rczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9OycsXG4gICAgICAgICcgIGlmICghaGVhZGVyKSByZXR1cm4gbGlua3M7JyxcbiAgICAgICAgXCIgIGZvciAoY29uc3QgcGFydCBvZiBoZWFkZXIuc3BsaXQoJywnKSkge1wiLFxuICAgICAgICAnICAgIGNvbnN0IG1hdGNoID0gcGFydC5tYXRjaCgvPChbXj5dKyk+O1xcXFxzKnJlbD1cIihbXlwiXSspXCIvKTsnLFxuICAgICAgICAnICAgIGlmIChtYXRjaCkgbGlua3NbbWF0Y2hbMl1dID0gbWF0Y2hbMV07JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIHJldHVybiBsaW5rczsnLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIFNlYXJjaCBleGlzdGluZyBQUiBjb21tZW50cyBmb3Igb25lIGNvbnRhaW5pbmcgdGhlIGdpdmVuIG1hcmtlci4nLFxuICAgICAgICAnICogUmV0dXJucyB0aGUgY29tbWVudCBJRCBpZiBmb3VuZCwgbnVsbCBvdGhlcndpc2UuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdhc3luYyBmdW5jdGlvbiBmaW5kRXhpc3RpbmdDb21tZW50KGNvbW1lbnRzVXJsOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIG1hcmtlcjogc3RyaW5nKTogUHJvbWlzZTxudW1iZXIgfCBudWxsPiB7JyxcbiAgICAgICAgJyAgbGV0IHVybDogc3RyaW5nIHwgdW5kZWZpbmVkID0gYCR7Y29tbWVudHNVcmx9P3Blcl9wYWdlPTEwMGA7JyxcbiAgICAgICAgJyAgd2hpbGUgKHVybCkgeycsXG4gICAgICAgICcgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2godXJsLCB7JyxcbiAgICAgICAgJyAgICAgIGhlYWRlcnM6IHsnLFxuICAgICAgICBcIiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgdG9rZW4gJHt0b2tlbn1gLFwiLFxuICAgICAgICBcIiAgICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi92bmQuZ2l0aHViK2pzb24nLFwiLFxuICAgICAgICAnICAgICAgfSwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgICAgaWYgKCFyZXMub2spIHJldHVybiBudWxsOycsXG4gICAgICAgICcgICAgY29uc3QgY29tbWVudHM6IGFueVtdID0gYXdhaXQgcmVzLmpzb24oKTsnLFxuICAgICAgICAnICAgIGZvciAoY29uc3QgYyBvZiBjb21tZW50cykgeycsXG4gICAgICAgIFwiICAgICAgaWYgKHR5cGVvZiBjLmJvZHkgPT09ICdzdHJpbmcnICYmIGMuYm9keS5pbmNsdWRlcyhtYXJrZXIpKSB7XCIsXG4gICAgICAgICcgICAgICAgIHJldHVybiBjLmlkOycsXG4gICAgICAgICcgICAgICB9JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgXCIgICAgY29uc3QgbGlua3MgPSBwYXJzZUxpbmtIZWFkZXIocmVzLmhlYWRlcnMuZ2V0KCdsaW5rJykpO1wiLFxuICAgICAgICAnICAgIHVybCA9IGxpbmtzLm5leHQ7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIHJldHVybiBudWxsOycsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogQ3JlYXRlIG9yIHVwZGF0ZSBhIFBSIGNvbW1lbnQuIFVzZXMgYW4gSFRNTCBtYXJrZXIgdG8gZmluZCBleGlzdGluZyBjb21tZW50cy4nLFxuICAgICAgICAnICogSWYgZm91bmQsIFBBVENIZXMgdGhlIGV4aXN0aW5nIGNvbW1lbnQ7IG90aGVyd2lzZSBQT1NUcyBhIG5ldyBvbmUuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdhc3luYyBmdW5jdGlvbiB1cHNlcnRHaXRodWJDb21tZW50KGNvbW1lbnRzVXJsOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGJvZHk6IHN0cmluZywgbWFya2VyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHsnLFxuICAgICAgICAnICBjb25zdCBtYXJrZWRCb2R5ID0gYCR7bWFya2VyfVxcXFxuJHtib2R5fWA7JyxcbiAgICAgICAgJyAgY29uc3QgZXhpc3RpbmdJZCA9IGF3YWl0IGZpbmRFeGlzdGluZ0NvbW1lbnQoY29tbWVudHNVcmwsIHRva2VuLCBtYXJrZXIpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICBsZXQgcmVzOiBSZXNwb25zZTsnLFxuICAgICAgICAnICBpZiAoZXhpc3RpbmdJZCkgeycsXG4gICAgICAgIFwiICAgIGNvbnN0IGJhc2VVcmwgPSBjb21tZW50c1VybC5zdWJzdHJpbmcoMCwgY29tbWVudHNVcmwuaW5kZXhPZignL2lzc3Vlcy8nKSk7XCIsXG4gICAgICAgICcgICAgY29uc3QgcGF0Y2hVcmwgPSBgJHtiYXNlVXJsfS9pc3N1ZXMvY29tbWVudHMvJHtleGlzdGluZ0lkfWA7JyxcbiAgICAgICAgJyAgICByZXMgPSBhd2FpdCBmZXRjaChwYXRjaFVybCwgeycsXG4gICAgICAgIFwiICAgICAgbWV0aG9kOiAnUEFUQ0gnLFwiLFxuICAgICAgICAnICAgICAgaGVhZGVyczogeycsXG4gICAgICAgIFwiICAgICAgICAnQXV0aG9yaXphdGlvbic6IGB0b2tlbiAke3Rva2VufWAsXCIsXG4gICAgICAgIFwiICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFwiLFxuICAgICAgICBcIiAgICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi92bmQuZ2l0aHViK2pzb24nLFwiLFxuICAgICAgICAnICAgICAgfSwnLFxuICAgICAgICAnICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBib2R5OiBtYXJrZWRCb2R5IH0pLCcsXG4gICAgICAgICcgICAgfSk7JyxcbiAgICAgICAgJyAgfSBlbHNlIHsnLFxuICAgICAgICAnICAgIHJlcyA9IGF3YWl0IGZldGNoKGNvbW1lbnRzVXJsLCB7JyxcbiAgICAgICAgXCIgICAgICBtZXRob2Q6ICdQT1NUJyxcIixcbiAgICAgICAgJyAgICAgIGhlYWRlcnM6IHsnLFxuICAgICAgICBcIiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgdG9rZW4gJHt0b2tlbn1gLFwiLFxuICAgICAgICBcIiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcIixcbiAgICAgICAgXCIgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vdm5kLmdpdGh1Yitqc29uJyxcIixcbiAgICAgICAgJyAgICAgIH0sJyxcbiAgICAgICAgJyAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYm9keTogbWFya2VkQm9keSB9KSwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgaWYgKCFyZXMub2spIHsnLFxuICAgICAgICBcIiAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKS5jYXRjaCgoKSA9PiAnJyk7XCIsXG4gICAgICAgIFwiICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvICR7ZXhpc3RpbmdJZCA/ICd1cGRhdGUnIDogJ3Bvc3QnfSBHaXRIdWIgY29tbWVudDogJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fSAke3RleHR9YCk7XCIsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnYXN5bmMgZnVuY3Rpb24gYXBwZW5kU3RlcFN1bW1hcnkoc3VtbWFyeVBhdGg6IHN0cmluZywgY29udGVudDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7JyxcbiAgICAgICAgXCIgIGF3YWl0IGFwcGVuZEZpbGUoc3VtbWFyeVBhdGgsIGAke2NvbnRlbnR9XFxcXG5gLCB7IGVuY29kaW5nOiAndXRmOCcgfSk7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogQ2hlY2sgY2FjaGVkIGRyaWZ0IHN0YXR1cyBmb3IgdGhlIHN0YWNrIGFuZCByZXR1cm4gYW4gSFRNTCBiYW5uZXIuJyxcbiAgICAgICAgJyAqIE5vbi1mYXRhbDogcmV0dXJucyBlbXB0eSBzdHJpbmcgb24gYW55IGVycm9yLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnYXN5bmMgZnVuY3Rpb24gZ2V0RHJpZnRCYW5uZXJIdG1sKGNsaWVudDogQ2xvdWRGb3JtYXRpb25DbGllbnQsIHN0YWNrTmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHsnLFxuICAgICAgICAnICBjb25zdCBzdGFja1Jlc3AgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVTdGFja3NDb21tYW5kKHsgU3RhY2tOYW1lOiBzdGFja05hbWUgfSkpOycsXG4gICAgICAgICcgIGNvbnN0IHN0YWNrID0gc3RhY2tSZXNwLlN0YWNrcz8uWzBdOycsXG4gICAgICAgIFwiICBpZiAoIXN0YWNrKSByZXR1cm4gJyc7XCIsXG4gICAgICAgICcnLFxuICAgICAgICAnICBjb25zdCBkcmlmdEluZm8gPSBzdGFjay5EcmlmdEluZm9ybWF0aW9uOycsXG4gICAgICAgICcgIGNvbnN0IGRyaWZ0U3RhdHVzID0gZHJpZnRJbmZvPy5TdGFja0RyaWZ0U3RhdHVzOycsXG4gICAgICAgICcgIGNvbnN0IGxhc3RDaGVja2VkID0gZHJpZnRJbmZvPy5MYXN0Q2hlY2tUaW1lc3RhbXA7JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICBpZiAoZHJpZnRTdGF0dXMgPT09ICdJTl9TWU5DJykgcmV0dXJuICcnO1wiLFxuICAgICAgICAnJyxcbiAgICAgICAgXCIgIGlmIChkcmlmdFN0YXR1cyA9PT0gJ05PVF9DSEVDS0VEJykge1wiLFxuICAgICAgICBcIiAgICByZXR1cm4gJzxibG9ja3F1b3RlPjxwPuKEue+4jyBEcmlmdCBkZXRlY3Rpb24gaGFzIG5vdCBiZWVuIHJ1biBmb3IgdGhpcyBzdGFjay48L3A+PC9ibG9ja3F1b3RlPic7XCIsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgXCIgIGlmIChkcmlmdFN0YXR1cyA9PT0gJ0RFVEVDVElPTl9JTl9QUk9HUkVTUycpIHtcIixcbiAgICAgICAgXCIgICAgcmV0dXJuICc8YmxvY2txdW90ZT48cD7ij7MgRHJpZnQgZGV0ZWN0aW9uIGlzIGN1cnJlbnRseSBpbiBwcm9ncmVzcy48L3A+PC9ibG9ja3F1b3RlPic7XCIsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgXCIgIGlmIChkcmlmdFN0YXR1cyA9PT0gJ0RSSUZURUQnKSB7XCIsXG4gICAgICAgIFwiICAgIGxldCBiYW5uZXIgPSAnPGJsb2NrcXVvdGU+JztcIixcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgdHJ5IHsnLFxuICAgICAgICAnICAgICAgY29uc3QgZHJpZnRzUmVzcCA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHNDb21tYW5kKHsnLFxuICAgICAgICAnICAgICAgICBTdGFja05hbWU6IHN0YWNrTmFtZSwnLFxuICAgICAgICBcIiAgICAgICAgU3RhY2tSZXNvdXJjZURyaWZ0U3RhdHVzRmlsdGVyczogWydNT0RJRklFRCcsICdERUxFVEVEJ10sXCIsXG4gICAgICAgICcgICAgICB9KSk7JyxcbiAgICAgICAgJyAgICAgIGNvbnN0IGRyaWZ0cyA9IGRyaWZ0c1Jlc3AuU3RhY2tSZXNvdXJjZURyaWZ0cyA/PyBbXTsnLFxuICAgICAgICAnICAgICAgY29uc3QgY291bnQgPSBkcmlmdHMubGVuZ3RoOycsXG4gICAgICAgIFwiICAgICAgY29uc3QgdHMgPSBsYXN0Q2hlY2tlZCA/IGxhc3RDaGVja2VkLnRvSVNPU3RyaW5nKCkgOiAndW5rbm93bic7XCIsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgICAgIGJhbm5lciArPSBgPGgzPuKaoO+4jyBTdGFjayBoYXMgZHJpZnRlZCAoJHtjb3VudH0gcmVzb3VyY2Uke2NvdW50ICE9PSAxID8gJ3MnIDogJyd9IG91dCBvZiBzeW5jKTwvaDM+YDtcIixcbiAgICAgICAgJyAgICAgIGJhbm5lciArPSBgPHA+TGFzdCBkcmlmdCBjaGVjazogPGVtPiR7dHN9PC9lbT48L3A+YDsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICAgIGlmIChjb3VudCA+IDApIHsnLFxuICAgICAgICBcIiAgICAgICAgYmFubmVyICs9ICc8ZGV0YWlscz48c3VtbWFyeT5WaWV3IGRyaWZ0ZWQgcmVzb3VyY2VzPC9zdW1tYXJ5Pic7XCIsXG4gICAgICAgIFwiICAgICAgICBiYW5uZXIgKz0gJzx0YWJsZT48dHI+PHRoPlJlc291cmNlPC90aD48dGg+VHlwZTwvdGg+PHRoPkRyaWZ0IFN0YXR1czwvdGg+PC90cj4nO1wiLFxuICAgICAgICAnICAgICAgICBmb3IgKGNvbnN0IGQgb2YgZHJpZnRzKSB7JyxcbiAgICAgICAgXCIgICAgICAgICAgY29uc3QgbG9naWNhbElkID0gZC5Mb2dpY2FsUmVzb3VyY2VJZCA/PyAnLSc7XCIsXG4gICAgICAgIFwiICAgICAgICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGQuUmVzb3VyY2VUeXBlID8/ICctJztcIixcbiAgICAgICAgXCIgICAgICAgICAgY29uc3Qgc3RhdHVzID0gZC5TdGFja1Jlc291cmNlRHJpZnRTdGF0dXMgPz8gJy0nO1wiLFxuICAgICAgICAnICAgICAgICAgIGJhbm5lciArPSBgPHRyPjx0ZD4ke2xvZ2ljYWxJZH08L3RkPjx0ZD4ke3Jlc291cmNlVHlwZX08L3RkPjx0ZD4ke3N0YXR1c308L3RkPjwvdHI+YDsnLFxuICAgICAgICAnICAgICAgICB9JyxcbiAgICAgICAgXCIgICAgICAgIGJhbm5lciArPSAnPC90YWJsZT48L2RldGFpbHM+JztcIixcbiAgICAgICAgJyAgICAgIH0nLFxuICAgICAgICAnICAgIH0gY2F0Y2ggKGU6IGFueSkgeycsXG4gICAgICAgIFwiICAgICAgY29uc3QgdHMgPSBsYXN0Q2hlY2tlZCA/IGxhc3RDaGVja2VkLnRvSVNPU3RyaW5nKCkgOiAndW5rbm93bic7XCIsXG4gICAgICAgIFwiICAgICAgYmFubmVyICs9ICc8aDM+4pqg77iPIFN0YWNrIGhhcyBkcmlmdGVkPC9oMz4nO1wiLFxuICAgICAgICAnICAgICAgYmFubmVyICs9IGA8cD5MYXN0IGRyaWZ0IGNoZWNrOiA8ZW0+JHt0c308L2VtPjwvcD5gOycsXG4gICAgICAgIFwiICAgICAgYmFubmVyICs9IGA8cD48ZW0+Q291bGQgbm90IHJldHJpZXZlIGRyaWZ0IGRldGFpbHM6ICR7ZT8ubWVzc2FnZSA/PyAndW5rbm93biBlcnJvcid9PC9lbT48L3A+YDtcIixcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICAgIGJhbm5lciArPSAnPC9ibG9ja3F1b3RlPic7XCIsXG4gICAgICAgICcgICAgcmV0dXJuIGJhbm5lcjsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICByZXR1cm4gJyc7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdhc3luYyBmdW5jdGlvbiBtYWluKCkgeycsXG4gICAgICAgICcgIGNvbnN0IHsnLFxuICAgICAgICAnICAgIFNUQUNLX05BTUUsJyxcbiAgICAgICAgJyAgICBDSEFOR0VfU0VUX05BTUUsJyxcbiAgICAgICAgJyAgICBBV1NfUkVHSU9OLCcsXG4gICAgICAgICcgICAgR0lUSFVCX1RPS0VOLCcsXG4gICAgICAgICcgICAgR0lUSFVCX0NPTU1FTlRfVVJMLCcsXG4gICAgICAgICcgICAgR0lUSFVCX1NURVBfU1VNTUFSWSwnLFxuICAgICAgICAnICAgIElHTk9SRV9MT0dJQ0FMX0lEUywnLFxuICAgICAgICAnICAgIElHTk9SRV9SRVNPVVJDRV9UWVBFUywnLFxuICAgICAgICAnICB9ID0gcHJvY2Vzcy5lbnY7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIGlmICghU1RBQ0tfTkFNRSkgeycsXG4gICAgICAgIFwiICAgIHRocm93IG5ldyBFcnJvcignU1RBQ0tfTkFNRSBpcyByZXF1aXJlZCcpO1wiLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJyAgY29uc3QgcmVnaW9uID0gQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5BV1NfREVGQVVMVF9SRUdJT047JyxcbiAgICAgICAgJyAgaWYgKCFyZWdpb24pIHsnLFxuICAgICAgICBcIiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FXU19SRUdJT04gaXMgcmVxdWlyZWQnKTtcIixcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBjb25zdCBjaGFuZ2VTZXROYW1lID0gQ0hBTkdFX1NFVF9OQU1FIHx8IFNUQUNLX05BTUU7JyxcbiAgICAgICAgJyAgY29uc3QgbWFya2VyID0gYDwhLS0gY2RrLWRpZmY6c3RhY2s6JHtTVEFDS19OQU1FfSAtLT5gOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICBjb25zdCBjbGllbnQgPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQoeyByZWdpb24gfSk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIGxldCBzdGF0dXM6IHN0cmluZyB8IHVuZGVmaW5lZDsnLFxuICAgICAgICAnICBsZXQgc3RhdHVzUmVhc29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7JyxcbiAgICAgICAgJyAgbGV0IGNoYW5nZXM6IGFueVtdID0gW107JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHRyeSB7JyxcbiAgICAgICAgJyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRUZXJtaW5hbENoYW5nZVNldChjbGllbnQsIFNUQUNLX05BTUUsIGNoYW5nZVNldE5hbWUpOycsXG4gICAgICAgICcgICAgc3RhdHVzID0gcmVzdWx0LnN0YXR1czsnLFxuICAgICAgICAnICAgIHN0YXR1c1JlYXNvbiA9IHJlc3VsdC5zdGF0dXNSZWFzb247JyxcbiAgICAgICAgJyAgICBjaGFuZ2VzID0gcmVzdWx0LmNoYW5nZXMgPz8gW107JyxcbiAgICAgICAgJyAgfSBjYXRjaCAoZXJyOiBhbnkpIHsnLFxuICAgICAgICAnICAgIC8vIElmIERlc2NyaWJlQ2hhbmdlU2V0IGZhaWxzIGVudGlyZWx5LCBzdXJmYWNlIHRoZSBlcnJvcicsXG4gICAgICAgIFwiICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRlc2NyaWJpbmcgY2hhbmdlIHNldDonLCBlcnI/Lm1lc3NhZ2UgfHwgZXJyKTtcIixcbiAgICAgICAgJyAgICBwcm9jZXNzLmV4aXRDb2RlID0gMTsnLFxuICAgICAgICAnICAgIHJldHVybjsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICAvLyBBcHBseSBpZ25vcmVzIGZyb20gZW52IHZhcnMgKElEcyBhbmQgdHlwZXMpLiBEZWZhdWx0IGlnbm9yZSBJRHMgaW5jbHVkZSAnQ0RLTWV0YWRhdGEnLlwiLFxuICAgICAgICAnICBjb25zdCBpZ25vcmVJZFNldCA9IG5ldyBTZXQoJyxcbiAgICAgICAgXCIgICAgKElHTk9SRV9MT0dJQ0FMX0lEUyA/PyAnQ0RLTWV0YWRhdGEnKVwiLFxuICAgICAgICBcIiAgICAgIC5zcGxpdCgnLCcpXCIsXG4gICAgICAgICcgICAgICAubWFwKHMgPT4gcy50cmltKCkpJyxcbiAgICAgICAgJyAgICAgIC5maWx0ZXIoQm9vbGVhbiksJyxcbiAgICAgICAgJyAgKTsnLFxuICAgICAgICAnICBjb25zdCBpZ25vcmVUeXBlU2V0ID0gbmV3IFNldCgnLFxuICAgICAgICBcIiAgICAoSUdOT1JFX1JFU09VUkNFX1RZUEVTID8/ICcnKVwiLFxuICAgICAgICBcIiAgICAgIC5zcGxpdCgnLCcpXCIsXG4gICAgICAgICcgICAgICAubWFwKHMgPT4gcy50cmltKCkpJyxcbiAgICAgICAgJyAgICAgIC5maWx0ZXIoQm9vbGVhbiksJyxcbiAgICAgICAgJyAgKTsnLFxuICAgICAgICAnICBjb25zdCBmaWx0ZXJlZENoYW5nZXMgPSBjaGFuZ2VzLmZpbHRlcihjID0+ICFzaG91bGRJZ25vcmVDaGFuZ2UoYywgaWdub3JlSWRTZXQsIGlnbm9yZVR5cGVTZXQpKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLy8gQnVpbGQgSFRNTCBleGFjdGx5IGxpa2UgcHJldHR5X2Zvcm1hdC5weSBsb2dpYyAodGFibGUgd2hlbiB0aGVyZSBhcmUgY2hhbmdlczsgXCJubyBjaGFuZ2UuXCIgb3RoZXJ3aXNlKS4nLFxuICAgICAgICAnICBjb25zdCBodG1sID0gYnVpbGRIdG1sKFNUQUNLX05BTUUsIGZpbHRlcmVkQ2hhbmdlcyk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8vIENoZWNrIGNhY2hlZCBkcmlmdCBzdGF0dXMgKG5vbi1mYXRhbCknLFxuICAgICAgICBcIiAgbGV0IGRyaWZ0QmFubmVyID0gJyc7XCIsXG4gICAgICAgICcgIHRyeSB7JyxcbiAgICAgICAgJyAgICBkcmlmdEJhbm5lciA9IGF3YWl0IGdldERyaWZ0QmFubmVySHRtbChjbGllbnQsIFNUQUNLX05BTUUpOycsXG4gICAgICAgICcgIH0gY2F0Y2ggKGU6IGFueSkgeycsXG4gICAgICAgIFwiICAgIGNvbnNvbGUuZXJyb3IoJ0RyaWZ0IGNoZWNrIGZhaWxlZDonLCBlPy5tZXNzYWdlIHx8IGUpO1wiLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJyAgY29uc3QgZnVsbEh0bWwgPSBkcmlmdEJhbm5lciArIGh0bWw7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8vIFByaW50IHRvIHN0ZG91dCcsXG4gICAgICAgICcgIGNvbnNvbGUubG9nKGZ1bGxIdG1sKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLy8gT3B0aW9uYWxseSBhcHBlbmQgdG8gR2l0SHViIFN0ZXAgU3VtbWFyeScsXG4gICAgICAgICcgIGlmIChHSVRIVUJfU1RFUF9TVU1NQVJZKSB7JyxcbiAgICAgICAgJyAgICB0cnkgeycsXG4gICAgICAgICcgICAgICBhd2FpdCBhcHBlbmRTdGVwU3VtbWFyeShHSVRIVUJfU1RFUF9TVU1NQVJZLCBmdWxsSHRtbCk7JyxcbiAgICAgICAgJyAgICAgIGNvbnNvbGUuZXJyb3IoYEFwcGVuZGVkIEhUTUwgdG8gR0lUSFVCX1NURVBfU1VNTUFSWTogJHtHSVRIVUJfU1RFUF9TVU1NQVJZfWApOycsXG4gICAgICAgICcgICAgfSBjYXRjaCAoZTogYW55KSB7JyxcbiAgICAgICAgXCIgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gYXBwZW5kIHRvIEdJVEhVQl9TVEVQX1NVTU1BUlk6JywgZT8ubWVzc2FnZSB8fCBlKTtcIixcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAvLyBVcHNlcnQgUFIgY29tbWVudCAoZmluZCBleGlzdGluZyBieSBtYXJrZXIsIHVwZGF0ZSBvciBjcmVhdGUpJyxcbiAgICAgICAgJyAgaWYgKEdJVEhVQl9UT0tFTiAmJiBHSVRIVUJfQ09NTUVOVF9VUkwpIHsnLFxuICAgICAgICAnICAgIHRyeSB7JyxcbiAgICAgICAgJyAgICAgIGF3YWl0IHVwc2VydEdpdGh1YkNvbW1lbnQoR0lUSFVCX0NPTU1FTlRfVVJMLCBHSVRIVUJfVE9LRU4sIGZ1bGxIdG1sLCBtYXJrZXIpOycsXG4gICAgICAgIFwiICAgICAgY29uc29sZS5lcnJvcignVXBzZXJ0ZWQgR2l0SHViIFBSIGNvbW1lbnQuJyk7XCIsXG4gICAgICAgICcgICAgfSBjYXRjaCAoZTogYW55KSB7JyxcbiAgICAgICAgXCIgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gdXBzZXJ0IEdpdEh1YiBQUiBjb21tZW50OicsIGU/Lm1lc3NhZ2UgfHwgZSk7XCIsXG4gICAgICAgICcgICAgICAvLyBEbyBub3QgZmFpbCB0aGUgd2hvbGUgc2NyaXB0IGp1c3QgZm9yIGNvbW1lbnQgcG9zdGluZycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgXCIgIC8vIE5vdGU6IFdoZW4gc3RhdHVzIGlzIEZBSUxFRCBkdWUgdG8gXFxcImRpZG4ndCBjb250YWluIGNoYW5nZXNcXFwiLCB0aGUgSFRNTCBuYXR1cmFsbHkgc2F5cyBcXFwibm8gY2hhbmdlLlxcXCJcIixcbiAgICAgICAgXCIgIGlmIChzdGF0dXMgPT09ICdGQUlMRUQnICYmIHN0YXR1c1JlYXNvbikge1wiLFxuICAgICAgICAnICAgIGNvbnNvbGUuZXJyb3IoYENoYW5nZSBzZXQgc3RhdHVzOiBGQUlMRUQuIFJlYXNvbjogJHtzdGF0dXNSZWFzb259YCk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdtYWluKCkuY2F0Y2goKGVycikgPT4geycsXG4gICAgICAgICcgIGNvbnNvbGUuZXJyb3IoZXJyKTsnLFxuICAgICAgICAnICBwcm9jZXNzLmV4aXRDb2RlID0gMTsnLFxuICAgICAgICAnfSk7JyxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|