@aws-cdk/aws-glue-alpha 2.269.0-alpha.0 → 2.271.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 +780 -780
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +1741 -24
- package/README.md +4 -6
- package/lib/catalog.js +88 -4
- package/lib/code.js +59 -4
- package/lib/connection.js +86 -4
- package/lib/data-format.js +43 -6
- package/lib/data-quality-ruleset.js +60 -4
- package/lib/database.js +48 -2
- package/lib/external-table.js +48 -2
- package/lib/jobs/job.js +107 -3
- package/lib/jobs/pyspark-etl-job.js +21 -2
- package/lib/jobs/pyspark-flex-etl-job.js +21 -2
- package/lib/jobs/pyspark-streaming-job.js +21 -2
- package/lib/jobs/python-shell-job.js +21 -2
- package/lib/jobs/ray-job.js +1 -1
- package/lib/jobs/scala-spark-etl-job.js +21 -2
- package/lib/jobs/scala-spark-flex-etl-job.js +21 -2
- package/lib/jobs/scala-spark-streaming-job.js +21 -2
- package/lib/jobs/spark-job.js +5 -2
- package/lib/partition-projection.js +14 -2
- package/lib/s3-table.js +106 -5
- package/lib/schema.js +50 -3
- package/lib/security-configuration.js +60 -5
- package/lib/storage-parameter.js +91 -2
- package/lib/table-base.js +32 -2
- package/lib/triggers/trigger-options.js +44 -4
- package/lib/triggers/workflow.js +63 -3
- package/package.json +10 -10
package/lib/s3-table.js
CHANGED
|
@@ -86,11 +86,20 @@ const table_base_1 = require("./table-base");
|
|
|
86
86
|
* it was created with.
|
|
87
87
|
*/
|
|
88
88
|
class S3TableEncryption {
|
|
89
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3TableEncryption", version: "2.
|
|
89
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3TableEncryption", version: "2.271.0-alpha.0" };
|
|
90
90
|
/**
|
|
91
91
|
* Server-side encryption (SSE-S3) with an Amazon S3-managed key.
|
|
92
92
|
*/
|
|
93
93
|
static s3Managed() {
|
|
94
|
+
try {
|
|
95
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3TableEncryption#s3Managed", "");
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
99
|
+
Error.captureStackTrace(error, this.s3Managed);
|
|
100
|
+
}
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
94
103
|
return new S3TableEncryption(s3.BucketEncryption.S3_MANAGED);
|
|
95
104
|
}
|
|
96
105
|
/**
|
|
@@ -99,12 +108,30 @@ class S3TableEncryption {
|
|
|
99
108
|
* @param key the KMS key used to encrypt the data. A key is created if one is not provided.
|
|
100
109
|
*/
|
|
101
110
|
static kms(key) {
|
|
111
|
+
try {
|
|
112
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3TableEncryption#kms", "");
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
116
|
+
Error.captureStackTrace(error, this.kms);
|
|
117
|
+
}
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
102
120
|
return new S3TableEncryption(s3.BucketEncryption.KMS, key);
|
|
103
121
|
}
|
|
104
122
|
/**
|
|
105
123
|
* Server-side encryption (SSE-KMS) with an AWS KMS key managed by the KMS service.
|
|
106
124
|
*/
|
|
107
125
|
static kmsManaged() {
|
|
126
|
+
try {
|
|
127
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3TableEncryption#kmsManaged", "");
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
131
|
+
Error.captureStackTrace(error, this.kmsManaged);
|
|
132
|
+
}
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
108
135
|
return new S3TableEncryption(s3.BucketEncryption.KMS_MANAGED);
|
|
109
136
|
}
|
|
110
137
|
/** @internal */
|
|
@@ -128,7 +155,7 @@ exports.S3TableEncryption = S3TableEncryption;
|
|
|
128
155
|
* an encryption choice can never be paired with a bring-your-own bucket.
|
|
129
156
|
*/
|
|
130
157
|
class S3TableStorage {
|
|
131
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3TableStorage", version: "2.
|
|
158
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3TableStorage", version: "2.271.0-alpha.0" };
|
|
132
159
|
/**
|
|
133
160
|
* Store the table's data in a bucket created and managed by the table.
|
|
134
161
|
*
|
|
@@ -137,6 +164,7 @@ class S3TableStorage {
|
|
|
137
164
|
*/
|
|
138
165
|
static managedBucket(encryption) {
|
|
139
166
|
try {
|
|
167
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3TableStorage#managedBucket", "");
|
|
140
168
|
jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_S3TableEncryption(encryption);
|
|
141
169
|
}
|
|
142
170
|
catch (error) {
|
|
@@ -162,6 +190,15 @@ class S3TableStorage {
|
|
|
162
190
|
* @param bucket the bucket that holds the table's data.
|
|
163
191
|
*/
|
|
164
192
|
static fromBucket(bucket) {
|
|
193
|
+
try {
|
|
194
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3TableStorage#fromBucket", "");
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
198
|
+
Error.captureStackTrace(error, this.fromBucket);
|
|
199
|
+
}
|
|
200
|
+
throw error;
|
|
201
|
+
}
|
|
165
202
|
return new S3TableStorage(bucket, undefined);
|
|
166
203
|
}
|
|
167
204
|
/** @internal */
|
|
@@ -182,13 +219,22 @@ exports.S3TableStorage = S3TableStorage;
|
|
|
182
219
|
* `grant*` methods also grant the relevant KMS permissions on the key.
|
|
183
220
|
*/
|
|
184
221
|
class TableClientSideEncryption {
|
|
185
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.TableClientSideEncryption", version: "2.
|
|
222
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.TableClientSideEncryption", version: "2.271.0-alpha.0" };
|
|
186
223
|
/**
|
|
187
224
|
* Client-side encryption (CSE-KMS) with an AWS KMS key managed by the account owner.
|
|
188
225
|
*
|
|
189
226
|
* @param key the KMS key used to encrypt the data. A key is created if one is not provided.
|
|
190
227
|
*/
|
|
191
228
|
static kms(key) {
|
|
229
|
+
try {
|
|
230
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.TableClientSideEncryption#kms", "");
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
234
|
+
Error.captureStackTrace(error, this.kms);
|
|
235
|
+
}
|
|
236
|
+
throw error;
|
|
237
|
+
}
|
|
192
238
|
return new TableClientSideEncryption(key);
|
|
193
239
|
}
|
|
194
240
|
/** @internal */
|
|
@@ -232,7 +278,7 @@ let S3Table = (() => {
|
|
|
232
278
|
S3Table = _classThis = _classDescriptor.value;
|
|
233
279
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
234
280
|
}
|
|
235
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3Table", version: "2.
|
|
281
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3Table", version: "2.271.0-alpha.0" };
|
|
236
282
|
/** Uniquely identifies this class. */
|
|
237
283
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.S3Table';
|
|
238
284
|
resource = __runInitializers(this, _instanceExtraInitializers);
|
|
@@ -265,6 +311,7 @@ let S3Table = (() => {
|
|
|
265
311
|
constructor(scope, id, props) {
|
|
266
312
|
super(scope, id, props);
|
|
267
313
|
try {
|
|
314
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3Table", "");
|
|
268
315
|
jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_S3TableProps(props);
|
|
269
316
|
}
|
|
270
317
|
catch (error) {
|
|
@@ -333,12 +380,30 @@ let S3Table = (() => {
|
|
|
333
380
|
* Name of this table.
|
|
334
381
|
*/
|
|
335
382
|
get tableName() {
|
|
383
|
+
try {
|
|
384
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3Table#tableName", "");
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
388
|
+
Error.captureStackTrace(error, jsiiDeprecationWarnings.getPropertyDescriptor(this, "tableName").get);
|
|
389
|
+
}
|
|
390
|
+
throw error;
|
|
391
|
+
}
|
|
336
392
|
return this.getResourceNameAttribute(this.resource.ref);
|
|
337
393
|
}
|
|
338
394
|
/**
|
|
339
395
|
* ARN of this table.
|
|
340
396
|
*/
|
|
341
397
|
get tableArn() {
|
|
398
|
+
try {
|
|
399
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3Table#tableArn", "");
|
|
400
|
+
}
|
|
401
|
+
catch (error) {
|
|
402
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
403
|
+
Error.captureStackTrace(error, jsiiDeprecationWarnings.getPropertyDescriptor(this, "tableArn").get);
|
|
404
|
+
}
|
|
405
|
+
throw error;
|
|
406
|
+
}
|
|
342
407
|
return this.stack.formatArn({
|
|
343
408
|
service: 'glue',
|
|
344
409
|
resource: 'table',
|
|
@@ -352,6 +417,15 @@ let S3Table = (() => {
|
|
|
352
417
|
* @param grantee the principal
|
|
353
418
|
*/
|
|
354
419
|
grantRead(grantee) {
|
|
420
|
+
try {
|
|
421
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3Table#grantRead", "");
|
|
422
|
+
}
|
|
423
|
+
catch (error) {
|
|
424
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
425
|
+
Error.captureStackTrace(error, this.grantRead);
|
|
426
|
+
}
|
|
427
|
+
throw error;
|
|
428
|
+
}
|
|
355
429
|
const ret = this.grant(grantee, readPermissions);
|
|
356
430
|
if (this.clientSideEncryptionKey) {
|
|
357
431
|
kms.KeyGrants.fromKey(this.clientSideEncryptionKey).decrypt(grantee);
|
|
@@ -366,6 +440,15 @@ let S3Table = (() => {
|
|
|
366
440
|
* @param grantee the principal
|
|
367
441
|
*/
|
|
368
442
|
grantWrite(grantee) {
|
|
443
|
+
try {
|
|
444
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3Table#grantWrite", "");
|
|
445
|
+
}
|
|
446
|
+
catch (error) {
|
|
447
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
448
|
+
Error.captureStackTrace(error, this.grantWrite);
|
|
449
|
+
}
|
|
450
|
+
throw error;
|
|
451
|
+
}
|
|
369
452
|
const ret = this.grant(grantee, writePermissions);
|
|
370
453
|
if (this.clientSideEncryptionKey) {
|
|
371
454
|
kms.KeyGrants.fromKey(this.clientSideEncryptionKey).encrypt(grantee);
|
|
@@ -380,6 +463,15 @@ let S3Table = (() => {
|
|
|
380
463
|
* @param grantee the principal
|
|
381
464
|
*/
|
|
382
465
|
grantReadWrite(grantee) {
|
|
466
|
+
try {
|
|
467
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3Table#grantReadWrite", "");
|
|
468
|
+
}
|
|
469
|
+
catch (error) {
|
|
470
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
471
|
+
Error.captureStackTrace(error, this.grantReadWrite);
|
|
472
|
+
}
|
|
473
|
+
throw error;
|
|
474
|
+
}
|
|
383
475
|
const ret = this.grant(grantee, [...readPermissions, ...writePermissions]);
|
|
384
476
|
if (this.clientSideEncryptionKey) {
|
|
385
477
|
kms.KeyGrants.fromKey(this.clientSideEncryptionKey).encryptDecrypt(grantee);
|
|
@@ -388,6 +480,15 @@ let S3Table = (() => {
|
|
|
388
480
|
return ret;
|
|
389
481
|
}
|
|
390
482
|
generateS3PrefixForGrant() {
|
|
483
|
+
try {
|
|
484
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.S3Table#generateS3PrefixForGrant", "");
|
|
485
|
+
}
|
|
486
|
+
catch (error) {
|
|
487
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
488
|
+
Error.captureStackTrace(error, this.generateS3PrefixForGrant);
|
|
489
|
+
}
|
|
490
|
+
throw error;
|
|
491
|
+
}
|
|
391
492
|
// When the user supplied their own bucket and did not scope the table to a
|
|
392
493
|
// prefix, the grant covers every object in the bucket - which may include
|
|
393
494
|
// data owned by other tables or consumers sharing that bucket. Warn so the
|
|
@@ -441,4 +542,4 @@ function renderColumns(columns) {
|
|
|
441
542
|
};
|
|
442
543
|
});
|
|
443
544
|
}
|
|
444
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzMy10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBMkQ7QUFDM0QsbURBQWdEO0FBRWhELHlEQUEyQztBQUMzQyx1REFBeUM7QUFDekMsNEVBQTRFO0FBQzVFLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFJMUUsNkNBQXlDO0FBRXpDOzs7Ozs7R0FNRztBQUNILE1BQWEsaUJBQWlCOztJQUM1Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxTQUFTO1FBQ3JCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDOUQ7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFjO1FBQzlCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzVEO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsVUFBVTtRQUN0QixPQUFPLElBQUksaUJBQWlCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQy9EO0lBRUQsZ0JBQWdCO0lBQ0EsaUJBQWlCLENBQXNCO0lBRXZEOzs7T0FHRztJQUNhLE9BQU8sQ0FBWTtJQUVuQyxZQUFvQixnQkFBcUMsRUFBRSxNQUFpQjtRQUMxRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7S0FDdkI7O0FBcENILDhDQXFDQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQWEsY0FBYzs7SUFDekI7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQThCOzs7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UCwwQkFBTztBQWdNcEIsTUFBTSxlQUFlLEdBQUc7SUFDdEIsd0JBQXdCO0lBQ3hCLG1CQUFtQjtJQUNuQixvQkFBb0I7SUFDcEIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixzQkFBc0I7SUFDdEIsdUJBQXVCO0NBQ3hCLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0Isc0JBQXNCO0lBQ3RCLHNCQUFzQjtJQUN0QixzQkFBc0I7Q0FDdkIsQ0FBQztBQUVGLFNBQVMsYUFBYSxDQUFDLE9BQWtCO0lBQ3ZDLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDMUIsT0FBTztZQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztTQUN4QixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENmblRhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdsdWUnO1xuaW1wb3J0IHR5cGUgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIsIGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gJy4vc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgUGFydGl0aW9uSW5kZXgsIFRhYmxlQmFzZVByb3BzIH0gZnJvbSAnLi90YWJsZS1iYXNlJztcbmltcG9ydCB7IFRhYmxlQmFzZSB9IGZyb20gJy4vdGFibGUtYmFzZSc7XG5cbi8qKlxuICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiBmb3IgdGhlIFMzIGJ1Y2tldCB0aGF0IGEgbWFuYWdlZCBgUzNUYWJsZWAgY3JlYXRlcy5cbiAqXG4gKiBBcHBsaWVzIG9ubHkgd2hlbiB0aGUgdGFibGUgbWFuYWdlcyBpdHMgb3duIGJ1Y2tldCAodmlhXG4gKiBgUzNUYWJsZVN0b3JhZ2UubWFuYWdlZEJ1Y2tldGApLiBBbiBleGlzdGluZyBidWNrZXQga2VlcHMgd2hhdGV2ZXIgZW5jcnlwdGlvblxuICogaXQgd2FzIGNyZWF0ZWQgd2l0aC5cbiAqL1xuZXhwb3J0IGNsYXNzIFMzVGFibGVFbmNyeXB0aW9uIHtcbiAgLyoqXG4gICAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gKFNTRS1TMykgd2l0aCBhbiBBbWF6b24gUzMtbWFuYWdlZCBrZXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHMzTWFuYWdlZCgpOiBTM1RhYmxlRW5jcnlwdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTM1RhYmxlRW5jcnlwdGlvbihzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gKFNTRS1LTVMpIHdpdGggYW4gQVdTIEtNUyBrZXkgbWFuYWdlZCBieSB0aGUgYWNjb3VudCBvd25lci5cbiAgICpcbiAgICogQHBhcmFtIGtleSB0aGUgS01TIGtleSB1c2VkIHRvIGVuY3J5cHQgdGhlIGRhdGEuIEEga2V5IGlzIGNyZWF0ZWQgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga21zKGtleT86IGttcy5JS2V5KTogUzNUYWJsZUVuY3J5cHRpb24ge1xuICAgIHJldHVybiBuZXcgUzNUYWJsZUVuY3J5cHRpb24oczMuQnVja2V0RW5jcnlwdGlvbi5LTVMsIGtleSk7XG4gIH1cblxuICAvKipcbiAgICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiAoU1NFLUtNUykgd2l0aCBhbiBBV1MgS01TIGtleSBtYW5hZ2VkIGJ5IHRoZSBLTVMgc2VydmljZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga21zTWFuYWdlZCgpOiBTM1RhYmxlRW5jcnlwdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTM1RhYmxlRW5jcnlwdGlvbihzMy5CdWNrZXRFbmNyeXB0aW9uLktNU19NQU5BR0VEKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIHJlYWRvbmx5IF9idWNrZXRFbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogVHlwZWQgYGttcy5JS2V5YCAobm90IGBJS2V5UmVmYCkgYmVjYXVzZSBpdCBpcyBmb3J3YXJkZWQgdG8gYHMzLkJ1Y2tldGAsIHdob3NlIGBlbmNyeXB0aW9uS2V5YCBwcm9wIHJlcXVpcmVzIGBJS2V5YC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBfa21zS2V5Pzoga21zLklLZXk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihidWNrZXRFbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLCBrbXNLZXk/OiBrbXMuSUtleSkge1xuICAgIHRoaXMuX2J1Y2tldEVuY3J5cHRpb24gPSBidWNrZXRFbmNyeXB0aW9uO1xuICAgIHRoaXMuX2ttc0tleSA9IGttc0tleTtcbiAgfVxufVxuXG4vKipcbiAqIFdoZXJlIGFuIGBTM1RhYmxlYCBzdG9yZXMgaXRzIGRhdGEuXG4gKlxuICogVGhlIHR3byBwYXRocyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlOiBhIG1hbmFnZWQgYnVja2V0IG1heSBzcGVjaWZ5IGl0c1xuICogc2VydmVyLXNpZGUgZW5jcnlwdGlvbiwgd2hpbGUgYW4gZXhpc3RpbmcgYnVja2V0IGtlZXBzIGl0cyBvd24gZW5jcnlwdGlvbiDigJQgc29cbiAqIGFuIGVuY3J5cHRpb24gY2hvaWNlIGNhbiBuZXZlciBiZSBwYWlyZWQgd2l0aCBhIGJyaW5nLXlvdXItb3duIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGNsYXNzIFMzVGFibGVTdG9yYWdlIHtcbiAgLyoqXG4gICAqIFN0b3JlIHRoZSB0YWJsZSdzIGRhdGEgaW4gYSBidWNrZXQgY3JlYXRlZCBhbmQgbWFuYWdlZCBieSB0aGUgdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBlbmNyeXB0aW9uIHRoZSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGZvciB0aGUgY3JlYXRlZCBidWNrZXQuXG4gICAqIEBkZWZhdWx0IC0gUzMtbWFuYWdlZCAoU1NFLVMzKSBlbmNyeXB0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmFnZWRCdWNrZXQoZW5jcnlwdGlvbj86IFMzVGFibGVFbmNyeXB0aW9uKTogUzNUYWJsZVN0b3JhZ2Uge1xuICAgIHJldHVybiBuZXcgUzNUYWJsZVN0b3JhZ2UodW5kZWZpbmVkLCBlbmNyeXB0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSB0aGUgdGFibGUncyBkYXRhIGluIGFuIGV4aXN0aW5nIGJ1Y2tldC4gQ0RLIGRvZXMgbm90IG1hbmFnZSB0aGVcbiAgICogYnVja2V0J3MgZW5jcnlwdGlvbi5cbiAgICpcbiAgICogVGhlIGJ1Y2tldCBjYW4gYmUgb25lIHlvdSBkb24ndCBvd24sIGltcG9ydGVkIHdpdGhcbiAgICogYEJ1Y2tldC5mcm9tQnVja2V0QXJuKClgIG9yIGBCdWNrZXQuZnJvbUJ1Y2tldEF0dHJpYnV0ZXMoKWAuIElmIHRoYXQgYnVja2V0XG4gICAqIGlzIEtNUy1lbmNyeXB0ZWQsIGltcG9ydCBpdCB3aXRoIGBCdWNrZXQuZnJvbUJ1Y2tldEF0dHJpYnV0ZXMoKWAgYW5kIHN1cHBseVxuICAgKiB0aGUgYGVuY3J5cHRpb25LZXlgIGF0dHJpYnV0ZS4gT3RoZXJ3aXNlLCBDREsgaGFzIG5vIHJlZmVyZW5jZSB0byB0aGUga2V5LFxuICAgKiB3aGljaCBtZWFucyB0aGF0IGBTM1RhYmxlLmdyYW50UmVhZCgpYC9gZ3JhbnRXcml0ZSgpYCB3aWxsIGNvcnJlY3RseSBncmFudFxuICAgKiBTMyBhY2Nlc3MgYnV0IHNpbGVudGx5IHNraXAgdGhlIEtNUyBwZXJtaXNzaW9ucyBvbiB0aGUga2V5LiBBcyBhIGNvbnNlcXVlbmNlLFxuICAgKiBhdCBydW50aW1lLCByZWFkcyBhbmQgd3JpdGVzIHdpbGwgZmFpbCB3aXRoIGFjY2VzcyBkZW5pZWQgb24gdGhlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIGJ1Y2tldCB0aGUgYnVja2V0IHRoYXQgaG9sZHMgdGhlIHRhYmxlJ3MgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJ1Y2tldChidWNrZXQ6IHMzLklCdWNrZXQpOiBTM1RhYmxlU3RvcmFnZSB7XG4gICAgcmV0dXJuIG5ldyBTM1RhYmxlU3RvcmFnZShidWNrZXQsIHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBfYnVja2V0PzogczMuSUJ1Y2tldDtcblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBfZW5jcnlwdGlvbj86IFMzVGFibGVFbmNyeXB0aW9uO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoYnVja2V0PzogczMuSUJ1Y2tldCwgZW5jcnlwdGlvbj86IFMzVGFibGVFbmNyeXB0aW9uKSB7XG4gICAgdGhpcy5fYnVja2V0ID0gYnVja2V0O1xuICAgIHRoaXMuX2VuY3J5cHRpb24gPSBlbmNyeXB0aW9uO1xuICB9XG59XG5cbi8qKlxuICogQ2xpZW50LXNpZGUgZW5jcnlwdGlvbiBmb3IgYW4gYFMzVGFibGVgJ3MgZGF0YS5cbiAqXG4gKiBJbmRlcGVuZGVudCBvZiB0aGUgYnVja2V0J3Mgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiBhbmQgb2Ygd2hvIG93bnMgdGhlIGJ1Y2tldDpcbiAqIHRoZSBkYXRhIGlzIGVuY3J5cHRlZCBieSB0aGUgY2xpZW50IGJlZm9yZSBpdCBpcyB3cml0dGVuIHRvIFMzLiBXaGVuIHNldCwgdGhlXG4gKiBgZ3JhbnQqYCBtZXRob2RzIGFsc28gZ3JhbnQgdGhlIHJlbGV2YW50IEtNUyBwZXJtaXNzaW9ucyBvbiB0aGUga2V5LlxuICovXG5leHBvcnQgY2xhc3MgVGFibGVDbGllbnRTaWRlRW5jcnlwdGlvbiB7XG4gIC8qKlxuICAgKiBDbGllbnQtc2lkZSBlbmNyeXB0aW9uIChDU0UtS01TKSB3aXRoIGFuIEFXUyBLTVMga2V5IG1hbmFnZWQgYnkgdGhlIGFjY291bnQgb3duZXIuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgdGhlIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHRoZSBkYXRhLiBBIGtleSBpcyBjcmVhdGVkIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGttcyhrZXk/OiBrbXMuSUtleVJlZik6IFRhYmxlQ2xpZW50U2lkZUVuY3J5cHRpb24ge1xuICAgIHJldHVybiBuZXcgVGFibGVDbGllbnRTaWRlRW5jcnlwdGlvbihrZXkpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgX2ttc0tleT86IGttcy5JS2V5UmVmO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3Ioa21zS2V5Pzoga21zLklLZXlSZWYpIHtcbiAgICB0aGlzLl9rbXNLZXkgPSBrbXNLZXk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTM1RhYmxlUHJvcHMgZXh0ZW5kcyBUYWJsZUJhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBXaGVyZSB0aGUgdGFibGUncyBkYXRhIGlzIHN0b3JlZDogYSBidWNrZXQgY3JlYXRlZCBhbmQgbWFuYWdlZCBieSB0aGUgdGFibGUsXG4gICAqIG9yIGFuIGV4aXN0aW5nIGJ1Y2tldCB5b3UgcHJvdmlkZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG1hbmFnZWQgYnVja2V0IHdpdGggUzMtbWFuYWdlZCAoU1NFLVMzKSBlbmNyeXB0aW9uXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlPzogUzNUYWJsZVN0b3JhZ2U7XG5cbiAgLyoqXG4gICAqIFMzIHByZWZpeCB1bmRlciB3aGljaCB0YWJsZSBvYmplY3RzIGFyZSBzdG9yZWQuXG4gICAqXG4gICAqIFdoZW4gdGhlIHRhYmxlIHNoYXJlcyBhIGJ1Y2tldCB3aXRoIG90aGVyIHRhYmxlcyBvciBjb25zdW1lcnMsIHNldCB0aGlzIHNvXG4gICAqIHRoYXQgdGhlIGBncmFudCpgIG1ldGhvZHMgc2NvcGUgUzMgYWNjZXNzIHRvIHRoaXMgdGFibGUncyBkYXRhLiBXaXRob3V0IGFcbiAgICogcHJlZml4LCB0aG9zZSBncmFudHMgY292ZXIgdGhlIGVudGlyZSBidWNrZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcHJlZml4LiBUaGUgZGF0YSB3aWxsIGJlIHN0b3JlZCB1bmRlciB0aGUgcm9vdCBvZiB0aGUgYnVja2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgczNQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENsaWVudC1zaWRlIGVuY3J5cHRpb24gKENTRS1LTVMpIGZvciB0aGUgdGFibGUncyBkYXRhLlxuICAgKlxuICAgKiBJbmRlcGVuZGVudCBvZiB0aGUgYnVja2V0J3Mgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiwgYW5kIHZhbGlkIHdoZXRoZXIgdGhlXG4gICAqIGJ1Y2tldCBpcyBtYW5hZ2VkIG9yIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNsaWVudC1zaWRlIGVuY3J5cHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudFNpZGVFbmNyeXB0aW9uPzogVGFibGVDbGllbnRTaWRlRW5jcnlwdGlvbjtcbn1cblxuLyoqXG4gKiBBIEdsdWUgdGFibGUgdGhhdCB0YXJnZXRzIGEgUzMgZGF0YXNldC5cbiAqIEByZXNvdXJjZSBBV1M6OkdsdWU6OlRhYmxlXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBTM1RhYmxlIGV4dGVuZHMgVGFibGVCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtZ2x1ZS1hbHBoYS5TM1RhYmxlJztcblxuICBwcml2YXRlIHJlc291cmNlOiBDZm5UYWJsZTtcblxuICAvKipcbiAgICogUzMgYnVja2V0IGluIHdoaWNoIHRoZSB0YWJsZSdzIGRhdGEgcmVzaWRlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWNrZXQ6IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFMzIEtleSBQcmVmaXggdW5kZXIgd2hpY2ggdGhpcyB0YWJsZSdzIGZpbGVzIGFyZSBzdG9yZWQgaW4gUzMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNQcmVmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCBmb3IgY2xpZW50LXNpZGUgZW5jcnlwdGlvbiBvZiB0aGUgdGFibGUncyBkYXRhLCBpZlxuICAgKiBgY2xpZW50U2lkZUVuY3J5cHRpb25gIHdhcyBjb25maWd1cmVkLiBPdGhlcndpc2UsIGB1bmRlZmluZWRgLlxuICAgKlxuICAgKiBGb3Igc2VydmVyLXNpZGUgKGJ1Y2tldCkgZW5jcnlwdGlvbiwgcmVhZCBgYnVja2V0LmVuY3J5cHRpb25LZXlgIGluc3RlYWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2xpZW50U2lkZUVuY3J5cHRpb25LZXk/OiBrbXMuSUtleVJlZjtcblxuICAvKipcbiAgICogVGhpcyB0YWJsZSdzIHBhcnRpdGlvbiBpbmRleGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBhcnRpdGlvbkluZGV4ZXM/OiBQYXJ0aXRpb25JbmRleFtdO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0YWJsZVJlc291cmNlOiBDZm5UYWJsZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0YSBidWNrZXQgd2FzIHN1cHBsaWVkIGJ5IHRoZSB1c2VyIChhcyBvcHBvc2VkIHRvIGNyZWF0ZWQgYnlcbiAgICogdGhpcyBjb25zdHJ1Y3QpLiBBIHVzZXItc3VwcGxpZWQgYnVja2V0IG1heSBob2xkIGRhdGEgZm9yIG90aGVyIHRhYmxlcywgc29cbiAgICogZ3JhbnRpbmcgYWNjZXNzIHRvIHRoZSB3aG9sZSBidWNrZXQgY2FuIG92ZXItZ3JhbnQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJQcm92aWRlZEJ1Y2tldDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUzNUYWJsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG4gICAgdGhpcy5zM1ByZWZpeCA9IHByb3BzLnMzUHJlZml4ID8/ICcnO1xuICAgIGNvbnN0IHN0b3JhZ2UgPSBwcm9wcy5zdG9yYWdlID8/IFMzVGFibGVTdG9yYWdlLm1hbmFnZWRCdWNrZXQoKTtcbiAgICB0aGlzLnVzZXJQcm92aWRlZEJ1Y2tldCA9IHN0b3JhZ2UuX2J1Y2tldCAhPT0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYnVja2V0ID0gc3RvcmFnZS5fYnVja2V0ID8/IHRoaXMuY3JlYXRlTWFuYWdlZEJ1Y2tldChzdG9yYWdlLl9lbmNyeXB0aW9uKTtcbiAgICBpZiAocHJvcHMuY2xpZW50U2lkZUVuY3J5cHRpb24pIHtcbiAgICAgIC8vIENTRS1LTVM6IHVzZSB0aGUgcHJvdmlkZWQga2V5IG9yIGNyZWF0ZSBvbmUgYXV0b21hdGljYWxseS4gVGhlIGJ1Y2tldCdzXG4gICAgICAvLyBvd24gc2VydmVyLXNpZGUgZW5jcnlwdGlvbiBpcyBpbmRlcGVuZGVudCBhbmQgY29tZXMgZnJvbSBgc3RvcmFnZWAuXG4gICAgICB0aGlzLmNsaWVudFNpZGVFbmNyeXB0aW9uS2V5ID0gcHJvcHMuY2xpZW50U2lkZUVuY3J5cHRpb24uX2ttc0tleSA/PyBuZXcga21zLktleSh0aGlzLCAnS2V5Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5UYWJsZSh0aGlzLCAnVGFibGUnLCB7XG4gICAgICBjYXRhbG9nSWQ6IHByb3BzLmRhdGFiYXNlLmNhdGFsb2cuY2F0YWxvZ0lkLFxuXG4gICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlLmRhdGFiYXNlTmFtZSxcblxuICAgICAgdGFibGVJbnB1dDoge1xuICAgICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke3RoaXMucGh5c2ljYWxOYW1lfSBnZW5lcmF0ZWQgYnkgQ0RLYCxcblxuICAgICAgICBwYXJ0aXRpb25LZXlzOiByZW5kZXJDb2x1bW5zKHByb3BzLnBhcnRpdGlvbktleXMpLFxuXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAnY2xhc3NpZmljYXRpb24nOiBwcm9wcy5kYXRhRm9ybWF0LmNsYXNzaWZpY2F0aW9uU3RyaW5nPy52YWx1ZSxcbiAgICAgICAgICAncGFydGl0aW9uX2ZpbHRlcmluZy5lbmFibGVkJzogcHJvcHMuZW5hYmxlUGFydGl0aW9uRmlsdGVyaW5nLFxuICAgICAgICAgIC4uLnRoaXMucGFyYW1ldGVycyxcbiAgICAgICAgICAvLyBNYW5hZ2VkIGtleXMgYXJlIGVtaXR0ZWQgbGFzdCBzbyBmcmVlLWZvcm0gYHBhcmFtZXRlcnNgIGNhbm5vdFxuICAgICAgICAgIC8vIHNpbGVudGx5IG92ZXJyaWRlIHRoZW0uIENvbmZsaWN0cyBhcmUgcmVqZWN0ZWQgaW4gYFRhYmxlQmFzZWAuXG4gICAgICAgICAgJ2hhc19lbmNyeXB0ZWRfZGF0YSc6IHRoaXMuaGFzRW5jcnlwdGVkRGF0YSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RvcmFnZURlc2NyaXB0b3I6IHtcbiAgICAgICAgICBsb2NhdGlvbjogYHMzOi8vJHt0aGlzLmJ1Y2tldC5idWNrZXROYW1lfS8ke3RoaXMuczNQcmVmaXh9YCxcbiAgICAgICAgICBjb21wcmVzc2VkOiB0aGlzLmNvbXByZXNzZWQsXG4gICAgICAgICAgc3RvcmVkQXNTdWJEaXJlY3RvcmllczogcHJvcHMuc3RvcmVkQXNTdWJEaXJlY3RvcmllcyA/PyBmYWxzZSxcbiAgICAgICAgICBjb2x1bW5zOiByZW5kZXJDb2x1bW5zKHByb3BzLmNvbHVtbnMpLFxuICAgICAgICAgIGlucHV0Rm9ybWF0OiBwcm9wcy5kYXRhRm9ybWF0LmlucHV0Rm9ybWF0LmNsYXNzTmFtZSxcbiAgICAgICAgICBvdXRwdXRGb3JtYXQ6IHByb3BzLmRhdGFGb3JtYXQub3V0cHV0Rm9ybWF0LmNsYXNzTmFtZSxcbiAgICAgICAgICBzZXJkZUluZm86IHtcbiAgICAgICAgICAgIHNlcmlhbGl6YXRpb25MaWJyYXJ5OiBwcm9wcy5kYXRhRm9ybWF0LnNlcmlhbGl6YXRpb25MaWJyYXJ5LmNsYXNzTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHByb3BzLnN0b3JhZ2VQYXJhbWV0ZXJzID8gcHJvcHMuc3RvcmFnZVBhcmFtZXRlcnMucmVkdWNlKChhY2MsIHBhcmFtKSA9PiB7XG4gICAgICAgICAgICBpZiAocGFyYW0ua2V5IGluIGFjYykge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBEdXBsaWNhdGVTdG9yYWdlUGFyYW1ldGVyS2V5YCwgYER1cGxpY2F0ZSBzdG9yYWdlIHBhcmFtZXRlciBrZXk6ICR7cGFyYW0ua2V5fWAsIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qga2V5ID0gcGFyYW0ua2V5O1xuICAgICAgICAgICAgYWNjW2tleV0gPSBwYXJhbS52YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSwge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG5cbiAgICAgICAgdGFibGVUeXBlOiAnRVhURVJOQUxfVEFCTEUnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMudGFibGVSZXNvdXJjZSA9IHRoaXMucmVzb3VyY2U7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICAvLyBQYXJ0aXRpb24gaW5kZXggY3JlYXRpb24gcmVsaWVzIG9uIGNyZWF0ZWQgdGFibGUuXG4gICAgaWYgKHByb3BzLnBhcnRpdGlvbkluZGV4ZXMpIHtcbiAgICAgIHRoaXMucGFydGl0aW9uSW5kZXhlcyA9IHByb3BzLnBhcnRpdGlvbkluZGV4ZXM7XG4gICAgICB0aGlzLnBhcnRpdGlvbkluZGV4ZXMuZm9yRWFjaCgoaW5kZXgpID0+IHRoaXMuYWRkUGFydGl0aW9uSW5kZXgoaW5kZXgpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIHRhYmxlLlxuICAgKi9cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgdGFibGVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMucmVzb3VyY2UucmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBUk4gb2YgdGhpcyB0YWJsZS5cbiAgICovXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IHRhYmxlQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6ICdnbHVlJyxcbiAgICAgIHJlc291cmNlOiAndGFibGUnLFxuICAgICAgcmVzb3VyY2VOYW1lOiBgJHt0aGlzLmRhdGFiYXNlLmRhdGFiYXNlTmFtZX0vJHt0aGlzLnRhYmxlTmFtZX1gLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIHRhYmxlIGFuZCB0aGUgdW5kZXJseWluZyBkYXRhIHN0b3JlZCBpbiBTMyB0byBhbiBJQU0gcHJpbmNpcGFsLlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgdGhlIHByaW5jaXBhbFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgY29uc3QgcmV0ID0gdGhpcy5ncmFudChncmFudGVlLCByZWFkUGVybWlzc2lvbnMpO1xuICAgIGlmICh0aGlzLmNsaWVudFNpZGVFbmNyeXB0aW9uS2V5KSB7IGttcy5LZXlHcmFudHMuZnJvbUtleSh0aGlzLmNsaWVudFNpZGVFbmNyeXB0aW9uS2V5KS5kZWNyeXB0KGdyYW50ZWUpOyB9XG4gICAgdGhpcy5idWNrZXQuZ3JhbnRSZWFkKGdyYW50ZWUsIHRoaXMuZ2VuZXJhdGVTM1ByZWZpeEZvckdyYW50KCkpO1xuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgd3JpdGUgcGVybWlzc2lvbnMgdG8gdGhlIHRhYmxlIGFuZCB0aGUgdW5kZXJseWluZyBkYXRhIHN0b3JlZCBpbiBTMyB0byBhbiBJQU0gcHJpbmNpcGFsLlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgdGhlIHByaW5jaXBhbFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGdyYW50V3JpdGUoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIGNvbnN0IHJldCA9IHRoaXMuZ3JhbnQoZ3JhbnRlZSwgd3JpdGVQZXJtaXNzaW9ucyk7XG4gICAgaWYgKHRoaXMuY2xpZW50U2lkZUVuY3J5cHRpb25LZXkpIHsga21zLktleUdyYW50cy5mcm9tS2V5KHRoaXMuY2xpZW50U2lkZUVuY3J5cHRpb25LZXkpLmVuY3J5cHQoZ3JhbnRlZSk7IH1cbiAgICB0aGlzLmJ1Y2tldC5ncmFudFdyaXRlKGdyYW50ZWUsIHRoaXMuZ2VuZXJhdGVTM1ByZWZpeEZvckdyYW50KCkpO1xuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBhbmQgd3JpdGUgcGVybWlzc2lvbnMgdG8gdGhlIHRhYmxlIGFuZCB0aGUgdW5kZXJseWluZyBkYXRhIHN0b3JlZCBpbiBTMyB0byBhbiBJQU0gcHJpbmNpcGFsLlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgdGhlIHByaW5jaXBhbFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGdyYW50UmVhZFdyaXRlKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICBjb25zdCByZXQgPSB0aGlzLmdyYW50KGdyYW50ZWUsIFsuLi5yZWFkUGVybWlzc2lvbnMsIC4uLndyaXRlUGVybWlzc2lvbnNdKTtcbiAgICBpZiAodGhpcy5jbGllbnRTaWRlRW5jcnlwdGlvbktleSkgeyBrbXMuS2V5R3JhbnRzLmZyb21LZXkodGhpcy5jbGllbnRTaWRlRW5jcnlwdGlvbktleSkuZW5jcnlwdERlY3J5cHQoZ3JhbnRlZSk7IH1cbiAgICB0aGlzLmJ1Y2tldC5ncmFudFJlYWRXcml0ZShncmFudGVlLCB0aGlzLmdlbmVyYXRlUzNQcmVmaXhGb3JHcmFudCgpKTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdlbmVyYXRlUzNQcmVmaXhGb3JHcmFudCgpIHtcbiAgICAvLyBXaGVuIHRoZSB1c2VyIHN1cHBsaWVkIHRoZWlyIG93biBidWNrZXQgYW5kIGRpZCBub3Qgc2NvcGUgdGhlIHRhYmxlIHRvIGFcbiAgICAvLyBwcmVmaXgsIHRoZSBncmFudCBjb3ZlcnMgZXZlcnkgb2JqZWN0IGluIHRoZSBidWNrZXQgLSB3aGljaCBtYXkgaW5jbHVkZVxuICAgIC8vIGRhdGEgb3duZWQgYnkgb3RoZXIgdGFibGVzIG9yIGNvbnN1bWVycyBzaGFyaW5nIHRoYXQgYnVja2V0LiBXYXJuIHNvIHRoZVxuICAgIC8vIG92ZXItZ3JhbnQgaXMgYSBkZWxpYmVyYXRlIGNob2ljZSByYXRoZXIgdGhhbiBhIHNpbGVudCBzdXJwcmlzZS5cbiAgICBpZiAodGhpcy51c2VyUHJvdmlkZWRCdWNrZXQgJiYgdGhpcy5zM1ByZWZpeCA9PT0gJycpIHtcbiAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmdWMihcbiAgICAgICAgJ0Bhd3MtY2RrL2F3cy1nbHVlLWFscGhhOmdyYW50U2NvcGVkVG9XaG9sZUJ1Y2tldCcsXG4gICAgICAgICdncmFudGluZyBhY2Nlc3MgdG8gdGhlIGVudGlyZSBkYXRhIGJ1Y2tldCBiZWNhdXNlIGBzM1ByZWZpeGAgaXMgZW1wdHkgYW5kIGEgc2hhcmVkIGJ1Y2tldCB3YXMgcHJvdmlkZWQ7ICcgK1xuICAgICAgICAgICdzZXQgYHMzUHJlZml4YCB0byBzY29wZSBncmFudHMgdG8gdGhpcyB0YWJsZVxcJ3MgZGF0YSBhbmQgYXZvaWQgZ3JhbnRpbmcgYWNjZXNzIHRvIG90aGVyIHRhYmxlcyBzaGFyaW5nIHRoZSBidWNrZXQuJyxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnMzUHJlZml4ICsgJyonO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNYW5hZ2VkQnVja2V0KGVuY3J5cHRpb24/OiBTM1RhYmxlRW5jcnlwdGlvbik6IHMzLkJ1Y2tldCB7XG4gICAgY29uc3QgZW5jID0gZW5jcnlwdGlvbiA/PyBTM1RhYmxlRW5jcnlwdGlvbi5zM01hbmFnZWQoKTtcbiAgICByZXR1cm4gbmV3IHMzLkJ1Y2tldCh0aGlzLCAnQnVja2V0Jywge1xuICAgICAgZW5jcnlwdGlvbjogZW5jLl9idWNrZXRFbmNyeXB0aW9uLFxuICAgICAgZW5jcnlwdGlvbktleTogZW5jLl9rbXNLZXksXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IHJlYWRQZXJtaXNzaW9ucyA9IFtcbiAgJ2dsdWU6QmF0Y2hHZXRQYXJ0aXRpb24nLFxuICAnZ2x1ZTpHZXRQYXJ0aXRpb24nLFxuICAnZ2x1ZTpHZXRQYXJ0aXRpb25zJyxcbiAgJ2dsdWU6R2V0VGFibGUnLFxuICAnZ2x1ZTpHZXRUYWJsZXMnLFxuICAnZ2x1ZTpHZXRUYWJsZVZlcnNpb24nLFxuICAnZ2x1ZTpHZXRUYWJsZVZlcnNpb25zJyxcbl07XG5cbmNvbnN0IHdyaXRlUGVybWlzc2lvbnMgPSBbXG4gICdnbHVlOkJhdGNoQ3JlYXRlUGFydGl0aW9uJyxcbiAgJ2dsdWU6QmF0Y2hEZWxldGVQYXJ0aXRpb24nLFxuICAnZ2x1ZTpDcmVhdGVQYXJ0aXRpb24nLFxuICAnZ2x1ZTpEZWxldGVQYXJ0aXRpb24nLFxuICAnZ2x1ZTpVcGRhdGVQYXJ0aXRpb24nLFxuXTtcblxuZnVuY3Rpb24gcmVuZGVyQ29sdW1ucyhjb2x1bW5zPzogQ29sdW1uW10pIHtcbiAgaWYgKGNvbHVtbnMgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIGNvbHVtbnMubWFwKGNvbHVtbiA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgdHlwZTogY29sdW1uLnR5cGUuaW5wdXRTdHJpbmcsXG4gICAgICBjb21tZW50OiBjb2x1bW4uY29tbWVudCxcbiAgICB9O1xuICB9KTtcbn1cbiJdfQ==
|
|
545
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzMy10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBMkQ7QUFDM0QsbURBQWdEO0FBRWhELHlEQUEyQztBQUMzQyx1REFBeUM7QUFDekMsNEVBQTRFO0FBQzVFLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFJMUUsNkNBQXlDO0FBRXpDOzs7Ozs7R0FNRztBQUNILE1BQWEsaUJBQWlCOztJQUM1Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxTQUFTOzs7Ozs7Ozs7O1FBQ3JCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDOUQ7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFjOzs7Ozs7Ozs7O1FBQzlCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzVEO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsVUFBVTs7Ozs7Ozs7OztRQUN0QixPQUFPLElBQUksaUJBQWlCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQy9EO0lBRUQsZ0JBQWdCO0lBQ0EsaUJBQWlCLENBQXNCO0lBRXZEOzs7T0FHRztJQUNhLE9BQU8sQ0FBWTtJQUVuQyxZQUFvQixnQkFBcUMsRUFBRSxNQUFpQjtRQUMxRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7S0FDdkI7O0FBcENILDhDQXFDQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQWEsY0FBYzs7SUFDekI7Ozs7O09BS0c7SUFDSSxN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QkFBaUI7Z0JBQ2pDLGFBQWEsRUFBRSxHQUFHLENBQUMsT0FBTztnQkFDMUIsVUFBVSxFQUFFLElBQUk7YUFDakIsQ0FBQyxDQUFDO1NBQ0o7O1lBN0xVLHVEQUFPOzs7OztBQUFQLDBCQUFPO0FBZ01wQixNQUFNLGVBQWUsR0FBRztJQUN0Qix3QkFBd0I7SUFDeEIsbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLHNCQUFzQjtJQUN0Qix1QkFBdUI7Q0FDeEIsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsMkJBQTJCO0lBQzNCLDJCQUEyQjtJQUMzQixzQkFBc0I7SUFDdEIsc0JBQXNCO0lBQ3RCLHNCQUFzQjtDQUN2QixDQUFDO0FBRUYsU0FBUyxhQUFhLENBQUMsT0FBa0I7SUFDdkMsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDMUIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUMxQixPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDN0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1NBQ3hCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbm5vdGF0aW9ucywgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ2ZuVGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgdHlwZSAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBtZW1vaXplZEdldHRlciwgbGl0IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBQYXJ0aXRpb25JbmRleCwgVGFibGVCYXNlUHJvcHMgfSBmcm9tICcuL3RhYmxlLWJhc2UnO1xuaW1wb3J0IHsgVGFibGVCYXNlIH0gZnJvbSAnLi90YWJsZS1iYXNlJztcblxuLyoqXG4gKiBTZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGZvciB0aGUgUzMgYnVja2V0IHRoYXQgYSBtYW5hZ2VkIGBTM1RhYmxlYCBjcmVhdGVzLlxuICpcbiAqIEFwcGxpZXMgb25seSB3aGVuIHRoZSB0YWJsZSBtYW5hZ2VzIGl0cyBvd24gYnVja2V0ICh2aWFcbiAqIGBTM1RhYmxlU3RvcmFnZS5tYW5hZ2VkQnVja2V0YCkuIEFuIGV4aXN0aW5nIGJ1Y2tldCBrZWVwcyB3aGF0ZXZlciBlbmNyeXB0aW9uXG4gKiBpdCB3YXMgY3JlYXRlZCB3aXRoLlxuICovXG5leHBvcnQgY2xhc3MgUzNUYWJsZUVuY3J5cHRpb24ge1xuICAvKipcbiAgICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiAoU1NFLVMzKSB3aXRoIGFuIEFtYXpvbiBTMy1tYW5hZ2VkIGtleS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgczNNYW5hZ2VkKCk6IFMzVGFibGVFbmNyeXB0aW9uIHtcbiAgICByZXR1cm4gbmV3IFMzVGFibGVFbmNyeXB0aW9uKHMzLkJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCk7XG4gIH1cblxuICAvKipcbiAgICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiAoU1NFLUtNUykgd2l0aCBhbiBBV1MgS01TIGtleSBtYW5hZ2VkIGJ5IHRoZSBhY2NvdW50IG93bmVyLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YS4gQSBrZXkgaXMgY3JlYXRlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBrbXMoa2V5Pzoga21zLklLZXkpOiBTM1RhYmxlRW5jcnlwdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTM1RhYmxlRW5jcnlwdGlvbihzMy5CdWNrZXRFbmNyeXB0aW9uLktNUywga2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIChTU0UtS01TKSB3aXRoIGFuIEFXUyBLTVMga2V5IG1hbmFnZWQgYnkgdGhlIEtNUyBzZXJ2aWNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBrbXNNYW5hZ2VkKCk6IFMzVGFibGVFbmNyeXB0aW9uIHtcbiAgICByZXR1cm4gbmV3IFMzVGFibGVFbmNyeXB0aW9uKHMzLkJ1Y2tldEVuY3J5cHRpb24uS01TX01BTkFHRUQpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgX2J1Y2tldEVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBUeXBlZCBga21zLklLZXlgIChub3QgYElLZXlSZWZgKSBiZWNhdXNlIGl0IGlzIGZvcndhcmRlZCB0byBgczMuQnVja2V0YCwgd2hvc2UgYGVuY3J5cHRpb25LZXlgIHByb3AgcmVxdWlyZXMgYElLZXlgLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IF9rbXNLZXk/OiBrbXMuSUtleTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKGJ1Y2tldEVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb24sIGttc0tleT86IGttcy5JS2V5KSB7XG4gICAgdGhpcy5fYnVja2V0RW5jcnlwdGlvbiA9IGJ1Y2tldEVuY3J5cHRpb247XG4gICAgdGhpcy5fa21zS2V5ID0ga21zS2V5O1xuICB9XG59XG5cbi8qKlxuICogV2hlcmUgYW4gYFMzVGFibGVgIHN0b3JlcyBpdHMgZGF0YS5cbiAqXG4gKiBUaGUgdHdvIHBhdGhzIGFyZSBtdXR1YWxseSBleGNsdXNpdmU6IGEgbWFuYWdlZCBidWNrZXQgbWF5IHNwZWNpZnkgaXRzXG4gKiBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uLCB3aGlsZSBhbiBleGlzdGluZyBidWNrZXQga2VlcHMgaXRzIG93biBlbmNyeXB0aW9uIOKAlCBzb1xuICogYW4gZW5jcnlwdGlvbiBjaG9pY2UgY2FuIG5ldmVyIGJlIHBhaXJlZCB3aXRoIGEgYnJpbmcteW91ci1vd24gYnVja2V0LlxuICovXG5leHBvcnQgY2xhc3MgUzNUYWJsZVN0b3JhZ2Uge1xuICAvKipcbiAgICogU3RvcmUgdGhlIHRhYmxlJ3MgZGF0YSBpbiBhIGJ1Y2tldCBjcmVhdGVkIGFuZCBtYW5hZ2VkIGJ5IHRoZSB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIGVuY3J5cHRpb24gdGhlIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gZm9yIHRoZSBjcmVhdGVkIGJ1Y2tldC5cbiAgICogQGRlZmF1bHQgLSBTMy1tYW5hZ2VkIChTU0UtUzMpIGVuY3J5cHRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuYWdlZEJ1Y2tldChlbmNyeXB0aW9uPzogUzNUYWJsZUVuY3J5cHRpb24pOiBTM1RhYmxlU3RvcmFnZSB7XG4gICAgcmV0dXJuIG5ldyBTM1RhYmxlU3RvcmFnZSh1bmRlZmluZWQsIGVuY3J5cHRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlIHRoZSB0YWJsZSdzIGRhdGEgaW4gYW4gZXhpc3RpbmcgYnVja2V0LiBDREsgZG9lcyBub3QgbWFuYWdlIHRoZVxuICAgKiBidWNrZXQncyBlbmNyeXB0aW9uLlxuICAgKlxuICAgKiBUaGUgYnVja2V0IGNhbiBiZSBvbmUgeW91IGRvbid0IG93biwgaW1wb3J0ZWQgd2l0aFxuICAgKiBgQnVja2V0LmZyb21CdWNrZXRBcm4oKWAgb3IgYEJ1Y2tldC5mcm9tQnVja2V0QXR0cmlidXRlcygpYC4gSWYgdGhhdCBidWNrZXRcbiAgICogaXMgS01TLWVuY3J5cHRlZCwgaW1wb3J0IGl0IHdpdGggYEJ1Y2tldC5mcm9tQnVja2V0QXR0cmlidXRlcygpYCBhbmQgc3VwcGx5XG4gICAqIHRoZSBgZW5jcnlwdGlvbktleWAgYXR0cmlidXRlLiBPdGhlcndpc2UsIENESyBoYXMgbm8gcmVmZXJlbmNlIHRvIHRoZSBrZXksXG4gICAqIHdoaWNoIG1lYW5zIHRoYXQgYFMzVGFibGUuZ3JhbnRSZWFkKClgL2BncmFudFdyaXRlKClgIHdpbGwgY29ycmVjdGx5IGdyYW50XG4gICAqIFMzIGFjY2VzcyBidXQgc2lsZW50bHkgc2tpcCB0aGUgS01TIHBlcm1pc3Npb25zIG9uIHRoZSBrZXkuIEFzIGEgY29uc2VxdWVuY2UsXG4gICAqIGF0IHJ1bnRpbWUsIHJlYWRzIGFuZCB3cml0ZXMgd2lsbCBmYWlsIHdpdGggYWNjZXNzIGRlbmllZCBvbiB0aGUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0gYnVja2V0IHRoZSBidWNrZXQgdGhhdCBob2xkcyB0aGUgdGFibGUncyBkYXRhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQnVja2V0KGJ1Y2tldDogczMuSUJ1Y2tldCk6IFMzVGFibGVTdG9yYWdlIHtcbiAgICByZXR1cm4gbmV3IFMzVGFibGVTdG9yYWdlKGJ1Y2tldCwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIHJlYWRvbmx5IF9idWNrZXQ/OiBzMy5JQnVja2V0O1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIHJlYWRvbmx5IF9lbmNyeXB0aW9uPzogUzNUYWJsZUVuY3J5cHRpb247XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihidWNrZXQ/OiBzMy5JQnVja2V0LCBlbmNyeXB0aW9uPzogUzNUYWJsZUVuY3J5cHRpb24pIHtcbiAgICB0aGlzLl9idWNrZXQgPSBidWNrZXQ7XG4gICAgdGhpcy5fZW5jcnlwdGlvbiA9IGVuY3J5cHRpb247XG4gIH1cbn1cblxuLyoqXG4gKiBDbGllbnQtc2lkZSBlbmNyeXB0aW9uIGZvciBhbiBgUzNUYWJsZWAncyBkYXRhLlxuICpcbiAqIEluZGVwZW5kZW50IG9mIHRoZSBidWNrZXQncyBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGFuZCBvZiB3aG8gb3ducyB0aGUgYnVja2V0OlxuICogdGhlIGRhdGEgaXMgZW5jcnlwdGVkIGJ5IHRoZSBjbGllbnQgYmVmb3JlIGl0IGlzIHdyaXR0ZW4gdG8gUzMuIFdoZW4gc2V0LCB0aGVcbiAqIGBncmFudCpgIG1ldGhvZHMgYWxzbyBncmFudCB0aGUgcmVsZXZhbnQgS01TIHBlcm1pc3Npb25zIG9uIHRoZSBrZXkuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZUNsaWVudFNpZGVFbmNyeXB0aW9uIHtcbiAgLyoqXG4gICAqIENsaWVudC1zaWRlIGVuY3J5cHRpb24gKENTRS1LTVMpIHdpdGggYW4gQVdTIEtNUyBrZXkgbWFuYWdlZCBieSB0aGUgYWNjb3VudCBvd25lci5cbiAgICpcbiAgICogQHBhcmFtIGtleSB0aGUgS01TIGtleSB1c2VkIHRvIGVuY3J5cHQgdGhlIGRhdGEuIEEga2V5IGlzIGNyZWF0ZWQgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga21zKGtleT86IGttcy5JS2V5UmVmKTogVGFibGVDbGllbnRTaWRlRW5jcnlwdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWJsZUNsaWVudFNpZGVFbmNyeXB0aW9uKGtleSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBfa21zS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihrbXNLZXk/OiBrbXMuSUtleVJlZikge1xuICAgIHRoaXMuX2ttc0tleSA9IGttc0tleTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFMzVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXJlIHRoZSB0YWJsZSdzIGRhdGEgaXMgc3RvcmVkOiBhIGJ1Y2tldCBjcmVhdGVkIGFuZCBtYW5hZ2VkIGJ5IHRoZSB0YWJsZSxcbiAgICogb3IgYW4gZXhpc3RpbmcgYnVja2V0IHlvdSBwcm92aWRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbWFuYWdlZCBidWNrZXQgd2l0aCBTMy1tYW5hZ2VkIChTU0UtUzMpIGVuY3J5cHRpb25cbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2U/OiBTM1RhYmxlU3RvcmFnZTtcblxuICAvKipcbiAgICogUzMgcHJlZml4IHVuZGVyIHdoaWNoIHRhYmxlIG9iamVjdHMgYXJlIHN0b3JlZC5cbiAgICpcbiAgICogV2hlbiB0aGUgdGFibGUgc2hhcmVzIGEgYnVja2V0IHdpdGggb3RoZXIgdGFibGVzIG9yIGNvbnN1bWVycywgc2V0IHRoaXMgc29cbiAgICogdGhhdCB0aGUgYGdyYW50KmAgbWV0aG9kcyBzY29wZSBTMyBhY2Nlc3MgdG8gdGhpcyB0YWJsZSdzIGRhdGEuIFdpdGhvdXQgYVxuICAgKiBwcmVmaXgsIHRob3NlIGdyYW50cyBjb3ZlciB0aGUgZW50aXJlIGJ1Y2tldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBwcmVmaXguIFRoZSBkYXRhIHdpbGwgYmUgc3RvcmVkIHVuZGVyIHRoZSByb290IG9mIHRoZSBidWNrZXQuXG4gICAqL1xuICByZWFkb25seSBzM1ByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogQ2xpZW50LXNpZGUgZW5jcnlwdGlvbiAoQ1NFLUtNUykgZm9yIHRoZSB0YWJsZSdzIGRhdGEuXG4gICAqXG4gICAqIEluZGVwZW5kZW50IG9mIHRoZSBidWNrZXQncyBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uLCBhbmQgdmFsaWQgd2hldGhlciB0aGVcbiAgICogYnVja2V0IGlzIG1hbmFnZWQgb3IgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY2xpZW50LXNpZGUgZW5jcnlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY2xpZW50U2lkZUVuY3J5cHRpb24/OiBUYWJsZUNsaWVudFNpZGVFbmNyeXB0aW9uO1xufVxuXG4vKipcbiAqIEEgR2x1ZSB0YWJsZSB0aGF0IHRhcmdldHMgYSBTMyBkYXRhc2V0LlxuICogQHJlc291cmNlIEFXUzo6R2x1ZTo6VGFibGVcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFMzVGFibGUgZXh0ZW5kcyBUYWJsZUJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1nbHVlLWFscGhhLlMzVGFibGUnO1xuXG4gIHByaXZhdGUgcmVzb3VyY2U6IENmblRhYmxlO1xuXG4gIC8qKlxuICAgKiBTMyBidWNrZXQgaW4gd2hpY2ggdGhlIHRhYmxlJ3MgZGF0YSByZXNpZGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1Y2tldDogczMuSUJ1Y2tldDtcblxuICAvKipcbiAgICogUzMgS2V5IFByZWZpeCB1bmRlciB3aGljaCB0aGlzIHRhYmxlJ3MgZmlsZXMgYXJlIHN0b3JlZCBpbiBTMy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzM1ByZWZpeDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIGZvciBjbGllbnQtc2lkZSBlbmNyeXB0aW9uIG9mIHRoZSB0YWJsZSdzIGRhdGEsIGlmXG4gICAqIGBjbGllbnRTaWRlRW5jcnlwdGlvbmAgd2FzIGNvbmZpZ3VyZWQuIE90aGVyd2lzZSwgYHVuZGVmaW5lZGAuXG4gICAqXG4gICAqIEZvciBzZXJ2ZXItc2lkZSAoYnVja2V0KSBlbmNyeXB0aW9uLCByZWFkIGBidWNrZXQuZW5jcnlwdGlvbktleWAgaW5zdGVhZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjbGllbnRTaWRlRW5jcnlwdGlvbktleT86IGttcy5JS2V5UmVmO1xuXG4gIC8qKlxuICAgKiBUaGlzIHRhYmxlJ3MgcGFydGl0aW9uIGluZGV4ZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFydGl0aW9uSW5kZXhlcz86IFBhcnRpdGlvbkluZGV4W107XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRhYmxlUmVzb3VyY2U6IENmblRhYmxlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRhIGJ1Y2tldCB3YXMgc3VwcGxpZWQgYnkgdGhlIHVzZXIgKGFzIG9wcG9zZWQgdG8gY3JlYXRlZCBieVxuICAgKiB0aGlzIGNvbnN0cnVjdCkuIEEgdXNlci1zdXBwbGllZCBidWNrZXQgbWF5IGhvbGQgZGF0YSBmb3Igb3RoZXIgdGFibGVzLCBzb1xuICAgKiBncmFudGluZyBhY2Nlc3MgdG8gdGhlIHdob2xlIGJ1Y2tldCBjYW4gb3Zlci1ncmFudC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlclByb3ZpZGVkQnVja2V0OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTM1RhYmxlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcbiAgICB0aGlzLnMzUHJlZml4ID0gcHJvcHMuczNQcmVmaXggPz8gJyc7XG4gICAgY29uc3Qgc3RvcmFnZSA9IHByb3BzLnN0b3JhZ2UgPz8gUzNUYWJsZVN0b3JhZ2UubWFuYWdlZEJ1Y2tldCgpO1xuICAgIHRoaXMudXNlclByb3ZpZGVkQnVja2V0ID0gc3RvcmFnZS5fYnVja2V0ICE9PSB1bmRlZmluZWQ7XG4gICAgdGhpcy5idWNrZXQgPSBzdG9yYWdlLl9idWNrZXQgPz8gdGhpcy5jcmVhdGVNYW5hZ2VkQnVja2V0KHN0b3JhZ2UuX2VuY3J5cHRpb24pO1xuICAgIGlmIChwcm9wcy5jbGllbnRTaWRlRW5jcnlwdGlvbikge1xuICAgICAgLy8gQ1NFLUtNUzogdXNlIHRoZSBwcm92aWRlZCBrZXkgb3IgY3JlYXRlIG9uZSBhdXRvbWF0aWNhbGx5LiBUaGUgYnVja2V0J3NcbiAgICAgIC8vIG93biBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGlzIGluZGVwZW5kZW50IGFuZCBjb21lcyBmcm9tIGBzdG9yYWdlYC5cbiAgICAgIHRoaXMuY2xpZW50U2lkZUVuY3J5cHRpb25LZXkgPSBwcm9wcy5jbGllbnRTaWRlRW5jcnlwdGlvbi5fa21zS2V5ID8/IG5ldyBrbXMuS2V5KHRoaXMsICdLZXknKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblRhYmxlKHRoaXMsICdUYWJsZScsIHtcbiAgICAgIGNhdGFsb2dJZDogcHJvcHMuZGF0YWJhc2UuY2F0YWxvZy5jYXRhbG9nSWQsXG5cbiAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2UuZGF0YWJhc2VOYW1lLFxuXG4gICAgICB0YWJsZUlucHV0OiB7XG4gICAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gfHwgYCR7dGhpcy5waHlzaWNhbE5hbWV9IGdlbmVyYXRlZCBieSBDREtgLFxuXG4gICAgICAgIHBhcnRpdGlvbktleXM6IHJlbmRlckNvbHVtbnMocHJvcHMucGFydGl0aW9uS2V5cyksXG5cbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICdjbGFzc2lmaWNhdGlvbic6IHByb3BzLmRhdGFGb3JtYXQuY2xhc3NpZmljYXRpb25TdHJpbmc/LnZhbHVlLFxuICAgICAgICAgICdwYXJ0aXRpb25fZmlsdGVyaW5nLmVuYWJsZWQnOiBwcm9wcy5lbmFibGVQYXJ0aXRpb25GaWx0ZXJpbmcsXG4gICAgICAgICAgLi4udGhpcy5wYXJhbWV0ZXJzLFxuICAgICAgICAgIC8vIE1hbmFnZWQga2V5cyBhcmUgZW1pdHRlZCBsYXN0IHNvIGZyZWUtZm9ybSBgcGFyYW1ldGVyc2AgY2Fubm90XG4gICAgICAgICAgLy8gc2lsZW50bHkgb3ZlcnJpZGUgdGhlbS4gQ29uZmxpY3RzIGFyZSByZWplY3RlZCBpbiBgVGFibGVCYXNlYC5cbiAgICAgICAgICAnaGFzX2VuY3J5cHRlZF9kYXRhJzogdGhpcy5oYXNFbmNyeXB0ZWREYXRhLFxuICAgICAgICB9LFxuICAgICAgICBzdG9yYWdlRGVzY3JpcHRvcjoge1xuICAgICAgICAgIGxvY2F0aW9uOiBgczM6Ly8ke3RoaXMuYnVja2V0LmJ1Y2tldE5hbWV9LyR7dGhpcy5zM1ByZWZpeH1gLFxuICAgICAgICAgIGNvbXByZXNzZWQ6IHRoaXMuY29tcHJlc3NlZCxcbiAgICAgICAgICBzdG9yZWRBc1N1YkRpcmVjdG9yaWVzOiBwcm9wcy5zdG9yZWRBc1N1YkRpcmVjdG9yaWVzID8/IGZhbHNlLFxuICAgICAgICAgIGNvbHVtbnM6IHJlbmRlckNvbHVtbnMocHJvcHMuY29sdW1ucyksXG4gICAgICAgICAgaW5wdXRGb3JtYXQ6IHByb3BzLmRhdGFGb3JtYXQuaW5wdXRGb3JtYXQuY2xhc3NOYW1lLFxuICAgICAgICAgIG91dHB1dEZvcm1hdDogcHJvcHMuZGF0YUZvcm1hdC5vdXRwdXRGb3JtYXQuY2xhc3NOYW1lLFxuICAgICAgICAgIHNlcmRlSW5mbzoge1xuICAgICAgICAgICAgc2VyaWFsaXphdGlvbkxpYnJhcnk6IHByb3BzLmRhdGFGb3JtYXQuc2VyaWFsaXphdGlvbkxpYnJhcnkuY2xhc3NOYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFyYW1ldGVyczogcHJvcHMuc3RvcmFnZVBhcmFtZXRlcnMgPyBwcm9wcy5zdG9yYWdlUGFyYW1ldGVycy5yZWR1Y2UoKGFjYywgcGFyYW0pID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJhbS5rZXkgaW4gYWNjKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YER1cGxpY2F0ZVN0b3JhZ2VQYXJhbWV0ZXJLZXlgLCBgRHVwbGljYXRlIHN0b3JhZ2UgcGFyYW1ldGVyIGtleTogJHtwYXJhbS5rZXl9YCwgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBwYXJhbS5rZXk7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHBhcmFtLnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcblxuICAgICAgICB0YWJsZVR5cGU6ICdFWFRFUk5BTF9UQUJMRScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWJsZVJlc291cmNlID0gdGhpcy5yZXNvdXJjZTtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcblxuICAgIC8vIFBhcnRpdGlvbiBpbmRleCBjcmVhdGlvbiByZWxpZXMgb24gY3JlYXRlZCB0YWJsZS5cbiAgICBpZiAocHJvcHMucGFydGl0aW9uSW5kZXhlcykge1xuICAgICAgdGhpcy5wYXJ0aXRpb25JbmRleGVzID0gcHJvcHMucGFydGl0aW9uSW5kZXhlcztcbiAgICAgIHRoaXMucGFydGl0aW9uSW5kZXhlcy5mb3JFYWNoKChpbmRleCkgPT4gdGhpcy5hZGRQYXJ0aXRpb25JbmRleChpbmRleCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgdGFibGUuXG4gICAqL1xuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCB0YWJsZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5yZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFSTiBvZiB0aGlzIHRhYmxlLlxuICAgKi9cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgdGFibGVBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2dsdWUnLFxuICAgICAgcmVzb3VyY2U6ICd0YWJsZScsXG4gICAgICByZXNvdXJjZU5hbWU6IGAke3RoaXMuZGF0YWJhc2UuZGF0YWJhc2VOYW1lfS8ke3RoaXMudGFibGVOYW1lfWAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgdGFibGUgYW5kIHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RvcmVkIGluIFMzIHRvIGFuIElBTSBwcmluY2lwYWwuXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSB0aGUgcHJpbmNpcGFsXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICBjb25zdCByZXQgPSB0aGlzLmdyYW50KGdyYW50ZWUsIHJlYWRQZXJtaXNzaW9ucyk7XG4gICAgaWYgKHRoaXMuY2xpZW50U2lkZUVuY3J5cHRpb25LZXkpIHsga21zLktleUdyYW50cy5mcm9tS2V5KHRoaXMuY2xpZW50U2lkZUVuY3J5cHRpb25LZXkpLmRlY3J5cHQoZ3JhbnRlZSk7IH1cbiAgICB0aGlzLmJ1Y2tldC5ncmFudFJlYWQoZ3JhbnRlZSwgdGhpcy5nZW5lcmF0ZVMzUHJlZml4Rm9yR3JhbnQoKSk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB3cml0ZSBwZXJtaXNzaW9ucyB0byB0aGUgdGFibGUgYW5kIHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RvcmVkIGluIFMzIHRvIGFuIElBTSBwcmluY2lwYWwuXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSB0aGUgcHJpbmNpcGFsXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnRXcml0ZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgY29uc3QgcmV0ID0gdGhpcy5ncmFudChncmFudGVlLCB3cml0ZVBlcm1pc3Npb25zKTtcbiAgICBpZiAodGhpcy5jbGllbnRTaWRlRW5jcnlwdGlvbktleSkgeyBrbXMuS2V5R3JhbnRzLmZyb21LZXkodGhpcy5jbGllbnRTaWRlRW5jcnlwdGlvbktleSkuZW5jcnlwdChncmFudGVlKTsgfVxuICAgIHRoaXMuYnVja2V0LmdyYW50V3JpdGUoZ3JhbnRlZSwgdGhpcy5nZW5lcmF0ZVMzUHJlZml4Rm9yR3JhbnQoKSk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0byB0aGUgdGFibGUgYW5kIHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RvcmVkIGluIFMzIHRvIGFuIElBTSBwcmluY2lwYWwuXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSB0aGUgcHJpbmNpcGFsXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnRSZWFkV3JpdGUoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIGNvbnN0IHJldCA9IHRoaXMuZ3JhbnQoZ3JhbnRlZSwgWy4uLnJlYWRQZXJtaXNzaW9ucywgLi4ud3JpdGVQZXJtaXNzaW9uc10pO1xuICAgIGlmICh0aGlzLmNsaWVudFNpZGVFbmNyeXB0aW9uS2V5KSB7IGttcy5LZXlHcmFudHMuZnJvbUtleSh0aGlzLmNsaWVudFNpZGVFbmNyeXB0aW9uS2V5KS5lbmNyeXB0RGVjcnlwdChncmFudGVlKTsgfVxuICAgIHRoaXMuYnVja2V0LmdyYW50UmVhZFdyaXRlKGdyYW50ZWUsIHRoaXMuZ2VuZXJhdGVTM1ByZWZpeEZvckdyYW50KCkpO1xuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2VuZXJhdGVTM1ByZWZpeEZvckdyYW50KCkge1xuICAgIC8vIFdoZW4gdGhlIHVzZXIgc3VwcGxpZWQgdGhlaXIgb3duIGJ1Y2tldCBhbmQgZGlkIG5vdCBzY29wZSB0aGUgdGFibGUgdG8gYVxuICAgIC8vIHByZWZpeCwgdGhlIGdyYW50IGNvdmVycyBldmVyeSBvYmplY3QgaW4gdGhlIGJ1Y2tldCAtIHdoaWNoIG1heSBpbmNsdWRlXG4gICAgLy8gZGF0YSBvd25lZCBieSBvdGhlciB0YWJsZXMgb3IgY29uc3VtZXJzIHNoYXJpbmcgdGhhdCBidWNrZXQuIFdhcm4gc28gdGhlXG4gICAgLy8gb3Zlci1ncmFudCBpcyBhIGRlbGliZXJhdGUgY2hvaWNlIHJhdGhlciB0aGFuIGEgc2lsZW50IHN1cnByaXNlLlxuICAgIGlmICh0aGlzLnVzZXJQcm92aWRlZEJ1Y2tldCAmJiB0aGlzLnMzUHJlZml4ID09PSAnJykge1xuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZ1YyKFxuICAgICAgICAnQGF3cy1jZGsvYXdzLWdsdWUtYWxwaGE6Z3JhbnRTY29wZWRUb1dob2xlQnVja2V0JyxcbiAgICAgICAgJ2dyYW50aW5nIGFjY2VzcyB0byB0aGUgZW50aXJlIGRhdGEgYnVja2V0IGJlY2F1c2UgYHMzUHJlZml4YCBpcyBlbXB0eSBhbmQgYSBzaGFyZWQgYnVja2V0IHdhcyBwcm92aWRlZDsgJyArXG4gICAgICAgICAgJ3NldCBgczNQcmVmaXhgIHRvIHNjb3BlIGdyYW50cyB0byB0aGlzIHRhYmxlXFwncyBkYXRhIGFuZCBhdm9pZCBncmFudGluZyBhY2Nlc3MgdG8gb3RoZXIgdGFibGVzIHNoYXJpbmcgdGhlIGJ1Y2tldC4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuczNQcmVmaXggKyAnKic7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1hbmFnZWRCdWNrZXQoZW5jcnlwdGlvbj86IFMzVGFibGVFbmNyeXB0aW9uKTogczMuQnVja2V0IHtcbiAgICBjb25zdCBlbmMgPSBlbmNyeXB0aW9uID8/IFMzVGFibGVFbmNyeXB0aW9uLnMzTWFuYWdlZCgpO1xuICAgIHJldHVybiBuZXcgczMuQnVja2V0KHRoaXMsICdCdWNrZXQnLCB7XG4gICAgICBlbmNyeXB0aW9uOiBlbmMuX2J1Y2tldEVuY3J5cHRpb24sXG4gICAgICBlbmNyeXB0aW9uS2V5OiBlbmMuX2ttc0tleSxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgcmVhZFBlcm1pc3Npb25zID0gW1xuICAnZ2x1ZTpCYXRjaEdldFBhcnRpdGlvbicsXG4gICdnbHVlOkdldFBhcnRpdGlvbicsXG4gICdnbHVlOkdldFBhcnRpdGlvbnMnLFxuICAnZ2x1ZTpHZXRUYWJsZScsXG4gICdnbHVlOkdldFRhYmxlcycsXG4gICdnbHVlOkdldFRhYmxlVmVyc2lvbicsXG4gICdnbHVlOkdldFRhYmxlVmVyc2lvbnMnLFxuXTtcblxuY29uc3Qgd3JpdGVQZXJtaXNzaW9ucyA9IFtcbiAgJ2dsdWU6QmF0Y2hDcmVhdGVQYXJ0aXRpb24nLFxuICAnZ2x1ZTpCYXRjaERlbGV0ZVBhcnRpdGlvbicsXG4gICdnbHVlOkNyZWF0ZVBhcnRpdGlvbicsXG4gICdnbHVlOkRlbGV0ZVBhcnRpdGlvbicsXG4gICdnbHVlOlVwZGF0ZVBhcnRpdGlvbicsXG5dO1xuXG5mdW5jdGlvbiByZW5kZXJDb2x1bW5zKGNvbHVtbnM/OiBDb2x1bW5bXSkge1xuICBpZiAoY29sdW1ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gY29sdW1ucy5tYXAoY29sdW1uID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICB0eXBlOiBjb2x1bW4udHlwZS5pbnB1dFN0cmluZyxcbiAgICAgIGNvbW1lbnQ6IGNvbHVtbi5jb21tZW50LFxuICAgIH07XG4gIH0pO1xufVxuIl19
|
package/lib/schema.js
CHANGED
|
@@ -13,7 +13,7 @@ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
|
13
13
|
* `Schema` factories don't model, from `Schema.custom(...)`.
|
|
14
14
|
*/
|
|
15
15
|
class Type {
|
|
16
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Type", version: "2.
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Type", version: "2.271.0-alpha.0" };
|
|
17
17
|
/**
|
|
18
18
|
* Create a `Type` from its parts.
|
|
19
19
|
*
|
|
@@ -40,7 +40,7 @@ exports.Type = Type;
|
|
|
40
40
|
* @see https://docs.aws.amazon.com/athena/latest/ug/data-types.html
|
|
41
41
|
*/
|
|
42
42
|
class Schema {
|
|
43
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Schema", version: "2.
|
|
43
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Schema", version: "2.271.0-alpha.0" };
|
|
44
44
|
static BOOLEAN = Type._of('boolean', true);
|
|
45
45
|
static BINARY = Type._of('binary', true);
|
|
46
46
|
/**
|
|
@@ -81,6 +81,15 @@ class Schema {
|
|
|
81
81
|
* @see https://docs.aws.amazon.com/athena/latest/ug/data-types.html
|
|
82
82
|
*/
|
|
83
83
|
static decimal(precision, scale) {
|
|
84
|
+
try {
|
|
85
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.Schema#decimal", "");
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
89
|
+
Error.captureStackTrace(error, this.decimal);
|
|
90
|
+
}
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
84
93
|
if (aws_cdk_lib_1.Token.isResolved(precision) && (precision < 1 || precision > 38 || precision % 1 !== 0)) {
|
|
85
94
|
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `DecimalPrecisionOutOfRange`, `decimal precision must be a positive integer between 1 and 38, got ${precision}`);
|
|
86
95
|
}
|
|
@@ -95,6 +104,15 @@ class Schema {
|
|
|
95
104
|
* @param length length between 1 and 255
|
|
96
105
|
*/
|
|
97
106
|
static char(length) {
|
|
107
|
+
try {
|
|
108
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.Schema#char", "");
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
112
|
+
Error.captureStackTrace(error, this.char);
|
|
113
|
+
}
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
98
116
|
if (length <= 0 || length > 255) {
|
|
99
117
|
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `CharLengthOutOfRange`, `char length must be (inclusively) between 1 and 255, but was ${length}`);
|
|
100
118
|
}
|
|
@@ -109,6 +127,15 @@ class Schema {
|
|
|
109
127
|
* @param length length between 1 and 65535.
|
|
110
128
|
*/
|
|
111
129
|
static varchar(length) {
|
|
130
|
+
try {
|
|
131
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.Schema#varchar", "");
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
135
|
+
Error.captureStackTrace(error, this.varchar);
|
|
136
|
+
}
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
112
139
|
if (length <= 0 || length > 65535) {
|
|
113
140
|
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `VarcharLengthOutOfRange`, `varchar length must be (inclusively) between 1 and 65535, but was ${length}`);
|
|
114
141
|
}
|
|
@@ -124,6 +151,7 @@ class Schema {
|
|
|
124
151
|
*/
|
|
125
152
|
static array(itemType) {
|
|
126
153
|
try {
|
|
154
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.Schema#array", "");
|
|
127
155
|
jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_Type(itemType);
|
|
128
156
|
}
|
|
129
157
|
catch (error) {
|
|
@@ -142,6 +170,7 @@ class Schema {
|
|
|
142
170
|
*/
|
|
143
171
|
static map(keyType, valueType) {
|
|
144
172
|
try {
|
|
173
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.Schema#map", "");
|
|
145
174
|
jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_Type(keyType);
|
|
146
175
|
jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_Type(valueType);
|
|
147
176
|
}
|
|
@@ -162,6 +191,15 @@ class Schema {
|
|
|
162
191
|
* @param columns the columns of the structure.
|
|
163
192
|
*/
|
|
164
193
|
static struct(columns) {
|
|
194
|
+
try {
|
|
195
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.Schema#struct", "");
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
199
|
+
Error.captureStackTrace(error, this.struct);
|
|
200
|
+
}
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
165
203
|
return Type._of(`struct<${columns.map(column => {
|
|
166
204
|
return `${column.name}:${column.type.inputString}`;
|
|
167
205
|
}).join(',')}>`, false);
|
|
@@ -176,8 +214,17 @@ class Schema {
|
|
|
176
214
|
* @param isPrimitive whether the type is a primitive (non-nested) data type. Defaults to true.
|
|
177
215
|
*/
|
|
178
216
|
static custom(inputString, isPrimitive) {
|
|
217
|
+
try {
|
|
218
|
+
jsiiDeprecationWarnings.print("@aws-cdk/aws-glue-alpha.Schema#custom", "");
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
222
|
+
Error.captureStackTrace(error, this.custom);
|
|
223
|
+
}
|
|
224
|
+
throw error;
|
|
225
|
+
}
|
|
179
226
|
return Type._of(inputString, isPrimitive ?? true);
|
|
180
227
|
}
|
|
181
228
|
}
|
|
182
229
|
exports.Schema = Schema;
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTZEO0FBQzdELDRFQUE0RDtBQXdCNUQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxJQUFJOztJQUNmOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQW1CLEVBQUUsV0FBb0I7UUFDekQsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDM0M7SUFFRDs7T0FFRztJQUNhLFdBQVcsQ0FBVTtJQUVyQzs7T0FFRztJQUNhLFdBQVcsQ0FBUztJQUVwQyxZQUFvQixXQUFtQixFQUFFLFdBQW9CO1FBQzNELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0tBQ2hDOztBQXZCSCxvQkF3QkM7QUFFRDs7R0FFRztBQUNILE1BQWEsTUFBTTs7SUFDVixNQUFNLENBQVUsT0FBTyxHQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRTFELE1BQU0sQ0FBVSxNQUFNLEdBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFL0Q7O09BRUc7SUFDSSxNQUFNLENBQVUsT0FBTyxHQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXpELE1BQU0sQ0FBVSxNQUFNLEdBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFeEQsTUFBTSxDQUFVLEtBQUssR0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUU3RDs7T0FFRztJQUNJLE1BQU0sQ0FBVSxPQUFPLEdBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVB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RUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLENBQUM7S0FDbkQ7O0FBdklILHdCQXdJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRva2VuLCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuXG4vKipcbiAqIEEgY29sdW1uIG9mIGEgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZSBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogVHlwZTtcblxuICAvKipcbiAgICogQ29tZW50IGRlc2NyaWJpbmcgdGhlIGNvbHVtbi5cbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBhIGNvbHVtbiBpbiBhIHRhYmxlIHNjaGVtYS5cbiAqXG4gKiBJbnN0YW5jZXMgYXJlIG9wYXF1ZTogb2J0YWluIG9uZSBmcm9tIGEgYFNjaGVtYWAgZmFjdG9yeSAoZm9yIGV4YW1wbGVcbiAqIGBTY2hlbWEuU1RSSU5HYCwgYFNjaGVtYS5kZWNpbWFsKC4uLilgLCBgU2NoZW1hLmFycmF5KC4uLilgKSBvciwgZm9yIGEgdHlwZSB0aGVcbiAqIGBTY2hlbWFgIGZhY3RvcmllcyBkb24ndCBtb2RlbCwgZnJvbSBgU2NoZW1hLmN1c3RvbSguLi4pYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGUge1xuICAvKipcbiAgICogQ3JlYXRlIGEgYFR5cGVgIGZyb20gaXRzIHBhcnRzLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgX29mKGlucHV0U3RyaW5nOiBzdHJpbmcsIGlzUHJpbWl0aXZlOiBib29sZWFuKTogVHlwZSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlKGlucHV0U3RyaW5nLCBpc1ByaW1pdGl2ZSk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyB0eXBlIGlzIGEgcHJpbWl0aXZlIGRhdGEgdHlwZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1ByaW1pdGl2ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2x1ZSBJbnB1dFN0cmluZyBmb3IgdGhpcyB0eXBlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlucHV0U3RyaW5nOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihpbnB1dFN0cmluZzogc3RyaW5nLCBpc1ByaW1pdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuaW5wdXRTdHJpbmcgPSBpbnB1dFN0cmluZztcbiAgICB0aGlzLmlzUHJpbWl0aXZlID0gaXNQcmltaXRpdmU7XG4gIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL2RhdGEtdHlwZXMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgU2NoZW1hIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCT09MRUFOOiBUeXBlID0gVHlwZS5fb2YoJ2Jvb2xlYW4nLCB0cnVlKTtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJJTkFSWTogVHlwZSA9IFR5cGUuX29mKCdiaW5hcnknLCB0cnVlKTtcblxuICAvKipcbiAgICogQSA2NC1iaXQgc2lnbmVkIElOVEVHRVIgaW4gdHdv4oCZcyBjb21wbGVtZW50IGZvcm1hdCwgd2l0aCBhIG1pbmltdW0gdmFsdWUgb2YgLTJeNjMgYW5kIGEgbWF4aW11bSB2YWx1ZSBvZiAyXjYzLTEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJJR19JTlQ6IFR5cGUgPSBUeXBlLl9vZignYmlnaW50JywgdHJ1ZSk7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET1VCTEU6IFR5cGUgPSBUeXBlLl9vZignZG91YmxlJywgdHJ1ZSk7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGTE9BVDogVHlwZSA9IFR5cGUuX29mKCdmbG9hdCcsIHRydWUpO1xuXG4gIC8qKlxuICAgKiBBIDMyLWJpdCBzaWduZWQgSU5URUdFUiBpbiB0d2/igJlzIGNvbXBsZW1lbnQgZm9ybWF0LCB3aXRoIGEgbWluaW11bSB2YWx1ZSBvZiAtMl4zMSBhbmQgYSBtYXhpbXVtIHZhbHVlIG9mIDJeMzEtMS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSU5URUdFUjogVHlwZSA9IFR5cGUuX29mKCdpbnQnLCB0cnVlKTtcblxuICAvKipcbiAgICogQSAxNi1iaXQgc2lnbmVkIElOVEVHRVIgaW4gdHdv4oCZcyBjb21wbGVtZW50IGZvcm1hdCwgd2l0aCBhIG1pbmltdW0gdmFsdWUgb2YgLTJeMTUgYW5kIGEgbWF4aW11bSB2YWx1ZSBvZiAyXjE1LTEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNNQUxMX0lOVDogVHlwZSA9IFR5cGUuX29mKCdzbWFsbGludCcsIHRydWUpO1xuXG4gIC8qKlxuICAgKiBBIDgtYml0IHNpZ25lZCBJTlRFR0VSIGluIHR3b+KAmXMgY29tcGxlbWVudCBmb3JtYXQsIHdpdGggYSBtaW5pbXVtIHZhbHVlIG9mIC0yXjcgYW5kIGEgbWF4aW11bSB2YWx1ZSBvZiAyXjctMVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUSU5ZX0lOVDogVHlwZSA9IFR5cGUuX29mKCd0aW55aW50JywgdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIERhdGUgdHlwZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREFURTogVHlwZSA9IFR5cGUuX29mKCdkYXRlJywgdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB0eXBlIChkYXRlIGFuZCB0aW1lKS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVElNRVNUQU1QOiBUeXBlID0gVHlwZS5fb2YoJ3RpbWVzdGFtcCcsIHRydWUpO1xuXG4gIC8qKlxuICAgKiBBcmJpdHJhcnktbGVuZ3RoIHN0cmluZyB0eXBlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVFJJTkc6IFR5cGUgPSBUeXBlLl9vZignc3RyaW5nJywgdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBkZWNpbWFsIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBwcmVjaXNpb24gdGhlIHRvdGFsIG51bWJlciBvZiBkaWdpdHMsIGJldHdlZW4gMSBhbmQgMzhcbiAgICogQHBhcmFtIHNjYWxlIHRoZSBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBmcmFjdGlvbmFsIHBhcnQsIGJldHdlZW4gMCBhbmQgMzg7IHRoZSBkZWZhdWx0IGlzIDBcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXRoZW5hL2xhdGVzdC91Zy9kYXRhLXR5cGVzLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVjaW1hbChwcmVjaXNpb246IG51bWJlciwgc2NhbGU/OiBudW1iZXIpOiBUeXBlIHtcbiAgICBpZiAoVG9rZW4uaXNSZXNvbHZlZChwcmVjaXNpb24pICYmIChwcmVjaXNpb24gPCAxIHx8IHByZWNpc2lvbiA+IDM4IHx8IHByZWNpc2lvbiAlIDEgIT09IDApKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YERlY2ltYWxQcmVjaXNpb25PdXRPZlJhbmdlYCwgYGRlY2ltYWwgcHJlY2lzaW9uIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMzgsIGdvdCAke3ByZWNpc2lvbn1gKTtcbiAgICB9XG4gICAgaWYgKHNjYWxlICE9PSB1bmRlZmluZWQgJiYgVG9rZW4uaXNSZXNvbHZlZChzY2FsZSkgJiYgKHNjYWxlIDwgMCB8fCBzY2FsZSA+IDM4IHx8IHNjYWxlICUgMSAhPT0gMCkpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgRGVjaW1hbFNjYWxlT3V0T2ZSYW5nZWAsIGBkZWNpbWFsIHNjYWxlIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDM4LCBnb3QgJHtzY2FsZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIFR5cGUuX29mKHNjYWxlICE9PSB1bmRlZmluZWQgPyBgZGVjaW1hbCgke3ByZWNpc2lvbn0sJHtzY2FsZX0pYCA6IGBkZWNpbWFsKCR7cHJlY2lzaW9ufSlgLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXhlZCBsZW5ndGggY2hhcmFjdGVyIGRhdGEsIHdpdGggYSBzcGVjaWZpZWQgbGVuZ3RoIGJldHdlZW4gMSBhbmQgMjU1LlxuICAgKlxuICAgKiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDI1NVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjaGFyKGxlbmd0aDogbnVtYmVyKTogVHlwZSB7XG4gICAgaWYgKGxlbmd0aCA8PSAwIHx8IGxlbmd0aCA+IDI1NSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBDaGFyTGVuZ3RoT3V0T2ZSYW5nZWAsIGBjaGFyIGxlbmd0aCBtdXN0IGJlIChpbmNsdXNpdmVseSkgYmV0d2VlbiAxIGFuZCAyNTUsIGJ1dCB3YXMgJHtsZW5ndGh9YCk7XG4gICAgfVxuICAgIGlmIChsZW5ndGggJSAxICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YENoYXJMZW5ndGhOb3RJbnRlZ2VyYCwgYGNoYXIgbGVuZ3RoIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCB3YXMgJHtsZW5ndGh9YCk7XG4gICAgfVxuICAgIHJldHVybiBUeXBlLl9vZihgY2hhcigke2xlbmd0aH0pYCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVmFyaWFibGUgbGVuZ3RoIGNoYXJhY3RlciBkYXRhLCB3aXRoIGEgc3BlY2lmaWVkIGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY1NTM1LlxuICAgKlxuICAgKiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY1NTM1LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2YXJjaGFyKGxlbmd0aDogbnVtYmVyKTogVHlwZSB7XG4gICAgaWYgKGxlbmd0aCA8PSAwIHx8IGxlbmd0aCA+IDY1NTM1KSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YFZhcmNoYXJMZW5ndGhPdXRPZlJhbmdlYCwgYHZhcmNoYXIgbGVuZ3RoIG11c3QgYmUgKGluY2x1c2l2ZWx5KSBiZXR3ZWVuIDEgYW5kIDY1NTM1LCBidXQgd2FzICR7bGVuZ3RofWApO1xuICAgIH1cbiAgICBpZiAobGVuZ3RoICUgMSAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBWYXJjaGFyTGVuZ3RoTm90SW50ZWdlcmAsIGB2YXJjaGFyIGxlbmd0aCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgd2FzICR7bGVuZ3RofWApO1xuICAgIH1cbiAgICByZXR1cm4gVHlwZS5fb2YoYHZhcmNoYXIoJHtsZW5ndGh9KWAsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc29tZSBvdGhlciB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbVR5cGUgdHlwZSBjb250YWluZWQgYnkgdGhlIGFycmF5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhcnJheShpdGVtVHlwZTogVHlwZSk6IFR5cGUge1xuICAgIHJldHVybiBUeXBlLl9vZihgYXJyYXk8JHtpdGVtVHlwZS5pbnB1dFN0cmluZ30+YCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBtYXAgb2Ygc29tZSBwcmltaXRpdmUga2V5IHR5cGUgdG8gc29tZSB2YWx1ZSB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5VHlwZSB0eXBlIG9mIGtleSwgbXVzdCBiZSBhIHByaW1pdGl2ZS5cbiAgICogQHBhcmFtIHZhbHVlVHlwZSB0eXBlIGZvIHRoZSB2YWx1ZSBpbmRleGVkIGJ5IHRoZSBrZXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hcChrZXlUeXBlOiBUeXBlLCB2YWx1ZVR5cGU6IFR5cGUpOiBUeXBlIHtcbiAgICBpZiAoIWtleVR5cGUuaXNQcmltaXRpdmUpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgTWFwS2V5VHlwZU5vdFByaW1pdGl2ZWAsIGB0aGUga2V5IHR5cGUgb2YgYSAnbWFwJyBtdXN0IGJlIGEgcHJpbWl0aXZlLCBidXQgd2FzICR7a2V5VHlwZS5pbnB1dFN0cmluZ31gKTtcbiAgICB9XG4gICAgcmV0dXJuIFR5cGUuX29mKGBtYXA8JHtrZXlUeXBlLmlucHV0U3RyaW5nfSwke3ZhbHVlVHlwZS5pbnB1dFN0cmluZ30+YCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXN0ZWQgc3RydWN0dXJlIGNvbnRhaW5pbmcgaW5kaXZpZHVhbGx5IG5hbWVkIGFuZCB0eXBlZCBjb2x1bW5zLlxuICAgKlxuICAgKiBAcGFyYW0gY29sdW1ucyB0aGUgY29sdW1ucyBvZiB0aGUgc3RydWN0dXJlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdHJ1Y3QoY29sdW1uczogQ29sdW1uW10pOiBUeXBlIHtcbiAgICByZXR1cm4gVHlwZS5fb2YoYHN0cnVjdDwke2NvbHVtbnMubWFwKGNvbHVtbiA9PiB7XG4gICAgICByZXR1cm4gYCR7Y29sdW1uLm5hbWV9OiR7Y29sdW1uLnR5cGUuaW5wdXRTdHJpbmd9YDtcbiAgICB9KS5qb2luKCcsJyl9PmAsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY3VzdG9tIHR5cGUgZnJvbSBhIHJhdyBHbHVlIGlucHV0IHN0cmluZy5cbiAgICpcbiAgICogRXNjYXBlIGhhdGNoIGZvciBjb2x1bW4gdHlwZXMgdGhlIG90aGVyIGBTY2hlbWFgIGZhY3RvcmllcyBkb24ndCBtb2RlbC4gVGhlXG4gICAqIGBpbnB1dFN0cmluZ2AgaXMgZW1pdHRlZCB2ZXJiYXRpbSBhbmQgaXMgbm90IHZhbGlkYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIGlucHV0U3RyaW5nIHRoZSBHbHVlIGlucHV0IHN0cmluZyBmb3IgdGhlIHR5cGUgKGZvciBleGFtcGxlIGBpbnRlcnZhbF9kYXlfdG9fc2Vjb25kYCkuXG4gICAqIEBwYXJhbSBpc1ByaW1pdGl2ZSB3aGV0aGVyIHRoZSB0eXBlIGlzIGEgcHJpbWl0aXZlIChub24tbmVzdGVkKSBkYXRhIHR5cGUuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbShpbnB1dFN0cmluZzogc3RyaW5nLCBpc1ByaW1pdGl2ZT86IGJvb2xlYW4pOiBUeXBlIHtcbiAgICByZXR1cm4gVHlwZS5fb2YoaW5wdXRTdHJpbmcsIGlzUHJpbWl0aXZlID8/IHRydWUpO1xuICB9XG59XG4iXX0=
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTZEO0FBQzdELDRFQUE0RDtBQXdCNUQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxJQUFJOztJQUNmOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQW1CLEVBQUUsV0FBb0I7UUFDekQsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDM0M7SUFFRDs7T0FFRztJQUNhLFdBQVcsQ0FBVTtJQUVyQzs7T0FFRztJQUNhLFdBQVcsQ0FBUztJQUVwQyxZQUFvQixXQUFtQixFQUFFLFdBQW9CO1FBQzNELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0tBQ2hDOztBQXZCSCxvQkF3QkM7QUFFRDs7R0FFRztBQUNILE1BQWEsTUFBTTs7SUFDVixNQUFNLENBQVUsT0FBTyxHQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRTFELE1BQU0sQ0FBVSxNQUFNLEdBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFL0Q7O09BRUc7SUFDSSxNQUFNLENBQVUsT0FBTyxHQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXpELE1BQU0sQ0FBVSxNQUFNLEdBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFeEQsTUFBTSxDQUFVLEtBQUssR0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUU3RDs7T0FFRztJQUNJLE1BQU0sQ0FBVSxPQUFPLEdBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVB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Qjs7Ozs7Ozs7OztRQUM3RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQztLQUNuRDs7QUF2SUgsd0JBd0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9rZW4sIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgbGl0IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5cbi8qKlxuICogQSBjb2x1bW4gb2YgYSB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2x1bW4ge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBUeXBlO1xuXG4gIC8qKlxuICAgKiBDb21lbnQgZGVzY3JpYmluZyB0aGUgY29sdW1uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICByZWFkb25seSBjb21tZW50Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIGEgY29sdW1uIGluIGEgdGFibGUgc2NoZW1hLlxuICpcbiAqIEluc3RhbmNlcyBhcmUgb3BhcXVlOiBvYnRhaW4gb25lIGZyb20gYSBgU2NoZW1hYCBmYWN0b3J5IChmb3IgZXhhbXBsZVxuICogYFNjaGVtYS5TVFJJTkdgLCBgU2NoZW1hLmRlY2ltYWwoLi4uKWAsIGBTY2hlbWEuYXJyYXkoLi4uKWApIG9yLCBmb3IgYSB0eXBlIHRoZVxuICogYFNjaGVtYWAgZmFjdG9yaWVzIGRvbid0IG1vZGVsLCBmcm9tIGBTY2hlbWEuY3VzdG9tKC4uLilgLlxuICovXG5leHBvcnQgY2xhc3MgVHlwZSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgVHlwZWAgZnJvbSBpdHMgcGFydHMuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBfb2YoaW5wdXRTdHJpbmc6IHN0cmluZywgaXNQcmltaXRpdmU6IGJvb2xlYW4pOiBUeXBlIHtcbiAgICByZXR1cm4gbmV3IFR5cGUoaW5wdXRTdHJpbmcsIGlzUHJpbWl0aXZlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHR5cGUgaXMgYSBwcmltaXRpdmUgZGF0YSB0eXBlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzUHJpbWl0aXZlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBHbHVlIElucHV0U3RyaW5nIGZvciB0aGlzIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5wdXRTdHJpbmc6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKGlucHV0U3RyaW5nOiBzdHJpbmcsIGlzUHJpbWl0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pbnB1dFN0cmluZyA9IGlucHV0U3RyaW5nO1xuICAgIHRoaXMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTtcbiAgfVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvZGF0YS10eXBlcy5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBTY2hlbWEge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJPT0xFQU46IFR5cGUgPSBUeXBlLl9vZignYm9vbGVhbicsIHRydWUpO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQklOQVJZOiBUeXBlID0gVHlwZS5fb2YoJ2JpbmFyeScsIHRydWUpO1xuXG4gIC8qKlxuICAgKiBBIDY0LWJpdCBzaWduZWQgSU5URUdFUiBpbiB0d2/igJlzIGNvbXBsZW1lbnQgZm9ybWF0LCB3aXRoIGEgbWluaW11bSB2YWx1ZSBvZiAtMl42MyBhbmQgYSBtYXhpbXVtIHZhbHVlIG9mIDJeNjMtMS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQklHX0lOVDogVHlwZSA9IFR5cGUuX29mKCdiaWdpbnQnLCB0cnVlKTtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERPVUJMRTogVHlwZSA9IFR5cGUuX29mKCdkb3VibGUnLCB0cnVlKTtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZMT0FUOiBUeXBlID0gVHlwZS5fb2YoJ2Zsb2F0JywgdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEEgMzItYml0IHNpZ25lZCBJTlRFR0VSIGluIHR3b+KAmXMgY29tcGxlbWVudCBmb3JtYXQsIHdpdGggYSBtaW5pbXVtIHZhbHVlIG9mIC0yXjMxIGFuZCBhIG1heGltdW0gdmFsdWUgb2YgMl4zMS0xLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTlRFR0VSOiBUeXBlID0gVHlwZS5fb2YoJ2ludCcsIHRydWUpO1xuXG4gIC8qKlxuICAgKiBBIDE2LWJpdCBzaWduZWQgSU5URUdFUiBpbiB0d2/igJlzIGNvbXBsZW1lbnQgZm9ybWF0LCB3aXRoIGEgbWluaW11bSB2YWx1ZSBvZiAtMl4xNSBhbmQgYSBtYXhpbXVtIHZhbHVlIG9mIDJeMTUtMS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU01BTExfSU5UOiBUeXBlID0gVHlwZS5fb2YoJ3NtYWxsaW50JywgdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEEgOC1iaXQgc2lnbmVkIElOVEVHRVIgaW4gdHdv4oCZcyBjb21wbGVtZW50IGZvcm1hdCwgd2l0aCBhIG1pbmltdW0gdmFsdWUgb2YgLTJeNyBhbmQgYSBtYXhpbXVtIHZhbHVlIG9mIDJeNy0xXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRJTllfSU5UOiBUeXBlID0gVHlwZS5fb2YoJ3RpbnlpbnQnLCB0cnVlKTtcblxuICAvKipcbiAgICogRGF0ZSB0eXBlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBEQVRFOiBUeXBlID0gVHlwZS5fb2YoJ2RhdGUnLCB0cnVlKTtcblxuICAvKipcbiAgICogVGltZXN0YW1wIHR5cGUgKGRhdGUgYW5kIHRpbWUpLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUSU1FU1RBTVA6IFR5cGUgPSBUeXBlLl9vZigndGltZXN0YW1wJywgdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEFyYml0cmFyeS1sZW5ndGggc3RyaW5nIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNUUklORzogVHlwZSA9IFR5cGUuX29mKCdzdHJpbmcnLCB0cnVlKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRlY2ltYWwgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHByZWNpc2lvbiB0aGUgdG90YWwgbnVtYmVyIG9mIGRpZ2l0cywgYmV0d2VlbiAxIGFuZCAzOFxuICAgKiBAcGFyYW0gc2NhbGUgdGhlIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIGZyYWN0aW9uYWwgcGFydCwgYmV0d2VlbiAwIGFuZCAzODsgdGhlIGRlZmF1bHQgaXMgMFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL2RhdGEtdHlwZXMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWNpbWFsKHByZWNpc2lvbjogbnVtYmVyLCBzY2FsZT86IG51bWJlcik6IFR5cGUge1xuICAgIGlmIChUb2tlbi5pc1Jlc29sdmVkKHByZWNpc2lvbikgJiYgKHByZWNpc2lvbiA8IDEgfHwgcHJlY2lzaW9uID4gMzggfHwgcHJlY2lzaW9uICUgMSAhPT0gMCkpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgRGVjaW1hbFByZWNpc2lvbk91dE9mUmFuZ2VgLCBgZGVjaW1hbCBwcmVjaXNpb24gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzOCwgZ290ICR7cHJlY2lzaW9ufWApO1xuICAgIH1cbiAgICBpZiAoc2NhbGUgIT09IHVuZGVmaW5lZCAmJiBUb2tlbi5pc1Jlc29sdmVkKHNjYWxlKSAmJiAoc2NhbGUgPCAwIHx8IHNjYWxlID4gMzggfHwgc2NhbGUgJSAxICE9PSAwKSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBEZWNpbWFsU2NhbGVPdXRPZlJhbmdlYCwgYGRlY2ltYWwgc2NhbGUgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMzgsIGdvdCAke3NjYWxlfWApO1xuICAgIH1cbiAgICByZXR1cm4gVHlwZS5fb2Yoc2NhbGUgIT09IHVuZGVmaW5lZCA/IGBkZWNpbWFsKCR7cHJlY2lzaW9ufSwke3NjYWxlfSlgIDogYGRlY2ltYWwoJHtwcmVjaXNpb259KWAsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpeGVkIGxlbmd0aCBjaGFyYWN0ZXIgZGF0YSwgd2l0aCBhIHNwZWNpZmllZCBsZW5ndGggYmV0d2VlbiAxIGFuZCAyNTUuXG4gICAqXG4gICAqIEBwYXJhbSBsZW5ndGggbGVuZ3RoIGJldHdlZW4gMSBhbmQgMjU1XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNoYXIobGVuZ3RoOiBudW1iZXIpOiBUeXBlIHtcbiAgICBpZiAobGVuZ3RoIDw9IDAgfHwgbGVuZ3RoID4gMjU1KSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YENoYXJMZW5ndGhPdXRPZlJhbmdlYCwgYGNoYXIgbGVuZ3RoIG11c3QgYmUgKGluY2x1c2l2ZWx5KSBiZXR3ZWVuIDEgYW5kIDI1NSwgYnV0IHdhcyAke2xlbmd0aH1gKTtcbiAgICB9XG4gICAgaWYgKGxlbmd0aCAlIDEgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgQ2hhckxlbmd0aE5vdEludGVnZXJgLCBgY2hhciBsZW5ndGggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIHdhcyAke2xlbmd0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIFR5cGUuX29mKGBjaGFyKCR7bGVuZ3RofSlgLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYXJpYWJsZSBsZW5ndGggY2hhcmFjdGVyIGRhdGEsIHdpdGggYSBzcGVjaWZpZWQgbGVuZ3RoIGJldHdlZW4gMSBhbmQgNjU1MzUuXG4gICAqXG4gICAqIEBwYXJhbSBsZW5ndGggbGVuZ3RoIGJldHdlZW4gMSBhbmQgNjU1MzUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhcmNoYXIobGVuZ3RoOiBudW1iZXIpOiBUeXBlIHtcbiAgICBpZiAobGVuZ3RoIDw9IDAgfHwgbGVuZ3RoID4gNjU1MzUpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgVmFyY2hhckxlbmd0aE91dE9mUmFuZ2VgLCBgdmFyY2hhciBsZW5ndGggbXVzdCBiZSAoaW5jbHVzaXZlbHkpIGJldHdlZW4gMSBhbmQgNjU1MzUsIGJ1dCB3YXMgJHtsZW5ndGh9YCk7XG4gICAgfVxuICAgIGlmIChsZW5ndGggJSAxICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YFZhcmNoYXJMZW5ndGhOb3RJbnRlZ2VyYCwgYHZhcmNoYXIgbGVuZ3RoIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCB3YXMgJHtsZW5ndGh9YCk7XG4gICAgfVxuICAgIHJldHVybiBUeXBlLl9vZihgdmFyY2hhcigke2xlbmd0aH0pYCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBzb21lIG90aGVyIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtVHlwZSB0eXBlIGNvbnRhaW5lZCBieSB0aGUgYXJyYXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFycmF5KGl0ZW1UeXBlOiBUeXBlKTogVHlwZSB7XG4gICAgcmV0dXJuIFR5cGUuX29mKGBhcnJheTwke2l0ZW1UeXBlLmlucHV0U3RyaW5nfT5gLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG1hcCBvZiBzb21lIHByaW1pdGl2ZSBrZXkgdHlwZSB0byBzb21lIHZhbHVlIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBrZXlUeXBlIHR5cGUgb2Yga2V5LCBtdXN0IGJlIGEgcHJpbWl0aXZlLlxuICAgKiBAcGFyYW0gdmFsdWVUeXBlIHR5cGUgZm8gdGhlIHZhbHVlIGluZGV4ZWQgYnkgdGhlIGtleS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFwKGtleVR5cGU6IFR5cGUsIHZhbHVlVHlwZTogVHlwZSk6IFR5cGUge1xuICAgIGlmICgha2V5VHlwZS5pc1ByaW1pdGl2ZSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBNYXBLZXlUeXBlTm90UHJpbWl0aXZlYCwgYHRoZSBrZXkgdHlwZSBvZiBhICdtYXAnIG11c3QgYmUgYSBwcmltaXRpdmUsIGJ1dCB3YXMgJHtrZXlUeXBlLmlucHV0U3RyaW5nfWApO1xuICAgIH1cbiAgICByZXR1cm4gVHlwZS5fb2YoYG1hcDwke2tleVR5cGUuaW5wdXRTdHJpbmd9LCR7dmFsdWVUeXBlLmlucHV0U3RyaW5nfT5gLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5lc3RlZCBzdHJ1Y3R1cmUgY29udGFpbmluZyBpbmRpdmlkdWFsbHkgbmFtZWQgYW5kIHR5cGVkIGNvbHVtbnMuXG4gICAqXG4gICAqIEBwYXJhbSBjb2x1bW5zIHRoZSBjb2x1bW5zIG9mIHRoZSBzdHJ1Y3R1cmUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0cnVjdChjb2x1bW5zOiBDb2x1bW5bXSk6IFR5cGUge1xuICAgIHJldHVybiBUeXBlLl9vZihgc3RydWN0PCR7Y29sdW1ucy5tYXAoY29sdW1uID0+IHtcbiAgICAgIHJldHVybiBgJHtjb2x1bW4ubmFtZX06JHtjb2x1bW4udHlwZS5pbnB1dFN0cmluZ31gO1xuICAgIH0pLmpvaW4oJywnKX0+YCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjdXN0b20gdHlwZSBmcm9tIGEgcmF3IEdsdWUgaW5wdXQgc3RyaW5nLlxuICAgKlxuICAgKiBFc2NhcGUgaGF0Y2ggZm9yIGNvbHVtbiB0eXBlcyB0aGUgb3RoZXIgYFNjaGVtYWAgZmFjdG9yaWVzIGRvbid0IG1vZGVsLiBUaGVcbiAgICogYGlucHV0U3RyaW5nYCBpcyBlbWl0dGVkIHZlcmJhdGltIGFuZCBpcyBub3QgdmFsaWRhdGVkLlxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXRTdHJpbmcgdGhlIEdsdWUgaW5wdXQgc3RyaW5nIGZvciB0aGUgdHlwZSAoZm9yIGV4YW1wbGUgYGludGVydmFsX2RheV90b19zZWNvbmRgKS5cbiAgICogQHBhcmFtIGlzUHJpbWl0aXZlIHdoZXRoZXIgdGhlIHR5cGUgaXMgYSBwcmltaXRpdmUgKG5vbi1uZXN0ZWQpIGRhdGEgdHlwZS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3VzdG9tKGlucHV0U3RyaW5nOiBzdHJpbmcsIGlzUHJpbWl0aXZlPzogYm9vbGVhbik6IFR5cGUge1xuICAgIHJldHVybiBUeXBlLl9vZihpbnB1dFN0cmluZywgaXNQcmltaXRpdmUgPz8gdHJ1ZSk7XG4gIH1cbn1cbiJdfQ==
|