@aws-cdk/aws-s3tables-alpha 2.245.0-alpha.0 → 2.246.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 +4 -4
- package/.jsii.tabl.json.gz +0 -0
- package/lib/namespace.js +1 -1
- package/lib/table-bucket-policy.js +1 -1
- package/lib/table-bucket.js +1 -1
- package/lib/table-policy.js +1 -1
- package/lib/table.d.ts +2 -2
- package/lib/table.js +3 -3
- package/package.json +6 -6
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.246.0",
|
|
12
12
|
"constructs": "^10.5.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencyClosure": {
|
|
@@ -9357,7 +9357,7 @@
|
|
|
9357
9357
|
"assembly": "@aws-cdk/aws-s3tables-alpha",
|
|
9358
9358
|
"datatype": true,
|
|
9359
9359
|
"docs": {
|
|
9360
|
-
"see": "
|
|
9360
|
+
"see": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3tables-table-icebergmetadata.html",
|
|
9361
9361
|
"stability": "experimental",
|
|
9362
9362
|
"summary": "Contains details about the metadata for an Iceberg table.",
|
|
9363
9363
|
"example": "// Build a table\nconst sampleTable = new Table(scope, 'ExampleTable', {\n tableName: 'example_table',\n namespace: namespace,\n openTableFormat: OpenTableFormat.ICEBERG,\n withoutMetadata: true,\n});\n\n// Build a table with an Iceberg Schema\nconst sampleTableWithSchema = new Table(scope, 'ExampleSchemaTable', {\n tableName: 'example_table_with_schema',\n namespace: namespace,\n openTableFormat: OpenTableFormat.ICEBERG,\n icebergMetadata: {\n icebergSchema: {\n schemaFieldList: [\n {\n name: 'id',\n type: 'int',\n required: true,\n },\n {\n name: 'name',\n type: 'string',\n },\n ],\n },\n },\n compaction: {\n status: Status.ENABLED,\n targetFileSizeMb: 128,\n },\n snapshotManagement: {\n status: Status.ENABLED,\n maxSnapshotAgeHours: 48,\n minSnapshotsToKeep: 5,\n },\n});",
|
|
@@ -9376,7 +9376,7 @@
|
|
|
9376
9376
|
{
|
|
9377
9377
|
"abstract": true,
|
|
9378
9378
|
"docs": {
|
|
9379
|
-
"see": "
|
|
9379
|
+
"see": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3tables-table-icebergmetadata.html#cfn-s3tables-table-icebergmetadata-icebergschema",
|
|
9380
9380
|
"stability": "experimental",
|
|
9381
9381
|
"summary": "Contains details about the schema for an Iceberg table."
|
|
9382
9382
|
},
|
|
@@ -12452,6 +12452,6 @@
|
|
|
12452
12452
|
"symbolId": "lib/table-bucket:UnreferencedFileRemovalStatus"
|
|
12453
12453
|
}
|
|
12454
12454
|
},
|
|
12455
|
-
"version": "2.
|
|
12455
|
+
"version": "2.246.0-alpha.0",
|
|
12456
12456
|
"fingerprint": "**********"
|
|
12457
12457
|
}
|
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
package/lib/namespace.js
CHANGED
|
@@ -61,7 +61,7 @@ let Namespace = (() => {
|
|
|
61
61
|
Namespace = _classThis = _classDescriptor.value;
|
|
62
62
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
63
63
|
}
|
|
64
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Namespace", version: "2.
|
|
64
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Namespace", version: "2.246.0-alpha.0" };
|
|
65
65
|
/** Uniquely identifies this class. */
|
|
66
66
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.Namespace';
|
|
67
67
|
/**
|
|
@@ -62,7 +62,7 @@ let TableBucketPolicy = (() => {
|
|
|
62
62
|
TableBucketPolicy = _classThis = _classDescriptor.value;
|
|
63
63
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
64
64
|
}
|
|
65
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucketPolicy", version: "2.
|
|
65
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucketPolicy", version: "2.246.0-alpha.0" };
|
|
66
66
|
/** Uniquely identifies this class. */
|
|
67
67
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.TableBucketPolicy';
|
|
68
68
|
/**
|
package/lib/table-bucket.js
CHANGED
|
@@ -201,7 +201,7 @@ let TableBucket = (() => {
|
|
|
201
201
|
TableBucket = _classThis = _classDescriptor.value;
|
|
202
202
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
203
203
|
}
|
|
204
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucket", version: "2.
|
|
204
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucket", version: "2.246.0-alpha.0" };
|
|
205
205
|
/** Uniquely identifies this class. */
|
|
206
206
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.TableBucket';
|
|
207
207
|
/**
|
package/lib/table-policy.js
CHANGED
|
@@ -62,7 +62,7 @@ let TablePolicy = (() => {
|
|
|
62
62
|
TablePolicy = _classThis = _classDescriptor.value;
|
|
63
63
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
64
64
|
}
|
|
65
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TablePolicy", version: "2.
|
|
65
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TablePolicy", version: "2.246.0-alpha.0" };
|
|
66
66
|
/** Uniquely identifies this class. */
|
|
67
67
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.TablePolicy';
|
|
68
68
|
/**
|
package/lib/table.d.ts
CHANGED
|
@@ -377,13 +377,13 @@ export interface TablePropertyEntry {
|
|
|
377
377
|
}
|
|
378
378
|
/**
|
|
379
379
|
* Contains details about the metadata for an Iceberg table.
|
|
380
|
-
* @see
|
|
380
|
+
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3tables-table-icebergmetadata.html
|
|
381
381
|
*/
|
|
382
382
|
export interface IcebergMetadataProperty {
|
|
383
383
|
/**
|
|
384
384
|
* Contains details about the schema for an Iceberg table.
|
|
385
385
|
*
|
|
386
|
-
* @see
|
|
386
|
+
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3tables-table-icebergmetadata.html#cfn-s3tables-table-icebergmetadata-icebergschema
|
|
387
387
|
*/
|
|
388
388
|
readonly icebergSchema: IcebergSchemaProperty;
|
|
389
389
|
/**
|
package/lib/table.js
CHANGED
|
@@ -122,7 +122,7 @@ var Status;
|
|
|
122
122
|
* Iceberg transform values for partition and sort fields.
|
|
123
123
|
*/
|
|
124
124
|
class IcebergTransform {
|
|
125
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.IcebergTransform", version: "2.
|
|
125
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.IcebergTransform", version: "2.246.0-alpha.0" };
|
|
126
126
|
/**
|
|
127
127
|
* Use the column value as the transform value without transformation.
|
|
128
128
|
*/
|
|
@@ -233,7 +233,7 @@ let Table = (() => {
|
|
|
233
233
|
Table = _classThis = _classDescriptor.value;
|
|
234
234
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
235
235
|
}
|
|
236
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Table", version: "2.
|
|
236
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Table", version: "2.246.0-alpha.0" };
|
|
237
237
|
/** Uniquely identifies this class. */
|
|
238
238
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.Table';
|
|
239
239
|
/**
|
|
@@ -448,4 +448,4 @@ let Table = (() => {
|
|
|
448
448
|
return Table = _classThis;
|
|
449
449
|
})();
|
|
450
450
|
exports.Table = Table;
|
|
451
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQkFBeUI7QUFDekIsMkNBQTJDO0FBQzNDLDJEQUFvRTtBQU9wRSwyQ0FJMEI7QUFDMUIsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUcxRSx1Q0FBdUM7QUFtRnZDOztHQUVHO0FBQ0gsTUFBZSxTQUFVLFNBQVEsZUFBUTtJQWtCaEMsbUJBQW1CLENBQ3hCLFNBQThCO1FBRTlCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSw2QkFBYyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7Z0JBQzNELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsY0FBYyxFQUFFLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7YUFDM0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEUsQ0FBQztRQUVELE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUM7S0FDbEM7SUFFRDs7T0FFRztJQUNJLFNBQVMsQ0FBQyxRQUF3QjtRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQ2YsUUFBUSxFQUNSLEtBQUssQ0FBQyxpQkFBaUIsRUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO0tBQ0g7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxR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QyxDQUFDO1lBQy9FLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxJQUFJLDhCQUF1QixDQUMvQiwyQkFBMkIsRUFDM0Isa0RBQWtELENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUMzRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FDM0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLEdBQUcsR0FBRztnQkFDTixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSzthQUN6QixDQUFDLEVBQ0YsRUFBNEIsQ0FDN0IsQ0FBQztTQUNIOztZQXRQVSx1REFBSzs7Ozs7QUFBTCxzQkFBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVPTCB9IGZyb20gJ29zJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmblRhYmxlLCBDZm5UYWJsZVBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zM3RhYmxlcyc7XG5pbXBvcnQgdHlwZSB7XG4gIElSZXNvdXJjZSxcbiAgSVRhZ2dhYmxlVjIsXG4gIFJlbW92YWxQb2xpY3ksXG4gIFRhZ01hbmFnZXIsXG59IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLFxuICBUb2tlbixcbn0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBJTmFtZXNwYWNlIH0gZnJvbSAnLi9uYW1lc3BhY2UnO1xuaW1wb3J0ICogYXMgcGVybXMgZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBTMyBUYWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGFibGUgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGlzIHRhYmxlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHRhYmxlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFjY291bnRJZCBjb250YWluaW5nIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZWdpb24gY29udGFpbmluZyB0aGlzIHRhYmxlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBzdGF0ZW1lbnQgdG8gdGhlIHJlc291cmNlIHBvbGljeSBmb3IgYSBwcmluY2lwYWwgKGkuZS5cbiAgICogYWNjb3VudC9yb2xlL3NlcnZpY2UpIHRvIHBlcmZvcm0gYWN0aW9ucyBvbiB0aGlzIHRhYmxlLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHBvbGljeSBzdGF0ZW1lbnQgbWF5IG9yIG1heSBub3QgYmUgYWRkZWQgdG8gdGhlIHBvbGljeS5cbiAgICogRm9yIGV4YW1wbGUsIHdoZW4gYW4gYElUYWJsZWAgaXMgY3JlYXRlZCBmcm9tIGFuIGV4aXN0aW5nIHRhYmxlLFxuICAgKiBpdCdzIG5vdCBwb3NzaWJsZSB0byB0ZWxsIHdoZXRoZXIgdGhlIHRhYmxlIGFscmVhZHkgaGFzIGEgcG9saWN5XG4gICAqIGF0dGFjaGVkLCBsZXQgYWxvbmUgdG8gcmUtdXNlIHRoYXQgcG9saWN5IHRvIGFkZCBtb3JlIHN0YXRlbWVudHMgdG8gaXQuXG4gICAqIFNvIGl0J3Mgc2FmZXN0IHRvIGRvIG5vdGhpbmcgaW4gdGhlc2UgY2FzZXMuXG4gICAqXG4gICAqIEBwYXJhbSBzdGF0ZW1lbnQgdGhlIHBvbGljeSBzdGF0ZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIHRhYmxlJ3NcbiAgICogcG9saWN5LlxuICAgKiBAcmV0dXJucyBtZXRhZGF0YSBhYm91dCB0aGUgZXhlY3V0aW9uIG9mIHRoaXMgbWV0aG9kLiBJZiB0aGUgcG9saWN5XG4gICAqIHdhcyBub3QgYWRkZWQsIHRoZSB2YWx1ZSBvZiBgc3RhdGVtZW50QWRkZWRgIHdpbGwgYmUgYGZhbHNlYC4gWW91XG4gICAqIHNob3VsZCBhbHdheXMgY2hlY2sgdGhpcyB2YWx1ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgb3BlcmF0aW9uIHdhc1xuICAgKiBhY3R1YWxseSBjYXJyaWVkIG91dC4gT3RoZXJ3aXNlLCBzeW50aGVzaXMgYW5kIGRlcGxveSB3aWxsIHRlcm1pbmF0ZVxuICAgKiBzaWxlbnRseSwgd2hpY2ggbWF5IGJlIGNvbmZ1c2luZy5cbiAgICovXG4gIGFkZFRvUmVzb3VyY2VQb2xpY3koc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50KTogaWFtLkFkZFRvUmVzb3VyY2VQb2xpY3lSZXN1bHQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgdG8gYW4gSUFNIHByaW5jaXBhbCAoUm9sZS9Hcm91cC9Vc2VyKS5cbiAgICpcbiAgICogSWYgdGhlIHBhcmVudCBUYWJsZUJ1Y2tldCBvZiB0aGlzIHRhYmxlIGhhcyBlbmNyeXB0aW9uLFxuICAgKiB5b3Ugc2hvdWxkIGdyYW50IGttczpEZWNyeXB0IHBlcm1pc3Npb24gdG8gdXNlIHRoaXMga2V5IHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWwgdG8gYWxsb3cgcmVhZCBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgZ3JhbnRSZWFkKGlkZW50aXR5OiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgdG8gYW4gSUFNIHByaW5jaXBhbCAoUm9sZS9Hcm91cC9Vc2VyKS5cbiAgICpcbiAgICogSWYgdGhlIHBhcmVudCBUYWJsZUJ1Y2tldCBvZiB0aGlzIHRhYmxlIGhhcyBlbmNyeXB0aW9uLFxuICAgKiB5b3Ugc2hvdWxkIGdyYW50IGttczpHZW5lcmF0ZURhdGFLZXkgYW5kIGttczpEZWNyeXB0IHBlcm1pc3Npb25cbiAgICogdG8gdXNlIHRoaXMga2V5IHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWwgdG8gYWxsb3cgd3JpdGUgcGVybWlzc2lvbnMgdG9cbiAgICovXG4gIGdyYW50V3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSB0byBhbiBJQU0gcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiB0aGUgcGFyZW50IFRhYmxlQnVja2V0IG9mIHRoaXMgdGFibGUgaGFzIGVuY3J5cHRpb24sXG4gICAqIHlvdSBzaG91bGQgZ3JhbnQga21zOkdlbmVyYXRlRGF0YUtleSBhbmQga21zOkRlY3J5cHQgcGVybWlzc2lvblxuICAgKiB0byB1c2UgdGhpcyBrZXkgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgZ3JhbnRSZWFkV3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFRhYmxlIGltcGxlbWVudGF0aW9ucy5cbiAqL1xuYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVGFibGUge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhYmxlLlxuICAgKlxuICAgKiBJZiBgYXV0b0NyZWF0ZVBvbGljeWAgaXMgdHJ1ZSwgYSBgVGFibGVQb2xpY3lgIHdpbGwgYmUgY3JlYXRlZCB1cG9uIHRoZVxuICAgKiBmaXJzdCBjYWxsIHRvIGFkZFRvUmVzb3VyY2VQb2xpY3kocykuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdGFibGVQb2xpY3k/OiBDZm5UYWJsZVBvbGljeTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGEgdGFibGUgcmVzb3VyY2UgcG9saWN5IHNob3VsZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdXBvblxuICAgKiB0aGUgZmlyc3QgY2FsbCB0byBgYWRkVG9SZXNvdXJjZVBvbGljeWAuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYXV0b0NyZWF0ZVBvbGljeTogYm9vbGVhbjtcblxuICBwdWJsaWMgYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICBzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQsXG4gICk6IGlhbS5BZGRUb1Jlc291cmNlUG9saWN5UmVzdWx0IHtcbiAgICBpZiAoIXRoaXMudGFibGVQb2xpY3kgJiYgdGhpcy5hdXRvQ3JlYXRlUG9saWN5KSB7XG4gICAgICB0aGlzLnRhYmxlUG9saWN5ID0gbmV3IENmblRhYmxlUG9saWN5KHRoaXMsICdEZWZhdWx0UG9saWN5Jywge1xuICAgICAgICB0YWJsZUFybjogdGhpcy50YWJsZUFybixcbiAgICAgICAgcmVzb3VyY2VQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe30pLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGVQb2xpY3kpIHtcbiAgICAgIHRoaXMudGFibGVQb2xpY3kucmVzb3VyY2VQb2xpY3kuYWRkU3RhdGVtZW50cyhzdGF0ZW1lbnQpO1xuICAgICAgcmV0dXJuIHsgc3RhdGVtZW50QWRkZWQ6IHRydWUsIHBvbGljeURlcGVuZGFibGU6IHRoaXMudGFibGVQb2xpY3kgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogZmFsc2UgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoXG4gICAgICBpZGVudGl0eSxcbiAgICAgIHBlcm1zLlRBQkxFX1JFQURfQUNDRVNTLFxuICAgICAgdGhpcy50YWJsZUFybixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50V3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoXG4gICAgICBpZGVudGl0eSxcbiAgICAgIHBlcm1zLlRBQkxFX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVBcm4sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfUkVBRF9XUklURV9BQ0NFU1MsXG4gICAgICB0aGlzLnRhYmxlQXJuLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBnaXZlbiBzM3RhYmxlcyBwZXJtaXNzaW9ucyB0byB0aGUgcHJvdmlkZWQgcHJpbmNpcGFsXG4gICAqIEByZXR1cm5zIEdyYW50IG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBncmFudChcbiAgICBncmFudGVlOiBpYW0uSUdyYW50YWJsZSxcbiAgICB0YWJsZUFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIHJlc291cmNlQXJuOiBzdHJpbmcsXG4gICAgLi4ub3RoZXJSZXNvdXJjZUFybnM6IChzdHJpbmcgfCB1bmRlZmluZWQpW10pIHtcbiAgICBjb25zdCByZXNvdXJjZXMgPSBbcmVzb3VyY2VBcm4sIC4uLm90aGVyUmVzb3VyY2VBcm5zXS5maWx0ZXIoYXJuID0+IGFybiAhPSB1bmRlZmluZWQpO1xuXG4gICAgY29uc3QgZ3JhbnQgPSBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWxPclJlc291cmNlKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiB0YWJsZUFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IHJlc291cmNlcyxcbiAgICAgIHJlc291cmNlOiB0aGlzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdyYW50O1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBuZXcgUzMgVGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgdGFibGUsIHVuaXF1ZSB3aXRoaW4gdGhlIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHVuZGVyIHdoaWNoIHRoaXMgdGFibGUgaXMgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBJTmFtZXNwYWNlO1xuICAvKipcbiAgICogRm9ybWF0IG9mIHRoaXMgdGFibGUuIEN1cnJlbnRseSwgdGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlIGlzIE9wZW5UYWJsZUZvcm1hdC5JQ0VCRVJHLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlblRhYmxlRm9ybWF0OiBPcGVuVGFibGVGb3JtYXQ7XG4gIC8qKlxuICAgKiBTZXR0aW5ncyBnb3Zlcm5pbmcgdGhlIENvbXBhY3Rpb24gbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKiBAZGVmYXVsdCBBbWF6b24gUzMgc2VsZWN0cyB0aGUgYmVzdCBjb21wYWN0aW9uIHN0cmF0ZWd5IGJhc2VkIG9uIHlvdXIgdGFibGUgc29ydCBvcmRlci5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMtbWFpbnRlbmFuY2UuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGFjdGlvbj86IENvbXBhY3Rpb25Qcm9wZXJ0eTtcbiAgLyoqXG4gICAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIG1ldGFkYXRhIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICAgKiBAZGVmYXVsdCB0YWJsZSBpcyBjcmVhdGVkIHdpdGhvdXQgYW55IG1ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBpY2ViZXJnTWV0YWRhdGE/OiBJY2ViZXJnTWV0YWRhdGFQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIHNuYXBzaG90IG1hbmFnZW1lbnQgc2V0dGluZ3MgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqIEBkZWZhdWx0IGVuYWJsZWQ6IE1pbmltdW1TbmFwc2hvdHMgaXMgMSBieSBkZWZhdWx0IGFuZCBNYXhpbXVtU25hcHNob3RBZ2UgaXMgMTIwIGhvdXJzIGJ5IGRlZmF1bHQuXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdE1hbmFnZW1lbnQ/OiBTbmFwc2hvdE1hbmFnZW1lbnRQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoYXQgaGFwcGVucyB0byB0aGlzIHRhYmxlIGl0IGl0IHN0b3BlZCBiZWluZyBtYW5hZ2VkIGJ5IGNsb3VkZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBSRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xuICAvKipcbiAgICogSWYgdHJ1ZSwgaW5kaWNhdGVzIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gc3BlY2lmeSBhIHNjaGVtYSBmb3IgdGhlIHRhYmxlLlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB0byAnSWNlYmVyZ01ldGFkYXRhJy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHdpdGhvdXRNZXRhZGF0YT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU3VwcG9ydGVkIG9wZW4gdGFibGUgZm9ybWF0cy5cbiAqL1xuZXhwb3J0IGVudW0gT3BlblRhYmxlRm9ybWF0IHtcbiAgLyoqXG4gICAqIEFwYWNoZSBJY2ViZXJnIHRhYmxlIGZvcm1hdC5cbiAgICovXG4gIElDRUJFUkcgPSAnSUNFQkVSRycsXG59XG5cbi8qKlxuICogU2V0dGluZ3MgZ292ZXJuaW5nIHRoZSBDb21wYWN0aW9uIG1haW50ZW5hbmNlIGFjdGlvbi5cbiAqXG4gKiBAZGVmYXVsdCAtIE5vIGNvbXBhY3Rpb24gc2V0dGluZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wYWN0aW9uUHJvcGVydHkge1xuICAvKipcbiAgICogU3RhdHVzIG9mIHRoZSBjb21wYWN0aW9uIG1haW50ZW5hbmNlIGFjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1czogU3RhdHVzO1xuICAvKipcbiAgICogVGFyZ2V0IGZpbGUgc2l6ZSBpbiBtZWdhYnl0ZXMgZm9yIGNvbXBhY3Rpb24uXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRGaWxlU2l6ZU1iOiBudW1iZXI7XG59XG5cbi8qKlxuICogU3RhdHVzIHZhbHVlcyBmb3IgbWFpbnRlbmFuY2UgYWN0aW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gU3RhdHVzIHtcbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKi9cbiAgRU5BQkxFRCA9ICdlbmFibGVkJyxcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG1haW50ZW5hbmNlIGFjdGlvbi5cbiAgICovXG4gIERJU0FCTEVEID0gJ2Rpc2FibGVkJyxcbn1cblxuLyoqXG4gKiBJY2ViZXJnIHRyYW5zZm9ybSB2YWx1ZXMgZm9yIHBhcnRpdGlvbiBhbmQgc29ydCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBJY2ViZXJnVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIFVzZSB0aGUgY29sdW1uIHZhbHVlIGFzIHRoZSB0cmFuc2Zvcm0gdmFsdWUgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSURFTlRJVFkgPSBuZXcgSWNlYmVyZ1RyYW5zZm9ybSgnaWRlbnRpdHknKTtcblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgdGltZXN0YW1wL2RhdGUgZmllbGQgdG8geWVhci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgWUVBUiA9IG5ldyBJY2ViZXJnVHJhbnNmb3JtKCd5ZWFyJyk7XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhIHRpbWVzdGFtcC9kYXRlIGZpZWxkIHRvIG1vbnRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNT05USCA9IG5ldyBJY2ViZXJnVHJhbnNmb3JtKCdtb250aCcpO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gYSB0aW1lc3RhbXAvZGF0ZSBmaWVsZCB0byBkYXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERBWSA9IG5ldyBJY2ViZXJnVHJhbnNmb3JtKCdkYXknKTtcblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgdGltZXN0YW1wIGZpZWxkIHRvIGhvdXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhPVVIgPSBuZXcgSWNlYmVyZ1RyYW5zZm9ybSgnaG91cicpO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdmFsdWVzIGludG8gYSBmaXhlZCBudW1iZXIgb2YgYnVja2V0cy5cbiAgICpcbiAgICogQHBhcmFtIG4gVGhlIG51bWJlciBvZiBidWNrZXRzIChtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcilcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYnVja2V0KG46IG51bWJlcik6IEljZWJlcmdUcmFuc2Zvcm0ge1xuICAgIGlmIChuIDw9IDAgfHwgIU51bWJlci5pc0ludGVnZXIobikpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgJ0ludmFsaWRCdWNrZXRDb3VudCcsXG4gICAgICAgICdCdWNrZXQgY291bnQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuJyxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSWNlYmVyZ1RyYW5zZm9ybShgYnVja2V0WyR7bn1dYCk7XG4gIH1cblxuICAvKipcbiAgICogVHJ1bmNhdGUgdmFsdWVzIHRvIGEgZml4ZWQgd2lkdGguXG4gICAqXG4gICAqIEBwYXJhbSB3aWR0aCBUaGUgdHJ1bmNhdGlvbiB3aWR0aCAobXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRydW5jYXRlKHdpZHRoOiBudW1iZXIpOiBJY2ViZXJnVHJhbnNmb3JtIHtcbiAgICBpZiAod2lkdGggPD0gMCB8fCAhTnVtYmVyLmlzSW50ZWdlcih3aWR0aCkpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgJ0ludmFsaWRUcnVuY2F0ZVdpZHRoJyxcbiAgICAgICAgJ1RydW5jYXRlIHdpZHRoIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLicsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEljZWJlcmdUcmFuc2Zvcm0oYHRydW5jYXRlWyR7d2lkdGh9XWApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGN1c3RvbSB0cmFuc2Zvcm0gZnJvbSBhIHN0cmluZyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB0cmFuc2Zvcm0gc3RyaW5nIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBJY2ViZXJnVHJhbnNmb3JtIHtcbiAgICByZXR1cm4gbmV3IEljZWJlcmdUcmFuc2Zvcm0odmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlIHRyYW5zZm9ybS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRyYW5zZm9ybS5cbiAgICovXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogU29ydCBkaXJlY3Rpb24gdmFsdWVzIGZvciBJY2ViZXJnIHNvcnQgZmllbGRzLlxuICovXG5leHBvcnQgZW51bSBTb3J0RGlyZWN0aW9uIHtcbiAgLyoqXG4gICAqIFNvcnQgdmFsdWVzIGluIGFzY2VuZGluZyBvcmRlci5cbiAgICovXG4gIEFTQyA9ICdhc2MnLFxuICAvKipcbiAgICogU29ydCB2YWx1ZXMgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAgICovXG4gIERFU0MgPSAnZGVzYycsXG59XG5cbi8qKlxuICogTnVsbCBvcmRlcmluZyB2YWx1ZXMgZm9yIEljZWJlcmcgc29ydCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBlbnVtIE51bGxPcmRlciB7XG4gIC8qKlxuICAgKiBQbGFjZSBudWxsIHZhbHVlcyBiZWZvcmUgbm9uLW51bGwgdmFsdWVzLlxuICAgKi9cbiAgTlVMTFNfRklSU1QgPSAnbnVsbHMtZmlyc3QnLFxuICAvKipcbiAgICogUGxhY2UgbnVsbCB2YWx1ZXMgYWZ0ZXIgbm9uLW51bGwgdmFsdWVzLlxuICAgKi9cbiAgTlVMTFNfTEFTVCA9ICdudWxscy1sYXN0Jyxcbn1cblxuLyoqXG4gKiBQYXJ0aXRpb24gZmllbGQgZGVmaW5pdGlvbiBmb3IgSWNlYmVyZyB0YWJsZS5cbiAqXG4gKiBEZWZpbmVzIGEgc2luZ2xlIHBhcnRpdGlvbiBjb2x1bW4uIE11bHRpcGxlIHBhcnRpdGlvbiBmaWVsZHMgY2FuIGJlIGNvbWJpbmVkXG4gKiBpbiBhbiBJY2ViZXJnUGFydGl0aW9uU3BlYyB0byBjcmVhdGUgbXVsdGktbGV2ZWwgcGFydGl0aW9uaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdQYXJ0aXRpb25GaWVsZCB7XG4gIC8qKlxuICAgKiBUaGUgc291cmNlIGZpZWxkIElEIGZyb20gdGhlIHNjaGVtYS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUlkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJ0aXRpb24gdHJhbnNmb3JtIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBVc2UgYEljZWJlcmdUcmFuc2Zvcm1gIHN0YXRpYyBwcm9wZXJ0aWVzIGZvciBjb21tb24gdHJhbnNmb3JtcyAoZS5nLiwgYEljZWJlcmdUcmFuc2Zvcm0uSURFTlRJVFlgKVxuICAgKiBvciBtZXRob2RzIGZvciBwYXJhbWV0ZXJpemVkIHRyYW5zZm9ybXMgKGUuZy4sIGBJY2ViZXJnVHJhbnNmb3JtLmJ1Y2tldCgxNilgKS5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zZm9ybTogSWNlYmVyZ1RyYW5zZm9ybTtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwYXJ0aXRpb24gZmllbGQuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHBhcnRpdGlvbiBmaWVsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBdXRvLWFzc2lnbmVkIHN0YXJ0aW5nIGZyb20gMTAwMFxuICAgKi9cbiAgcmVhZG9ubHkgZmllbGRJZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQYXJ0aXRpb24gc3BlY2lmaWNhdGlvbiBmb3IgSWNlYmVyZyB0YWJsZS5cbiAqXG4gKiBDb250YWlucyB0aGUgY29tcGxldGUgcGFydGl0aW9uaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGEgdGFibGUsIGluY2x1ZGluZyBhbGwgcGFydGl0aW9uIGZpZWxkcy5cbiAqIFVzZSB0aGlzIHRvIGRlZmluZSBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgKGUuZy4sIHBhcnRpdGlvbiBieSBkYXRlLCB0aGVuIGJ5IHJlZ2lvbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ1BhcnRpdGlvblNwZWMge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgcGFydGl0aW9uIGZpZWxkcy5cbiAgICovXG4gIHJlYWRvbmx5IGZpZWxkczogSWNlYmVyZ1BhcnRpdGlvbkZpZWxkW107XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHBhcnRpdGlvbiBzcGVjaWZpY2F0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBzcGVjSWQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogU29ydCBmaWVsZCBkZWZpbml0aW9uIGZvciBJY2ViZXJnIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdTb3J0RmllbGQge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBmaWVsZCBJRCBmcm9tIHRoZSBzY2hlbWEuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc29ydCB0cmFuc2Zvcm0gZnVuY3Rpb24uXG4gICAqXG4gICAqIFVzZSBgSWNlYmVyZ1RyYW5zZm9ybWAgc3RhdGljIHByb3BlcnRpZXMgZm9yIGNvbW1vbiB0cmFuc2Zvcm1zIChlLmcuLCBgSWNlYmVyZ1RyYW5zZm9ybS5JREVOVElUWWApXG4gICAqIG9yIG1ldGhvZHMgZm9yIHBhcmFtZXRlcml6ZWQgdHJhbnNmb3JtcyAoZS5nLiwgYEljZWJlcmdUcmFuc2Zvcm0uYnVja2V0KDE2KWApLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNmb3JtOiBJY2ViZXJnVHJhbnNmb3JtO1xuXG4gIC8qKlxuICAgKiBUaGUgc29ydCBkaXJlY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBudWxsIG9yZGVyaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgbnVsbE9yZGVyOiBOdWxsT3JkZXI7XG59XG5cbi8qKlxuICogU29ydCBvcmRlciBzcGVjaWZpY2F0aW9uIGZvciBJY2ViZXJnIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdTb3J0T3JkZXIge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygc29ydCBmaWVsZHMuXG4gICAqL1xuICByZWFkb25seSBmaWVsZHM6IEljZWJlcmdTb3J0RmllbGRbXTtcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc29ydCBvcmRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgb3JkZXJJZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIHNpbmdsZSB0YWJsZSBwcm9wZXJ0eSBrZXktdmFsdWUgcGFpciBmb3IgSWNlYmVyZyB0YWJsZSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUHJvcGVydHlFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydHkga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgbWV0YWRhdGEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gKiBAc2VlIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczN0YWJsZXMtdGFibGUtaWNlYmVyZ21ldGFkYXRhLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY2ViZXJnTWV0YWRhdGFQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzY2hlbWEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zM3RhYmxlcy10YWJsZS1pY2ViZXJnbWV0YWRhdGEuaHRtbCNjZm4tczN0YWJsZXMtdGFibGUtaWNlYmVyZ21ldGFkYXRhLWljZWJlcmdzY2hlbWFcbiAgICovXG4gIHJlYWRvbmx5IGljZWJlcmdTY2hlbWE6IEljZWJlcmdTY2hlbWFQcm9wZXJ0eTtcblxuICAvKipcbiAgICogVGhlIHBhcnRpdGlvbiBzcGVjaWZpY2F0aW9uIGZvciB0aGUgSWNlYmVyZyB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBwYXJ0aXRpb24gc3BlY2lmaWNhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaWNlYmVyZ1BhcnRpdGlvblNwZWM/OiBJY2ViZXJnUGFydGl0aW9uU3BlYztcblxuICAvKipcbiAgICogVGhlIHNvcnQgb3JkZXIgZm9yIHRoZSBJY2ViZXJnIHRhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHNvcnQgb3JkZXJcbiAgICovXG4gIHJlYWRvbmx5IGljZWJlcmdTb3J0T3JkZXI/OiBJY2ViZXJnU29ydE9yZGVyO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gcHJvcGVydGllcyBmb3IgdGhlIEljZWJlcmcgdGFibGUuXG4gICAqIEVhY2ggZW50cnkgcmVwcmVzZW50cyBhIGtleS12YWx1ZSBwYWlyIGZvciBJY2ViZXJnIHRhYmxlIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlUHJvcGVydGllcz86IFRhYmxlUHJvcGVydHlFbnRyeVtdO1xufVxuXG4vKipcbiAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIHNjaGVtYSBmb3IgYW4gSWNlYmVyZyB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY2ViZXJnU2NoZW1hUHJvcGVydHkge1xuICAvKipcbiAgICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc2NoZW1hIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZW1hRmllbGRMaXN0OiBTY2hlbWFGaWVsZFByb3BlcnR5W107XG59XG5cbi8qKlxuICogQ29udGFpbnMgZGV0YWlscyBhYm91dCBhIHNjaGVtYSBmaWVsZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2hlbWFGaWVsZFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGZpZWxkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEF1dG8tYXNzaWduZWQgYnkgUzMgVGFibGVzXG4gICAqL1xuICByZWFkb25seSBpZD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZpZWxkLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIEJvb2xlYW4gdmFsdWUgdGhhdCBzcGVjaWZpZXMgd2hldGhlciB2YWx1ZXMgYXJlIHJlcXVpcmVkIGZvciBlYWNoIHJvdyBpbiB0aGlzIGZpZWxkLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGlzIGlzIGBmYWxzZWAgYW5kIG51bGwgdmFsdWVzIGFyZSBhbGxvd2VkIGluIHRoZSBmaWVsZC4gSWYgdGhpcyBpcyBgdHJ1ZWAsIHRoZSBmaWVsZCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGZpZWxkIHR5cGUuXG4gICAqXG4gICAqIFMzIFRhYmxlcyBzdXBwb3J0cyBhbGwgQXBhY2hlIEljZWJlcmcgcHJpbWl0aXZlIHR5cGVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBbQXBhY2hlIEljZWJlcmcgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9pY2ViZXJnLmFwYWNoZS5vcmcvc3BlYy8jcHJpbWl0aXZlLXR5cGVzKS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzbmFwc2hvdCBtYW5hZ2VtZW50IHNldHRpbmdzIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICpcbiAqIEEgc25hcHNob3QgaXMgZXhwaXJlZCB3aGVuIGl0IGV4Y2VlZHMgTWluU25hcHNob3RzVG9LZWVwIGFuZCBNYXhTbmFwc2hvdEFnZUhvdXJzLlxuICpcbiAqIEBkZWZhdWx0IC0gTm8gc25hcHNob3QgbWFuYWdlbWVudCBzZXR0aW5nc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNuYXBzaG90TWFuYWdlbWVudFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFnZSBvZiBhIHNuYXBzaG90IGJlZm9yZSBpdCBjYW4gYmUgZXhwaXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBtYXhpbXVtIGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4U25hcHNob3RBZ2VIb3Vycz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIHNuYXBzaG90cyB0byBrZWVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1pbmltdW0gbnVtYmVyXG4gICAqL1xuICByZWFkb25seSBtaW5TbmFwc2hvdHNUb0tlZXA/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBTbmFwc2hvdE1hbmFnZW1lbnQgbWFpbnRlbmFuY2UgYWN0aW9uIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogU3RhdHVzO1xufVxuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGEgdGFibGUgb3V0c2lkZSB0aGlzIHN0YWNrXG4gKlxuICogVGhlIHRhYmxlTmFtZSwgcmVnaW9uLCBhbmQgYWNjb3VudCBjYW4gYmUgcHJvdmlkZWQgZXhwbGljaXRseVxuICogb3Igd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSB0YWJsZUFyblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFibGUncyBBUk4uXG4gICAqL1xuICByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIFMzIFRhYmxlIHdpdGggaGVscGVycy5cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFRhYmxlIGV4dGVuZHMgVGFibGVCYXNlIGltcGxlbWVudHMgSVRhZ2dhYmxlVjIge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1zM3RhYmxlcy1hbHBoYS5UYWJsZSc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBUYWJsZSBjb25zdHJ1Y3QgdGhhdCByZXByZXNlbnRzIGFuIGV4dGVybmFsIHRhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKS5cbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lLlxuICAgKiBAcGFyYW0gYXR0cnMgQSBgVGFibGVBdHRyaWJ1dGVzYCBvYmplY3QgY29udGFpbmluZyB0aGUgdGFibGUgbmFtZSBhbmQgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVGFibGVBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogVGFibGVBdHRyaWJ1dGVzLFxuICApOiBJVGFibGUge1xuICAgIGNvbnN0IHRhYmxlQXJuID0gYXR0cnMudGFibGVBcm47XG4gICAgVGFibGUudmFsaWRhdGVUYWJsZU5hbWUoYXR0cnMudGFibGVOYW1lKTtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFRhYmxlQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVOYW1lID0gYXR0cnMudGFibGVOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlQXJuID0gdGFibGVBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVQb2xpY3k/OiBDZm5UYWJsZVBvbGljeTtcbiAgICAgIHByb3RlY3RlZCBhdXRvQ3JlYXRlUG9saWN5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAgIC8qKlxuICAgICAgICogRXhwb3J0cyB0aGlzICBmcm9tIHRoZSBzdGFjay5cbiAgICAgICAqL1xuICAgICAgcHVibGljIGV4cG9ydCgpIHtcbiAgICAgICAgcmV0dXJuIGF0dHJzO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCwge1xuICAgICAgZW52aXJvbm1lbnRGcm9tQXJuOiB0YWJsZUFybixcbiAgICAgIHBoeXNpY2FsTmFtZTogdGFibGVBcm4sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL3MzLXRhYmxlcy1idWNrZXRzLW5hbWluZy5odG1sXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgTmFtZSBvZiB0aGUgdGFibGVcbiAgICogQHRocm93cyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciBpZiBhbnkgbmFtaW5nIGVycm9ycyBhcmUgZGV0ZWN0ZWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmFsaWRhdGVUYWJsZU5hbWUodGFibGVOYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAodGFibGVOYW1lID09IHVuZGVmaW5lZCB8fCBUb2tlbi5pc1VucmVzb2x2ZWQodGFibGVOYW1lKSkge1xuICAgICAgLy8gdGhlIG5hbWUgaXMgYSBsYXRlLWJvdW5kIHZhbHVlLCBub3QgYSBkZWZpbmVkIHN0cmluZywgc28gc2tpcCB2YWxpZGF0aW9uXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gTGVuZ3RoIHZhbGlkYXRpb25cbiAgICBpZiAodGFibGVOYW1lLmxlbmd0aCA8IDEgfHwgdGFibGVOYW1lLmxlbmd0aCA+IDI1NSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICdUYWJsZSBuYW1lIG11c3QgYmUgYXQgbGVhc3QgMSBhbmQgbm8gbW9yZSB0aGFuIDI1NSBjaGFyYWN0ZXJzJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ2hhcmFjdGVyIHNldCB2YWxpZGF0aW9uXG4gICAgY29uc3QgaWxsZWdhbENoYXJzZXRSZWdFeCA9IC9bXmEtejAtOV9dLztcbiAgICBjb25zdCBhbGxvd2VkRWRnZUNoYXJzZXRSZWdFeCA9IC9bYS16MC05XS87XG5cbiAgICBjb25zdCBpbGxlZ2FsQ2hhck1hdGNoID0gdGFibGVOYW1lLm1hdGNoKGlsbGVnYWxDaGFyc2V0UmVnRXgpO1xuICAgIGlmIChpbGxlZ2FsQ2hhck1hdGNoKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgJ1RhYmxlIG5hbWUgbXVzdCBvbmx5IGNvbnRhaW4gbG93ZXJjYXNlIGNoYXJhY3RlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3JlcyAoXyknICtcbiAgICAgICAgICBgIChvZmZzZXQ6ICR7aWxsZWdhbENoYXJNYXRjaC5pbmRleH0pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRWRnZSBjaGFyYWN0ZXIgdmFsaWRhdGlvblxuICAgIGlmICghYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXgudGVzdCh0YWJsZU5hbWUuY2hhckF0KDApKSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICdUYWJsZSBuYW1lIG11c3Qgc3RhcnQgd2l0aCBhIGxvd2VyY2FzZSBsZXR0ZXIgb3IgbnVtYmVyIChvZmZzZXQ6IDApJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXgudGVzdCh0YWJsZU5hbWUuY2hhckF0KHRhYmxlTmFtZS5sZW5ndGggLSAxKSkpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBgVGFibGUgbmFtZSBtdXN0IGVuZCB3aXRoIGEgbG93ZXJjYXNlIGxldHRlciBvciBudW1iZXIgKG9mZnNldDogJHtcbiAgICAgICAgICB0YWJsZU5hbWUubGVuZ3RoIC0gMVxuICAgICAgICB9KWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAnSW52YWxpZFRhYmxlTmFtZScsXG4gICAgICAgIGBJbnZhbGlkIFMzIHRhYmxlIG5hbWUgKHZhbHVlOiAke3RhYmxlTmFtZX0pJHtFT0x9JHtlcnJvcnMuam9pbihFT0wpfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChhcm4pIG9mIHRoaXMgdGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBDZm5UYWJsZSBMMSByZXNvdXJjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc291cmNlOiBDZm5UYWJsZTtcblxuICAvKipcbiAgICogVGhlIHRhZyBtYW5hZ2VyIGZvciB0aGlzIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNka1RhZ01hbmFnZXI6IFRhZ01hbmFnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgdGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBjb250YWluaW5nIHRoaXMgdGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lc3BhY2U6IElOYW1lc3BhY2U7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBwb2xpY3kgZm9yIHRoaXMgdGFibGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFibGVQb2xpY3k/OiBDZm5UYWJsZVBvbGljeTtcblxuICBwcm90ZWN0ZWQgYXV0b0NyZWF0ZVBvbGljeTogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFRhYmxlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHt9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgaWYgKHByb3BzLndpdGhvdXRNZXRhZGF0YSAmJiBwcm9wcy5pY2ViZXJnTWV0YWRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgJ011dHVhbGx5RXhjbHVzaXZlUHJvcHMnLFxuICAgICAgICBcIlRhYmxlUHJvcHM6ICd3aXRob3V0TWV0YWRhdGEnIGFuZCAnaWNlYmVyZ01ldGFkYXRhJyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBTcGVjaWZ5IG9ubHkgb25lLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBUYWJsZS52YWxpZGF0ZVRhYmxlTmFtZShwcm9wcy50YWJsZU5hbWUpO1xuXG4gICAgdGhpcy5fcmVzb3VyY2UgPSBuZXcgQ2ZuVGFibGUodGhpcywgaWQsIHtcbiAgICAgIHRhYmxlTmFtZTogcHJvcHMudGFibGVOYW1lLFxuICAgICAgb3BlblRhYmxlRm9ybWF0OiBwcm9wcy5vcGVuVGFibGVGb3JtYXQsXG4gICAgICB0YWJsZUJ1Y2tldEFybjogcHJvcHMubmFtZXNwYWNlLnRhYmxlQnVja2V0LnRhYmxlQnVja2V0QXJuLFxuICAgICAgbmFtZXNwYWNlOiBwcm9wcy5uYW1lc3BhY2UubmFtZXNwYWNlTmFtZSxcbiAgICAgIGNvbXBhY3Rpb246IHByb3BzLmNvbXBhY3Rpb24sXG4gICAgICBpY2ViZXJnTWV0YWRhdGE6IHRoaXMuYnVpbGRJY2ViZXJnTWV0YWRhdGEocHJvcHMuaWNlYmVyZ01ldGFkYXRhKSxcbiAgICAgIHNuYXBzaG90TWFuYWdlbWVudDogcHJvcHMuc25hcHNob3RNYW5hZ2VtZW50LFxuICAgICAgd2l0aG91dE1ldGFkYXRhOiBwcm9wcy53aXRob3V0TWV0YWRhdGEgPyAnWWVzJyA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIHRoaXMubmFtZXNwYWNlID0gcHJvcHMubmFtZXNwYWNlO1xuICAgIHRoaXMudGFibGVOYW1lID0gcHJvcHMudGFibGVOYW1lO1xuICAgIHRoaXMudGFibGVBcm4gPSB0aGlzLl9yZXNvdXJjZS5hdHRyVGFibGVBcm47XG4gICAgdGhpcy5jZGtUYWdNYW5hZ2VyID0gdGhpcy5fcmVzb3VyY2UuY2RrVGFnTWFuYWdlcjtcbiAgICB0aGlzLl9yZXNvdXJjZS5hcHBseVJlbW92YWxQb2xpY3kocHJvcHMucmVtb3ZhbFBvbGljeSk7XG4gICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5uYW1lc3BhY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgQ2xvdWRGb3JtYXRpb24gSWNlYmVyZyBtZXRhZGF0YSBwcm9wZXJ0eSBmcm9tIHRoZSBDREsgbWV0YWRhdGEgbW9kZWwuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSWNlYmVyZ01ldGFkYXRhKG1ldGFkYXRhPzogSWNlYmVyZ01ldGFkYXRhUHJvcGVydHkpOiBDZm5UYWJsZS5JY2ViZXJnTWV0YWRhdGFQcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWNlYmVyZ1NjaGVtYTogdGhpcy5idWlsZEljZWJlcmdTY2hlbWEobWV0YWRhdGEuaWNlYmVyZ1NjaGVtYSksXG4gICAgICBpY2ViZXJnUGFydGl0aW9uU3BlYzogbWV0YWRhdGEuaWNlYmVyZ1BhcnRpdGlvblNwZWNcbiAgICAgICAgPyB0aGlzLmJ1aWxkSWNlYmVyZ1BhcnRpdGlvblNwZWMobWV0YWRhdGEuaWNlYmVyZ1BhcnRpdGlvblNwZWMpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgaWNlYmVyZ1NvcnRPcmRlcjogbWV0YWRhdGEuaWNlYmVyZ1NvcnRPcmRlclxuICAgICAgICA/IHRoaXMuYnVpbGRJY2ViZXJnU29ydE9yZGVyKG1ldGFkYXRhLmljZWJlcmdTb3J0T3JkZXIpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgdGFibGVQcm9wZXJ0aWVzOiBtZXRhZGF0YS50YWJsZVByb3BlcnRpZXNcbiAgICAgICAgPyB0aGlzLmJ1aWxkVGFibGVQcm9wZXJ0aWVzKG1ldGFkYXRhLnRhYmxlUHJvcGVydGllcylcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIENsb3VkRm9ybWF0aW9uIEljZWJlcmcgc2NoZW1hIHByb3BlcnR5LlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEljZWJlcmdTY2hlbWEoc2NoZW1hOiBJY2ViZXJnU2NoZW1hUHJvcGVydHkpOiBDZm5UYWJsZS5JY2ViZXJnU2NoZW1hUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBzY2hlbWFGaWVsZExpc3Q6IHNjaGVtYS5zY2hlbWFGaWVsZExpc3QubWFwKGZpZWxkID0+ICh7XG4gICAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgIC4uLihmaWVsZC5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkICYmIHsgcmVxdWlyZWQ6IGZpZWxkLnJlcXVpcmVkIH0pLFxuICAgICAgICAuLi4oZmllbGQuaWQgIT09IHVuZGVmaW5lZCAmJiB7IGlkOiBmaWVsZC5pZCB9KSxcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgQ2xvdWRGb3JtYXRpb24gSWNlYmVyZyBwYXJ0aXRpb24gc3BlY2lmaWNhdGlvbiBwcm9wZXJ0eS5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRJY2ViZXJnUGFydGl0aW9uU3BlYyhzcGVjOiBJY2ViZXJnUGFydGl0aW9uU3BlYyk6IENmblRhYmxlLkljZWJlcmdQYXJ0aXRpb25TcGVjUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi4oc3BlYy5zcGVjSWQgIT09IHVuZGVmaW5lZCAmJiB7IHNwZWNJZDogc3BlYy5zcGVjSWQgfSksXG4gICAgICBmaWVsZHM6IHNwZWMuZmllbGRzLm1hcChmaWVsZCA9PiAoe1xuICAgICAgICBzb3VyY2VJZDogZmllbGQuc291cmNlSWQsXG4gICAgICAgIHRyYW5zZm9ybTogZmllbGQudHJhbnNmb3JtLnZhbHVlLFxuICAgICAgICBuYW1lOiBmaWVsZC5uYW1lLFxuICAgICAgICAuLi4oZmllbGQuZmllbGRJZCAhPT0gdW5kZWZpbmVkICYmIHsgZmllbGRJZDogZmllbGQuZmllbGRJZCB9KSxcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgQ2xvdWRGb3JtYXRpb24gSWNlYmVyZyBzb3J0IG9yZGVyIHByb3BlcnR5LlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEljZWJlcmdTb3J0T3JkZXIoc29ydE9yZGVyOiBJY2ViZXJnU29ydE9yZGVyKTogQ2ZuVGFibGUuSWNlYmVyZ1NvcnRPcmRlclByb3BlcnR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uKHNvcnRPcmRlci5vcmRlcklkICE9PSB1bmRlZmluZWQgJiYgeyBvcmRlcklkOiBzb3J0T3JkZXIub3JkZXJJZCB9KSxcbiAgICAgIGZpZWxkczogc29ydE9yZGVyLmZpZWxkcy5tYXAoZmllbGQgPT4gKHtcbiAgICAgICAgc291cmNlSWQ6IGZpZWxkLnNvdXJjZUlkLFxuICAgICAgICB0cmFuc2Zvcm06IGZpZWxkLnRyYW5zZm9ybS52YWx1ZSxcbiAgICAgICAgZGlyZWN0aW9uOiBmaWVsZC5kaXJlY3Rpb24sXG4gICAgICAgIG51bGxPcmRlcjogZmllbGQubnVsbE9yZGVyLFxuICAgICAgfSkpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBDbG91ZEZvcm1hdGlvbiB0YWJsZSBwcm9wZXJ0aWVzIG1hcCBmcm9tIGtleS12YWx1ZSBlbnRyaWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFRhYmxlUHJvcGVydGllcyh0YWJsZVByb3BlcnRpZXM6IFRhYmxlUHJvcGVydHlFbnRyeVtdKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3Qga2V5cyA9IHRhYmxlUHJvcGVydGllcy5tYXAoZW50cnkgPT4gZW50cnkua2V5KTtcbiAgICBjb25zdCBkdXBsaWNhdGVLZXlzID0ga2V5cy5maWx0ZXIoKGtleSwgaW5kZXgpID0+IGtleXMuaW5kZXhPZihrZXkpICE9PSBpbmRleCk7XG4gICAgaWYgKGR1cGxpY2F0ZUtleXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAnRHVwbGljYXRlVGFibGVQcm9wZXJ0eUtleScsXG4gICAgICAgIGBEdXBsaWNhdGUgdGFibGUgcHJvcGVydHkga2V5cyBhcmUgbm90IGFsbG93ZWQ6ICR7Wy4uLm5ldyBTZXQoZHVwbGljYXRlS2V5cyldLmpvaW4oJywgJyl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYmxlUHJvcGVydGllcy5yZWR1Y2UoXG4gICAgICAoYWNjLCBlbnRyeSkgPT4gKHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICBbZW50cnkua2V5XTogZW50cnkudmFsdWUsXG4gICAgICB9KSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
451
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQkFBeUI7QUFDekIsMkNBQTJDO0FBQzNDLDJEQUFvRTtBQU9wRSwyQ0FJMEI7QUFDMUIsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUcxRSx1Q0FBdUM7QUFtRnZDOztHQUVHO0FBQ0gsTUFBZSxTQUFVLFNBQVEsZUFBUTtJQWtCaEMsbUJBQW1CLENBQ3hCLFNBQThCO1FBRTlCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSw2QkFBYyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7Z0JBQzNELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsY0FBYyxFQUFFLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7YUFDM0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEUsQ0FBQztRQUVELE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUM7S0FDbEM7SUFFRDs7T0FFRztJQUNJLFNBQVMsQ0FBQyxRQUF3QjtRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQ2YsUUFBUSxFQUNSLEtBQUssQ0FBQyxpQkFBaUIsRUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO0tBQ0g7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxR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QyxDQUFDO1lBQy9FLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxJQUFJLDhCQUF1QixDQUMvQiwyQkFBMkIsRUFDM0Isa0RBQWtELENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUMzRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FDM0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLEdBQUcsR0FBRztnQkFDTixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSzthQUN6QixDQUFDLEVBQ0YsRUFBNEIsQ0FDN0IsQ0FBQztTQUNIOztZQXRQVSx1REFBSzs7Ozs7QUFBTCxzQkFBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVPTCB9IGZyb20gJ29zJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmblRhYmxlLCBDZm5UYWJsZVBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zM3RhYmxlcyc7XG5pbXBvcnQgdHlwZSB7XG4gIElSZXNvdXJjZSxcbiAgSVRhZ2dhYmxlVjIsXG4gIFJlbW92YWxQb2xpY3ksXG4gIFRhZ01hbmFnZXIsXG59IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLFxuICBUb2tlbixcbn0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBJTmFtZXNwYWNlIH0gZnJvbSAnLi9uYW1lc3BhY2UnO1xuaW1wb3J0ICogYXMgcGVybXMgZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBTMyBUYWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGFibGUgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGlzIHRhYmxlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHRhYmxlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFjY291bnRJZCBjb250YWluaW5nIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZWdpb24gY29udGFpbmluZyB0aGlzIHRhYmxlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBzdGF0ZW1lbnQgdG8gdGhlIHJlc291cmNlIHBvbGljeSBmb3IgYSBwcmluY2lwYWwgKGkuZS5cbiAgICogYWNjb3VudC9yb2xlL3NlcnZpY2UpIHRvIHBlcmZvcm0gYWN0aW9ucyBvbiB0aGlzIHRhYmxlLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHBvbGljeSBzdGF0ZW1lbnQgbWF5IG9yIG1heSBub3QgYmUgYWRkZWQgdG8gdGhlIHBvbGljeS5cbiAgICogRm9yIGV4YW1wbGUsIHdoZW4gYW4gYElUYWJsZWAgaXMgY3JlYXRlZCBmcm9tIGFuIGV4aXN0aW5nIHRhYmxlLFxuICAgKiBpdCdzIG5vdCBwb3NzaWJsZSB0byB0ZWxsIHdoZXRoZXIgdGhlIHRhYmxlIGFscmVhZHkgaGFzIGEgcG9saWN5XG4gICAqIGF0dGFjaGVkLCBsZXQgYWxvbmUgdG8gcmUtdXNlIHRoYXQgcG9saWN5IHRvIGFkZCBtb3JlIHN0YXRlbWVudHMgdG8gaXQuXG4gICAqIFNvIGl0J3Mgc2FmZXN0IHRvIGRvIG5vdGhpbmcgaW4gdGhlc2UgY2FzZXMuXG4gICAqXG4gICAqIEBwYXJhbSBzdGF0ZW1lbnQgdGhlIHBvbGljeSBzdGF0ZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIHRhYmxlJ3NcbiAgICogcG9saWN5LlxuICAgKiBAcmV0dXJucyBtZXRhZGF0YSBhYm91dCB0aGUgZXhlY3V0aW9uIG9mIHRoaXMgbWV0aG9kLiBJZiB0aGUgcG9saWN5XG4gICAqIHdhcyBub3QgYWRkZWQsIHRoZSB2YWx1ZSBvZiBgc3RhdGVtZW50QWRkZWRgIHdpbGwgYmUgYGZhbHNlYC4gWW91XG4gICAqIHNob3VsZCBhbHdheXMgY2hlY2sgdGhpcyB2YWx1ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgb3BlcmF0aW9uIHdhc1xuICAgKiBhY3R1YWxseSBjYXJyaWVkIG91dC4gT3RoZXJ3aXNlLCBzeW50aGVzaXMgYW5kIGRlcGxveSB3aWxsIHRlcm1pbmF0ZVxuICAgKiBzaWxlbnRseSwgd2hpY2ggbWF5IGJlIGNvbmZ1c2luZy5cbiAgICovXG4gIGFkZFRvUmVzb3VyY2VQb2xpY3koc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50KTogaWFtLkFkZFRvUmVzb3VyY2VQb2xpY3lSZXN1bHQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgdG8gYW4gSUFNIHByaW5jaXBhbCAoUm9sZS9Hcm91cC9Vc2VyKS5cbiAgICpcbiAgICogSWYgdGhlIHBhcmVudCBUYWJsZUJ1Y2tldCBvZiB0aGlzIHRhYmxlIGhhcyBlbmNyeXB0aW9uLFxuICAgKiB5b3Ugc2hvdWxkIGdyYW50IGttczpEZWNyeXB0IHBlcm1pc3Npb24gdG8gdXNlIHRoaXMga2V5IHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWwgdG8gYWxsb3cgcmVhZCBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgZ3JhbnRSZWFkKGlkZW50aXR5OiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgdG8gYW4gSUFNIHByaW5jaXBhbCAoUm9sZS9Hcm91cC9Vc2VyKS5cbiAgICpcbiAgICogSWYgdGhlIHBhcmVudCBUYWJsZUJ1Y2tldCBvZiB0aGlzIHRhYmxlIGhhcyBlbmNyeXB0aW9uLFxuICAgKiB5b3Ugc2hvdWxkIGdyYW50IGttczpHZW5lcmF0ZURhdGFLZXkgYW5kIGttczpEZWNyeXB0IHBlcm1pc3Npb25cbiAgICogdG8gdXNlIHRoaXMga2V5IHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWwgdG8gYWxsb3cgd3JpdGUgcGVybWlzc2lvbnMgdG9cbiAgICovXG4gIGdyYW50V3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSB0byBhbiBJQU0gcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiB0aGUgcGFyZW50IFRhYmxlQnVja2V0IG9mIHRoaXMgdGFibGUgaGFzIGVuY3J5cHRpb24sXG4gICAqIHlvdSBzaG91bGQgZ3JhbnQga21zOkdlbmVyYXRlRGF0YUtleSBhbmQga21zOkRlY3J5cHQgcGVybWlzc2lvblxuICAgKiB0byB1c2UgdGhpcyBrZXkgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgZ3JhbnRSZWFkV3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFRhYmxlIGltcGxlbWVudGF0aW9ucy5cbiAqL1xuYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVGFibGUge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhYmxlLlxuICAgKlxuICAgKiBJZiBgYXV0b0NyZWF0ZVBvbGljeWAgaXMgdHJ1ZSwgYSBgVGFibGVQb2xpY3lgIHdpbGwgYmUgY3JlYXRlZCB1cG9uIHRoZVxuICAgKiBmaXJzdCBjYWxsIHRvIGFkZFRvUmVzb3VyY2VQb2xpY3kocykuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdGFibGVQb2xpY3k/OiBDZm5UYWJsZVBvbGljeTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGEgdGFibGUgcmVzb3VyY2UgcG9saWN5IHNob3VsZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdXBvblxuICAgKiB0aGUgZmlyc3QgY2FsbCB0byBgYWRkVG9SZXNvdXJjZVBvbGljeWAuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYXV0b0NyZWF0ZVBvbGljeTogYm9vbGVhbjtcblxuICBwdWJsaWMgYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICBzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQsXG4gICk6IGlhbS5BZGRUb1Jlc291cmNlUG9saWN5UmVzdWx0IHtcbiAgICBpZiAoIXRoaXMudGFibGVQb2xpY3kgJiYgdGhpcy5hdXRvQ3JlYXRlUG9saWN5KSB7XG4gICAgICB0aGlzLnRhYmxlUG9saWN5ID0gbmV3IENmblRhYmxlUG9saWN5KHRoaXMsICdEZWZhdWx0UG9saWN5Jywge1xuICAgICAgICB0YWJsZUFybjogdGhpcy50YWJsZUFybixcbiAgICAgICAgcmVzb3VyY2VQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe30pLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGVQb2xpY3kpIHtcbiAgICAgIHRoaXMudGFibGVQb2xpY3kucmVzb3VyY2VQb2xpY3kuYWRkU3RhdGVtZW50cyhzdGF0ZW1lbnQpO1xuICAgICAgcmV0dXJuIHsgc3RhdGVtZW50QWRkZWQ6IHRydWUsIHBvbGljeURlcGVuZGFibGU6IHRoaXMudGFibGVQb2xpY3kgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogZmFsc2UgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoXG4gICAgICBpZGVudGl0eSxcbiAgICAgIHBlcm1zLlRBQkxFX1JFQURfQUNDRVNTLFxuICAgICAgdGhpcy50YWJsZUFybixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50V3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoXG4gICAgICBpZGVudGl0eSxcbiAgICAgIHBlcm1zLlRBQkxFX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVBcm4sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfUkVBRF9XUklURV9BQ0NFU1MsXG4gICAgICB0aGlzLnRhYmxlQXJuLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBnaXZlbiBzM3RhYmxlcyBwZXJtaXNzaW9ucyB0byB0aGUgcHJvdmlkZWQgcHJpbmNpcGFsXG4gICAqIEByZXR1cm5zIEdyYW50IG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBncmFudChcbiAgICBncmFudGVlOiBpYW0uSUdyYW50YWJsZSxcbiAgICB0YWJsZUFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIHJlc291cmNlQXJuOiBzdHJpbmcsXG4gICAgLi4ub3RoZXJSZXNvdXJjZUFybnM6IChzdHJpbmcgfCB1bmRlZmluZWQpW10pIHtcbiAgICBjb25zdCByZXNvdXJjZXMgPSBbcmVzb3VyY2VBcm4sIC4uLm90aGVyUmVzb3VyY2VBcm5zXS5maWx0ZXIoYXJuID0+IGFybiAhPSB1bmRlZmluZWQpO1xuXG4gICAgY29uc3QgZ3JhbnQgPSBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWxPclJlc291cmNlKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiB0YWJsZUFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IHJlc291cmNlcyxcbiAgICAgIHJlc291cmNlOiB0aGlzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdyYW50O1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBuZXcgUzMgVGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgdGFibGUsIHVuaXF1ZSB3aXRoaW4gdGhlIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHVuZGVyIHdoaWNoIHRoaXMgdGFibGUgaXMgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBJTmFtZXNwYWNlO1xuICAvKipcbiAgICogRm9ybWF0IG9mIHRoaXMgdGFibGUuIEN1cnJlbnRseSwgdGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlIGlzIE9wZW5UYWJsZUZvcm1hdC5JQ0VCRVJHLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlblRhYmxlRm9ybWF0OiBPcGVuVGFibGVGb3JtYXQ7XG4gIC8qKlxuICAgKiBTZXR0aW5ncyBnb3Zlcm5pbmcgdGhlIENvbXBhY3Rpb24gbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKiBAZGVmYXVsdCBBbWF6b24gUzMgc2VsZWN0cyB0aGUgYmVzdCBjb21wYWN0aW9uIHN0cmF0ZWd5IGJhc2VkIG9uIHlvdXIgdGFibGUgc29ydCBvcmRlci5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMtbWFpbnRlbmFuY2UuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGFjdGlvbj86IENvbXBhY3Rpb25Qcm9wZXJ0eTtcbiAgLyoqXG4gICAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIG1ldGFkYXRhIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICAgKiBAZGVmYXVsdCB0YWJsZSBpcyBjcmVhdGVkIHdpdGhvdXQgYW55IG1ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBpY2ViZXJnTWV0YWRhdGE/OiBJY2ViZXJnTWV0YWRhdGFQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIHNuYXBzaG90IG1hbmFnZW1lbnQgc2V0dGluZ3MgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqIEBkZWZhdWx0IGVuYWJsZWQ6IE1pbmltdW1TbmFwc2hvdHMgaXMgMSBieSBkZWZhdWx0IGFuZCBNYXhpbXVtU25hcHNob3RBZ2UgaXMgMTIwIGhvdXJzIGJ5IGRlZmF1bHQuXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdE1hbmFnZW1lbnQ/OiBTbmFwc2hvdE1hbmFnZW1lbnRQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoYXQgaGFwcGVucyB0byB0aGlzIHRhYmxlIGl0IGl0IHN0b3BlZCBiZWluZyBtYW5hZ2VkIGJ5IGNsb3VkZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBSRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xuICAvKipcbiAgICogSWYgdHJ1ZSwgaW5kaWNhdGVzIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gc3BlY2lmeSBhIHNjaGVtYSBmb3IgdGhlIHRhYmxlLlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB0byAnSWNlYmVyZ01ldGFkYXRhJy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHdpdGhvdXRNZXRhZGF0YT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU3VwcG9ydGVkIG9wZW4gdGFibGUgZm9ybWF0cy5cbiAqL1xuZXhwb3J0IGVudW0gT3BlblRhYmxlRm9ybWF0IHtcbiAgLyoqXG4gICAqIEFwYWNoZSBJY2ViZXJnIHRhYmxlIGZvcm1hdC5cbiAgICovXG4gIElDRUJFUkcgPSAnSUNFQkVSRycsXG59XG5cbi8qKlxuICogU2V0dGluZ3MgZ292ZXJuaW5nIHRoZSBDb21wYWN0aW9uIG1haW50ZW5hbmNlIGFjdGlvbi5cbiAqXG4gKiBAZGVmYXVsdCAtIE5vIGNvbXBhY3Rpb24gc2V0dGluZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wYWN0aW9uUHJvcGVydHkge1xuICAvKipcbiAgICogU3RhdHVzIG9mIHRoZSBjb21wYWN0aW9uIG1haW50ZW5hbmNlIGFjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1czogU3RhdHVzO1xuICAvKipcbiAgICogVGFyZ2V0IGZpbGUgc2l6ZSBpbiBtZWdhYnl0ZXMgZm9yIGNvbXBhY3Rpb24uXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRGaWxlU2l6ZU1iOiBudW1iZXI7XG59XG5cbi8qKlxuICogU3RhdHVzIHZhbHVlcyBmb3IgbWFpbnRlbmFuY2UgYWN0aW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gU3RhdHVzIHtcbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKi9cbiAgRU5BQkxFRCA9ICdlbmFibGVkJyxcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG1haW50ZW5hbmNlIGFjdGlvbi5cbiAgICovXG4gIERJU0FCTEVEID0gJ2Rpc2FibGVkJyxcbn1cblxuLyoqXG4gKiBJY2ViZXJnIHRyYW5zZm9ybSB2YWx1ZXMgZm9yIHBhcnRpdGlvbiBhbmQgc29ydCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBJY2ViZXJnVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIFVzZSB0aGUgY29sdW1uIHZhbHVlIGFzIHRoZSB0cmFuc2Zvcm0gdmFsdWUgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSURFTlRJVFkgPSBuZXcgSWNlYmVyZ1RyYW5zZm9ybSgnaWRlbnRpdHknKTtcblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgdGltZXN0YW1wL2RhdGUgZmllbGQgdG8geWVhci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgWUVBUiA9IG5ldyBJY2ViZXJnVHJhbnNmb3JtKCd5ZWFyJyk7XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhIHRpbWVzdGFtcC9kYXRlIGZpZWxkIHRvIG1vbnRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNT05USCA9IG5ldyBJY2ViZXJnVHJhbnNmb3JtKCdtb250aCcpO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gYSB0aW1lc3RhbXAvZGF0ZSBmaWVsZCB0byBkYXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERBWSA9IG5ldyBJY2ViZXJnVHJhbnNmb3JtKCdkYXknKTtcblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgdGltZXN0YW1wIGZpZWxkIHRvIGhvdXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhPVVIgPSBuZXcgSWNlYmVyZ1RyYW5zZm9ybSgnaG91cicpO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdmFsdWVzIGludG8gYSBmaXhlZCBudW1iZXIgb2YgYnVja2V0cy5cbiAgICpcbiAgICogQHBhcmFtIG4gVGhlIG51bWJlciBvZiBidWNrZXRzIChtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcilcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYnVja2V0KG46IG51bWJlcik6IEljZWJlcmdUcmFuc2Zvcm0ge1xuICAgIGlmIChuIDw9IDAgfHwgIU51bWJlci5pc0ludGVnZXIobikpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgJ0ludmFsaWRCdWNrZXRDb3VudCcsXG4gICAgICAgICdCdWNrZXQgY291bnQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuJyxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSWNlYmVyZ1RyYW5zZm9ybShgYnVja2V0WyR7bn1dYCk7XG4gIH1cblxuICAvKipcbiAgICogVHJ1bmNhdGUgdmFsdWVzIHRvIGEgZml4ZWQgd2lkdGguXG4gICAqXG4gICAqIEBwYXJhbSB3aWR0aCBUaGUgdHJ1bmNhdGlvbiB3aWR0aCAobXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRydW5jYXRlKHdpZHRoOiBudW1iZXIpOiBJY2ViZXJnVHJhbnNmb3JtIHtcbiAgICBpZiAod2lkdGggPD0gMCB8fCAhTnVtYmVyLmlzSW50ZWdlcih3aWR0aCkpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgJ0ludmFsaWRUcnVuY2F0ZVdpZHRoJyxcbiAgICAgICAgJ1RydW5jYXRlIHdpZHRoIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLicsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEljZWJlcmdUcmFuc2Zvcm0oYHRydW5jYXRlWyR7d2lkdGh9XWApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGN1c3RvbSB0cmFuc2Zvcm0gZnJvbSBhIHN0cmluZyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB0cmFuc2Zvcm0gc3RyaW5nIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBJY2ViZXJnVHJhbnNmb3JtIHtcbiAgICByZXR1cm4gbmV3IEljZWJlcmdUcmFuc2Zvcm0odmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlIHRyYW5zZm9ybS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRyYW5zZm9ybS5cbiAgICovXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogU29ydCBkaXJlY3Rpb24gdmFsdWVzIGZvciBJY2ViZXJnIHNvcnQgZmllbGRzLlxuICovXG5leHBvcnQgZW51bSBTb3J0RGlyZWN0aW9uIHtcbiAgLyoqXG4gICAqIFNvcnQgdmFsdWVzIGluIGFzY2VuZGluZyBvcmRlci5cbiAgICovXG4gIEFTQyA9ICdhc2MnLFxuICAvKipcbiAgICogU29ydCB2YWx1ZXMgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAgICovXG4gIERFU0MgPSAnZGVzYycsXG59XG5cbi8qKlxuICogTnVsbCBvcmRlcmluZyB2YWx1ZXMgZm9yIEljZWJlcmcgc29ydCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBlbnVtIE51bGxPcmRlciB7XG4gIC8qKlxuICAgKiBQbGFjZSBudWxsIHZhbHVlcyBiZWZvcmUgbm9uLW51bGwgdmFsdWVzLlxuICAgKi9cbiAgTlVMTFNfRklSU1QgPSAnbnVsbHMtZmlyc3QnLFxuICAvKipcbiAgICogUGxhY2UgbnVsbCB2YWx1ZXMgYWZ0ZXIgbm9uLW51bGwgdmFsdWVzLlxuICAgKi9cbiAgTlVMTFNfTEFTVCA9ICdudWxscy1sYXN0Jyxcbn1cblxuLyoqXG4gKiBQYXJ0aXRpb24gZmllbGQgZGVmaW5pdGlvbiBmb3IgSWNlYmVyZyB0YWJsZS5cbiAqXG4gKiBEZWZpbmVzIGEgc2luZ2xlIHBhcnRpdGlvbiBjb2x1bW4uIE11bHRpcGxlIHBhcnRpdGlvbiBmaWVsZHMgY2FuIGJlIGNvbWJpbmVkXG4gKiBpbiBhbiBJY2ViZXJnUGFydGl0aW9uU3BlYyB0byBjcmVhdGUgbXVsdGktbGV2ZWwgcGFydGl0aW9uaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdQYXJ0aXRpb25GaWVsZCB7XG4gIC8qKlxuICAgKiBUaGUgc291cmNlIGZpZWxkIElEIGZyb20gdGhlIHNjaGVtYS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUlkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJ0aXRpb24gdHJhbnNmb3JtIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBVc2UgYEljZWJlcmdUcmFuc2Zvcm1gIHN0YXRpYyBwcm9wZXJ0aWVzIGZvciBjb21tb24gdHJhbnNmb3JtcyAoZS5nLiwgYEljZWJlcmdUcmFuc2Zvcm0uSURFTlRJVFlgKVxuICAgKiBvciBtZXRob2RzIGZvciBwYXJhbWV0ZXJpemVkIHRyYW5zZm9ybXMgKGUuZy4sIGBJY2ViZXJnVHJhbnNmb3JtLmJ1Y2tldCgxNilgKS5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zZm9ybTogSWNlYmVyZ1RyYW5zZm9ybTtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwYXJ0aXRpb24gZmllbGQuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHBhcnRpdGlvbiBmaWVsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBdXRvLWFzc2lnbmVkIHN0YXJ0aW5nIGZyb20gMTAwMFxuICAgKi9cbiAgcmVhZG9ubHkgZmllbGRJZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQYXJ0aXRpb24gc3BlY2lmaWNhdGlvbiBmb3IgSWNlYmVyZyB0YWJsZS5cbiAqXG4gKiBDb250YWlucyB0aGUgY29tcGxldGUgcGFydGl0aW9uaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGEgdGFibGUsIGluY2x1ZGluZyBhbGwgcGFydGl0aW9uIGZpZWxkcy5cbiAqIFVzZSB0aGlzIHRvIGRlZmluZSBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgKGUuZy4sIHBhcnRpdGlvbiBieSBkYXRlLCB0aGVuIGJ5IHJlZ2lvbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ1BhcnRpdGlvblNwZWMge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgcGFydGl0aW9uIGZpZWxkcy5cbiAgICovXG4gIHJlYWRvbmx5IGZpZWxkczogSWNlYmVyZ1BhcnRpdGlvbkZpZWxkW107XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHBhcnRpdGlvbiBzcGVjaWZpY2F0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBzcGVjSWQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogU29ydCBmaWVsZCBkZWZpbml0aW9uIGZvciBJY2ViZXJnIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdTb3J0RmllbGQge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBmaWVsZCBJRCBmcm9tIHRoZSBzY2hlbWEuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc29ydCB0cmFuc2Zvcm0gZnVuY3Rpb24uXG4gICAqXG4gICAqIFVzZSBgSWNlYmVyZ1RyYW5zZm9ybWAgc3RhdGljIHByb3BlcnRpZXMgZm9yIGNvbW1vbiB0cmFuc2Zvcm1zIChlLmcuLCBgSWNlYmVyZ1RyYW5zZm9ybS5JREVOVElUWWApXG4gICAqIG9yIG1ldGhvZHMgZm9yIHBhcmFtZXRlcml6ZWQgdHJhbnNmb3JtcyAoZS5nLiwgYEljZWJlcmdUcmFuc2Zvcm0uYnVja2V0KDE2KWApLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNmb3JtOiBJY2ViZXJnVHJhbnNmb3JtO1xuXG4gIC8qKlxuICAgKiBUaGUgc29ydCBkaXJlY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBudWxsIG9yZGVyaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgbnVsbE9yZGVyOiBOdWxsT3JkZXI7XG59XG5cbi8qKlxuICogU29ydCBvcmRlciBzcGVjaWZpY2F0aW9uIGZvciBJY2ViZXJnIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdTb3J0T3JkZXIge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygc29ydCBmaWVsZHMuXG4gICAqL1xuICByZWFkb25seSBmaWVsZHM6IEljZWJlcmdTb3J0RmllbGRbXTtcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc29ydCBvcmRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgb3JkZXJJZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIHNpbmdsZSB0YWJsZSBwcm9wZXJ0eSBrZXktdmFsdWUgcGFpciBmb3IgSWNlYmVyZyB0YWJsZSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUHJvcGVydHlFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydHkga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgbWV0YWRhdGEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzdGFibGVzLXRhYmxlLWljZWJlcmdtZXRhZGF0YS5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ01ldGFkYXRhUHJvcGVydHkge1xuICAvKipcbiAgICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc2NoZW1hIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzdGFibGVzLXRhYmxlLWljZWJlcmdtZXRhZGF0YS5odG1sI2Nmbi1zM3RhYmxlcy10YWJsZS1pY2ViZXJnbWV0YWRhdGEtaWNlYmVyZ3NjaGVtYVxuICAgKi9cbiAgcmVhZG9ubHkgaWNlYmVyZ1NjaGVtYTogSWNlYmVyZ1NjaGVtYVByb3BlcnR5O1xuXG4gIC8qKlxuICAgKiBUaGUgcGFydGl0aW9uIHNwZWNpZmljYXRpb24gZm9yIHRoZSBJY2ViZXJnIHRhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHBhcnRpdGlvbiBzcGVjaWZpY2F0aW9uXG4gICAqL1xuICByZWFkb25seSBpY2ViZXJnUGFydGl0aW9uU3BlYz86IEljZWJlcmdQYXJ0aXRpb25TcGVjO1xuXG4gIC8qKlxuICAgKiBUaGUgc29ydCBvcmRlciBmb3IgdGhlIEljZWJlcmcgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc29ydCBvcmRlclxuICAgKi9cbiAgcmVhZG9ubHkgaWNlYmVyZ1NvcnRPcmRlcj86IEljZWJlcmdTb3J0T3JkZXI7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBwcm9wZXJ0aWVzIGZvciB0aGUgSWNlYmVyZyB0YWJsZS5cbiAgICogRWFjaCBlbnRyeSByZXByZXNlbnRzIGEga2V5LXZhbHVlIHBhaXIgZm9yIEljZWJlcmcgdGFibGUgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gcHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVQcm9wZXJ0aWVzPzogVGFibGVQcm9wZXJ0eUVudHJ5W107XG59XG5cbi8qKlxuICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc2NoZW1hIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdTY2hlbWFQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzY2hlbWEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqL1xuICByZWFkb25seSBzY2hlbWFGaWVsZExpc3Q6IFNjaGVtYUZpZWxkUHJvcGVydHlbXTtcbn1cblxuLyoqXG4gKiBDb250YWlucyBkZXRhaWxzIGFib3V0IGEgc2NoZW1hIGZpZWxkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYUZpZWxkUHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZmllbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXV0by1hc3NpZ25lZCBieSBTMyBUYWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IGlkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmllbGQuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgQm9vbGVhbiB2YWx1ZSB0aGF0IHNwZWNpZmllcyB3aGV0aGVyIHZhbHVlcyBhcmUgcmVxdWlyZWQgZm9yIGVhY2ggcm93IGluIHRoaXMgZmllbGQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgaXMgYGZhbHNlYCBhbmQgbnVsbCB2YWx1ZXMgYXJlIGFsbG93ZWQgaW4gdGhlIGZpZWxkLiBJZiB0aGlzIGlzIGB0cnVlYCwgdGhlIGZpZWxkIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZmllbGQgdHlwZS5cbiAgICpcbiAgICogUzMgVGFibGVzIHN1cHBvcnRzIGFsbCBBcGFjaGUgSWNlYmVyZyBwcmltaXRpdmUgdHlwZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIFtBcGFjaGUgSWNlYmVyZyBkb2N1bWVudGF0aW9uXShodHRwczovL2ljZWJlcmcuYXBhY2hlLm9yZy9zcGVjLyNwcmltaXRpdmUtdHlwZXMpLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIHNuYXBzaG90IG1hbmFnZW1lbnQgc2V0dGluZ3MgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gKlxuICogQSBzbmFwc2hvdCBpcyBleHBpcmVkIHdoZW4gaXQgZXhjZWVkcyBNaW5TbmFwc2hvdHNUb0tlZXAgYW5kIE1heFNuYXBzaG90QWdlSG91cnMuXG4gKlxuICogQGRlZmF1bHQgLSBObyBzbmFwc2hvdCBtYW5hZ2VtZW50IHNldHRpbmdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU25hcHNob3RNYW5hZ2VtZW50UHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gYWdlIG9mIGEgc25hcHNob3QgYmVmb3JlIGl0IGNhbiBiZSBleHBpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1heGltdW0gYWdlXG4gICAqL1xuICByZWFkb25seSBtYXhTbmFwc2hvdEFnZUhvdXJzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2Ygc25hcHNob3RzIHRvIGtlZXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWluaW11bSBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IG1pblNuYXBzaG90c1RvS2VlcD86IG51bWJlcjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIFNuYXBzaG90TWFuYWdlbWVudCBtYWludGVuYW5jZSBhY3Rpb24gaXMgZW5hYmxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb3Qgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBTdGF0dXM7XG59XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYSB0YWJsZSBvdXRzaWRlIHRoaXMgc3RhY2tcbiAqXG4gKiBUaGUgdGFibGVOYW1lLCByZWdpb24sIGFuZCBhY2NvdW50IGNhbiBiZSBwcm92aWRlZCBleHBsaWNpdGx5XG4gKiBvciB3aWxsIGJlIGluZmVycmVkIGZyb20gdGhlIHRhYmxlQXJuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyB0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSdzIEFSTi5cbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gUzMgVGFibGUgd2l0aCBoZWxwZXJzLlxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgVGFibGUgZXh0ZW5kcyBUYWJsZUJhc2UgaW1wbGVtZW50cyBJVGFnZ2FibGVWMiB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLXMzdGFibGVzLWFscGhhLlRhYmxlJztcblxuICAvKipcbiAgICogRGVmaW5lcyBhIFRhYmxlIGNvbnN0cnVjdCB0aGF0IHJlcHJlc2VudHMgYW4gZXh0ZXJuYWwgdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApLlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWUuXG4gICAqIEBwYXJhbSBhdHRycyBBIGBUYWJsZUF0dHJpYnV0ZXNgIG9iamVjdCBjb250YWluaW5nIHRoZSB0YWJsZSBuYW1lIGFuZCBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UYWJsZUF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBUYWJsZUF0dHJpYnV0ZXMsXG4gICk6IElUYWJsZSB7XG4gICAgY29uc3QgdGFibGVBcm4gPSBhdHRycy50YWJsZUFybjtcbiAgICBUYWJsZS52YWxpZGF0ZVRhYmxlTmFtZShhdHRycy50YWJsZU5hbWUpO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgVGFibGVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZU5hbWUgPSBhdHRycy50YWJsZU5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVBcm4gPSB0YWJsZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZVBvbGljeT86IENmblRhYmxlUG9saWN5O1xuICAgICAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgLyoqXG4gICAgICAgKiBFeHBvcnRzIHRoaXMgIGZyb20gdGhlIHN0YWNrLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgZXhwb3J0KCkge1xuICAgICAgICByZXR1cm4gYXR0cnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkLCB7XG4gICAgICBlbnZpcm9ubWVudEZyb21Bcm46IHRhYmxlQXJuLFxuICAgICAgcGh5c2ljYWxOYW1lOiB0YWJsZUFybixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGVzLWJ1Y2tldHMtbmFtaW5nLmh0bWxcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBOYW1lIG9mIHRoZSB0YWJsZVxuICAgKiBAdGhyb3dzIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yIGlmIGFueSBuYW1pbmcgZXJyb3JzIGFyZSBkZXRlY3RlZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2YWxpZGF0ZVRhYmxlTmFtZSh0YWJsZU5hbWU6IHN0cmluZykge1xuICAgIGlmICh0YWJsZU5hbWUgPT0gdW5kZWZpbmVkIHx8IFRva2VuLmlzVW5yZXNvbHZlZCh0YWJsZU5hbWUpKSB7XG4gICAgICAvLyB0aGUgbmFtZSBpcyBhIGxhdGUtYm91bmQgdmFsdWUsIG5vdCBhIGRlZmluZWQgc3RyaW5nLCBzbyBza2lwIHZhbGlkYXRpb25cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBMZW5ndGggdmFsaWRhdGlvblxuICAgIGlmICh0YWJsZU5hbWUubGVuZ3RoIDwgMSB8fCB0YWJsZU5hbWUubGVuZ3RoID4gMjU1KSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgJ1RhYmxlIG5hbWUgbXVzdCBiZSBhdCBsZWFzdCAxIGFuZCBubyBtb3JlIHRoYW4gMjU1IGNoYXJhY3RlcnMnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDaGFyYWN0ZXIgc2V0IHZhbGlkYXRpb25cbiAgICBjb25zdCBpbGxlZ2FsQ2hhcnNldFJlZ0V4ID0gL1teYS16MC05X10vO1xuICAgIGNvbnN0IGFsbG93ZWRFZGdlQ2hhcnNldFJlZ0V4ID0gL1thLXowLTldLztcblxuICAgIGNvbnN0IGlsbGVnYWxDaGFyTWF0Y2ggPSB0YWJsZU5hbWUubWF0Y2goaWxsZWdhbENoYXJzZXRSZWdFeCk7XG4gICAgaWYgKGlsbGVnYWxDaGFyTWF0Y2gpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnVGFibGUgbmFtZSBtdXN0IG9ubHkgY29udGFpbiBsb3dlcmNhc2UgY2hhcmFjdGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChfKScgK1xuICAgICAgICAgIGAgKG9mZnNldDogJHtpbGxlZ2FsQ2hhck1hdGNoLmluZGV4fSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBFZGdlIGNoYXJhY3RlciB2YWxpZGF0aW9uXG4gICAgaWYgKCFhbGxvd2VkRWRnZUNoYXJzZXRSZWdFeC50ZXN0KHRhYmxlTmFtZS5jaGFyQXQoMCkpKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgJ1RhYmxlIG5hbWUgbXVzdCBzdGFydCB3aXRoIGEgbG93ZXJjYXNlIGxldHRlciBvciBudW1iZXIgKG9mZnNldDogMCknLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFhbGxvd2VkRWRnZUNoYXJzZXRSZWdFeC50ZXN0KHRhYmxlTmFtZS5jaGFyQXQodGFibGVOYW1lLmxlbmd0aCAtIDEpKSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGBUYWJsZSBuYW1lIG11c3QgZW5kIHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyIG9yIG51bWJlciAob2Zmc2V0OiAke1xuICAgICAgICAgIHRhYmxlTmFtZS5sZW5ndGggLSAxXG4gICAgICAgIH0pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdJbnZhbGlkVGFibGVOYW1lJyxcbiAgICAgICAgYEludmFsaWQgUzMgdGFibGUgbmFtZSAodmFsdWU6ICR7dGFibGVOYW1lfSkke0VPTH0ke2Vycm9ycy5qb2luKEVPTCl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgQW1hem9uIFJlc291cmNlIE5hbWUgKGFybikgb2YgdGhpcyB0YWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIENmblRhYmxlIEwxIHJlc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzb3VyY2U6IENmblRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFnIG1hbmFnZXIgZm9yIHRoaXMgcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrVGFnTWFuYWdlcjogVGFnTWFuYWdlcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyB0YWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIGNvbnRhaW5pbmcgdGhpcyB0YWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWVzcGFjZTogSU5hbWVzcGFjZTtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIHBvbGljeSBmb3IgdGhpcyB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWJsZVBvbGljeT86IENmblRhYmxlUG9saWN5O1xuXG4gIHByb3RlY3RlZCBhdXRvQ3JlYXRlUG9saWN5OiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGFibGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge30pO1xuXG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMud2l0aG91dE1ldGFkYXRhICYmIHByb3BzLmljZWJlcmdNZXRhZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAnTXV0dWFsbHlFeGNsdXNpdmVQcm9wcycsXG4gICAgICAgIFwiVGFibGVQcm9wczogJ3dpdGhvdXRNZXRhZGF0YScgYW5kICdpY2ViZXJnTWV0YWRhdGEnIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIFNwZWNpZnkgb25seSBvbmUuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIFRhYmxlLnZhbGlkYXRlVGFibGVOYW1lKHByb3BzLnRhYmxlTmFtZSk7XG5cbiAgICB0aGlzLl9yZXNvdXJjZSA9IG5ldyBDZm5UYWJsZSh0aGlzLCBpZCwge1xuICAgICAgdGFibGVOYW1lOiBwcm9wcy50YWJsZU5hbWUsXG4gICAgICBvcGVuVGFibGVGb3JtYXQ6IHByb3BzLm9wZW5UYWJsZUZvcm1hdCxcbiAgICAgIHRhYmxlQnVja2V0QXJuOiBwcm9wcy5uYW1lc3BhY2UudGFibGVCdWNrZXQudGFibGVCdWNrZXRBcm4sXG4gICAgICBuYW1lc3BhY2U6IHByb3BzLm5hbWVzcGFjZS5uYW1lc3BhY2VOYW1lLFxuICAgICAgY29tcGFjdGlvbjogcHJvcHMuY29tcGFjdGlvbixcbiAgICAgIGljZWJlcmdNZXRhZGF0YTogdGhpcy5idWlsZEljZWJlcmdNZXRhZGF0YShwcm9wcy5pY2ViZXJnTWV0YWRhdGEpLFxuICAgICAgc25hcHNob3RNYW5hZ2VtZW50OiBwcm9wcy5zbmFwc2hvdE1hbmFnZW1lbnQsXG4gICAgICB3aXRob3V0TWV0YWRhdGE6IHByb3BzLndpdGhvdXRNZXRhZGF0YSA/ICdZZXMnIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5uYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgdGhpcy50YWJsZU5hbWUgPSBwcm9wcy50YWJsZU5hbWU7XG4gICAgdGhpcy50YWJsZUFybiA9IHRoaXMuX3Jlc291cmNlLmF0dHJUYWJsZUFybjtcbiAgICB0aGlzLmNka1RhZ01hbmFnZXIgPSB0aGlzLl9yZXNvdXJjZS5jZGtUYWdNYW5hZ2VyO1xuICAgIHRoaXMuX3Jlc291cmNlLmFwcGx5UmVtb3ZhbFBvbGljeShwcm9wcy5yZW1vdmFsUG9saWN5KTtcbiAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLm5hbWVzcGFjZSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBDbG91ZEZvcm1hdGlvbiBJY2ViZXJnIG1ldGFkYXRhIHByb3BlcnR5IGZyb20gdGhlIENESyBtZXRhZGF0YSBtb2RlbC5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRJY2ViZXJnTWV0YWRhdGEobWV0YWRhdGE/OiBJY2ViZXJnTWV0YWRhdGFQcm9wZXJ0eSk6IENmblRhYmxlLkljZWJlcmdNZXRhZGF0YVByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpY2ViZXJnU2NoZW1hOiB0aGlzLmJ1aWxkSWNlYmVyZ1NjaGVtYShtZXRhZGF0YS5pY2ViZXJnU2NoZW1hKSxcbiAgICAgIGljZWJlcmdQYXJ0aXRpb25TcGVjOiBtZXRhZGF0YS5pY2ViZXJnUGFydGl0aW9uU3BlY1xuICAgICAgICA/IHRoaXMuYnVpbGRJY2ViZXJnUGFydGl0aW9uU3BlYyhtZXRhZGF0YS5pY2ViZXJnUGFydGl0aW9uU3BlYylcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBpY2ViZXJnU29ydE9yZGVyOiBtZXRhZGF0YS5pY2ViZXJnU29ydE9yZGVyXG4gICAgICAgID8gdGhpcy5idWlsZEljZWJlcmdTb3J0T3JkZXIobWV0YWRhdGEuaWNlYmVyZ1NvcnRPcmRlcilcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB0YWJsZVByb3BlcnRpZXM6IG1ldGFkYXRhLnRhYmxlUHJvcGVydGllc1xuICAgICAgICA/IHRoaXMuYnVpbGRUYWJsZVByb3BlcnRpZXMobWV0YWRhdGEudGFibGVQcm9wZXJ0aWVzKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgQ2xvdWRGb3JtYXRpb24gSWNlYmVyZyBzY2hlbWEgcHJvcGVydHkuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSWNlYmVyZ1NjaGVtYShzY2hlbWE6IEljZWJlcmdTY2hlbWFQcm9wZXJ0eSk6IENmblRhYmxlLkljZWJlcmdTY2hlbWFQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVtYUZpZWxkTGlzdDogc2NoZW1hLnNjaGVtYUZpZWxkTGlzdC5tYXAoZmllbGQgPT4gKHtcbiAgICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgLi4uKGZpZWxkLnJlcXVpcmVkICE9PSB1bmRlZmluZWQgJiYgeyByZXF1aXJlZDogZmllbGQucmVxdWlyZWQgfSksXG4gICAgICAgIC4uLihmaWVsZC5pZCAhPT0gdW5kZWZpbmVkICYmIHsgaWQ6IGZpZWxkLmlkIH0pLFxuICAgICAgfSkpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBDbG91ZEZvcm1hdGlvbiBJY2ViZXJnIHBhcnRpdGlvbiBzcGVjaWZpY2F0aW9uIHByb3BlcnR5LlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEljZWJlcmdQYXJ0aXRpb25TcGVjKHNwZWM6IEljZWJlcmdQYXJ0aXRpb25TcGVjKTogQ2ZuVGFibGUuSWNlYmVyZ1BhcnRpdGlvblNwZWNQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihzcGVjLnNwZWNJZCAhPT0gdW5kZWZpbmVkICYmIHsgc3BlY0lkOiBzcGVjLnNwZWNJZCB9KSxcbiAgICAgIGZpZWxkczogc3BlYy5maWVsZHMubWFwKGZpZWxkID0+ICh7XG4gICAgICAgIHNvdXJjZUlkOiBmaWVsZC5zb3VyY2VJZCxcbiAgICAgICAgdHJhbnNmb3JtOiBmaWVsZC50cmFuc2Zvcm0udmFsdWUsXG4gICAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAgIC4uLihmaWVsZC5maWVsZElkICE9PSB1bmRlZmluZWQgJiYgeyBmaWVsZElkOiBmaWVsZC5maWVsZElkIH0pLFxuICAgICAgfSkpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBDbG91ZEZvcm1hdGlvbiBJY2ViZXJnIHNvcnQgb3JkZXIgcHJvcGVydHkuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSWNlYmVyZ1NvcnRPcmRlcihzb3J0T3JkZXI6IEljZWJlcmdTb3J0T3JkZXIpOiBDZm5UYWJsZS5JY2ViZXJnU29ydE9yZGVyUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi4oc29ydE9yZGVyLm9yZGVySWQgIT09IHVuZGVmaW5lZCAmJiB7IG9yZGVySWQ6IHNvcnRPcmRlci5vcmRlcklkIH0pLFxuICAgICAgZmllbGRzOiBzb3J0T3JkZXIuZmllbGRzLm1hcChmaWVsZCA9PiAoe1xuICAgICAgICBzb3VyY2VJZDogZmllbGQuc291cmNlSWQsXG4gICAgICAgIHRyYW5zZm9ybTogZmllbGQudHJhbnNmb3JtLnZhbHVlLFxuICAgICAgICBkaXJlY3Rpb246IGZpZWxkLmRpcmVjdGlvbixcbiAgICAgICAgbnVsbE9yZGVyOiBmaWVsZC5udWxsT3JkZXIsXG4gICAgICB9KSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIENsb3VkRm9ybWF0aW9uIHRhYmxlIHByb3BlcnRpZXMgbWFwIGZyb20ga2V5LXZhbHVlIGVudHJpZXMuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVGFibGVQcm9wZXJ0aWVzKHRhYmxlUHJvcGVydGllczogVGFibGVQcm9wZXJ0eUVudHJ5W10pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBrZXlzID0gdGFibGVQcm9wZXJ0aWVzLm1hcChlbnRyeSA9PiBlbnRyeS5rZXkpO1xuICAgIGNvbnN0IGR1cGxpY2F0ZUtleXMgPSBrZXlzLmZpbHRlcigoa2V5LCBpbmRleCkgPT4ga2V5cy5pbmRleE9mKGtleSkgIT09IGluZGV4KTtcbiAgICBpZiAoZHVwbGljYXRlS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdEdXBsaWNhdGVUYWJsZVByb3BlcnR5S2V5JyxcbiAgICAgICAgYER1cGxpY2F0ZSB0YWJsZSBwcm9wZXJ0eSBrZXlzIGFyZSBub3QgYWxsb3dlZDogJHtbLi4ubmV3IFNldChkdXBsaWNhdGVLZXlzKV0uam9pbignLCAnKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFibGVQcm9wZXJ0aWVzLnJlZHVjZShcbiAgICAgIChhY2MsIGVudHJ5KSA9PiAoe1xuICAgICAgICAuLi5hY2MsXG4gICAgICAgIFtlbnRyeS5rZXldOiBlbnRyeS52YWx1ZSxcbiAgICAgIH0pLFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICApO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-s3tables-alpha",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.246.0-alpha.0",
|
|
5
5
|
"description": "CDK Constructs for S3 Tables",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -77,17 +77,17 @@
|
|
|
77
77
|
},
|
|
78
78
|
"license": "Apache-2.0",
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"aws-cdk-lib": "2.
|
|
81
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
82
|
-
"@aws-cdk/pkglint": "2.
|
|
80
|
+
"aws-cdk-lib": "2.246.0",
|
|
81
|
+
"@aws-cdk/cdk-build-tools": "2.246.0-alpha.0",
|
|
82
|
+
"@aws-cdk/pkglint": "2.246.0-alpha.0",
|
|
83
83
|
"@types/jest": "^29.5.14",
|
|
84
84
|
"constructs": "^10.5.0",
|
|
85
85
|
"jest": "^29.7.0",
|
|
86
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
86
|
+
"@aws-cdk/integ-tests-alpha": "2.246.0-alpha.0"
|
|
87
87
|
},
|
|
88
88
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
89
89
|
"peerDependencies": {
|
|
90
|
-
"aws-cdk-lib": "^2.
|
|
90
|
+
"aws-cdk-lib": "^2.246.0",
|
|
91
91
|
"constructs": "^10.5.0"
|
|
92
92
|
},
|
|
93
93
|
"separate-module": false,
|