@aws-cdk/aws-ec2-alpha 2.260.0-alpha.0 → 2.262.0-alpha.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 +90 -3
- package/.jsii.tabl.json.gz +0 -0
- package/lib/ipam.js +1 -1
- package/lib/route.js +8 -8
- package/lib/subnet-v2.js +5 -5
- package/lib/transit-gateway-route-table-association.js +1 -1
- package/lib/transit-gateway-route-table-propagation.js +1 -1
- package/lib/transit-gateway-route-table.js +1 -1
- package/lib/transit-gateway-route.js +2 -2
- package/lib/transit-gateway-vpc-attachment.js +1 -1
- package/lib/transit-gateway.js +1 -1
- package/lib/vpc-v2-base.js +1 -1
- package/lib/vpc-v2.js +2 -2
- package/package.json +7 -7
package/.jsii
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "https://aws.amazon.com"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"aws-cdk-lib": "^2.
|
|
11
|
+
"aws-cdk-lib": "^2.262.0",
|
|
12
12
|
"constructs": "^10.5.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencyClosure": {
|
|
@@ -1150,6 +1150,19 @@
|
|
|
1150
1150
|
}
|
|
1151
1151
|
}
|
|
1152
1152
|
},
|
|
1153
|
+
"aws-cdk-lib.aws_controlcatalog": {
|
|
1154
|
+
"targets": {
|
|
1155
|
+
"dotnet": {
|
|
1156
|
+
"namespace": "Amazon.CDK.AWS.ControlCatalog"
|
|
1157
|
+
},
|
|
1158
|
+
"java": {
|
|
1159
|
+
"package": "software.amazon.awscdk.services.controlcatalog"
|
|
1160
|
+
},
|
|
1161
|
+
"python": {
|
|
1162
|
+
"module": "aws_cdk.aws_controlcatalog"
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
},
|
|
1153
1166
|
"aws-cdk-lib.aws_controltower": {
|
|
1154
1167
|
"targets": {
|
|
1155
1168
|
"dotnet": {
|
|
@@ -1202,6 +1215,19 @@
|
|
|
1202
1215
|
}
|
|
1203
1216
|
}
|
|
1204
1217
|
},
|
|
1218
|
+
"aws-cdk-lib.aws_dataexchange": {
|
|
1219
|
+
"targets": {
|
|
1220
|
+
"dotnet": {
|
|
1221
|
+
"namespace": "Amazon.CDK.AWS.DataExchange"
|
|
1222
|
+
},
|
|
1223
|
+
"java": {
|
|
1224
|
+
"package": "software.amazon.awscdk.services.dataexchange"
|
|
1225
|
+
},
|
|
1226
|
+
"python": {
|
|
1227
|
+
"module": "aws_cdk.aws_dataexchange"
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1230
|
+
},
|
|
1205
1231
|
"aws-cdk-lib.aws_datapipeline": {
|
|
1206
1232
|
"targets": {
|
|
1207
1233
|
"dotnet": {
|
|
@@ -3015,6 +3041,19 @@
|
|
|
3015
3041
|
}
|
|
3016
3042
|
}
|
|
3017
3043
|
},
|
|
3044
|
+
"aws-cdk-lib.aws_outposts": {
|
|
3045
|
+
"targets": {
|
|
3046
|
+
"dotnet": {
|
|
3047
|
+
"namespace": "Amazon.CDK.AWS.Outposts"
|
|
3048
|
+
},
|
|
3049
|
+
"java": {
|
|
3050
|
+
"package": "software.amazon.awscdk.services.outposts"
|
|
3051
|
+
},
|
|
3052
|
+
"python": {
|
|
3053
|
+
"module": "aws_cdk.aws_outposts"
|
|
3054
|
+
}
|
|
3055
|
+
}
|
|
3056
|
+
},
|
|
3018
3057
|
"aws-cdk-lib.aws_panorama": {
|
|
3019
3058
|
"targets": {
|
|
3020
3059
|
"dotnet": {
|
|
@@ -5464,6 +5503,22 @@
|
|
|
5464
5503
|
}
|
|
5465
5504
|
}
|
|
5466
5505
|
},
|
|
5506
|
+
"aws-cdk-lib.interfaces.aws_controlcatalog": {
|
|
5507
|
+
"targets": {
|
|
5508
|
+
"dotnet": {
|
|
5509
|
+
"namespace": "Amazon.CDK.Interfaces.ControlCatalog"
|
|
5510
|
+
},
|
|
5511
|
+
"go": {
|
|
5512
|
+
"packageName": "interfacesawscontrolcatalog"
|
|
5513
|
+
},
|
|
5514
|
+
"java": {
|
|
5515
|
+
"package": "software.amazon.awscdk.interfaces.controlcatalog"
|
|
5516
|
+
},
|
|
5517
|
+
"python": {
|
|
5518
|
+
"module": "aws_cdk.interfaces.aws_controlcatalog"
|
|
5519
|
+
}
|
|
5520
|
+
}
|
|
5521
|
+
},
|
|
5467
5522
|
"aws-cdk-lib.interfaces.aws_controltower": {
|
|
5468
5523
|
"targets": {
|
|
5469
5524
|
"dotnet": {
|
|
@@ -5528,6 +5583,22 @@
|
|
|
5528
5583
|
}
|
|
5529
5584
|
}
|
|
5530
5585
|
},
|
|
5586
|
+
"aws-cdk-lib.interfaces.aws_dataexchange": {
|
|
5587
|
+
"targets": {
|
|
5588
|
+
"dotnet": {
|
|
5589
|
+
"namespace": "Amazon.CDK.Interfaces.DataExchange"
|
|
5590
|
+
},
|
|
5591
|
+
"go": {
|
|
5592
|
+
"packageName": "interfacesawsdataexchange"
|
|
5593
|
+
},
|
|
5594
|
+
"java": {
|
|
5595
|
+
"package": "software.amazon.awscdk.interfaces.dataexchange"
|
|
5596
|
+
},
|
|
5597
|
+
"python": {
|
|
5598
|
+
"module": "aws_cdk.interfaces.aws_dataexchange"
|
|
5599
|
+
}
|
|
5600
|
+
}
|
|
5601
|
+
},
|
|
5531
5602
|
"aws-cdk-lib.interfaces.aws_datapipeline": {
|
|
5532
5603
|
"targets": {
|
|
5533
5604
|
"dotnet": {
|
|
@@ -7544,6 +7615,22 @@
|
|
|
7544
7615
|
}
|
|
7545
7616
|
}
|
|
7546
7617
|
},
|
|
7618
|
+
"aws-cdk-lib.interfaces.aws_outposts": {
|
|
7619
|
+
"targets": {
|
|
7620
|
+
"dotnet": {
|
|
7621
|
+
"namespace": "Amazon.CDK.Interfaces.Outposts"
|
|
7622
|
+
},
|
|
7623
|
+
"go": {
|
|
7624
|
+
"packageName": "interfacesawsoutposts"
|
|
7625
|
+
},
|
|
7626
|
+
"java": {
|
|
7627
|
+
"package": "software.amazon.awscdk.interfaces.outposts"
|
|
7628
|
+
},
|
|
7629
|
+
"python": {
|
|
7630
|
+
"module": "aws_cdk.interfaces.aws_outposts"
|
|
7631
|
+
}
|
|
7632
|
+
}
|
|
7633
|
+
},
|
|
7547
7634
|
"aws-cdk-lib.interfaces.aws_panorama": {
|
|
7548
7635
|
"targets": {
|
|
7549
7636
|
"dotnet": {
|
|
@@ -17259,7 +17346,7 @@
|
|
|
17259
17346
|
},
|
|
17260
17347
|
"locationInModule": {
|
|
17261
17348
|
"filename": "core/lib/resource.ts",
|
|
17262
|
-
"line":
|
|
17349
|
+
"line": 125
|
|
17263
17350
|
},
|
|
17264
17351
|
"parameters": [
|
|
17265
17352
|
{
|
|
@@ -18182,6 +18269,6 @@
|
|
|
18182
18269
|
"symbolId": "lib/vpc-v2:VpcV2Props"
|
|
18183
18270
|
}
|
|
18184
18271
|
},
|
|
18185
|
-
"version": "2.
|
|
18272
|
+
"version": "2.262.0-alpha.0",
|
|
18186
18273
|
"fingerprint": "**********"
|
|
18187
18274
|
}
|
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
package/lib/ipam.js
CHANGED
|
@@ -315,7 +315,7 @@ let Ipam = (() => {
|
|
|
315
315
|
Ipam = _classThis = _classDescriptor.value;
|
|
316
316
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
317
317
|
}
|
|
318
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.Ipam", version: "2.
|
|
318
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.Ipam", version: "2.262.0-alpha.0" };
|
|
319
319
|
/** Uniquely identifies this class. */
|
|
320
320
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.Ipam';
|
|
321
321
|
/**
|
package/lib/route.js
CHANGED
|
@@ -82,7 +82,7 @@ let EgressOnlyInternetGateway = (() => {
|
|
|
82
82
|
EgressOnlyInternetGateway = _classThis = _classDescriptor.value;
|
|
83
83
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
84
84
|
}
|
|
85
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.EgressOnlyInternetGateway", version: "2.
|
|
85
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.EgressOnlyInternetGateway", version: "2.262.0-alpha.0" };
|
|
86
86
|
/** Uniquely identifies this class. */
|
|
87
87
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.EgressOnlyInternetGateway';
|
|
88
88
|
/**
|
|
@@ -145,7 +145,7 @@ let InternetGateway = (() => {
|
|
|
145
145
|
InternetGateway = _classThis = _classDescriptor.value;
|
|
146
146
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
147
147
|
}
|
|
148
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.InternetGateway", version: "2.
|
|
148
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.InternetGateway", version: "2.262.0-alpha.0" };
|
|
149
149
|
/** Uniquely identifies this class. */
|
|
150
150
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.InternetGateway';
|
|
151
151
|
/**
|
|
@@ -219,7 +219,7 @@ let VPNGatewayV2 = (() => {
|
|
|
219
219
|
VPNGatewayV2 = _classThis = _classDescriptor.value;
|
|
220
220
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
221
221
|
}
|
|
222
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VPNGatewayV2", version: "2.
|
|
222
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VPNGatewayV2", version: "2.262.0-alpha.0" };
|
|
223
223
|
/** Uniquely identifies this class. */
|
|
224
224
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.VPNGatewayV2';
|
|
225
225
|
/**
|
|
@@ -317,7 +317,7 @@ let NatGateway = (() => {
|
|
|
317
317
|
NatGateway = _classThis = _classDescriptor.value;
|
|
318
318
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
319
319
|
}
|
|
320
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.NatGateway", version: "2.
|
|
320
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.NatGateway", version: "2.262.0-alpha.0" };
|
|
321
321
|
/** Uniquely identifies this class. */
|
|
322
322
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.NatGateway';
|
|
323
323
|
/**
|
|
@@ -430,7 +430,7 @@ let VPCPeeringConnection = (() => {
|
|
|
430
430
|
VPCPeeringConnection = _classThis = _classDescriptor.value;
|
|
431
431
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
432
432
|
}
|
|
433
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VPCPeeringConnection", version: "2.
|
|
433
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VPCPeeringConnection", version: "2.262.0-alpha.0" };
|
|
434
434
|
/** Uniquely identifies this class. */
|
|
435
435
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.VPCPeeringConnection';
|
|
436
436
|
/**
|
|
@@ -528,7 +528,7 @@ exports.VPCPeeringConnection = VPCPeeringConnection;
|
|
|
528
528
|
* The gateway or endpoint targeted by the route.
|
|
529
529
|
*/
|
|
530
530
|
class RouteTargetType {
|
|
531
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTargetType", version: "2.
|
|
531
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTargetType", version: "2.262.0-alpha.0" };
|
|
532
532
|
/**
|
|
533
533
|
* The gateway route target. This is used for targets such as
|
|
534
534
|
* egress-only internet gateway or VPC peering connection.
|
|
@@ -576,7 +576,7 @@ let Route = (() => {
|
|
|
576
576
|
Route = _classThis = _classDescriptor.value;
|
|
577
577
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
578
578
|
}
|
|
579
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.Route", version: "2.
|
|
579
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.Route", version: "2.262.0-alpha.0" };
|
|
580
580
|
/** Uniquely identifies this class. */
|
|
581
581
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.Route';
|
|
582
582
|
/**
|
|
@@ -689,7 +689,7 @@ let RouteTable = (() => {
|
|
|
689
689
|
RouteTable = _classThis = _classDescriptor.value;
|
|
690
690
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
691
691
|
}
|
|
692
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTable", version: "2.
|
|
692
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTable", version: "2.262.0-alpha.0" };
|
|
693
693
|
/** Uniquely identifies this class. */
|
|
694
694
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.RouteTable';
|
|
695
695
|
/**
|
package/lib/subnet-v2.js
CHANGED
|
@@ -49,7 +49,7 @@ const util_1 = require("./util");
|
|
|
49
49
|
* IPv4 or IPv6 CIDR range for the subnet
|
|
50
50
|
*/
|
|
51
51
|
class IpCidr {
|
|
52
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.IpCidr", version: "2.
|
|
52
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.IpCidr", version: "2.262.0-alpha.0" };
|
|
53
53
|
/**
|
|
54
54
|
* IPv6 CIDR range for the subnet
|
|
55
55
|
* Allowed only if IPv6 is enabled on VPc
|
|
@@ -97,7 +97,7 @@ let SubnetV2 = (() => {
|
|
|
97
97
|
SubnetV2 = _classThis = _classDescriptor.value;
|
|
98
98
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
99
99
|
}
|
|
100
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.SubnetV2", version: "2.
|
|
100
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.SubnetV2", version: "2.262.0-alpha.0" };
|
|
101
101
|
/** Uniquely identifies this class. */
|
|
102
102
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.SubnetV2';
|
|
103
103
|
/**
|
|
@@ -397,7 +397,7 @@ function checkCidrRanges(vpc, cidrRange) {
|
|
|
397
397
|
const vpcCidrBlock = [vpc.ipv4CidrBlock];
|
|
398
398
|
const subnetCidrBlock = new util_1.CidrBlock(cidrRange);
|
|
399
399
|
const allCidrs = [];
|
|
400
|
-
// Secondary IP addresses
|
|
400
|
+
// Secondary IP addresses associated using user defined IPv4 range
|
|
401
401
|
if (vpc.secondaryCidrBlock) {
|
|
402
402
|
for (const ipAddress of vpc.secondaryCidrBlock) {
|
|
403
403
|
if (ipAddress.cidrBlock) {
|
|
@@ -407,7 +407,7 @@ function checkCidrRanges(vpc, cidrRange) {
|
|
|
407
407
|
const cidrs = vpcCidrBlock.map(cidr => new util_1.CidrBlock(cidr));
|
|
408
408
|
allCidrs.push(...cidrs);
|
|
409
409
|
}
|
|
410
|
-
// Secondary IP addresses
|
|
410
|
+
// Secondary IP addresses associated using IPAM IPv4 range
|
|
411
411
|
if (vpc.ipv4IpamProvisionedCidrs) {
|
|
412
412
|
const cidrs = vpc.ipv4IpamProvisionedCidrs.map(cidr => new util_1.CidrBlock(cidr));
|
|
413
413
|
allCidrs.push(...cidrs);
|
|
@@ -483,4 +483,4 @@ function validateOverlappingCidrRangesipv6(vpc, ipv6CidrBlock) {
|
|
|
483
483
|
}
|
|
484
484
|
return result;
|
|
485
485
|
}
|
|
486
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibmV0LXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3VibmV0LXYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyRztBQU0zRyxpREFNNkI7QUFFN0IsNEVBQTREO0FBQzVELDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFHMUUsMkNBQXdEO0FBQ3hELG1DQUFxQztBQUNyQyxpQ0FBcUU7QUFVckU7O0dBRUc7QUFDSCxNQUFhLE1BQU07O0lBQ2pCOzs7T0FHRztJQUNhLElBQUksQ0FBUztJQUM3QixZQUFZLEtBQWE7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7S0FDbkI7O0FBUkgsd0JBU0M7QUFFRDs7R0FFRztBQUNILE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDO0FBRTdDOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUM7QUFpRzdDOzs7Ozs7Ozs7O0dBVUc7SUFFVSxRQUFROzRCQURwQixvQ0FBa0I7Ozs7c0JBQ1csc0JBQVE7Ozt3QkFBaEIsU0FBUSxXQUFROzs7OytDQStObkMsSUFBQSxrQ0FBYyxHQUFFO1lBQ2pCLDRNQUFPLG1CQUFtQiw2REFTekI7WUF6T0gsNktBeVBDOzs7OztRQXhQQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLGlDQUFpQyxDQUFDO1FBRXpGOztXQUVHO1FBQ0ksTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCOzs7Ozs7Ozs7O1lBQzFGOzs7ZUFHRztZQUNILE1BQU0sZ0JBQWlCLFNBQVEsc0JBQVE7Z0JBQ3JDOzttQkFFRztnQkFDYSxhQUFhLEdBQVksS0FBSyxDQUFDLGFBQWEsQ0FBQztnQkFFN0Q7O21CQUVHO2dCQUNhLFVBQVUsR0FBZ0IsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFFM0Q7O21CQUVHO2dCQUNhLGdCQUFn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Q0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGF6eSwgTmFtZXMsIFJlc291cmNlLCBUYWdzLCBUb2tlbiwgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHtcbiAgSU5ldHdvcmtBY2wsXG4gIElSb3V0ZVRhYmxlLFxuICBJU3VibmV0LFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7XG4gIENmblN1Ym5ldCxcbiAgQ2ZuU3VibmV0Um91dGVUYWJsZUFzc29jaWF0aW9uLFxuICBOZXR3b3JrQWNsLFxuICBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24sXG4gIFN1Ym5ldFR5cGUsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xudHlwZSBTdWJuZXRSZWZlcmVuY2UgPSBhd3NfZWMyLlN1Ym5ldFJlZmVyZW5jZTtcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgYXdzX2VjMiB9IGZyb20gJ2F3cy1jZGstbGliL2ludGVyZmFjZXMnO1xuaW1wb3J0IHR5cGUgeyBJRGVwZW5kYWJsZSB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBEZXBlbmRlbmN5R3JvdXAgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFJvdXRlVGFibGUgfSBmcm9tICcuL3JvdXRlJztcbmltcG9ydCB7IENpZHJCbG9jaywgQ2lkckJsb2NrSXB2NiwgZGVmYXVsdFN1Ym5ldE5hbWUgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBJVnBjVjIgfSBmcm9tICcuL3ZwYy12Mi1iYXNlJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gZGVmaW5lIHN1Ym5ldCBDSURSXG4gKi9cbmludGVyZmFjZSBJQ2lkciB7XG4gIHJlYWRvbmx5IGNpZHI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJUHY0IG9yIElQdjYgQ0lEUiByYW5nZSBmb3IgdGhlIHN1Ym5ldFxuICovXG5leHBvcnQgY2xhc3MgSXBDaWRyIGltcGxlbWVudHMgSUNpZHIge1xuICAvKipcbiAgICogSVB2NiBDSURSIHJhbmdlIGZvciB0aGUgc3VibmV0XG4gICAqIEFsbG93ZWQgb25seSBpZiBJUHY2IGlzIGVuYWJsZWQgb24gVlBjXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2lkcjogc3RyaW5nO1xuICBjb25zdHJ1Y3Rvcihwcm9wczogc3RyaW5nICkge1xuICAgIHRoaXMuY2lkciA9IHByb3BzO1xuICB9XG59XG5cbi8qKlxuICogVlBDIE5hbWUgdGFnIGNvbnN0YW50XG4gKi9cbmNvbnN0IFNVQk5FVFRZUEVfVEFHID0gJ2F3cy1jZGs6c3VibmV0LXR5cGUnO1xuXG4vKipcbiAqIFN1Ym5ldCBOYW1lIHRhZyBjb25zdGFudFxuICovXG5jb25zdCBTVUJORVROQU1FX1RBRyA9ICdhd3MtY2RrOnN1Ym5ldC1uYW1lJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBzdWJuZXQgZm9yIFZQQy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJuZXRWMlByb3BzIHtcbi8qKlxuICogVlBDIFByb3BcbiAqL1xuICByZWFkb25seSB2cGM6IElWcGNWMjtcblxuICAvKipcbiAgICogaXB2NCBjaWRyIHRvIGFzc2lnbiB0byB0aGlzIHN1Ym5ldC5cbiAgICogU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItc3VibmV0Lmh0bWwjY2ZuLWVjMi1zdWJuZXQtY2lkcmJsb2NrXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBJcENpZHI7XG5cbiAgLyoqXG4gICAqIElwdjYgQ0lEUiBSYW5nZSBmb3Igc3VibmV0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gSXB2NiBhZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBpcHY2Q2lkckJsb2NrPzogSXBDaWRyO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gQVogZm9yIHRoZSBzdWJuZXRcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFJvdXRlIGZvciBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGRlZmF1bHQgcm91dGUgdGFibGUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZT86IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBkZWZhdWx0IFJvdXRlVGFibGUgY3JlYXRlZCBieSBDREsgdG8gYmUgdXNlZCBmb3IgdGFnZ2luZ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgcm91dGUgdGFibGUgbmFtZSBjcmVhdGVkIGJ5IENESyBhcyAnRGVmYXVsdENES1JvdXRlVGFibGUnXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Um91dGVUYWJsZU5hbWUgPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBTdWJuZXQgdG8gY29uZmlndXJlLlxuICAgKlxuICAgKiBUaGUgU3VibmV0IHR5cGUgd2lsbCBjb250cm9sIHRoZSBhYmlsaXR5IHRvIHJvdXRlIGFuZCBjb25uZWN0IHRvIHRoZVxuICAgKiBJbnRlcm5ldC5cbiAgICpcbiAgICogVE9ETzogQWRkIHZhbGlkYXRpb24gY2hlY2sgYHN1Ym5ldFR5cGVgIHdoZW4gYWRkaW5nIHJlc291cmNlcyAoZS5nLiBjYW5ub3QgYWRkIE5hdEdhdGV3YXkgdG8gcHJpdmF0ZSlcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGU7XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aCBhbiBhdXRvZ2VuZXJhdGVkIG5hbWUgYnkgQ0RLXG4gICAqL1xuICByZWFkb25seSBzdWJuZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBhIG5ldHdvcmsgaW50ZXJmYWNlIGNyZWF0ZWQgaW4gdGhpcyBzdWJuZXQgcmVjZWl2ZXMgYW4gSVB2NiBhZGRyZXNzLlxuICAgKiBJZiB5b3Ugc3BlY2lmeSBBc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb24sIHlvdSBtdXN0IGFsc28gc3BlY2lmeSBJcHY2Q2lkckJsb2NrLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZCBpbiBjYXNlIG5vdCBwcm92aWRlZCBhcyBhbiBpbnB1dFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29udHJvbHMgaWYgaW5zdGFuY2VzIGxhdW5jaGVkIGludG8gdGhlIHN1Ym5ldCBzaG91bGQgYmUgYXNzaWduZWQgYSBwdWJsaWMgSVAgYWRkcmVzcy5cbiAgICogVGhpcyBwcm9wZXJ0eSBjYW4gb25seSBiZSBzZXQgZm9yIHB1YmxpYyBzdWJuZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZCBpbiBjYXNlIG5vdCBwcm92aWRlZCBhcyBhbiBpbnB1dFxuICAgKi9cbiAgcmVhZG9ubHkgbWFwUHVibGljSXBPbkxhdW5jaD86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2Ugd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIFN1Ym5ldFYyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN1Ym5ldFYyIGV4dGVuZHMgSVN1Ym5ldCB7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY2IENJRFIgYmxvY2sgZm9yIHRoaXMgc3VibmV0XG4gICAqL1xuICByZWFkb25seSBpcHY2Q2lkckJsb2NrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBzdWJuZXQgKHB1YmxpYyBvciBwcml2YXRlKSB0aGF0IHRoaXMgc3VibmV0IHJlcHJlc2VudHMuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGUgU3VibmV0VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGU7XG5cbn1cblxuLyoqXG4gKiBUaGUgU3VibmV0VjIgY2xhc3MgcmVwcmVzZW50cyBhIHN1Ym5ldCB3aXRoaW4gYSBWUEMgKFZpcnR1YWwgUHJpdmF0ZSBDbG91ZCkgaW4gQVdTLlxuICogSXQgZXh0ZW5kcyB0aGUgUmVzb3VyY2UgY2xhc3MgYW5kIGltcGxlbWVudHMgdGhlIElTdWJuZXQgaW50ZXJmYWNlLlxuICpcbiAqIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIHN1Ym5ldHMgd2l0aGluIGEgVnBjVjIgaW5zdGFuY2UuXG4gKiBTdWJuZXRzIGNhbiBiZSBjb25maWd1cmVkIHdpdGggc3BlY2lmaWMgSVAgYWRkcmVzcyByYW5nZXMgKElQdjQgYW5kIElQdjYpLCBhdmFpbGFiaWxpdHkgem9uZXMsXG4gKiBhbmQgc3VibmV0IHR5cGVzIChlLmcuLCBwdWJsaWMsIHByaXZhdGUsIGlzb2xhdGVkKS5cbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlN1Ym5ldFxuICpcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFN1Ym5ldFYyIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJU3VibmV0VjIge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1lYzItYWxwaGEuU3VibmV0VjInO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3Rpbmcgc3VibmV0IHRvIHRoZSBWUENcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVN1Ym5ldFYyQXR0cmlidXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogU3VibmV0VjJBdHRyaWJ1dGVzKSA6IElTdWJuZXRWMiB7XG4gICAgLyoqXG4gICAgICogQ2xhc3MgdG8gZGVmaW5lIGFuIGltcG9ydCBmb3IgYW4gZXhpc3Rpbmcgc3VibmV0XG4gICAgICogQHJlc291cmNlIEFXUzo6RUMyOjpTdWJuZXRcbiAgICAgKi9cbiAgICBjbGFzcyBJbXBvcnRlZFN1Ym5ldFYyIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJU3VibmV0VjIge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgSVB2NiBDSURSIEJsb2NrIGFzc2lnbmVkIHRvIHRoaXMgc3VibmV0XG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY2Q2lkckJsb2NrPzogc3RyaW5nID0gYXR0cnMuaXB2NkNpZHJCbG9jaztcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgdHlwZSBvZiBzdWJuZXQgKGVnLiBwdWJsaWMgb3IgcHJpdmF0ZSkgdGhhdCB0aGlzIHN1Ym5ldCByZXByZXNlbnRzLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGUgPSBhdHRycy5zdWJuZXRUeXBlO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSBpbiB3aGljaCBzdWJuZXQgaXMgbG9jYXRlZFxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nID0gYXR0cnMuYXZhaWxhYmlsaXR5Wm9uZTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICAgICAqIFJlZmVycyB0byB0aGUgcGh5c2ljYWwgSUQgY3JlYXRlZFxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0SWQ6IHN0cmluZyA9IGF0dHJzLnN1Ym5ldElkO1xuXG4gICAgICAvKipcbiAgICAgICAqIERlcGVuZGFibGUgdGhhdCBjYW4gYmUgZGVwZW5kZWQgdXBvbiB0byBmb3JjZSBpbnRlcm5ldCBjb25uZWN0aXZpdHkgZXN0YWJsaXNoZWQgb24gdGhlIFZQQ1xuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDogSURlcGVuZGFibGUgPSBuZXcgRGVwZW5kZW5jeUdyb3VwKCk7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIElQdjQgQ0lEUiBibG9jayBhc3NpZ25lZCB0byB0aGlzIHN1Ym5ldFxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nID0gYXR0cnMuaXB2NENpZHJCbG9jaztcblxuICAgICAgLyoqXG4gICAgICAgKiAgQ3VycmVudCByb3V0ZSB0YWJsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdWJuZXRcbiAgICAgICAqL1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJvdXRlVGFibGU6IElSb3V0ZVRhYmxlID0geyByb3V0ZVRhYmxlSWQ6IGF0dHJzLnJvdXRlVGFibGVJZCEgfTtcblxuICAgICAgcHVibGljIGdldCBzdWJuZXRSZWYoKTogU3VibmV0UmVmZXJlbmNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWJuZXRJZDogdGhpcy5zdWJuZXRJZCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBBc3NvY2lhdGUgYSBOZXR3b3JrIEFDTCB3aXRoIHRoaXMgc3VibmV0XG4gICAgICAgKiBSZXF1aXJlZCBoZXJlIHNpbmNlIGl0IGlzIGltcGxlbWVudGVkIGluIHRoZSBJU3VibmV0VjJcbiAgICAgICAqL1xuICAgICAgcHVibGljIGFzc29jaWF0ZU5ldHdvcmtBY2woYWNsSWQ6IHN0cmluZywgbmV0d29ya0FjbDogSU5ldHdvcmtBY2wpIHtcbiAgICAgICAgY29uc3QgYWNsU2NvcGUgPSBuZXR3b3JrQWNsIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gbmV0d29ya0FjbCA6IHRoaXM7XG4gICAgICAgIGNvbnN0IG90aGVyID0gbmV0d29ya0FjbCBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IHRoaXMgOiBuZXR3b3JrQWNsO1xuICAgICAgICBuZXcgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uKGFjbFNjb3BlLCBhY2xJZCArIE5hbWVzLm5vZGVVbmlxdWVJZChvdGhlci5ub2RlKSwge1xuICAgICAgICAgIG5ldHdvcmtBY2wsXG4gICAgICAgICAgc3VibmV0OiB0aGlzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZFN1Ym5ldFYyKHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIHRoZSBzdWJuZXQgaXMgbG9jYXRlZCBpblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1Ym5ldElkIGZvciB0aGlzIHBhcnRpY3VsYXIgc3VibmV0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAgRGVwZW5kZW5jaWVzIGZvciBpbnRlcm5ldCBjb25uZWN0aXZpdHlcbiAgICogVGhpcyBQcm9wZXJ0eSBleHBvc2VzIHRoZSBSb3V0ZVRhYmxlLVN1Ym5ldCBhc3NvY2lhdGlvbiBzbyB0aGF0IG90aGVyIHJlc291cmNlcyBjYW4gZGVwZW5kIG9uIGl0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IElEZXBlbmRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFibGUgbmFtZSBgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZGAgZG9lcyBub3QgcmVmbGVjdCB3aGF0IGl0IGFjdHVhbGx5IGlzLlxuICAgKiBUaGUgbmFtaW5nIGlzIGVuZm9yY2VkIGJ5IElTdWJuZXQuIFdlIG5lZWQgdG8ga2VlcCBpdCB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5LlxuICAgKiBJdCBleHBvc2VzIHRoZSBSb3V0ZVRhYmxlLVN1Ym5ldCBhc3NvY2lhdGlvbiBzbyB0aGF0IG90aGVyIHJlc291cmNlcyBjYW4gZGVwZW5kIG9uIGl0LlxuICAgKiBFLmcuIFJlc291cmNlcyBpbiBhIHN1Ym5ldCwgd2hlbiBiZWluZyBkZWxldGVkLCBtYXkgbmVlZCB0aGUgUm91dGVUYWJsZSB0byBleGlzdCBpbiBvcmRlciB0byBkZWxldGUgcHJvcGVybHlcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSBuZXcgRGVwZW5kZW5jeUdyb3VwKCk7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IENJRFIgYmxvY2sgZm9yIHRoaXMgc3VibmV0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NiBDSURSIEJsb2NrIGZvciB0aGlzIHN1Ym5ldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBzdHJpbmc7XG5cbiAgcHVibGljIGdldCBzdWJuZXRSZWYoKTogU3VibmV0UmVmZXJlbmNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VibmV0SWQ6IHRoaXMuc3VibmV0SWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBzdWJuZXQgKHB1YmxpYyBvciBwcml2YXRlKSB0aGF0IHRoaXMgc3VibmV0IHJlcHJlc2VudHMuXG4gICAqIEBhdHRyaWJ1dGUgU3VibmV0VHlwZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldFR5cGU/OiBTdWJuZXRUeXBlO1xuXG4gIHByaXZhdGUgX25ldHdvcmtBY2w6IElOZXR3b3JrQWNsO1xuXG4gIHByaXZhdGUgX3JvdXRlVGFibGU6IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IFN1Ym5ldFYyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBDb25zdHJ1Y3QgdGhhdCB0aGlzIHJlc291cmNlIHdpbGwgYmUgcGFydCBvZi5cbiAgICogQHBhcmFtIGlkIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyByZXNvdXJjZS5cbiAgICogQHBhcmFtIHByb3BzIFRoZSBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBzdWJuZXQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3VibmV0VjJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy5zdWJuZXROYW1lID8/IExhenkuc3RyaW5nKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiAxMjgsIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogJ18nIH0pLFxuICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBjb25zdCBpcHY0Q2lkckJsb2NrID0gcHJvcHMuaXB2NENpZHJCbG9jay5jaWRyO1xuICAgIGNvbnN0IGlwdjZDaWRyQmxvY2sgPSBwcm9wcy5pcHY2Q2lkckJsb2NrPy5jaWRyO1xuXG4gICAgaWYgKCFjaGVja0NpZHJSYW5nZXMocHJvcHMudnBjLCBwcm9wcy5pcHY0Q2lkckJsb2NrLmNpZHIpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBDaWRyQmxvY2tPdXRzaWRlVnBjUmFuZ2VgLCAnQ0lEUiBibG9jayBzaG91bGQgYmUgd2l0aGluIHRoZSByYW5nZSBvZiBWUEMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBsZXQgb3ZlcmxhcDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGxldCBvdmVybGFwSXB2NjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuaXB2NENpZHJCbG9jaykpIHtcbiAgICAgIG92ZXJsYXAgPSB2YWxpZGF0ZU92ZXJsYXBwaW5nQ2lkclJhbmdlcyhwcm9wcy52cGMsIHByb3BzLmlwdjRDaWRyQmxvY2suY2lkcik7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgd2hldGhlciBWUEMgc3VwcG9ydHMgaXB2NlxuICAgIGlmIChwcm9wcy5pcHY2Q2lkckJsb2NrPy5jaWRyICYmICFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuaXB2NkNpZHJCbG9jaz8uY2lkcikpIHtcbiAgICAgIHZhbGlkYXRlU3VwcG9ydElwdjYocHJvcHMudnBjKTtcbiAgICAgIG92ZXJsYXBJcHY2ID0gdmFsaWRhdGVPdmVybGFwcGluZ0NpZHJSYW5nZXNpcHY2KHByb3BzLnZwYywgcHJvcHMuaXB2NkNpZHJCbG9jaz8uY2lkcik7XG4gICAgfVxuXG4gICAgaWYgKG92ZXJsYXAgfHwgb3ZlcmxhcElwdjYpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YENpZHJCbG9ja092ZXJsYXBzV2l0aEV4aXN0aW5nU3VibmV0c2AsICdDSURSIGJsb2NrIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBibG9ja3MnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uICYmICFwcm9wcy5pcHY2Q2lkckJsb2NrKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBJcHY2Q2lkckJsb2NrUmVxdWlyZWRGb3JJcHY2QXNzaWdubWVudGAsICdJUHY2IENJRFIgYmxvY2sgaXMgcmVxdWlyZWQgd2hlbiBhc3NpZ25pbmcgSVB2NiBhZGRyZXNzIG9uIGNyZWF0aW9uJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm1hcFB1YmxpY0lwT25MYXVuY2ggPT09IHRydWUgJiYgcHJvcHMuc3VibmV0VHlwZSAhPT0gU3VibmV0VHlwZS5QVUJMSUMpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YE1hcFB1YmxpY0lwT25MYXVuY2hPbmx5Rm9yUHVibGljU3VibmV0c2AsICdtYXBQdWJsaWNJcE9uTGF1bmNoIGNhbiBvbmx5IGJlIHNldCB0byB0cnVlIGZvciBwdWJsaWMgc3VibmV0cycsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHN1Ym5ldCA9IG5ldyBDZm5TdWJuZXQodGhpcywgJ1N1Ym5ldCcsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy52cGMudnBjSWQsXG4gICAgICBjaWRyQmxvY2s6IGlwdjRDaWRyQmxvY2ssXG4gICAgICBpcHY2Q2lkckJsb2NrOiBpcHY2Q2lkckJsb2NrLFxuICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgIGFzc2lnbklwdjZBZGRyZXNzT25DcmVhdGlvbjogcHJvcHMuYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uLFxuICAgICAgbWFwUHVibGljSXBPbkxhdW5jaDogcHJvcHMubWFwUHVibGljSXBPbkxhdW5jaCxcbiAgICB9KTtcblxuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSBzdWJuZXQ7XG4gICAgdGhpcy5pcHY0Q2lkckJsb2NrID0gcHJvcHMuaXB2NENpZHJCbG9jay5jaWRyO1xuICAgIHRoaXMuaXB2NkNpZHJCbG9jayA9IHByb3BzLmlwdjZDaWRyQmxvY2s/LmNpZHI7XG4gICAgdGhpcy5zdWJuZXRJZCA9IHN1Ym5ldC5yZWY7XG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lID0gcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZTtcblxuICAgIHRoaXMuX25ldHdvcmtBY2wgPSBOZXR3b3JrQWNsLmZyb21OZXR3b3JrQWNsSWQodGhpcywgJ0FjbCcsIHN1Ym5ldC5hdHRyTmV0d29ya0FjbEFzc29jaWF0aW9uSWQpO1xuXG4gICAgY29uc3QgaW5jbHVkZVJlc291cmNlVHlwZXMgPSBbQ2ZuU3VibmV0LkNGTl9SRVNPVVJDRV9UWVBFX05BTUVdO1xuICAgIGlmIChwcm9wcy5zdWJuZXROYW1lKSB7XG4gICAgICBUYWdzLm9mKHN1Ym5ldCkuYWRkKFNVQk5FVE5BTUVfVEFHLCBwcm9wcy5zdWJuZXROYW1lKTtcbiAgICB9XG4gICAgY29uc3Qgc3VibmV0VHlwZU5hbWUgPSBkZWZhdWx0U3VibmV0TmFtZShwcm9wcy5zdWJuZXRUeXBlKSA/PyAndW5kZWZpbmVkJztcbiAgICBUYWdzLm9mKHN1Ym5ldCkuYWRkKFNVQk5FVFRZUEVfVEFHLCBzdWJuZXRUeXBlTmFtZSwgeyBpbmNsdWRlUmVzb3VyY2VUeXBlcyB9KTtcblxuICAgIGlmIChwcm9wcy5yb3V0ZVRhYmxlKSB7XG4gICAgICB0aGlzLl9yb3V0ZVRhYmxlID0gcHJvcHMucm91dGVUYWJsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXNzaWduaW5nIGEgZGVmYXVsdCByb3V0ZSB0YWJsZVxuICAgICAgdGhpcy5fcm91dGVUYWJsZSA9IG5ldyBSb3V0ZVRhYmxlKHRoaXMsICdSb3V0ZVRhYmxlJywge1xuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgcm91dGVUYWJsZU5hbWU6IHByb3BzLmRlZmF1bHRSb3V0ZVRhYmxlTmFtZSA/PyAnRGVmYXVsdENES1JvdXRlVGFibGUnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91dGVBc3NvYyA9IG5ldyBDZm5TdWJuZXRSb3V0ZVRhYmxlQXNzb2NpYXRpb24odGhpcywgJ1JvdXRlVGFibGVBc3NvY2lhdGlvbicsIHtcbiAgICAgIHN1Ym5ldElkOiB0aGlzLnN1Ym5ldElkLFxuICAgICAgcm91dGVUYWJsZUlkOiB0aGlzLnJvdXRlVGFibGUucm91dGVUYWJsZUlkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5faW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZC5hZGQocm91dGVBc3NvYyk7XG5cbiAgICB0aGlzLmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkO1xuXG4gICAgdGhpcy5zdWJuZXRUeXBlID0gcHJvcHMuc3VibmV0VHlwZTtcbiAgICBzdG9yZVN1Ym5ldFRvVnBjQnlUeXBlKHByb3BzLnZwYywgdGhpcywgcHJvcHMuc3VibmV0VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogQXNzb2NpYXRlIGEgTmV0d29yayBBQ0wgd2l0aCB0aGlzIHN1Ym5ldFxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGFzc29jaWF0aW9uLlxuICAgKiBAcGFyYW0gbmV0d29ya0FjbCBUaGUgTmV0d29yayBBQ0wgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBzdWJuZXQuXG4gICAqIFRoaXMgYWxsb3dzIGNvbnRyb2xsaW5nIGluYm91bmQgYW5kIG91dGJvdW5kIHRyYWZmaWMgZm9yIGluc3RhbmNlcyBpbiB0aGlzIHN1Ym5ldC5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhc3NvY2lhdGVOZXR3b3JrQWNsKGlkOiBzdHJpbmcsIG5ldHdvcmtBY2w6IElOZXR3b3JrQWNsKSB7XG4gICAgdGhpcy5fbmV0d29ya0FjbCA9IG5ldHdvcmtBY2w7XG5cbiAgICBjb25zdCBzY29wZSA9IG5ldHdvcmtBY2wgaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyBuZXR3b3JrQWNsIDogdGhpcztcbiAgICBjb25zdCBvdGhlciA9IG5ldHdvcmtBY2wgaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyB0aGlzIDogbmV0d29ya0FjbDtcbiAgICBuZXcgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uKHNjb3BlLCBpZCArIE5hbWVzLm5vZGVVbmlxdWVJZChvdGhlci5ub2RlKSwge1xuICAgICAgbmV0d29ya0FjbCxcbiAgICAgIHN1Ym5ldDogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIFJvdXRlIFRhYmxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN1Ym5ldFxuICAgKi9cbiAgcHVibGljIGdldCByb3V0ZVRhYmxlKCk6IElSb3V0ZVRhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5fcm91dGVUYWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBOZXR3b3JrIEFDTCBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdWJuZXQuXG4gICAqL1xuXG4gIHB1YmxpYyBnZXQgbmV0d29ya0FjbCgpOiBJTmV0d29ya0FjbCB7XG4gICAgcmV0dXJuIHRoaXMuX25ldHdvcmtBY2w7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIGltcG9ydCBhIHN1Ym5ldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldFYyQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgdGhpcyBzdWJuZXQgaXMgbG9jYXRlZCBpblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIEFaIGluZm9ybWF0aW9uLCBjYW5ub3QgdXNlIEFaIHNlbGVjdGlvbiBmZWF0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBDSURSIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3VibmV0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gQ0lEUiBpbmZvcm1hdGlvbiwgY2Fubm90IHVzZSBDSURSIGZpbHRlciBmZWF0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBDSURSIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3VibmV0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gQ0lEUiBpbmZvcm1hdGlvbiwgY2Fubm90IHVzZSBDSURSIGZpbHRlciBmZWF0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NkNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHJvdXRlIHRhYmxlIGluZm9ybWF0aW9uLCBjYW5ub3QgY3JlYXRlIFZQQyBlbmRwb2ludHNcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGVJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1Ym5ldElkIGZvciB0aGlzIHBhcnRpY3VsYXIgc3VibmV0XG4gICAqL1xuICByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBzdWJuZXQgKHB1YmxpYyBvciBwcml2YXRlKSB0aGF0IHRoaXMgc3VibmV0IHJlcHJlc2VudHMuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBnaXZlbiBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzdWJuZXQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0TmFtZT86IHN0cmluZztcblxufVxuXG50eXBlIERlcHJlY2F0ZWRTdWJuZXRUeXBlID0gJ0RlcHJlY2F0ZWRfSXNvbGF0ZWQnIHwgJ0RlcHJlY2F0ZWRfUHJpdmF0ZSc7XG5jb25zdCBzdWJuZXRUeXBlTWFwOiB7IFtrZXkgaW4gU3VibmV0VHlwZSB8IERlcHJlY2F0ZWRTdWJuZXRUeXBlXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2b2lkIH0gPSB7XG4gIFtTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURURdOiAodnBjOiBJVnBjVjIsIHN1Ym5ldDogU3VibmV0VjIpID0+IHZwYy5pc29sYXRlZFN1Ym5ldHMucHVzaChzdWJuZXQpLFxuICBbU3VibmV0VHlwZS5QVUJMSUNdOiAodnBjOiBJVnBjVjIsIHN1Ym5ldDogU3VibmV0VjIpID0+IHZwYy5wdWJsaWNTdWJuZXRzLnB1c2goc3VibmV0KSxcbiAgW1N1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnByaXZhdGVTdWJuZXRzLnB1c2goc3VibmV0KSxcbiAgWydEZXByZWNhdGVkX0lzb2xhdGVkJ106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLmlzb2xhdGVkU3VibmV0cy5wdXNoKHN1Ym5ldCksXG4gIFsnRGVwcmVjYXRlZF9Qcml2YXRlJ106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnByaXZhdGVTdWJuZXRzLnB1c2goc3VibmV0KSxcbiAgW1N1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX05BVF06ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnByaXZhdGVTdWJuZXRzLnB1c2goc3VibmV0KSxcbn07XG5cbi8qKlxuICogU3RvcmVzIHRoZSBwcm92aWRlZCBzdWJuZXQgaW4gdGhlIFZQQydzIGNvbGxlY3Rpb24gb2Ygc3VibmV0cyBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHN1Ym5ldCB0eXBlLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byB3aGljaCB0aGUgc3VibmV0IGJlbG9uZ3MuXG4gKiBAcGFyYW0gc3VibmV0IFRoZSBzdWJuZXQgaW5zdGFuY2UgdG8gYmUgc3RvcmVkLlxuICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgdGhlIHN1Ym5ldCAoZS5nLiwgcHVibGljLCBwcml2YXRlLCBpc29sYXRlZCkuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gc3RvcmVTdWJuZXRUb1ZwY0J5VHlwZSh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMiwgdHlwZTogU3VibmV0VHlwZSkge1xuICBjb25zdCBmaW5kRnVuY3Rpb25UeXBlID0gc3VibmV0VHlwZU1hcFt0eXBlXTtcbiAgaWYgKGZpbmRGdW5jdGlvblR5cGUpIHtcbiAgICBmaW5kRnVuY3Rpb25UeXBlKHZwYywgc3VibmV0KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YFVuc3VwcG9ydGVkU3VibmV0VHlwZWAsIGBVbnN1cHBvcnRlZCBzdWJuZXQgdHlwZTogJHt0eXBlfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIE5lZWQgdG8gc2V0IGV4cGxpY2l0IGRlcGVuZGVuY3kgYXMgZHVyaW5nIHN0YWNrIGRlbGV0aW9uLFxuICAgKiB0aGUgY2lkciBibG9ja3MgbWF5IGdldCBkZWxldGVkIGZpcnN0IGFuZCB3aWxsIGZhaWwgYXMgdGhlIHN1Ym5ldHMgYXJlIHN0aWxsIHVzaW5nIHRoZSBjaWRyIGJsb2Nrc1xuICAgKi9cbiAgaWYgKHZwYy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICBmb3IgKGNvbnN0IGNpZHIgb2YgdnBjLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgICAgc3VibmV0Lm5vZGUuYWRkRGVwZW5kZW5jeShjaWRyKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgd2hldGhlciB0aGUgcHJvdmlkZWQgVlBDIHN1cHBvcnRzIElQdjYgYWRkcmVzc2VzLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiB0aGUgVlBDIGRvZXMgbm90IHN1cHBvcnQgSVB2NiBhZGRyZXNzZXMuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBWUEMgc3VwcG9ydHMgSVB2NiBhZGRyZXNzZXMsIGZhbHNlIG90aGVyd2lzZS5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVN1cHBvcnRJcHY2KHZwYzogSVZwY1YyKSB7XG4gIGlmICh2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgaWYgKHZwYy5zZWNvbmRhcnlDaWRyQmxvY2suc29tZSgoc2Vjb25kYXJ5QWRkcmVzcykgPT4gc2Vjb25kYXJ5QWRkcmVzcy5hbWF6b25Qcm92aWRlZElwdjZDaWRyQmxvY2sgPT09IHRydWUgfHxcbiAgc2Vjb25kYXJ5QWRkcmVzcy5pcHY2SXBhbVBvb2xJZCAhPT0gdW5kZWZpbmVkIHx8IHNlY29uZGFyeUFkZHJlc3MuaXB2NlBvb2wgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YElwdjZOb3RTdXBwb3J0ZWRgLCAnVG8gdXNlIElQdjYsIHRoZSBWUEMgbXVzdCBlbmFibGUgSVB2NiBzdXBwb3J0LicpO1xuICAgIH1cbiAgfSBlbHNlIHtyZXR1cm4gZmFsc2U7fVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgcHJvdmlkZWQgQ0lEUiByYW5nZSBmYWxscyB3aXRoaW4gdGhlIElQIGFkZHJlc3MgcmFuZ2VzIG9mIHRoZSBnaXZlbiBWUEMuXG4gKlxuICogQHBhcmFtIHZwYyBUaGUgVlBDIGluc3RhbmNlIHRvIGNoZWNrIGFnYWluc3QuXG4gKiBAcGFyYW0gY2lkclJhbmdlIFRoZSBDSURSIHJhbmdlIHRvIGJlIGNoZWNrZWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBDSURSIHJhbmdlIGZhbGxzIHdpdGhpbiB0aGUgVlBDJ3MgSVAgYWRkcmVzcyByYW5nZXMsIGZhbHNlIG90aGVyd2lzZS5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBjaGVja0NpZHJSYW5nZXModnBjOiBJVnBjVjIsIGNpZHJSYW5nZTogc3RyaW5nKSB7XG4gIGNvbnN0IHZwY0NpZHJCbG9jayA9IFt2cGMuaXB2NENpZHJCbG9ja107XG4gIGNvbnN0IHN1Ym5ldENpZHJCbG9jayA9IG5ldyBDaWRyQmxvY2soY2lkclJhbmdlKTtcbiAgY29uc3QgYWxsQ2lkcnM6IENpZHJCbG9ja1tdID0gW107XG5cbiAgLy8gU2Vjb25kYXJ5IElQIGFkZHJlc3NlcyBhc3NvaWNhdGVkIHVzaW5nIHVzZXIgZGVmaW5lZCBJUHY0IHJhbmdlXG4gIGlmICh2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgZm9yIChjb25zdCBpcEFkZHJlc3Mgb2YgdnBjLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgICAgaWYgKGlwQWRkcmVzcy5jaWRyQmxvY2spIHtcbiAgICAgICAgdnBjQ2lkckJsb2NrLnB1c2goaXBBZGRyZXNzLmNpZHJCbG9jayk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNpZHJzID0gdnBjQ2lkckJsb2NrLm1hcChjaWRyID0+IG5ldyBDaWRyQmxvY2soY2lkcikpO1xuICAgIGFsbENpZHJzLnB1c2goLi4uY2lkcnMpO1xuICB9XG5cbiAgLy8gU2Vjb25kYXJ5IElQIGFkZHJlc3NlcyBhc3NvaWNhdGVkIHVzaW5nIElQQU0gSVB2NCByYW5nZVxuICBpZiAodnBjLmlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycykge1xuICAgIGNvbnN0IGNpZHJzID0gdnBjLmlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycy5tYXAoY2lkciA9PiBuZXcgQ2lkckJsb2NrKGNpZHIpKTtcbiAgICBhbGxDaWRycy5wdXNoKC4uLmNpZHJzKTtcbiAgfVxuXG4gIC8vIElmIG5vIElQdjQgaXMgYXNzaWduZWQgYXMgc2Vjb25kYXJ5IGFkZHJlc3NcbiAgaWYgKGFsbENpZHJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgTm9TZWNvbmRhcnlJcEFkZHJlc3NgLCAnTm8gc2Vjb25kYXJ5IElQIGFkZHJlc3MgYXR0YWNoZWQgdG8gVlBDJyk7XG4gIH1cblxuICByZXR1cm4gYWxsQ2lkcnMuc29tZShjID0+IGMuY29udGFpbnNDaWRyKHN1Ym5ldENpZHJCbG9jaykpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBpZiB0aGUgcHJvdmlkZWQgSVB2NCBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZXhpc3Rpbmcgc3VibmV0IENJRFIgYmxvY2tzIHdpdGhpbiB0aGUgZ2l2ZW4gVlBDLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byBjaGVjayBhZ2FpbnN0LlxuICogQHBhcmFtIGlwdjRDaWRyQmxvY2sgVGhlIElQdjQgQ0lEUiBibG9jayB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBJUHY0IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBleGlzdGluZyBzdWJuZXQgQ0lEUiBibG9ja3MsIGZhbHNlIG90aGVyd2lzZS5cbiAqIEBpbnRlcm5hbFxuICovXG5cbmZ1bmN0aW9uIHZhbGlkYXRlT3ZlcmxhcHBpbmdDaWRyUmFuZ2VzKHZwYzogSVZwY1YyLCBpcHY0Q2lkckJsb2NrOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IGFsbFN1Ym5ldHM6IElTdWJuZXRWMltdO1xuICB0cnkge1xuICAgIGFsbFN1Ym5ldHMgPSB2cGMuc2VsZWN0U3VibmV0cygpLnN1Ym5ldHM7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAnTm8gc3VibmV0cyBpbiBWUEMnO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGlwTWFwOiBbc3RyaW5nLCBzdHJpbmddW10gPSBuZXcgQXJyYXkoKTtcblxuICBjb25zdCBpbnB1dFJhbmdlID0gbmV3IENpZHJCbG9jayhpcHY0Q2lkckJsb2NrKTtcblxuICBjb25zdCBpbnB1dElwTWFwOiBbc3RyaW5nLCBzdHJpbmddID0gW2lucHV0UmFuZ2UubWluSXAoKSwgaW5wdXRSYW5nZS5tYXhJcCgpXTtcblxuICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBhbGxTdWJuZXRzKSB7XG4gICAgY29uc3QgY2lkckJsb2NrID0gbmV3IENpZHJCbG9jayhzdWJuZXQuaXB2NENpZHJCbG9jayk7XG4gICAgaXBNYXAucHVzaChbY2lkckJsb2NrLm1pbklwKCksIGNpZHJCbG9jay5tYXhJcCgpXSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHJhbmdlIG9mIGlwTWFwKSB7XG4gICAgaWYgKGlucHV0UmFuZ2UucmFuZ2VzT3ZlcmxhcChyYW5nZSwgaW5wdXRJcE1hcCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgaWYgdGhlIHByb3ZpZGVkIElQdjYgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBDSURSIGJsb2NrcyB3aXRoaW4gdGhlIGdpdmVuIFZQQy5cbiAqXG4gKiBAcGFyYW0gdnBjIFRoZSBWUEMgaW5zdGFuY2UgdG8gY2hlY2sgYWdhaW5zdC5cbiAqIEBwYXJhbSBpcHY2Q2lkckJsb2NrIFRoZSBJUHY2IENJRFIgYmxvY2sgdG8gYmUgdmFsaWRhdGVkLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgSVB2NiBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZXhpc3Rpbmcgc3VibmV0IENJRFIgYmxvY2tzLCBmYWxzZSBvdGhlcndpc2UuXG4gKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiBubyBzdWJuZXRzIGFyZSBmb3VuZCBpbiB0aGUgVlBDLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlT3ZlcmxhcHBpbmdDaWRyUmFuZ2VzaXB2Nih2cGM6IElWcGNWMiwgaXB2NkNpZHJCbG9jazogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGxldCBhbGxTdWJuZXRzOiBJU3VibmV0VjJbXTtcbiAgdHJ5IHtcbiAgICBhbGxTdWJuZXRzID0gdnBjLnNlbGVjdFN1Ym5ldHMoKS5zdWJuZXRzO1xuICB9IGNhdGNoIChlKSB7XG4gICAgJ05vIHN1Ym5ldHMgaW4gVlBDJztcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBpcHY2TWFwOiBzdHJpbmdbXT0gW107XG5cbiAgY29uc3QgaW5wdXRSYW5nZSA9IG5ldyBDaWRyQmxvY2tJcHY2KGlwdjZDaWRyQmxvY2spO1xuXG4gIGxldCByZXN1bHQgOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBzdWJuZXQgb2YgYWxsU3VibmV0cykge1xuICAgIGlmIChzdWJuZXQuaXB2NkNpZHJCbG9jaykge1xuICAgICAgY29uc3QgY2lkckJsb2NrID0gbmV3IENpZHJCbG9ja0lwdjYoc3VibmV0LmlwdjZDaWRyQmxvY2spO1xuICAgICAgaXB2Nk1hcC5wdXNoKGNpZHJCbG9jay5jaWRyKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IHJhbmdlIG9mIGlwdjZNYXApIHtcbiAgICBpZiAoaW5wdXRSYW5nZS5yYW5nZXNPdmVybGFwKHJhbmdlLCBpbnB1dFJhbmdlLmNpZHIpKSB7XG4gICAgICByZXN1bHQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
|
|
486
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibmV0LXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3VibmV0LXYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyRztBQU0zRyxpREFNNkI7QUFFN0IsNEVBQTREO0FBQzVELDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFHMUUsMkNBQXdEO0FBQ3hELG1DQUFxQztBQUNyQyxpQ0FBcUU7QUFVckU7O0dBRUc7QUFDSCxNQUFhLE1BQU07O0lBQ2pCOzs7T0FHRztJQUNhLElBQUksQ0FBUztJQUM3QixZQUFZLEtBQWE7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7S0FDbkI7O0FBUkgsd0JBU0M7QUFFRDs7R0FFRztBQUNILE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDO0FBRTdDOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUM7QUFpRzdDOzs7Ozs7Ozs7O0dBVUc7SUFFVSxRQUFROzRCQURwQixvQ0FBa0I7Ozs7c0JBQ1csc0JBQVE7Ozt3QkFBaEIsU0FBUSxXQUFROzs7OytDQStObkMsSUFBQSxrQ0FBYyxHQUFFO1lBQ2pCLDRNQUFPLG1CQUFtQiw2REFTekI7WUF6T0gsNktBeVBDOzs7OztRQXhQQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLGlDQUFpQyxDQUFDO1FBRXpGOztXQUVHO1FBQ0ksTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCOzs7Ozs7Ozs7O1lBQzFGOzs7ZUFHRztZQUNILE1BQU0sZ0JBQWlCLFNBQVEsc0JBQVE7Z0JBQ3JDOzttQkFFRztnQkFDYSxhQUFhLEdBQVksS0FBSyxDQUFDLGFBQWEsQ0FBQztnQkFFN0Q7O21CQUVHO2dCQUNhLFVBQVUsR0FBZ0IsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFFM0Q7O21CQUVHO2dCQUNhLGdCQUFn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Q0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGF6eSwgTmFtZXMsIFJlc291cmNlLCBUYWdzLCBUb2tlbiwgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHtcbiAgSU5ldHdvcmtBY2wsXG4gIElSb3V0ZVRhYmxlLFxuICBJU3VibmV0LFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7XG4gIENmblN1Ym5ldCxcbiAgQ2ZuU3VibmV0Um91dGVUYWJsZUFzc29jaWF0aW9uLFxuICBOZXR3b3JrQWNsLFxuICBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24sXG4gIFN1Ym5ldFR5cGUsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xudHlwZSBTdWJuZXRSZWZlcmVuY2UgPSBhd3NfZWMyLlN1Ym5ldFJlZmVyZW5jZTtcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgYXdzX2VjMiB9IGZyb20gJ2F3cy1jZGstbGliL2ludGVyZmFjZXMnO1xuaW1wb3J0IHR5cGUgeyBJRGVwZW5kYWJsZSB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBEZXBlbmRlbmN5R3JvdXAgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFJvdXRlVGFibGUgfSBmcm9tICcuL3JvdXRlJztcbmltcG9ydCB7IENpZHJCbG9jaywgQ2lkckJsb2NrSXB2NiwgZGVmYXVsdFN1Ym5ldE5hbWUgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBJVnBjVjIgfSBmcm9tICcuL3ZwYy12Mi1iYXNlJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gZGVmaW5lIHN1Ym5ldCBDSURSXG4gKi9cbmludGVyZmFjZSBJQ2lkciB7XG4gIHJlYWRvbmx5IGNpZHI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJUHY0IG9yIElQdjYgQ0lEUiByYW5nZSBmb3IgdGhlIHN1Ym5ldFxuICovXG5leHBvcnQgY2xhc3MgSXBDaWRyIGltcGxlbWVudHMgSUNpZHIge1xuICAvKipcbiAgICogSVB2NiBDSURSIHJhbmdlIGZvciB0aGUgc3VibmV0XG4gICAqIEFsbG93ZWQgb25seSBpZiBJUHY2IGlzIGVuYWJsZWQgb24gVlBjXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2lkcjogc3RyaW5nO1xuICBjb25zdHJ1Y3Rvcihwcm9wczogc3RyaW5nICkge1xuICAgIHRoaXMuY2lkciA9IHByb3BzO1xuICB9XG59XG5cbi8qKlxuICogVlBDIE5hbWUgdGFnIGNvbnN0YW50XG4gKi9cbmNvbnN0IFNVQk5FVFRZUEVfVEFHID0gJ2F3cy1jZGs6c3VibmV0LXR5cGUnO1xuXG4vKipcbiAqIFN1Ym5ldCBOYW1lIHRhZyBjb25zdGFudFxuICovXG5jb25zdCBTVUJORVROQU1FX1RBRyA9ICdhd3MtY2RrOnN1Ym5ldC1uYW1lJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBzdWJuZXQgZm9yIFZQQy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJuZXRWMlByb3BzIHtcbi8qKlxuICogVlBDIFByb3BcbiAqL1xuICByZWFkb25seSB2cGM6IElWcGNWMjtcblxuICAvKipcbiAgICogaXB2NCBjaWRyIHRvIGFzc2lnbiB0byB0aGlzIHN1Ym5ldC5cbiAgICogU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItc3VibmV0Lmh0bWwjY2ZuLWVjMi1zdWJuZXQtY2lkcmJsb2NrXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBJcENpZHI7XG5cbiAgLyoqXG4gICAqIElwdjYgQ0lEUiBSYW5nZSBmb3Igc3VibmV0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gSXB2NiBhZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBpcHY2Q2lkckJsb2NrPzogSXBDaWRyO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gQVogZm9yIHRoZSBzdWJuZXRcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFJvdXRlIGZvciBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGRlZmF1bHQgcm91dGUgdGFibGUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZT86IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBkZWZhdWx0IFJvdXRlVGFibGUgY3JlYXRlZCBieSBDREsgdG8gYmUgdXNlZCBmb3IgdGFnZ2luZ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgcm91dGUgdGFibGUgbmFtZSBjcmVhdGVkIGJ5IENESyBhcyAnRGVmYXVsdENES1JvdXRlVGFibGUnXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Um91dGVUYWJsZU5hbWUgPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBTdWJuZXQgdG8gY29uZmlndXJlLlxuICAgKlxuICAgKiBUaGUgU3VibmV0IHR5cGUgd2lsbCBjb250cm9sIHRoZSBhYmlsaXR5IHRvIHJvdXRlIGFuZCBjb25uZWN0IHRvIHRoZVxuICAgKiBJbnRlcm5ldC5cbiAgICpcbiAgICogVE9ETzogQWRkIHZhbGlkYXRpb24gY2hlY2sgYHN1Ym5ldFR5cGVgIHdoZW4gYWRkaW5nIHJlc291cmNlcyAoZS5nLiBjYW5ub3QgYWRkIE5hdEdhdGV3YXkgdG8gcHJpdmF0ZSlcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGU7XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aCBhbiBhdXRvZ2VuZXJhdGVkIG5hbWUgYnkgQ0RLXG4gICAqL1xuICByZWFkb25seSBzdWJuZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBhIG5ldHdvcmsgaW50ZXJmYWNlIGNyZWF0ZWQgaW4gdGhpcyBzdWJuZXQgcmVjZWl2ZXMgYW4gSVB2NiBhZGRyZXNzLlxuICAgKiBJZiB5b3Ugc3BlY2lmeSBBc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb24sIHlvdSBtdXN0IGFsc28gc3BlY2lmeSBJcHY2Q2lkckJsb2NrLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZCBpbiBjYXNlIG5vdCBwcm92aWRlZCBhcyBhbiBpbnB1dFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29udHJvbHMgaWYgaW5zdGFuY2VzIGxhdW5jaGVkIGludG8gdGhlIHN1Ym5ldCBzaG91bGQgYmUgYXNzaWduZWQgYSBwdWJsaWMgSVAgYWRkcmVzcy5cbiAgICogVGhpcyBwcm9wZXJ0eSBjYW4gb25seSBiZSBzZXQgZm9yIHB1YmxpYyBzdWJuZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZCBpbiBjYXNlIG5vdCBwcm92aWRlZCBhcyBhbiBpbnB1dFxuICAgKi9cbiAgcmVhZG9ubHkgbWFwUHVibGljSXBPbkxhdW5jaD86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2Ugd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIFN1Ym5ldFYyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN1Ym5ldFYyIGV4dGVuZHMgSVN1Ym5ldCB7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY2IENJRFIgYmxvY2sgZm9yIHRoaXMgc3VibmV0XG4gICAqL1xuICByZWFkb25seSBpcHY2Q2lkckJsb2NrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBzdWJuZXQgKHB1YmxpYyBvciBwcml2YXRlKSB0aGF0IHRoaXMgc3VibmV0IHJlcHJlc2VudHMuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGUgU3VibmV0VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGU7XG5cbn1cblxuLyoqXG4gKiBUaGUgU3VibmV0VjIgY2xhc3MgcmVwcmVzZW50cyBhIHN1Ym5ldCB3aXRoaW4gYSBWUEMgKFZpcnR1YWwgUHJpdmF0ZSBDbG91ZCkgaW4gQVdTLlxuICogSXQgZXh0ZW5kcyB0aGUgUmVzb3VyY2UgY2xhc3MgYW5kIGltcGxlbWVudHMgdGhlIElTdWJuZXQgaW50ZXJmYWNlLlxuICpcbiAqIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIHN1Ym5ldHMgd2l0aGluIGEgVnBjVjIgaW5zdGFuY2UuXG4gKiBTdWJuZXRzIGNhbiBiZSBjb25maWd1cmVkIHdpdGggc3BlY2lmaWMgSVAgYWRkcmVzcyByYW5nZXMgKElQdjQgYW5kIElQdjYpLCBhdmFpbGFiaWxpdHkgem9uZXMsXG4gKiBhbmQgc3VibmV0IHR5cGVzIChlLmcuLCBwdWJsaWMsIHByaXZhdGUsIGlzb2xhdGVkKS5cbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlN1Ym5ldFxuICpcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFN1Ym5ldFYyIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJU3VibmV0VjIge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1lYzItYWxwaGEuU3VibmV0VjInO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3Rpbmcgc3VibmV0IHRvIHRoZSBWUENcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVN1Ym5ldFYyQXR0cmlidXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogU3VibmV0VjJBdHRyaWJ1dGVzKSA6IElTdWJuZXRWMiB7XG4gICAgLyoqXG4gICAgICogQ2xhc3MgdG8gZGVmaW5lIGFuIGltcG9ydCBmb3IgYW4gZXhpc3Rpbmcgc3VibmV0XG4gICAgICogQHJlc291cmNlIEFXUzo6RUMyOjpTdWJuZXRcbiAgICAgKi9cbiAgICBjbGFzcyBJbXBvcnRlZFN1Ym5ldFYyIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJU3VibmV0VjIge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgSVB2NiBDSURSIEJsb2NrIGFzc2lnbmVkIHRvIHRoaXMgc3VibmV0XG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY2Q2lkckJsb2NrPzogc3RyaW5nID0gYXR0cnMuaXB2NkNpZHJCbG9jaztcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgdHlwZSBvZiBzdWJuZXQgKGVnLiBwdWJsaWMgb3IgcHJpdmF0ZSkgdGhhdCB0aGlzIHN1Ym5ldCByZXByZXNlbnRzLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGUgPSBhdHRycy5zdWJuZXRUeXBlO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSBpbiB3aGljaCBzdWJuZXQgaXMgbG9jYXRlZFxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nID0gYXR0cnMuYXZhaWxhYmlsaXR5Wm9uZTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICAgICAqIFJlZmVycyB0byB0aGUgcGh5c2ljYWwgSUQgY3JlYXRlZFxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0SWQ6IHN0cmluZyA9IGF0dHJzLnN1Ym5ldElkO1xuXG4gICAgICAvKipcbiAgICAgICAqIERlcGVuZGFibGUgdGhhdCBjYW4gYmUgZGVwZW5kZWQgdXBvbiB0byBmb3JjZSBpbnRlcm5ldCBjb25uZWN0aXZpdHkgZXN0YWJsaXNoZWQgb24gdGhlIFZQQ1xuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDogSURlcGVuZGFibGUgPSBuZXcgRGVwZW5kZW5jeUdyb3VwKCk7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIElQdjQgQ0lEUiBibG9jayBhc3NpZ25lZCB0byB0aGlzIHN1Ym5ldFxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nID0gYXR0cnMuaXB2NENpZHJCbG9jaztcblxuICAgICAgLyoqXG4gICAgICAgKiAgQ3VycmVudCByb3V0ZSB0YWJsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdWJuZXRcbiAgICAgICAqL1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJvdXRlVGFibGU6IElSb3V0ZVRhYmxlID0geyByb3V0ZVRhYmxlSWQ6IGF0dHJzLnJvdXRlVGFibGVJZCEgfTtcblxuICAgICAgcHVibGljIGdldCBzdWJuZXRSZWYoKTogU3VibmV0UmVmZXJlbmNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWJuZXRJZDogdGhpcy5zdWJuZXRJZCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBBc3NvY2lhdGUgYSBOZXR3b3JrIEFDTCB3aXRoIHRoaXMgc3VibmV0XG4gICAgICAgKiBSZXF1aXJlZCBoZXJlIHNpbmNlIGl0IGlzIGltcGxlbWVudGVkIGluIHRoZSBJU3VibmV0VjJcbiAgICAgICAqL1xuICAgICAgcHVibGljIGFzc29jaWF0ZU5ldHdvcmtBY2woYWNsSWQ6IHN0cmluZywgbmV0d29ya0FjbDogSU5ldHdvcmtBY2wpIHtcbiAgICAgICAgY29uc3QgYWNsU2NvcGUgPSBuZXR3b3JrQWNsIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gbmV0d29ya0FjbCA6IHRoaXM7XG4gICAgICAgIGNvbnN0IG90aGVyID0gbmV0d29ya0FjbCBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IHRoaXMgOiBuZXR3b3JrQWNsO1xuICAgICAgICBuZXcgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uKGFjbFNjb3BlLCBhY2xJZCArIE5hbWVzLm5vZGVVbmlxdWVJZChvdGhlci5ub2RlKSwge1xuICAgICAgICAgIG5ldHdvcmtBY2wsXG4gICAgICAgICAgc3VibmV0OiB0aGlzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZFN1Ym5ldFYyKHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIHRoZSBzdWJuZXQgaXMgbG9jYXRlZCBpblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1Ym5ldElkIGZvciB0aGlzIHBhcnRpY3VsYXIgc3VibmV0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAgRGVwZW5kZW5jaWVzIGZvciBpbnRlcm5ldCBjb25uZWN0aXZpdHlcbiAgICogVGhpcyBQcm9wZXJ0eSBleHBvc2VzIHRoZSBSb3V0ZVRhYmxlLVN1Ym5ldCBhc3NvY2lhdGlvbiBzbyB0aGF0IG90aGVyIHJlc291cmNlcyBjYW4gZGVwZW5kIG9uIGl0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IElEZXBlbmRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFibGUgbmFtZSBgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZGAgZG9lcyBub3QgcmVmbGVjdCB3aGF0IGl0IGFjdHVhbGx5IGlzLlxuICAgKiBUaGUgbmFtaW5nIGlzIGVuZm9yY2VkIGJ5IElTdWJuZXQuIFdlIG5lZWQgdG8ga2VlcCBpdCB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5LlxuICAgKiBJdCBleHBvc2VzIHRoZSBSb3V0ZVRhYmxlLVN1Ym5ldCBhc3NvY2lhdGlvbiBzbyB0aGF0IG90aGVyIHJlc291cmNlcyBjYW4gZGVwZW5kIG9uIGl0LlxuICAgKiBFLmcuIFJlc291cmNlcyBpbiBhIHN1Ym5ldCwgd2hlbiBiZWluZyBkZWxldGVkLCBtYXkgbmVlZCB0aGUgUm91dGVUYWJsZSB0byBleGlzdCBpbiBvcmRlciB0byBkZWxldGUgcHJvcGVybHlcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSBuZXcgRGVwZW5kZW5jeUdyb3VwKCk7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IENJRFIgYmxvY2sgZm9yIHRoaXMgc3VibmV0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NiBDSURSIEJsb2NrIGZvciB0aGlzIHN1Ym5ldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBzdHJpbmc7XG5cbiAgcHVibGljIGdldCBzdWJuZXRSZWYoKTogU3VibmV0UmVmZXJlbmNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VibmV0SWQ6IHRoaXMuc3VibmV0SWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBzdWJuZXQgKHB1YmxpYyBvciBwcml2YXRlKSB0aGF0IHRoaXMgc3VibmV0IHJlcHJlc2VudHMuXG4gICAqIEBhdHRyaWJ1dGUgU3VibmV0VHlwZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldFR5cGU/OiBTdWJuZXRUeXBlO1xuXG4gIHByaXZhdGUgX25ldHdvcmtBY2w6IElOZXR3b3JrQWNsO1xuXG4gIHByaXZhdGUgX3JvdXRlVGFibGU6IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IFN1Ym5ldFYyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBDb25zdHJ1Y3QgdGhhdCB0aGlzIHJlc291cmNlIHdpbGwgYmUgcGFydCBvZi5cbiAgICogQHBhcmFtIGlkIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyByZXNvdXJjZS5cbiAgICogQHBhcmFtIHByb3BzIFRoZSBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBzdWJuZXQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3VibmV0VjJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy5zdWJuZXROYW1lID8/IExhenkuc3RyaW5nKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiAxMjgsIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogJ18nIH0pLFxuICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBjb25zdCBpcHY0Q2lkckJsb2NrID0gcHJvcHMuaXB2NENpZHJCbG9jay5jaWRyO1xuICAgIGNvbnN0IGlwdjZDaWRyQmxvY2sgPSBwcm9wcy5pcHY2Q2lkckJsb2NrPy5jaWRyO1xuXG4gICAgaWYgKCFjaGVja0NpZHJSYW5nZXMocHJvcHMudnBjLCBwcm9wcy5pcHY0Q2lkckJsb2NrLmNpZHIpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBDaWRyQmxvY2tPdXRzaWRlVnBjUmFuZ2VgLCAnQ0lEUiBibG9jayBzaG91bGQgYmUgd2l0aGluIHRoZSByYW5nZSBvZiBWUEMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBsZXQgb3ZlcmxhcDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGxldCBvdmVybGFwSXB2NjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuaXB2NENpZHJCbG9jaykpIHtcbiAgICAgIG92ZXJsYXAgPSB2YWxpZGF0ZU92ZXJsYXBwaW5nQ2lkclJhbmdlcyhwcm9wcy52cGMsIHByb3BzLmlwdjRDaWRyQmxvY2suY2lkcik7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgd2hldGhlciBWUEMgc3VwcG9ydHMgaXB2NlxuICAgIGlmIChwcm9wcy5pcHY2Q2lkckJsb2NrPy5jaWRyICYmICFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuaXB2NkNpZHJCbG9jaz8uY2lkcikpIHtcbiAgICAgIHZhbGlkYXRlU3VwcG9ydElwdjYocHJvcHMudnBjKTtcbiAgICAgIG92ZXJsYXBJcHY2ID0gdmFsaWRhdGVPdmVybGFwcGluZ0NpZHJSYW5nZXNpcHY2KHByb3BzLnZwYywgcHJvcHMuaXB2NkNpZHJCbG9jaz8uY2lkcik7XG4gICAgfVxuXG4gICAgaWYgKG92ZXJsYXAgfHwgb3ZlcmxhcElwdjYpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YENpZHJCbG9ja092ZXJsYXBzV2l0aEV4aXN0aW5nU3VibmV0c2AsICdDSURSIGJsb2NrIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBibG9ja3MnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uICYmICFwcm9wcy5pcHY2Q2lkckJsb2NrKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBJcHY2Q2lkckJsb2NrUmVxdWlyZWRGb3JJcHY2QXNzaWdubWVudGAsICdJUHY2IENJRFIgYmxvY2sgaXMgcmVxdWlyZWQgd2hlbiBhc3NpZ25pbmcgSVB2NiBhZGRyZXNzIG9uIGNyZWF0aW9uJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm1hcFB1YmxpY0lwT25MYXVuY2ggPT09IHRydWUgJiYgcHJvcHMuc3VibmV0VHlwZSAhPT0gU3VibmV0VHlwZS5QVUJMSUMpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YE1hcFB1YmxpY0lwT25MYXVuY2hPbmx5Rm9yUHVibGljU3VibmV0c2AsICdtYXBQdWJsaWNJcE9uTGF1bmNoIGNhbiBvbmx5IGJlIHNldCB0byB0cnVlIGZvciBwdWJsaWMgc3VibmV0cycsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHN1Ym5ldCA9IG5ldyBDZm5TdWJuZXQodGhpcywgJ1N1Ym5ldCcsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy52cGMudnBjSWQsXG4gICAgICBjaWRyQmxvY2s6IGlwdjRDaWRyQmxvY2ssXG4gICAgICBpcHY2Q2lkckJsb2NrOiBpcHY2Q2lkckJsb2NrLFxuICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgIGFzc2lnbklwdjZBZGRyZXNzT25DcmVhdGlvbjogcHJvcHMuYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uLFxuICAgICAgbWFwUHVibGljSXBPbkxhdW5jaDogcHJvcHMubWFwUHVibGljSXBPbkxhdW5jaCxcbiAgICB9KTtcblxuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSBzdWJuZXQ7XG4gICAgdGhpcy5pcHY0Q2lkckJsb2NrID0gcHJvcHMuaXB2NENpZHJCbG9jay5jaWRyO1xuICAgIHRoaXMuaXB2NkNpZHJCbG9jayA9IHByb3BzLmlwdjZDaWRyQmxvY2s/LmNpZHI7XG4gICAgdGhpcy5zdWJuZXRJZCA9IHN1Ym5ldC5yZWY7XG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lID0gcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZTtcblxuICAgIHRoaXMuX25ldHdvcmtBY2wgPSBOZXR3b3JrQWNsLmZyb21OZXR3b3JrQWNsSWQodGhpcywgJ0FjbCcsIHN1Ym5ldC5hdHRyTmV0d29ya0FjbEFzc29jaWF0aW9uSWQpO1xuXG4gICAgY29uc3QgaW5jbHVkZVJlc291cmNlVHlwZXMgPSBbQ2ZuU3VibmV0LkNGTl9SRVNPVVJDRV9UWVBFX05BTUVdO1xuICAgIGlmIChwcm9wcy5zdWJuZXROYW1lKSB7XG4gICAgICBUYWdzLm9mKHN1Ym5ldCkuYWRkKFNVQk5FVE5BTUVfVEFHLCBwcm9wcy5zdWJuZXROYW1lKTtcbiAgICB9XG4gICAgY29uc3Qgc3VibmV0VHlwZU5hbWUgPSBkZWZhdWx0U3VibmV0TmFtZShwcm9wcy5zdWJuZXRUeXBlKSA/PyAndW5kZWZpbmVkJztcbiAgICBUYWdzLm9mKHN1Ym5ldCkuYWRkKFNVQk5FVFRZUEVfVEFHLCBzdWJuZXRUeXBlTmFtZSwgeyBpbmNsdWRlUmVzb3VyY2VUeXBlcyB9KTtcblxuICAgIGlmIChwcm9wcy5yb3V0ZVRhYmxlKSB7XG4gICAgICB0aGlzLl9yb3V0ZVRhYmxlID0gcHJvcHMucm91dGVUYWJsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXNzaWduaW5nIGEgZGVmYXVsdCByb3V0ZSB0YWJsZVxuICAgICAgdGhpcy5fcm91dGVUYWJsZSA9IG5ldyBSb3V0ZVRhYmxlKHRoaXMsICdSb3V0ZVRhYmxlJywge1xuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgcm91dGVUYWJsZU5hbWU6IHByb3BzLmRlZmF1bHRSb3V0ZVRhYmxlTmFtZSA/PyAnRGVmYXVsdENES1JvdXRlVGFibGUnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91dGVBc3NvYyA9IG5ldyBDZm5TdWJuZXRSb3V0ZVRhYmxlQXNzb2NpYXRpb24odGhpcywgJ1JvdXRlVGFibGVBc3NvY2lhdGlvbicsIHtcbiAgICAgIHN1Ym5ldElkOiB0aGlzLnN1Ym5ldElkLFxuICAgICAgcm91dGVUYWJsZUlkOiB0aGlzLnJvdXRlVGFibGUucm91dGVUYWJsZUlkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5faW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZC5hZGQocm91dGVBc3NvYyk7XG5cbiAgICB0aGlzLmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkO1xuXG4gICAgdGhpcy5zdWJuZXRUeXBlID0gcHJvcHMuc3VibmV0VHlwZTtcbiAgICBzdG9yZVN1Ym5ldFRvVnBjQnlUeXBlKHByb3BzLnZwYywgdGhpcywgcHJvcHMuc3VibmV0VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogQXNzb2NpYXRlIGEgTmV0d29yayBBQ0wgd2l0aCB0aGlzIHN1Ym5ldFxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGFzc29jaWF0aW9uLlxuICAgKiBAcGFyYW0gbmV0d29ya0FjbCBUaGUgTmV0d29yayBBQ0wgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBzdWJuZXQuXG4gICAqIFRoaXMgYWxsb3dzIGNvbnRyb2xsaW5nIGluYm91bmQgYW5kIG91dGJvdW5kIHRyYWZmaWMgZm9yIGluc3RhbmNlcyBpbiB0aGlzIHN1Ym5ldC5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhc3NvY2lhdGVOZXR3b3JrQWNsKGlkOiBzdHJpbmcsIG5ldHdvcmtBY2w6IElOZXR3b3JrQWNsKSB7XG4gICAgdGhpcy5fbmV0d29ya0FjbCA9IG5ldHdvcmtBY2w7XG5cbiAgICBjb25zdCBzY29wZSA9IG5ldHdvcmtBY2wgaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyBuZXR3b3JrQWNsIDogdGhpcztcbiAgICBjb25zdCBvdGhlciA9IG5ldHdvcmtBY2wgaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyB0aGlzIDogbmV0d29ya0FjbDtcbiAgICBuZXcgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uKHNjb3BlLCBpZCArIE5hbWVzLm5vZGVVbmlxdWVJZChvdGhlci5ub2RlKSwge1xuICAgICAgbmV0d29ya0FjbCxcbiAgICAgIHN1Ym5ldDogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIFJvdXRlIFRhYmxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN1Ym5ldFxuICAgKi9cbiAgcHVibGljIGdldCByb3V0ZVRhYmxlKCk6IElSb3V0ZVRhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5fcm91dGVUYWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBOZXR3b3JrIEFDTCBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdWJuZXQuXG4gICAqL1xuXG4gIHB1YmxpYyBnZXQgbmV0d29ya0FjbCgpOiBJTmV0d29ya0FjbCB7XG4gICAgcmV0dXJuIHRoaXMuX25ldHdvcmtBY2w7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIGltcG9ydCBhIHN1Ym5ldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldFYyQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgdGhpcyBzdWJuZXQgaXMgbG9jYXRlZCBpblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIEFaIGluZm9ybWF0aW9uLCBjYW5ub3QgdXNlIEFaIHNlbGVjdGlvbiBmZWF0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBDSURSIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3VibmV0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gQ0lEUiBpbmZvcm1hdGlvbiwgY2Fubm90IHVzZSBDSURSIGZpbHRlciBmZWF0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBDSURSIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3VibmV0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gQ0lEUiBpbmZvcm1hdGlvbiwgY2Fubm90IHVzZSBDSURSIGZpbHRlciBmZWF0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NkNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHJvdXRlIHRhYmxlIGluZm9ybWF0aW9uLCBjYW5ub3QgY3JlYXRlIFZQQyBlbmRwb2ludHNcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGVJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1Ym5ldElkIGZvciB0aGlzIHBhcnRpY3VsYXIgc3VibmV0XG4gICAqL1xuICByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBzdWJuZXQgKHB1YmxpYyBvciBwcml2YXRlKSB0aGF0IHRoaXMgc3VibmV0IHJlcHJlc2VudHMuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBnaXZlbiBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzdWJuZXQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0TmFtZT86IHN0cmluZztcblxufVxuXG50eXBlIERlcHJlY2F0ZWRTdWJuZXRUeXBlID0gJ0RlcHJlY2F0ZWRfSXNvbGF0ZWQnIHwgJ0RlcHJlY2F0ZWRfUHJpdmF0ZSc7XG5jb25zdCBzdWJuZXRUeXBlTWFwOiB7IFtrZXkgaW4gU3VibmV0VHlwZSB8IERlcHJlY2F0ZWRTdWJuZXRUeXBlXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2b2lkIH0gPSB7XG4gIFtTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURURdOiAodnBjOiBJVnBjVjIsIHN1Ym5ldDogU3VibmV0VjIpID0+IHZwYy5pc29sYXRlZFN1Ym5ldHMucHVzaChzdWJuZXQpLFxuICBbU3VibmV0VHlwZS5QVUJMSUNdOiAodnBjOiBJVnBjVjIsIHN1Ym5ldDogU3VibmV0VjIpID0+IHZwYy5wdWJsaWNTdWJuZXRzLnB1c2goc3VibmV0KSxcbiAgW1N1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnByaXZhdGVTdWJuZXRzLnB1c2goc3VibmV0KSxcbiAgWydEZXByZWNhdGVkX0lzb2xhdGVkJ106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLmlzb2xhdGVkU3VibmV0cy5wdXNoKHN1Ym5ldCksXG4gIFsnRGVwcmVjYXRlZF9Qcml2YXRlJ106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnByaXZhdGVTdWJuZXRzLnB1c2goc3VibmV0KSxcbiAgW1N1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX05BVF06ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnByaXZhdGVTdWJuZXRzLnB1c2goc3VibmV0KSxcbn07XG5cbi8qKlxuICogU3RvcmVzIHRoZSBwcm92aWRlZCBzdWJuZXQgaW4gdGhlIFZQQydzIGNvbGxlY3Rpb24gb2Ygc3VibmV0cyBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHN1Ym5ldCB0eXBlLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byB3aGljaCB0aGUgc3VibmV0IGJlbG9uZ3MuXG4gKiBAcGFyYW0gc3VibmV0IFRoZSBzdWJuZXQgaW5zdGFuY2UgdG8gYmUgc3RvcmVkLlxuICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgdGhlIHN1Ym5ldCAoZS5nLiwgcHVibGljLCBwcml2YXRlLCBpc29sYXRlZCkuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gc3RvcmVTdWJuZXRUb1ZwY0J5VHlwZSh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMiwgdHlwZTogU3VibmV0VHlwZSkge1xuICBjb25zdCBmaW5kRnVuY3Rpb25UeXBlID0gc3VibmV0VHlwZU1hcFt0eXBlXTtcbiAgaWYgKGZpbmRGdW5jdGlvblR5cGUpIHtcbiAgICBmaW5kRnVuY3Rpb25UeXBlKHZwYywgc3VibmV0KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YFVuc3VwcG9ydGVkU3VibmV0VHlwZWAsIGBVbnN1cHBvcnRlZCBzdWJuZXQgdHlwZTogJHt0eXBlfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIE5lZWQgdG8gc2V0IGV4cGxpY2l0IGRlcGVuZGVuY3kgYXMgZHVyaW5nIHN0YWNrIGRlbGV0aW9uLFxuICAgKiB0aGUgY2lkciBibG9ja3MgbWF5IGdldCBkZWxldGVkIGZpcnN0IGFuZCB3aWxsIGZhaWwgYXMgdGhlIHN1Ym5ldHMgYXJlIHN0aWxsIHVzaW5nIHRoZSBjaWRyIGJsb2Nrc1xuICAgKi9cbiAgaWYgKHZwYy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICBmb3IgKGNvbnN0IGNpZHIgb2YgdnBjLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgICAgc3VibmV0Lm5vZGUuYWRkRGVwZW5kZW5jeShjaWRyKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgd2hldGhlciB0aGUgcHJvdmlkZWQgVlBDIHN1cHBvcnRzIElQdjYgYWRkcmVzc2VzLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiB0aGUgVlBDIGRvZXMgbm90IHN1cHBvcnQgSVB2NiBhZGRyZXNzZXMuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBWUEMgc3VwcG9ydHMgSVB2NiBhZGRyZXNzZXMsIGZhbHNlIG90aGVyd2lzZS5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVN1cHBvcnRJcHY2KHZwYzogSVZwY1YyKSB7XG4gIGlmICh2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgaWYgKHZwYy5zZWNvbmRhcnlDaWRyQmxvY2suc29tZSgoc2Vjb25kYXJ5QWRkcmVzcykgPT4gc2Vjb25kYXJ5QWRkcmVzcy5hbWF6b25Qcm92aWRlZElwdjZDaWRyQmxvY2sgPT09IHRydWUgfHxcbiAgc2Vjb25kYXJ5QWRkcmVzcy5pcHY2SXBhbVBvb2xJZCAhPT0gdW5kZWZpbmVkIHx8IHNlY29uZGFyeUFkZHJlc3MuaXB2NlBvb2wgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YElwdjZOb3RTdXBwb3J0ZWRgLCAnVG8gdXNlIElQdjYsIHRoZSBWUEMgbXVzdCBlbmFibGUgSVB2NiBzdXBwb3J0LicpO1xuICAgIH1cbiAgfSBlbHNlIHtyZXR1cm4gZmFsc2U7fVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgcHJvdmlkZWQgQ0lEUiByYW5nZSBmYWxscyB3aXRoaW4gdGhlIElQIGFkZHJlc3MgcmFuZ2VzIG9mIHRoZSBnaXZlbiBWUEMuXG4gKlxuICogQHBhcmFtIHZwYyBUaGUgVlBDIGluc3RhbmNlIHRvIGNoZWNrIGFnYWluc3QuXG4gKiBAcGFyYW0gY2lkclJhbmdlIFRoZSBDSURSIHJhbmdlIHRvIGJlIGNoZWNrZWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBDSURSIHJhbmdlIGZhbGxzIHdpdGhpbiB0aGUgVlBDJ3MgSVAgYWRkcmVzcyByYW5nZXMsIGZhbHNlIG90aGVyd2lzZS5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBjaGVja0NpZHJSYW5nZXModnBjOiBJVnBjVjIsIGNpZHJSYW5nZTogc3RyaW5nKSB7XG4gIGNvbnN0IHZwY0NpZHJCbG9jayA9IFt2cGMuaXB2NENpZHJCbG9ja107XG4gIGNvbnN0IHN1Ym5ldENpZHJCbG9jayA9IG5ldyBDaWRyQmxvY2soY2lkclJhbmdlKTtcbiAgY29uc3QgYWxsQ2lkcnM6IENpZHJCbG9ja1tdID0gW107XG5cbiAgLy8gU2Vjb25kYXJ5IElQIGFkZHJlc3NlcyBhc3NvY2lhdGVkIHVzaW5nIHVzZXIgZGVmaW5lZCBJUHY0IHJhbmdlXG4gIGlmICh2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgZm9yIChjb25zdCBpcEFkZHJlc3Mgb2YgdnBjLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgICAgaWYgKGlwQWRkcmVzcy5jaWRyQmxvY2spIHtcbiAgICAgICAgdnBjQ2lkckJsb2NrLnB1c2goaXBBZGRyZXNzLmNpZHJCbG9jayk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNpZHJzID0gdnBjQ2lkckJsb2NrLm1hcChjaWRyID0+IG5ldyBDaWRyQmxvY2soY2lkcikpO1xuICAgIGFsbENpZHJzLnB1c2goLi4uY2lkcnMpO1xuICB9XG5cbiAgLy8gU2Vjb25kYXJ5IElQIGFkZHJlc3NlcyBhc3NvY2lhdGVkIHVzaW5nIElQQU0gSVB2NCByYW5nZVxuICBpZiAodnBjLmlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycykge1xuICAgIGNvbnN0IGNpZHJzID0gdnBjLmlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycy5tYXAoY2lkciA9PiBuZXcgQ2lkckJsb2NrKGNpZHIpKTtcbiAgICBhbGxDaWRycy5wdXNoKC4uLmNpZHJzKTtcbiAgfVxuXG4gIC8vIElmIG5vIElQdjQgaXMgYXNzaWduZWQgYXMgc2Vjb25kYXJ5IGFkZHJlc3NcbiAgaWYgKGFsbENpZHJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgTm9TZWNvbmRhcnlJcEFkZHJlc3NgLCAnTm8gc2Vjb25kYXJ5IElQIGFkZHJlc3MgYXR0YWNoZWQgdG8gVlBDJyk7XG4gIH1cblxuICByZXR1cm4gYWxsQ2lkcnMuc29tZShjID0+IGMuY29udGFpbnNDaWRyKHN1Ym5ldENpZHJCbG9jaykpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBpZiB0aGUgcHJvdmlkZWQgSVB2NCBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZXhpc3Rpbmcgc3VibmV0IENJRFIgYmxvY2tzIHdpdGhpbiB0aGUgZ2l2ZW4gVlBDLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byBjaGVjayBhZ2FpbnN0LlxuICogQHBhcmFtIGlwdjRDaWRyQmxvY2sgVGhlIElQdjQgQ0lEUiBibG9jayB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBJUHY0IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBleGlzdGluZyBzdWJuZXQgQ0lEUiBibG9ja3MsIGZhbHNlIG90aGVyd2lzZS5cbiAqIEBpbnRlcm5hbFxuICovXG5cbmZ1bmN0aW9uIHZhbGlkYXRlT3ZlcmxhcHBpbmdDaWRyUmFuZ2VzKHZwYzogSVZwY1YyLCBpcHY0Q2lkckJsb2NrOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IGFsbFN1Ym5ldHM6IElTdWJuZXRWMltdO1xuICB0cnkge1xuICAgIGFsbFN1Ym5ldHMgPSB2cGMuc2VsZWN0U3VibmV0cygpLnN1Ym5ldHM7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAnTm8gc3VibmV0cyBpbiBWUEMnO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGlwTWFwOiBbc3RyaW5nLCBzdHJpbmddW10gPSBuZXcgQXJyYXkoKTtcblxuICBjb25zdCBpbnB1dFJhbmdlID0gbmV3IENpZHJCbG9jayhpcHY0Q2lkckJsb2NrKTtcblxuICBjb25zdCBpbnB1dElwTWFwOiBbc3RyaW5nLCBzdHJpbmddID0gW2lucHV0UmFuZ2UubWluSXAoKSwgaW5wdXRSYW5nZS5tYXhJcCgpXTtcblxuICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBhbGxTdWJuZXRzKSB7XG4gICAgY29uc3QgY2lkckJsb2NrID0gbmV3IENpZHJCbG9jayhzdWJuZXQuaXB2NENpZHJCbG9jayk7XG4gICAgaXBNYXAucHVzaChbY2lkckJsb2NrLm1pbklwKCksIGNpZHJCbG9jay5tYXhJcCgpXSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHJhbmdlIG9mIGlwTWFwKSB7XG4gICAgaWYgKGlucHV0UmFuZ2UucmFuZ2VzT3ZlcmxhcChyYW5nZSwgaW5wdXRJcE1hcCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgaWYgdGhlIHByb3ZpZGVkIElQdjYgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBDSURSIGJsb2NrcyB3aXRoaW4gdGhlIGdpdmVuIFZQQy5cbiAqXG4gKiBAcGFyYW0gdnBjIFRoZSBWUEMgaW5zdGFuY2UgdG8gY2hlY2sgYWdhaW5zdC5cbiAqIEBwYXJhbSBpcHY2Q2lkckJsb2NrIFRoZSBJUHY2IENJRFIgYmxvY2sgdG8gYmUgdmFsaWRhdGVkLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgSVB2NiBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZXhpc3Rpbmcgc3VibmV0IENJRFIgYmxvY2tzLCBmYWxzZSBvdGhlcndpc2UuXG4gKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiBubyBzdWJuZXRzIGFyZSBmb3VuZCBpbiB0aGUgVlBDLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlT3ZlcmxhcHBpbmdDaWRyUmFuZ2VzaXB2Nih2cGM6IElWcGNWMiwgaXB2NkNpZHJCbG9jazogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGxldCBhbGxTdWJuZXRzOiBJU3VibmV0VjJbXTtcbiAgdHJ5IHtcbiAgICBhbGxTdWJuZXRzID0gdnBjLnNlbGVjdFN1Ym5ldHMoKS5zdWJuZXRzO1xuICB9IGNhdGNoIChlKSB7XG4gICAgJ05vIHN1Ym5ldHMgaW4gVlBDJztcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBpcHY2TWFwOiBzdHJpbmdbXT0gW107XG5cbiAgY29uc3QgaW5wdXRSYW5nZSA9IG5ldyBDaWRyQmxvY2tJcHY2KGlwdjZDaWRyQmxvY2spO1xuXG4gIGxldCByZXN1bHQgOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBzdWJuZXQgb2YgYWxsU3VibmV0cykge1xuICAgIGlmIChzdWJuZXQuaXB2NkNpZHJCbG9jaykge1xuICAgICAgY29uc3QgY2lkckJsb2NrID0gbmV3IENpZHJCbG9ja0lwdjYoc3VibmV0LmlwdjZDaWRyQmxvY2spO1xuICAgICAgaXB2Nk1hcC5wdXNoKGNpZHJCbG9jay5jaWRyKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IHJhbmdlIG9mIGlwdjZNYXApIHtcbiAgICBpZiAoaW5wdXRSYW5nZS5yYW5nZXNPdmVybGFwKHJhbmdlLCBpbnB1dFJhbmdlLmNpZHIpKSB7XG4gICAgICByZXN1bHQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
|
|
@@ -60,7 +60,7 @@ let TransitGatewayRouteTableAssociation = (() => {
|
|
|
60
60
|
TransitGatewayRouteTableAssociation = _classThis = _classDescriptor.value;
|
|
61
61
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
62
62
|
}
|
|
63
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayRouteTableAssociation", version: "2.
|
|
63
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayRouteTableAssociation", version: "2.262.0-alpha.0" };
|
|
64
64
|
/** Uniquely identifies this class. */
|
|
65
65
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.TransitGatewayRouteTableAssociation';
|
|
66
66
|
/**
|
|
@@ -60,7 +60,7 @@ let TransitGatewayRouteTablePropagation = (() => {
|
|
|
60
60
|
TransitGatewayRouteTablePropagation = _classThis = _classDescriptor.value;
|
|
61
61
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
62
62
|
}
|
|
63
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayRouteTablePropagation", version: "2.
|
|
63
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayRouteTablePropagation", version: "2.262.0-alpha.0" };
|
|
64
64
|
/** Uniquely identifies this class. */
|
|
65
65
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.TransitGatewayRouteTablePropagation';
|
|
66
66
|
/**
|
|
@@ -94,7 +94,7 @@ let TransitGatewayRouteTable = (() => {
|
|
|
94
94
|
TransitGatewayRouteTable = _classThis = _classDescriptor.value;
|
|
95
95
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
96
96
|
}
|
|
97
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayRouteTable", version: "2.
|
|
97
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayRouteTable", version: "2.262.0-alpha.0" };
|
|
98
98
|
/** Uniquely identifies this class. */
|
|
99
99
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.TransitGatewayRouteTable';
|
|
100
100
|
routeTableId;
|
|
@@ -66,7 +66,7 @@ let TransitGatewayRoute = (() => {
|
|
|
66
66
|
TransitGatewayRoute = _classThis = _classDescriptor.value;
|
|
67
67
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
68
68
|
}
|
|
69
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayRoute", version: "2.
|
|
69
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayRoute", version: "2.262.0-alpha.0" };
|
|
70
70
|
/** Uniquely identifies this class. */
|
|
71
71
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.TransitGatewayRoute';
|
|
72
72
|
routeTable;
|
|
@@ -124,7 +124,7 @@ let TransitGatewayBlackholeRoute = (() => {
|
|
|
124
124
|
TransitGatewayBlackholeRoute = _classThis = _classDescriptor.value;
|
|
125
125
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
126
126
|
}
|
|
127
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayBlackholeRoute", version: "2.
|
|
127
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayBlackholeRoute", version: "2.262.0-alpha.0" };
|
|
128
128
|
/** Uniquely identifies this class. */
|
|
129
129
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.TransitGatewayBlackholeRoute';
|
|
130
130
|
routeTable;
|
|
@@ -64,7 +64,7 @@ let TransitGatewayVpcAttachment = (() => {
|
|
|
64
64
|
TransitGatewayVpcAttachment = _classThis = _classDescriptor.value;
|
|
65
65
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
66
66
|
}
|
|
67
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayVpcAttachment", version: "2.
|
|
67
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayVpcAttachment", version: "2.262.0-alpha.0" };
|
|
68
68
|
/** Uniquely identifies this class. */
|
|
69
69
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.TransitGatewayVpcAttachment';
|
|
70
70
|
transitGatewayAttachmentId;
|
package/lib/transit-gateway.js
CHANGED
|
@@ -148,7 +148,7 @@ let TransitGateway = (() => {
|
|
|
148
148
|
TransitGateway = _classThis = _classDescriptor.value;
|
|
149
149
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
150
150
|
}
|
|
151
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGateway", version: "2.
|
|
151
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGateway", version: "2.262.0-alpha.0" };
|
|
152
152
|
/** Uniquely identifies this class. */
|
|
153
153
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.TransitGateway';
|
|
154
154
|
routerType;
|
package/lib/vpc-v2-base.js
CHANGED
|
@@ -16,7 +16,7 @@ const util_1 = require("./util");
|
|
|
16
16
|
* For more information, see the {@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.Vpc.html|AWS CDK Documentation on VPCs}.
|
|
17
17
|
*/
|
|
18
18
|
class VpcV2Base extends aws_cdk_lib_1.Resource {
|
|
19
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2Base", version: "2.
|
|
19
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2Base", version: "2.262.0-alpha.0" };
|
|
20
20
|
/**
|
|
21
21
|
* List of public subnets in this VPC
|
|
22
22
|
*/
|
package/lib/vpc-v2.js
CHANGED
|
@@ -49,7 +49,7 @@ const vpc_v2_base_1 = require("./vpc-v2-base");
|
|
|
49
49
|
* IpAddress options to define VPC V2
|
|
50
50
|
*/
|
|
51
51
|
class IpAddresses {
|
|
52
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.IpAddresses", version: "2.
|
|
52
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.IpAddresses", version: "2.262.0-alpha.0" };
|
|
53
53
|
/**
|
|
54
54
|
* An IPv4 CIDR Range
|
|
55
55
|
*/
|
|
@@ -152,7 +152,7 @@ let VpcV2 = (() => {
|
|
|
152
152
|
VpcV2 = _classThis = _classDescriptor.value;
|
|
153
153
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
154
154
|
}
|
|
155
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2", version: "2.
|
|
155
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2", version: "2.262.0-alpha.0" };
|
|
156
156
|
/** Uniquely identifies this class. */
|
|
157
157
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.VpcV2';
|
|
158
158
|
/**
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-ec2-alpha",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.262.0-alpha.0",
|
|
5
5
|
"description": "The CDK construct library for VPC V2",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -78,17 +78,17 @@
|
|
|
78
78
|
},
|
|
79
79
|
"license": "Apache-2.0",
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
82
|
-
"@aws-cdk/integ-runner": "^2.
|
|
83
|
-
"@aws-cdk/integ-tests-alpha": "^2.
|
|
84
|
-
"@aws-cdk/pkglint": "2.
|
|
81
|
+
"@aws-cdk/cdk-build-tools": "2.262.0-alpha.0",
|
|
82
|
+
"@aws-cdk/integ-runner": "^2.202.3",
|
|
83
|
+
"@aws-cdk/integ-tests-alpha": "^2.262.0-alpha.0",
|
|
84
|
+
"@aws-cdk/pkglint": "2.262.0-alpha.0",
|
|
85
85
|
"@types/jest": "^29.5.14",
|
|
86
|
-
"aws-cdk-lib": "2.
|
|
86
|
+
"aws-cdk-lib": "2.262.0",
|
|
87
87
|
"jest": "^29.7.0"
|
|
88
88
|
},
|
|
89
89
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
90
90
|
"peerDependencies": {
|
|
91
|
-
"aws-cdk-lib": "^2.
|
|
91
|
+
"aws-cdk-lib": "^2.262.0",
|
|
92
92
|
"constructs": "^10.5.0"
|
|
93
93
|
},
|
|
94
94
|
"separate-module": false,
|