@aws-solutions-constructs/core 2.62.0 → 2.64.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.
Files changed (85) hide show
  1. package/.jsii +331 -30
  2. package/index.d.ts +2 -0
  3. package/index.js +9 -3
  4. package/lib/alb-helper.js +17 -13
  5. package/lib/apigateway-defaults.js +2 -2
  6. package/lib/apigateway-helper.js +12 -12
  7. package/lib/cloudfront-distribution-defaults.js +1 -1
  8. package/lib/cloudfront-distribution-helper.js +12 -12
  9. package/lib/cloudwatch-log-group-helper.js +4 -4
  10. package/lib/cognito-helper.d.ts +6 -1
  11. package/lib/cognito-helper.js +6 -6
  12. package/lib/dynamodb-table-helper.js +3 -3
  13. package/lib/elasticache-helper.js +4 -4
  14. package/lib/elasticsearch-defaults.js +1 -1
  15. package/lib/elasticsearch-helper.js +5 -5
  16. package/lib/eventbridge-helper.js +1 -1
  17. package/lib/fargate-helper.js +2 -2
  18. package/lib/glue-job-defaults.js +3 -3
  19. package/lib/glue-job-helper.js +4 -4
  20. package/lib/glue-table-defaults.js +1 -1
  21. package/lib/glue-table-helper.js +1 -1
  22. package/lib/kendra-defaults.js +2 -2
  23. package/lib/kendra-helper.js +8 -8
  24. package/lib/kinesis-analytics-helper.js +2 -2
  25. package/lib/kinesis-streams-helper.js +3 -3
  26. package/lib/kms-helper.js +2 -2
  27. package/lib/lambda-event-source-mapping-defaults.js +6 -6
  28. package/lib/lambda-helper.js +6 -6
  29. package/lib/mediastore-helper.js +3 -3
  30. package/lib/opensearch-defaults.js +1 -1
  31. package/lib/opensearch-helper.js +5 -5
  32. package/lib/override-warning-service.js +3 -3
  33. package/lib/s3-bucket-helper.js +17 -17
  34. package/lib/s3-oac-origin.js +3 -3
  35. package/lib/sagemaker-helper.js +17 -17
  36. package/lib/secretsmanager-helper.js +3 -3
  37. package/lib/security-group-helper.js +3 -3
  38. package/lib/sns-helper.js +3 -3
  39. package/lib/sqs-helper.d.ts +18 -0
  40. package/lib/sqs-helper.js +12 -8
  41. package/lib/step-function-helper.js +8 -8
  42. package/lib/utils.js +3 -3
  43. package/lib/vpc-helper.js +6 -6
  44. package/lib/waf-helper.js +2 -2
  45. package/lib/websocket-api-defaults.d.ts +22 -0
  46. package/lib/websocket-api-defaults.js +36 -0
  47. package/lib/websocket-api-helper.d.ts +66 -0
  48. package/lib/websocket-api-helper.js +144 -0
  49. package/package.json +4 -4
  50. package/test/alb-helper.test.js +49 -4
  51. package/test/apigateway-helper.test.js +1 -1
  52. package/test/cloudfront-distribution-api-gateway-helper.test.js +5 -5
  53. package/test/cloudfront-distribution-mediastore-helper.test.js +8 -8
  54. package/test/cloudfront-distribution-s3-helper.test.js +21 -21
  55. package/test/cloudwatch-log-group-helper.test.js +3 -3
  56. package/test/dynamo-table.test.js +6 -6
  57. package/test/elasticache-defaults.test.js +3 -3
  58. package/test/elasticache-helper.test.js +15 -15
  59. package/test/elasticsearch-helper.test.js +1 -1
  60. package/test/events-rule.test.js +3 -3
  61. package/test/fargate-helper.test.js +10 -10
  62. package/test/glue-job-helper.test.js +1 -1
  63. package/test/glue-table-helper.test.js +1 -1
  64. package/test/iot-rule.test.js +3 -3
  65. package/test/kendra-helper.test.js +24 -24
  66. package/test/kinesis-analytics.test.js +2 -2
  67. package/test/kinesis-firehose-s3-defaults.test.js +2 -2
  68. package/test/kinesis-streams-defaults.test.js +2 -2
  69. package/test/lambda-helper.test.js +1 -1
  70. package/test/mediastore-helper.test.js +4 -4
  71. package/test/override-warning-service.test.js +13 -13
  72. package/test/s3-bucket-helper.test.js +2 -2
  73. package/test/s3-bucket.test.js +7 -7
  74. package/test/sagemaker-helper.test.js +2 -2
  75. package/test/sns-helper.test.js +2 -2
  76. package/test/sqs-helper.test.js +41 -9
  77. package/test/step-function-helper.test.js +4 -4
  78. package/test/test-helper.js +27 -27
  79. package/test/utils.test.js +1 -1
  80. package/test/vpc-helper.test.js +23 -23
  81. package/test/waf-helper.test.js +2 -2
  82. package/test/websocket-api-defaults.test.d.ts +13 -0
  83. package/test/websocket-api-defaults.test.js +29 -0
  84. package/test/websocket-api-helper.test.d.ts +13 -0
  85. package/test/websocket-api-helper.test.js +395 -0
@@ -21,14 +21,14 @@ const iam = require("aws-cdk-lib/aws-iam");
21
21
  // import { Construct } from 'constructs';
22
22
  test('Launch Kendra index with defaults', () => {
23
23
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
24
- kendra_helper_1.buildKendraIndex(stack, 'test', {});
24
+ (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {});
25
25
  const template = assertions_1.Template.fromStack(stack);
26
26
  template.hasResourceProperties('AWS::Kendra::Index', {});
27
27
  template.resourceCountIs("AWS::IAM::Role", 1);
28
28
  });
29
29
  test('Confirm kendra has log writing privileges', () => {
30
30
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
31
- kendra_helper_1.buildKendraIndex(stack, 'test', {});
31
+ (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {});
32
32
  const template = assertions_1.Template.fromStack(stack);
33
33
  template.hasResourceProperties("AWS::IAM::Role", {
34
34
  Description: "Allow Kendra index to write CloudWatch Logs",
@@ -129,7 +129,7 @@ test('Confirm kendra has log writing privileges', () => {
129
129
  test('Launch Kendra index with custom properties', () => {
130
130
  const testName = 'test-index-name';
131
131
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
132
- kendra_helper_1.buildKendraIndex(stack, 'test', {
132
+ (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {
133
133
  kendraIndexProps: {
134
134
  name: testName
135
135
  }
@@ -143,7 +143,7 @@ test('Launch Kendra index with custom properties', () => {
143
143
  test('Launch Kendra index with existing role', () => {
144
144
  const fakeRoleArn = 'fake-arn';
145
145
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
146
- kendra_helper_1.buildKendraIndex(stack, 'test', {
146
+ (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {
147
147
  kendraIndexProps: {
148
148
  roleArn: fakeRoleArn
149
149
  }
@@ -162,7 +162,7 @@ test('use existing Kendra index', () => {
162
162
  roleArn: 'fake-arn'
163
163
  };
164
164
  const testIndex = new kendra.CfnIndex(stack, `test`, indexProps);
165
- kendra_helper_1.buildKendraIndex(stack, 'test', {
165
+ (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {
166
166
  existingIndexObj: testIndex
167
167
  });
168
168
  const template = assertions_1.Template.fromStack(stack);
@@ -172,8 +172,8 @@ test('Launch Kendra index with an S3 data source', () => {
172
172
  const testName = 'test-name';
173
173
  const testBucketName = 'test-bucket-name';
174
174
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
175
- const newIndex = kendra_helper_1.buildKendraIndex(stack, 'test', {});
176
- kendra_helper_1.AddKendraDataSource(stack, 'testSource', newIndex, {
175
+ const newIndex = (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {});
176
+ (0, kendra_helper_1.AddKendraDataSource)(stack, 'testSource', newIndex, {
177
177
  type: 'S3',
178
178
  name: testName,
179
179
  dataSourceConfiguration: {
@@ -248,8 +248,8 @@ test('Launch Kendra index with a customized S3 data source', () => {
248
248
  const testName = 'test-name';
249
249
  const testBucketName = 'test-bucket-name';
250
250
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
251
- const newIndex = kendra_helper_1.buildKendraIndex(stack, 'test', {});
252
- kendra_helper_1.AddKendraDataSource(stack, 'testSource', newIndex, {
251
+ const newIndex = (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {});
252
+ (0, kendra_helper_1.AddKendraDataSource)(stack, 'testSource', newIndex, {
253
253
  type: 'S3',
254
254
  name: testName,
255
255
  dataSourceConfiguration: {
@@ -276,7 +276,7 @@ test('Launch Kendra index with non-implemented data source', () => {
276
276
  const nonImplementedSourceType = "WEBCRAWLER";
277
277
  const nonImplementedSourceName = "test-other-source";
278
278
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
279
- const testIndex = kendra_helper_1.buildKendraIndex(stack, 'test', {});
279
+ const testIndex = (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {});
280
280
  // Create a role
281
281
  const fakeRole = new iam.Role(stack, 'fakeRole', {
282
282
  assumedBy: new iam.ServicePrincipal('kendra.amazonaws.com'),
@@ -289,7 +289,7 @@ test('Launch Kendra index with non-implemented data source', () => {
289
289
  type: nonImplementedSourceType,
290
290
  };
291
291
  // Add a data source
292
- kendra_helper_1.AddKendraDataSource(stack, 'test-other-source', testIndex, dataSourceProps);
292
+ (0, kendra_helper_1.AddKendraDataSource)(stack, 'test-other-source', testIndex, dataSourceProps);
293
293
  const template = assertions_1.Template.fromStack(stack);
294
294
  template.resourceCountIs('AWS::Kendra::Index', 1);
295
295
  template.resourceCountIs('AWS::Kendra::DataSource', 1);
@@ -303,7 +303,7 @@ test('Confirm error if client supplies an index in the DataSource props', () =>
303
303
  const nonImplementedSourceType = "WEBCRAWLER";
304
304
  const nonImplementedSourceName = "test-other-source";
305
305
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
306
- const testIndex = kendra_helper_1.buildKendraIndex(stack, 'test', {});
306
+ const testIndex = (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {});
307
307
  // Create a role
308
308
  const fakeRole = new iam.Role(stack, 'fakeRole', {
309
309
  assumedBy: new iam.ServicePrincipal('kendra.amazonaws.com'),
@@ -318,26 +318,26 @@ test('Confirm error if client supplies an index in the DataSource props', () =>
318
318
  };
319
319
  // Add a data source
320
320
  const app = () => {
321
- kendra_helper_1.AddKendraDataSource(stack, 'test-other-source', testIndex, dataSourceProps);
321
+ (0, kendra_helper_1.AddKendraDataSource)(stack, 'test-other-source', testIndex, dataSourceProps);
322
322
  };
323
323
  expect(app).toThrowError(/Invalid DataSource prop specified - Construct must set the indexId prop/);
324
324
  });
325
325
  test('Confirm error if does not provide DataSource configuration', () => {
326
326
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
327
- const testIndex = kendra_helper_1.buildKendraIndex(stack, 'test', {});
327
+ const testIndex = (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {});
328
328
  // Create data source props
329
329
  const dataSourceProps = {
330
330
  type: "S3"
331
331
  };
332
332
  // Add a data source
333
333
  const app = () => {
334
- kendra_helper_1.AddKendraDataSource(stack, 'test-bad-source', testIndex, dataSourceProps);
334
+ (0, kendra_helper_1.AddKendraDataSource)(stack, 'test-bad-source', testIndex, dataSourceProps);
335
335
  };
336
336
  expect(app).toThrowError(/Error - an S3 Kendra DataSource requires an DataSourceConfiguration prop/);
337
337
  });
338
338
  test('Confirm error if does not provide S3 DataSource configuration', () => {
339
339
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
340
- const testIndex = kendra_helper_1.buildKendraIndex(stack, 'test', {});
340
+ const testIndex = (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {});
341
341
  // Create data source props
342
342
  const dataSourceProps = {
343
343
  type: "S3",
@@ -345,13 +345,13 @@ test('Confirm error if does not provide S3 DataSource configuration', () => {
345
345
  };
346
346
  // Add a data source
347
347
  const app = () => {
348
- kendra_helper_1.AddKendraDataSource(stack, 'test-bad-source', testIndex, dataSourceProps);
348
+ (0, kendra_helper_1.AddKendraDataSource)(stack, 'test-bad-source', testIndex, dataSourceProps);
349
349
  };
350
350
  expect(app).toThrowError(/Error - an S3 Kendra DataSource requires an DataSourceConfiguration.S3Configuration prop/);
351
351
  });
352
352
  test('Confirm error if does not provide S3 Bucketname', () => {
353
353
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
354
- const testIndex = kendra_helper_1.buildKendraIndex(stack, 'test', {});
354
+ const testIndex = (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {});
355
355
  // Create data source props
356
356
  const dataSourceProps = {
357
357
  type: "S3",
@@ -364,7 +364,7 @@ test('Confirm error if does not provide S3 Bucketname', () => {
364
364
  };
365
365
  // Add a data source
366
366
  const app = () => {
367
- kendra_helper_1.AddKendraDataSource(stack, 'test-bad-source', testIndex, dataSourceProps);
367
+ (0, kendra_helper_1.AddKendraDataSource)(stack, 'test-bad-source', testIndex, dataSourceProps);
368
368
  };
369
369
  expect(app).toThrowError(/Error - an S3 Kendra DataSource requires the DataSourceConfiguration.S3Configuration.bucketName prop/);
370
370
  });
@@ -374,7 +374,7 @@ test('Launch Kendra index with multiple data sources', () => {
374
374
  const nonImplementedSourceType = "WEBCRAWLER";
375
375
  const nonImplementedSourceName = "test-other-source";
376
376
  const stack = new aws_cdk_lib_1.Stack(undefined, undefined);
377
- const newIndex = kendra_helper_1.buildKendraIndex(stack, 'test', {});
377
+ const newIndex = (0, kendra_helper_1.buildKendraIndex)(stack, 'test', {});
378
378
  const s3DataSourceProps = {
379
379
  type: 'S3',
380
380
  name: testName,
@@ -396,7 +396,7 @@ test('Launch Kendra index with multiple data sources', () => {
396
396
  type: nonImplementedSourceType
397
397
  };
398
398
  // Add a data source
399
- const sourceObjects = kendra_helper_1.AddMultipleKendraDataSources(stack, 'test-other-source', newIndex, [
399
+ const sourceObjects = (0, kendra_helper_1.AddMultipleKendraDataSources)(stack, 'test-other-source', newIndex, [
400
400
  s3DataSourceProps,
401
401
  otherDataSourceProps
402
402
  ]);
@@ -474,7 +474,7 @@ test('Launch Kendra index with multiple data sources', () => {
474
474
  });
475
475
  test('Confirm Errof for bad kendra Permission in normalizeKendraPermissions()', () => {
476
476
  const inputs = ["read", "submitfeedback", "write"];
477
- const outputs = kendra_helper_1.normalizeKendraPermissions(inputs);
477
+ const outputs = (0, kendra_helper_1.normalizeKendraPermissions)(inputs);
478
478
  expect(outputs.includes("READ")).toBeTruthy();
479
479
  expect(outputs.includes("SUBMITFEEDBACK")).toBeTruthy();
480
480
  expect(outputs.includes("WRITE")).toBeTruthy();
@@ -482,8 +482,8 @@ test('Confirm Errof for bad kendra Permission in normalizeKendraPermissions()',
482
482
  test('Confirm successful operation of normalizeKendraPermissions()', () => {
483
483
  const inputs = ["badvalue", "write"];
484
484
  const app = () => {
485
- kendra_helper_1.normalizeKendraPermissions(inputs);
485
+ (0, kendra_helper_1.normalizeKendraPermissions)(inputs);
486
486
  };
487
487
  expect(app).toThrowError(/Invalid indexPermission value - valid values are "READ", "SUBMITFEEDBACK" and "WRITE"/);
488
488
  });
489
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VuZHJhLWhlbHBlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsia2VuZHJhLWhlbHBlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCw2Q0FBb0M7QUFDcEMsd0NBQXdDO0FBQ3hDLHVEQUF5RDtBQUN6RCx3REFBdUk7QUFDdkksaURBQWlEO0FBQ2pELDJDQUEyQztBQUUzQywwQ0FBMEM7QUFFMUMsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtJQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRTlDLGdDQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFcEMsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxFQUFFO0lBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFOUMsZ0NBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVwQyxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxRQUFRLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLEVBQUU7UUFDL0MsV0FBVyxFQUFFLDZDQUE2QztRQUMxRCxRQUFRLEVBQUU7WUFDUjtnQkFDRSxjQUFjLEVBQUU7b0JBQ2QsU0FBUyxFQUFFO3dCQUNU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LENBQUM7QUFDcEgsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbi8vIGltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7IE1hdGNoLCBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuaW1wb3J0IHsgYnVpbGRLZW5kcmFJbmRleCwgQWRkS2VuZHJhRGF0YVNvdXJjZSwgQWRkTXVsdGlwbGVLZW5kcmFEYXRhU291cmNlcywgbm9ybWFsaXplS2VuZHJhUGVybWlzc2lvbnMgfSBmcm9tICcuLi9saWIva2VuZHJhLWhlbHBlcic7XG5pbXBvcnQgKiBhcyBrZW5kcmEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWtlbmRyYSc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5cbi8vIGltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG50ZXN0KCdMYXVuY2ggS2VuZHJhIGluZGV4IHdpdGggZGVmYXVsdHMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcblxuICBidWlsZEtlbmRyYUluZGV4KHN0YWNrLCAndGVzdCcsIHt9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpLZW5kcmE6OkluZGV4Jywge30pO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoXCJBV1M6OklBTTo6Um9sZVwiLCAxKTtcbn0pO1xuXG50ZXN0KCdDb25maXJtIGtlbmRyYSBoYXMgbG9nIHdyaXRpbmcgcHJpdmlsZWdlcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuXG4gIGJ1aWxkS2VuZHJhSW5kZXgoc3RhY2ssICd0ZXN0Jywge30pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpJQU06OlJvbGVcIiwge1xuICAgIERlc2NyaXB0aW9uOiBcIkFsbG93IEtlbmRyYSBpbmRleCB0byB3cml0ZSBDbG91ZFdhdGNoIExvZ3NcIixcbiAgICBQb2xpY2llczogW1xuICAgICAge1xuICAgICAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBY3Rpb246IFwiY2xvdWR3YXRjaDpQdXRNZXRyaWNEYXRhXCIsXG4gICAgICAgICAgICAgIENvbmRpdGlvbjoge1xuICAgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgICAgICAgXCJjbG91ZHdhdGNoOm5hbWVzcGFjZVwiOiBcIkFXUy9LZW5kcmFcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgICAgIFJlc291cmNlOiBcIipcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBcImxvZ3M6Q3JlYXRlTG9nR3JvdXBcIixcbiAgICAgICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgICAgIFJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgXCJGbjo6Sm9pblwiOiBbXG4gICAgICAgICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBcImFybjphd3M6bG9nczpcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIFJlZjogXCJBV1M6OlJlZ2lvblwiXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiOlwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgUmVmOiBcIkFXUzo6QWNjb3VudElkXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXCI6bG9nLWdyb3VwOi9hd3Mva2VuZHJhLypcIlxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBcImxvZ3M6RGVzY3JpYmVMb2dHcm91cHNcIixcbiAgICAgICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgICAgIFJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgXCJGbjo6Sm9pblwiOiBbXG4gICAgICAgICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBcImFybjpcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIFJlZjogXCJBV1M6OlBhcnRpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiOmxvZ3M6XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpSZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBcIjpcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIFJlZjogXCJBV1M6OkFjY291bnRJZFwiXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiOmxvZy1ncm91cDovYXdzL2tlbmRyYS8qXCJcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFjdGlvbjogW1xuICAgICAgICAgICAgICAgIFwibG9nczpDcmVhdGVMb2dTdHJlYW1cIixcbiAgICAgICAgICAgICAgICBcImxvZ3M6UHV0TG9nRXZlbnRzXCIsXG4gICAgICAgICAgICAgICAgXCJsb2dzOkRlc2NyaWJlTG9nU3RyZWFtXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgICAgIFJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgXCJGbjo6Sm9pblwiOiBbXG4gICAgICAgICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBcImFybjpcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIFJlZjogXCJBV1M6OlBhcnRpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiOmxvZ3M6XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpSZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBcIjpcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIFJlZjogXCJBV1M6OkFjY291bnRJZFwiXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiOmxvZy1ncm91cDovYXdzL2tlbmRyYS8qOmxvZy1zdHJlYW06KlwiXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgICAgICB9LFxuICAgICAgICBQb2xpY3lOYW1lOiBcIkFsbG93TG9nZ2luZ1wiXG4gICAgICB9XG4gICAgXSxcbiAgfSk7XG59KTtcblxudGVzdCgnTGF1bmNoIEtlbmRyYSBpbmRleCB3aXRoIGN1c3RvbSBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICBjb25zdCB0ZXN0TmFtZSA9ICd0ZXN0LWluZGV4LW5hbWUnO1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG5cbiAgYnVpbGRLZW5kcmFJbmRleChzdGFjaywgJ3Rlc3QnLCB7XG4gICAga2VuZHJhSW5kZXhQcm9wczoge1xuICAgICAgbmFtZTogdGVzdE5hbWVcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OktlbmRyYTo6SW5kZXgnLCB7XG4gICAgTmFtZTogdGVzdE5hbWVcbiAgfSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhcIkFXUzo6SUFNOjpSb2xlXCIsIDEpO1xufSk7XG5cbnRlc3QoJ0xhdW5jaCBLZW5kcmEgaW5kZXggd2l0aCBleGlzdGluZyByb2xlJywgKCkgPT4ge1xuICBjb25zdCBmYWtlUm9sZUFybiA9ICdmYWtlLWFybic7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcblxuICBidWlsZEtlbmRyYUluZGV4KHN0YWNrLCAndGVzdCcsIHtcbiAgICBrZW5kcmFJbmRleFByb3BzOiB7XG4gICAgICByb2xlQXJuOiBmYWtlUm9sZUFyblxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6S2VuZHJhOjpJbmRleCcsIHtcbiAgICBSb2xlQXJuOiBmYWtlUm9sZUFyblxuICB9KTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKFwiQVdTOjpJQU06OlJvbGVcIiwgMCk7XG59KTtcblxudGVzdCgndXNlIGV4aXN0aW5nIEtlbmRyYSBpbmRleCcsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGluZGV4UHJvcHM6IGtlbmRyYS5DZm5JbmRleFByb3BzID0ge1xuICAgIGVkaXRpb246ICdERVZFTE9QRVJfRURJVElPTicsXG4gICAgbmFtZTogJ2tlbmRyYS10ZXN0JyxcbiAgICByb2xlQXJuOiAnZmFrZS1hcm4nXG4gIH07XG5cbiAgY29uc3QgdGVzdEluZGV4ID0gbmV3IGtlbmRyYS5DZm5JbmRleChzdGFjaywgYHRlc3RgLCBpbmRleFByb3BzKTtcblxuICBidWlsZEtlbmRyYUluZGV4KHN0YWNrLCAndGVzdCcsIHtcbiAgICBleGlzdGluZ0luZGV4T2JqOiB0ZXN0SW5kZXhcbiAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6S2VuZHJhOjpJbmRleCcsIDEpO1xufSk7XG5cbnRlc3QoJ0xhdW5jaCBLZW5kcmEgaW5kZXggd2l0aCBhbiBTMyBkYXRhIHNvdXJjZScsICgpID0+IHtcbiAgY29uc3QgdGVzdE5hbWUgPSAndGVzdC1uYW1lJztcbiAgY29uc3QgdGVzdEJ1Y2tldE5hbWUgPSAndGVzdC1idWNrZXQtbmFtZSc7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcblxuICBjb25zdCBuZXdJbmRleCA9IGJ1aWxkS2VuZHJhSW5kZXgoc3RhY2ssICd0ZXN0Jywge30pO1xuXG4gIEFkZEtlbmRyYURhdGFTb3VyY2Uoc3RhY2ssICd0ZXN0U291cmNlJywgbmV3SW5kZXgsIHtcbiAgICB0eXBlOiAnUzMnLFxuICAgIG5hbWU6IHRlc3ROYW1lLFxuICAgIGRhdGFTb3VyY2VDb25maWd1cmF0aW9uOiB7XG4gICAgICBzM0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgYnVja2V0TmFtZTogdGVzdEJ1Y2tldE5hbWUsXG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6S2VuZHJhOjpJbmRleCcsIDEpO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoXCJBV1M6OktlbmRyYTo6RGF0YVNvdXJjZVwiLCAxKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKFwiQVdTOjpJQU06OlJvbGVcIiwgMik7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6S2VuZHJhOjpEYXRhU291cmNlXCIsIHtcbiAgICBOYW1lOiB0ZXN0TmFtZSxcbiAgICBSb2xlQXJuOiBNYXRjaC5hbnlWYWx1ZSgpLFxuICAgIFR5cGU6ICdTMycsXG4gICAgRGF0YVNvdXJjZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgIFMzQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBCdWNrZXROYW1lOiB0ZXN0QnVja2V0TmFtZVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6SUFNOjpSb2xlXCIsIHtcbiAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgQWN0aW9uOiBcInN0czpBc3N1bWVSb2xlXCIsXG4gICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgUHJpbmNpcGFsOiB7XG4gICAgICAgICAgICBTZXJ2aWNlOiBcImtlbmRyYS5hbWF6b25hd3MuY29tXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgIH0sXG4gICAgUG9saWNpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBcInMzOkdldE9iamVjdFwiLFxuICAgICAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IGBhcm46YXdzOnMzOjo6JHt0ZXN0QnVja2V0TmFtZX0vKmBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFjdGlvbjogXCJzMzpMaXN0QnVja2V0XCIsXG4gICAgICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgICAgICBSZXNvdXJjZTogYGFybjphd3M6czM6Ojoke3Rlc3RCdWNrZXROYW1lfWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFjdGlvbjogW1xuICAgICAgICAgICAgICAgIFwia2VuZHJhOkJhdGNoUHV0RG9jdW1lbnRcIixcbiAgICAgICAgICAgICAgICBcImtlbmRyYTpCYXRjaERlbGV0ZURvY3VtZW50XCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgICAgIFJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgICAgICAgIFwia2VuZHJhaW5kZXh0ZXN0XCIsXG4gICAgICAgICAgICAgICAgICBcIkFyblwiXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgICAgICB9LFxuICAgICAgICBQb2xpY3lOYW1lOiBcInMzQ3Jhd2xQb2xpY3lcIlxuICAgICAgfVxuICAgIF1cbiAgfSk7XG59KTtcblxudGVzdCgnTGF1bmNoIEtlbmRyYSBpbmRleCB3aXRoIGEgY3VzdG9taXplZCBTMyBkYXRhIHNvdXJjZScsICgpID0+IHtcbiAgY29uc3QgdGVzdE5hbWUgPSAndGVzdC1uYW1lJztcbiAgY29uc3QgdGVzdEJ1Y2tldE5hbWUgPSAndGVzdC1idWNrZXQtbmFtZSc7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcblxuICBjb25zdCBuZXdJbmRleCA9IGJ1aWxkS2VuZHJhSW5kZXgoc3RhY2ssICd0ZXN0Jywge30pO1xuXG4gIEFkZEtlbmRyYURhdGFTb3VyY2Uoc3RhY2ssICd0ZXN0U291cmNlJywgbmV3SW5kZXgsIHtcbiAgICB0eXBlOiAnUzMnLFxuICAgIG5hbWU6IHRlc3ROYW1lLFxuICAgIGRhdGFTb3VyY2VDb25maWd1cmF0aW9uOiB7XG4gICAgICBzM0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgYnVja2V0TmFtZTogdGVzdEJ1Y2tldE5hbWUsXG4gICAgICAgIGluY2x1c2lvblBhdHRlcm5zOiBbJ0luY2x1ZGVUaGlzJ10sXG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OktlbmRyYTo6RGF0YVNvdXJjZVwiLCB7XG4gICAgRGF0YVNvdXJjZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgIFMzQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBCdWNrZXROYW1lOiBcInRlc3QtYnVja2V0LW5hbWVcIixcbiAgICAgICAgSW5jbHVzaW9uUGF0dGVybnM6IFsnSW5jbHVkZVRoaXMnXSxcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OktlbmRyYTo6SW5kZXgnLCAxKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKFwiQVdTOjpLZW5kcmE6OkRhdGFTb3VyY2VcIiwgMSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhcIkFXUzo6SUFNOjpSb2xlXCIsIDIpO1xufSk7XG5cbnRlc3QoJ0xhdW5jaCBLZW5kcmEgaW5kZXggd2l0aCBub24taW1wbGVtZW50ZWQgZGF0YSBzb3VyY2UnLCAoKSA9PiB7XG4gIGNvbnN0IG5vbkltcGxlbWVudGVkU291cmNlVHlwZSA9IFwiV0VCQ1JBV0xFUlwiO1xuICBjb25zdCBub25JbXBsZW1lbnRlZFNvdXJjZU5hbWUgPSBcInRlc3Qtb3RoZXItc291cmNlXCI7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgY29uc3QgdGVzdEluZGV4ID0gYnVpbGRLZW5kcmFJbmRleChzdGFjaywgJ3Rlc3QnLCB7fSk7XG5cbiAgLy8gQ3JlYXRlIGEgcm9sZVxuICBjb25zdCBmYWtlUm9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2Zha2VSb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdrZW5kcmEuYW1hem9uYXdzLmNvbScpLFxuICAgIHJvbGVOYW1lOiAnZXh0ZXJuYWxGYWtlUm9sZSdcbiAgfSk7XG5cbiAgLy8gQ3JlYXRlIGRhdGEgc291cmNlIHByb3BzXG4gIGNvbnN0IGRhdGFTb3VyY2VQcm9wczogUGFydGlhbDxrZW5kcmEuQ2ZuRGF0YVNvdXJjZVByb3BzPiA9IHtcbiAgICBuYW1lOiBub25JbXBsZW1lbnRlZFNvdXJjZU5hbWUsXG4gICAgcm9sZUFybjogZmFrZVJvbGUucm9sZUFybixcbiAgICB0eXBlOiBub25JbXBsZW1lbnRlZFNvdXJjZVR5cGUsXG4gIH07XG5cbiAgLy8gQWRkIGEgZGF0YSBzb3VyY2VcbiAgQWRkS2VuZHJhRGF0YVNvdXJjZShzdGFjaywgJ3Rlc3Qtb3RoZXItc291cmNlJywgdGVzdEluZGV4LCBkYXRhU291cmNlUHJvcHMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OktlbmRyYTo6SW5kZXgnLCAxKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OktlbmRyYTo6RGF0YVNvdXJjZScsIDEpO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6SUFNOjpSb2xlJywgMik7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6S2VuZHJhOjpEYXRhU291cmNlXCIsIHtcbiAgICBOYW1lOiBub25JbXBsZW1lbnRlZFNvdXJjZU5hbWUsXG4gICAgVHlwZTogbm9uSW1wbGVtZW50ZWRTb3VyY2VUeXBlXG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NvbmZpcm0gZXJyb3IgaWYgY2xpZW50IHN1cHBsaWVzIGFuIGluZGV4IGluIHRoZSBEYXRhU291cmNlIHByb3BzJywgKCkgPT4ge1xuICBjb25zdCBub25JbXBsZW1lbnRlZFNvdXJjZVR5cGUgPSBcIldFQkNSQVdMRVJcIjtcbiAgY29uc3Qgbm9uSW1wbGVtZW50ZWRTb3VyY2VOYW1lID0gXCJ0ZXN0LW90aGVyLXNvdXJjZVwiO1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gIGNvbnN0IHRlc3RJbmRleCA9IGJ1aWxkS2VuZHJhSW5kZXgoc3RhY2ssICd0ZXN0Jywge30pO1xuXG4gIC8vIENyZWF0ZSBhIHJvbGVcbiAgY29uc3QgZmFrZVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssICdmYWtlUm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgna2VuZHJhLmFtYXpvbmF3cy5jb20nKSxcbiAgICByb2xlTmFtZTogJ2V4dGVybmFsRmFrZVJvbGUnXG4gIH0pO1xuXG4gIC8vIENyZWF0ZSBkYXRhIHNvdXJjZSBwcm9wc1xuICBjb25zdCBkYXRhU291cmNlUHJvcHM6IFBhcnRpYWw8a2VuZHJhLkNmbkRhdGFTb3VyY2VQcm9wcz4gPSB7XG4gICAgbmFtZTogbm9uSW1wbGVtZW50ZWRTb3VyY2VOYW1lLFxuICAgIHJvbGVBcm46IGZha2VSb2xlLnJvbGVBcm4sXG4gICAgdHlwZTogbm9uSW1wbGVtZW50ZWRTb3VyY2VUeXBlLFxuICAgIGluZGV4SWQ6IHRlc3RJbmRleC5hdHRySWQsXG4gIH07XG5cbiAgLy8gQWRkIGEgZGF0YSBzb3VyY2VcbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIEFkZEtlbmRyYURhdGFTb3VyY2Uoc3RhY2ssICd0ZXN0LW90aGVyLXNvdXJjZScsIHRlc3RJbmRleCwgZGF0YVNvdXJjZVByb3BzKTtcbiAgfTtcblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoL0ludmFsaWQgRGF0YVNvdXJjZSBwcm9wIHNwZWNpZmllZCAtIENvbnN0cnVjdCBtdXN0IHNldCB0aGUgaW5kZXhJZCBwcm9wLyk7XG59KTtcblxudGVzdCgnQ29uZmlybSBlcnJvciBpZiBkb2VzIG5vdCBwcm92aWRlIERhdGFTb3VyY2UgY29uZmlndXJhdGlvbicsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICBjb25zdCB0ZXN0SW5kZXggPSBidWlsZEtlbmRyYUluZGV4KHN0YWNrLCAndGVzdCcsIHt9KTtcblxuICAvLyBDcmVhdGUgZGF0YSBzb3VyY2UgcHJvcHNcbiAgY29uc3QgZGF0YVNvdXJjZVByb3BzOiBQYXJ0aWFsPGtlbmRyYS5DZm5EYXRhU291cmNlUHJvcHM+ID0ge1xuICAgIHR5cGU6IFwiUzNcIlxuICB9O1xuXG4gIC8vIEFkZCBhIGRhdGEgc291cmNlXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBBZGRLZW5kcmFEYXRhU291cmNlKHN0YWNrLCAndGVzdC1iYWQtc291cmNlJywgdGVzdEluZGV4LCBkYXRhU291cmNlUHJvcHMpO1xuICB9O1xuXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcigvRXJyb3IgLSBhbiBTMyBLZW5kcmEgRGF0YVNvdXJjZSByZXF1aXJlcyBhbiBEYXRhU291cmNlQ29uZmlndXJhdGlvbiBwcm9wLyk7XG59KTtcblxudGVzdCgnQ29uZmlybSBlcnJvciBpZiBkb2VzIG5vdCBwcm92aWRlIFMzIERhdGFTb3VyY2UgY29uZmlndXJhdGlvbicsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICBjb25zdCB0ZXN0SW5kZXggPSBidWlsZEtlbmRyYUluZGV4KHN0YWNrLCAndGVzdCcsIHt9KTtcblxuICAvLyBDcmVhdGUgZGF0YSBzb3VyY2UgcHJvcHNcbiAgY29uc3QgZGF0YVNvdXJjZVByb3BzOiBQYXJ0aWFsPGtlbmRyYS5DZm5EYXRhU291cmNlUHJvcHM+ID0ge1xuICAgIHR5cGU6IFwiUzNcIixcbiAgICBkYXRhU291cmNlQ29uZmlndXJhdGlvbjoge1xuXG4gICAgfVxuICB9O1xuXG4gIC8vIEFkZCBhIGRhdGEgc291cmNlXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBBZGRLZW5kcmFEYXRhU291cmNlKHN0YWNrLCAndGVzdC1iYWQtc291cmNlJywgdGVzdEluZGV4LCBkYXRhU291cmNlUHJvcHMpO1xuICB9O1xuXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcigvRXJyb3IgLSBhbiBTMyBLZW5kcmEgRGF0YVNvdXJjZSByZXF1aXJlcyBhbiBEYXRhU291cmNlQ29uZmlndXJhdGlvbi5TM0NvbmZpZ3VyYXRpb24gcHJvcC8pO1xufSk7XG5cbnRlc3QoJ0NvbmZpcm0gZXJyb3IgaWYgZG9lcyBub3QgcHJvdmlkZSBTMyBCdWNrZXRuYW1lJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gIGNvbnN0IHRlc3RJbmRleCA9IGJ1aWxkS2VuZHJhSW5kZXgoc3RhY2ssICd0ZXN0Jywge30pO1xuXG4gIC8vIENyZWF0ZSBkYXRhIHNvdXJjZSBwcm9wc1xuICBjb25zdCBkYXRhU291cmNlUHJvcHM6IFBhcnRpYWw8a2VuZHJhLkNmbkRhdGFTb3VyY2VQcm9wcz4gPSB7XG4gICAgdHlwZTogXCJTM1wiLFxuICAgIGRhdGFTb3VyY2VDb25maWd1cmF0aW9uOiB7XG4gICAgICBzM0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgLy8gR29pbmcgdGhyb3VnaCBzb21lIGhvb3BzIGhlcmUgdG8gZm9yY2UgdGhpcyBjb25kaXRpaW9uLCBidXQgc2luY2Ugd2VcbiAgICAgICAgLy8gYWxsb3cgfCBhbnkgZm9yIHByb3BzLCBhIGNsaWVudCBjb3VsZCBkbyB0aGlzXG4gICAgICB9IGFzIGtlbmRyYS5DZm5EYXRhU291cmNlLlMzRGF0YVNvdXJjZUNvbmZpZ3VyYXRpb25Qcm9wZXJ0eVxuICAgIH1cbiAgfTtcblxuICAvLyBBZGQgYSBkYXRhIHNvdXJjZVxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgQWRkS2VuZHJhRGF0YVNvdXJjZShzdGFjaywgJ3Rlc3QtYmFkLXNvdXJjZScsIHRlc3RJbmRleCwgZGF0YVNvdXJjZVByb3BzKTtcbiAgfTtcblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoL0Vycm9yIC0gYW4gUzMgS2VuZHJhIERhdGFTb3VyY2UgcmVxdWlyZXMgdGhlIERhdGFTb3VyY2VDb25maWd1cmF0aW9uLlMzQ29uZmlndXJhdGlvbi5idWNrZXROYW1lIHByb3AvKTtcbn0pO1xuXG50ZXN0KCdMYXVuY2ggS2VuZHJhIGluZGV4IHdpdGggbXVsdGlwbGUgZGF0YSBzb3VyY2VzJywgKCkgPT4ge1xuICBjb25zdCB0ZXN0TmFtZSA9ICd0ZXN0LW5hbWUnO1xuICBjb25zdCB0ZXN0QnVja2V0TmFtZSA9ICd0ZXN0LWJ1Y2tldC1uYW1lJztcbiAgY29uc3Qgbm9uSW1wbGVtZW50ZWRTb3VyY2VUeXBlID0gXCJXRUJDUkFXTEVSXCI7XG4gIGNvbnN0IG5vbkltcGxlbWVudGVkU291cmNlTmFtZSA9IFwidGVzdC1vdGhlci1zb3VyY2VcIjtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IG5ld0luZGV4ID0gYnVpbGRLZW5kcmFJbmRleChzdGFjaywgJ3Rlc3QnLCB7fSk7XG5cbiAgY29uc3QgczNEYXRhU291cmNlUHJvcHMgPSB7XG4gICAgdHlwZTogJ1MzJyxcbiAgICBuYW1lOiB0ZXN0TmFtZSxcbiAgICBkYXRhU291cmNlQ29uZmlndXJhdGlvbjoge1xuICAgICAgczNDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGJ1Y2tldE5hbWU6IHRlc3RCdWNrZXROYW1lLFxuICAgICAgfVxuICAgIH0sXG4gIH07XG5cbiAgLy8gQ3JlYXRlIGEgcm9sZVxuICBjb25zdCBmYWtlUm9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2Zha2VSb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdrZW5kcmEuYW1hem9uYXdzLmNvbScpLFxuICAgIHJvbGVOYW1lOiAnZXh0ZXJuYWxGYWtlUm9sZSdcbiAgfSk7XG5cbiAgLy8gQ3JlYXRlIGRhdGEgc291cmNlIHByb3BzXG4gIGNvbnN0IG90aGVyRGF0YVNvdXJjZVByb3BzOiBQYXJ0aWFsPGtlbmRyYS5DZm5EYXRhU291cmNlUHJvcHM+ID0ge1xuICAgIG5hbWU6IG5vbkltcGxlbWVudGVkU291cmNlTmFtZSxcbiAgICByb2xlQXJuOiBmYWtlUm9sZS5yb2xlQXJuLFxuICAgIHR5cGU6IG5vbkltcGxlbWVudGVkU291cmNlVHlwZVxuICB9O1xuXG4gIC8vIEFkZCBhIGRhdGEgc291cmNlXG4gIGNvbnN0IHNvdXJjZU9iamVjdHMgPSBBZGRNdWx0aXBsZUtlbmRyYURhdGFTb3VyY2VzKHN0YWNrLCAndGVzdC1vdGhlci1zb3VyY2UnLCBuZXdJbmRleCwgW1xuICAgIHMzRGF0YVNvdXJjZVByb3BzLFxuICAgIG90aGVyRGF0YVNvdXJjZVByb3BzXG4gIF1cbiAgKTtcblxuICBleHBlY3Qoc291cmNlT2JqZWN0cy5sZW5ndGgpLnRvRXF1YWwoMik7XG4gIGV4cGVjdChzb3VyY2VPYmplY3RzWzBdLnR5cGUpLnRvRXF1YWwoJ1MzJyk7XG4gIGV4cGVjdChzb3VyY2VPYmplY3RzWzFdLm5hbWUpLnRvRXF1YWwobm9uSW1wbGVtZW50ZWRTb3VyY2VOYW1lKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpLZW5kcmE6OkluZGV4JywgMSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpLZW5kcmE6OkRhdGFTb3VyY2UnLCAyKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OklBTTo6Um9sZScsIDMpO1xuXG4gIC8vIExvb2sgZm9yIFMzIGRhdGEgc291cmNlXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6S2VuZHJhOjpEYXRhU291cmNlXCIsIHtcbiAgICBOYW1lOiB0ZXN0TmFtZSxcbiAgICBSb2xlQXJuOiBNYXRjaC5hbnlWYWx1ZSgpLFxuICAgIFR5cGU6ICdTMycsXG4gICAgRGF0YVNvdXJjZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgIFMzQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBCdWNrZXROYW1lOiB0ZXN0QnVja2V0TmFtZVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6SUFNOjpSb2xlXCIsIHtcbiAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgQWN0aW9uOiBcInN0czpBc3N1bWVSb2xlXCIsXG4gICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgUHJpbmNpcGFsOiB7XG4gICAgICAgICAgICBTZXJ2aWNlOiBcImtlbmRyYS5hbWF6b25hd3MuY29tXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgIH0sXG4gICAgUG9saWNpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBcInMzOkdldE9iamVjdFwiLFxuICAgICAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IGBhcm46YXdzOnMzOjo6JHt0ZXN0QnVja2V0TmFtZX0vKmBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFjdGlvbjogXCJzMzpMaXN0QnVja2V0XCIsXG4gICAgICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgICAgICBSZXNvdXJjZTogYGFybjphd3M6czM6Ojoke3Rlc3RCdWNrZXROYW1lfWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFjdGlvbjogW1xuICAgICAgICAgICAgICAgIFwia2VuZHJhOkJhdGNoUHV0RG9jdW1lbnRcIixcbiAgICAgICAgICAgICAgICBcImtlbmRyYTpCYXRjaERlbGV0ZURvY3VtZW50XCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgICAgIFJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgICAgICAgIFwia2VuZHJhaW5kZXh0ZXN0XCIsXG4gICAgICAgICAgICAgICAgICBcIkFyblwiXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgICAgICB9LFxuICAgICAgICBQb2xpY3lOYW1lOiBcInMzQ3Jhd2xQb2xpY3lcIlxuICAgICAgfVxuICAgIF1cbiAgfSk7XG5cbiAgLy8gTG9vayBmb3Igbm9uLWltcGxlbWVudGVkIGRhdGEgc291cmNlXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6S2VuZHJhOjpEYXRhU291cmNlXCIsIHtcbiAgICBOYW1lOiBub25JbXBsZW1lbnRlZFNvdXJjZU5hbWUsXG4gICAgVHlwZTogbm9uSW1wbGVtZW50ZWRTb3VyY2VUeXBlLFxuICAgIEluZGV4SWQ6IE1hdGNoLmFueVZhbHVlKClcbiAgfSk7XG5cbn0pO1xuXG50ZXN0KCdDb25maXJtIEVycm9mIGZvciBiYWQga2VuZHJhIFBlcm1pc3Npb24gaW4gbm9ybWFsaXplS2VuZHJhUGVybWlzc2lvbnMoKScsICgpID0+IHtcbiAgY29uc3QgaW5wdXRzID0gW1wicmVhZFwiLCBcInN1Ym1pdGZlZWRiYWNrXCIsIFwid3JpdGVcIl07XG5cbiAgY29uc3Qgb3V0cHV0cyA9IG5vcm1hbGl6ZUtlbmRyYVBlcm1pc3Npb25zKGlucHV0cyk7XG5cbiAgZXhwZWN0KG91dHB1dHMuaW5jbHVkZXMoXCJSRUFEXCIpKS50b0JlVHJ1dGh5KCk7XG4gIGV4cGVjdChvdXRwdXRzLmluY2x1ZGVzKFwiU1VCTUlURkVFREJBQ0tcIikpLnRvQmVUcnV0aHkoKTtcbiAgZXhwZWN0KG91dHB1dHMuaW5jbHVkZXMoXCJXUklURVwiKSkudG9CZVRydXRoeSgpO1xufSk7XG5cbnRlc3QoJ0NvbmZpcm0gc3VjY2Vzc2Z1bCBvcGVyYXRpb24gb2Ygbm9ybWFsaXplS2VuZHJhUGVybWlzc2lvbnMoKScsICgpID0+IHtcbiAgY29uc3QgaW5wdXRzID0gW1wiYmFkdmFsdWVcIiwgXCJ3cml0ZVwiXTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgbm9ybWFsaXplS2VuZHJhUGVybWlzc2lvbnMoaW5wdXRzKTtcbiAgfTtcblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoL0ludmFsaWQgaW5kZXhQZXJtaXNzaW9uIHZhbHVlIC0gdmFsaWQgdmFsdWVzIGFyZSBcIlJFQURcIiwgXCJTVUJNSVRGRUVEQkFDS1wiIGFuZCBcIldSSVRFXCIvKTtcbn0pO1xuIl19
489
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VuZHJhLWhlbHBlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsia2VuZHJhLWhlbHBlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCw2Q0FBb0M7QUFDcEMsd0NBQXdDO0FBQ3hDLHVEQUF5RDtBQUN6RCx3REFBdUk7QUFDdkksaURBQWlEO0FBQ2pELDJDQUEyQztBQUUzQywwQ0FBMEM7QUFFMUMsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtJQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRTlDLElBQUEsZ0NBQWdCLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVwQyxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxRQUFRLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUU7SUFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUU5QyxJQUFBLGdDQUFnQixFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFcEMsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixFQUFFO1FBQy9DLFdBQVcsRUFBRSw2Q0FBNkM7UUFDMUQsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsY0FBYyxFQUFFO29CQUNkLFNBQVMs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LEdBQUcsRUFBRTtRQUNmLElBQUEsMENBQTBCLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDO0lBRUYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyx1RkFBdUYsQ0FBQyxDQUFDO0FBQ3BILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG4vLyBpbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgeyBNYXRjaCwgVGVtcGxhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcbmltcG9ydCB7IGJ1aWxkS2VuZHJhSW5kZXgsIEFkZEtlbmRyYURhdGFTb3VyY2UsIEFkZE11bHRpcGxlS2VuZHJhRGF0YVNvdXJjZXMsIG5vcm1hbGl6ZUtlbmRyYVBlcm1pc3Npb25zIH0gZnJvbSAnLi4vbGliL2tlbmRyYS1oZWxwZXInO1xuaW1wb3J0ICogYXMga2VuZHJhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rZW5kcmEnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuXG4vLyBpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxudGVzdCgnTGF1bmNoIEtlbmRyYSBpbmRleCB3aXRoIGRlZmF1bHRzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG5cbiAgYnVpbGRLZW5kcmFJbmRleChzdGFjaywgJ3Rlc3QnLCB7fSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6S2VuZHJhOjpJbmRleCcsIHt9KTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKFwiQVdTOjpJQU06OlJvbGVcIiwgMSk7XG59KTtcblxudGVzdCgnQ29uZmlybSBrZW5kcmEgaGFzIGxvZyB3cml0aW5nIHByaXZpbGVnZXMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcblxuICBidWlsZEtlbmRyYUluZGV4KHN0YWNrLCAndGVzdCcsIHt9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6SUFNOjpSb2xlXCIsIHtcbiAgICBEZXNjcmlwdGlvbjogXCJBbGxvdyBLZW5kcmEgaW5kZXggdG8gd3JpdGUgQ2xvdWRXYXRjaCBMb2dzXCIsXG4gICAgUG9saWNpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBcImNsb3Vkd2F0Y2g6UHV0TWV0cmljRGF0YVwiLFxuICAgICAgICAgICAgICBDb25kaXRpb246IHtcbiAgICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICAgICAgIFwiY2xvdWR3YXRjaDpuYW1lc3BhY2VcIjogXCJBV1MvS2VuZHJhXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgICAgICBSZXNvdXJjZTogXCIqXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFjdGlvbjogXCJsb2dzOkNyZWF0ZUxvZ0dyb3VwXCIsXG4gICAgICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgICAgICBSZXNvdXJjZToge1xuICAgICAgICAgICAgICAgIFwiRm46OkpvaW5cIjogW1xuICAgICAgICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgXCJhcm46YXdzOmxvZ3M6XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpSZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBcIjpcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIFJlZjogXCJBV1M6OkFjY291bnRJZFwiXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiOmxvZy1ncm91cDovYXdzL2tlbmRyYS8qXCJcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFjdGlvbjogXCJsb2dzOkRlc2NyaWJlTG9nR3JvdXBzXCIsXG4gICAgICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgICAgICBSZXNvdXJjZToge1xuICAgICAgICAgICAgICAgIFwiRm46OkpvaW5cIjogW1xuICAgICAgICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgXCJhcm46XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpQYXJ0aXRpb25cIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBcIjpsb2dzOlwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgUmVmOiBcIkFXUzo6UmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXCI6XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpBY2NvdW50SWRcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBcIjpsb2ctZ3JvdXA6L2F3cy9rZW5kcmEvKlwiXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBY3Rpb246IFtcbiAgICAgICAgICAgICAgICBcImxvZ3M6Q3JlYXRlTG9nU3RyZWFtXCIsXG4gICAgICAgICAgICAgICAgXCJsb2dzOlB1dExvZ0V2ZW50c1wiLFxuICAgICAgICAgICAgICAgIFwibG9nczpEZXNjcmliZUxvZ1N0cmVhbVwiXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgICAgICBSZXNvdXJjZToge1xuICAgICAgICAgICAgICAgIFwiRm46OkpvaW5cIjogW1xuICAgICAgICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgXCJhcm46XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpQYXJ0aXRpb25cIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBcIjpsb2dzOlwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgUmVmOiBcIkFXUzo6UmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXCI6XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpBY2NvdW50SWRcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBcIjpsb2ctZ3JvdXA6L2F3cy9rZW5kcmEvKjpsb2ctc3RyZWFtOipcIlxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCJcbiAgICAgICAgfSxcbiAgICAgICAgUG9saWN5TmFtZTogXCJBbGxvd0xvZ2dpbmdcIlxuICAgICAgfVxuICAgIF0sXG4gIH0pO1xufSk7XG5cbnRlc3QoJ0xhdW5jaCBLZW5kcmEgaW5kZXggd2l0aCBjdXN0b20gcHJvcGVydGllcycsICgpID0+IHtcbiAgY29uc3QgdGVzdE5hbWUgPSAndGVzdC1pbmRleC1uYW1lJztcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuXG4gIGJ1aWxkS2VuZHJhSW5kZXgoc3RhY2ssICd0ZXN0Jywge1xuICAgIGtlbmRyYUluZGV4UHJvcHM6IHtcbiAgICAgIG5hbWU6IHRlc3ROYW1lXG4gICAgfVxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpLZW5kcmE6OkluZGV4Jywge1xuICAgIE5hbWU6IHRlc3ROYW1lXG4gIH0pO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoXCJBV1M6OklBTTo6Um9sZVwiLCAxKTtcbn0pO1xuXG50ZXN0KCdMYXVuY2ggS2VuZHJhIGluZGV4IHdpdGggZXhpc3Rpbmcgcm9sZScsICgpID0+IHtcbiAgY29uc3QgZmFrZVJvbGVBcm4gPSAnZmFrZS1hcm4nO1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG5cbiAgYnVpbGRLZW5kcmFJbmRleChzdGFjaywgJ3Rlc3QnLCB7XG4gICAga2VuZHJhSW5kZXhQcm9wczoge1xuICAgICAgcm9sZUFybjogZmFrZVJvbGVBcm5cbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OktlbmRyYTo6SW5kZXgnLCB7XG4gICAgUm9sZUFybjogZmFrZVJvbGVBcm5cbiAgfSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhcIkFXUzo6SUFNOjpSb2xlXCIsIDApO1xufSk7XG5cbnRlc3QoJ3VzZSBleGlzdGluZyBLZW5kcmEgaW5kZXgnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcblxuICBjb25zdCBpbmRleFByb3BzOiBrZW5kcmEuQ2ZuSW5kZXhQcm9wcyA9IHtcbiAgICBlZGl0aW9uOiAnREVWRUxPUEVSX0VESVRJT04nLFxuICAgIG5hbWU6ICdrZW5kcmEtdGVzdCcsXG4gICAgcm9sZUFybjogJ2Zha2UtYXJuJ1xuICB9O1xuXG4gIGNvbnN0IHRlc3RJbmRleCA9IG5ldyBrZW5kcmEuQ2ZuSW5kZXgoc3RhY2ssIGB0ZXN0YCwgaW5kZXhQcm9wcyk7XG5cbiAgYnVpbGRLZW5kcmFJbmRleChzdGFjaywgJ3Rlc3QnLCB7XG4gICAgZXhpc3RpbmdJbmRleE9iajogdGVzdEluZGV4XG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OktlbmRyYTo6SW5kZXgnLCAxKTtcbn0pO1xuXG50ZXN0KCdMYXVuY2ggS2VuZHJhIGluZGV4IHdpdGggYW4gUzMgZGF0YSBzb3VyY2UnLCAoKSA9PiB7XG4gIGNvbnN0IHRlc3ROYW1lID0gJ3Rlc3QtbmFtZSc7XG4gIGNvbnN0IHRlc3RCdWNrZXROYW1lID0gJ3Rlc3QtYnVja2V0LW5hbWUnO1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgbmV3SW5kZXggPSBidWlsZEtlbmRyYUluZGV4KHN0YWNrLCAndGVzdCcsIHt9KTtcblxuICBBZGRLZW5kcmFEYXRhU291cmNlKHN0YWNrLCAndGVzdFNvdXJjZScsIG5ld0luZGV4LCB7XG4gICAgdHlwZTogJ1MzJyxcbiAgICBuYW1lOiB0ZXN0TmFtZSxcbiAgICBkYXRhU291cmNlQ29uZmlndXJhdGlvbjoge1xuICAgICAgczNDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGJ1Y2tldE5hbWU6IHRlc3RCdWNrZXROYW1lLFxuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OktlbmRyYTo6SW5kZXgnLCAxKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKFwiQVdTOjpLZW5kcmE6OkRhdGFTb3VyY2VcIiwgMSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhcIkFXUzo6SUFNOjpSb2xlXCIsIDIpO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OktlbmRyYTo6RGF0YVNvdXJjZVwiLCB7XG4gICAgTmFtZTogdGVzdE5hbWUsXG4gICAgUm9sZUFybjogTWF0Y2guYW55VmFsdWUoKSxcbiAgICBUeXBlOiAnUzMnLFxuICAgIERhdGFTb3VyY2VDb25maWd1cmF0aW9uOiB7XG4gICAgICBTM0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgQnVja2V0TmFtZTogdGVzdEJ1Y2tldE5hbWVcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OklBTTo6Um9sZVwiLCB7XG4gICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OiB7XG4gICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjdGlvbjogXCJzdHM6QXNzdW1lUm9sZVwiLFxuICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgIFByaW5jaXBhbDoge1xuICAgICAgICAgICAgU2VydmljZTogXCJrZW5kcmEuYW1hem9uYXdzLmNvbVwiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCJcbiAgICB9LFxuICAgIFBvbGljaWVzOiBbXG4gICAgICB7XG4gICAgICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFjdGlvbjogXCJzMzpHZXRPYmplY3RcIixcbiAgICAgICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgICAgIFJlc291cmNlOiBgYXJuOmF3czpzMzo6OiR7dGVzdEJ1Y2tldE5hbWV9LypgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBY3Rpb246IFwiczM6TGlzdEJ1Y2tldFwiLFxuICAgICAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IGBhcm46YXdzOnMzOjo6JHt0ZXN0QnVja2V0TmFtZX1gXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBY3Rpb246IFtcbiAgICAgICAgICAgICAgICBcImtlbmRyYTpCYXRjaFB1dERvY3VtZW50XCIsXG4gICAgICAgICAgICAgICAgXCJrZW5kcmE6QmF0Y2hEZWxldGVEb2N1bWVudFwiXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgICAgICBSZXNvdXJjZToge1xuICAgICAgICAgICAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgICAgICAgICAgICBcImtlbmRyYWluZGV4dGVzdFwiLFxuICAgICAgICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCJcbiAgICAgICAgfSxcbiAgICAgICAgUG9saWN5TmFtZTogXCJzM0NyYXdsUG9saWN5XCJcbiAgICAgIH1cbiAgICBdXG4gIH0pO1xufSk7XG5cbnRlc3QoJ0xhdW5jaCBLZW5kcmEgaW5kZXggd2l0aCBhIGN1c3RvbWl6ZWQgUzMgZGF0YSBzb3VyY2UnLCAoKSA9PiB7XG4gIGNvbnN0IHRlc3ROYW1lID0gJ3Rlc3QtbmFtZSc7XG4gIGNvbnN0IHRlc3RCdWNrZXROYW1lID0gJ3Rlc3QtYnVja2V0LW5hbWUnO1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgbmV3SW5kZXggPSBidWlsZEtlbmRyYUluZGV4KHN0YWNrLCAndGVzdCcsIHt9KTtcblxuICBBZGRLZW5kcmFEYXRhU291cmNlKHN0YWNrLCAndGVzdFNvdXJjZScsIG5ld0luZGV4LCB7XG4gICAgdHlwZTogJ1MzJyxcbiAgICBuYW1lOiB0ZXN0TmFtZSxcbiAgICBkYXRhU291cmNlQ29uZmlndXJhdGlvbjoge1xuICAgICAgczNDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGJ1Y2tldE5hbWU6IHRlc3RCdWNrZXROYW1lLFxuICAgICAgICBpbmNsdXNpb25QYXR0ZXJuczogWydJbmNsdWRlVGhpcyddLFxuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpLZW5kcmE6OkRhdGFTb3VyY2VcIiwge1xuICAgIERhdGFTb3VyY2VDb25maWd1cmF0aW9uOiB7XG4gICAgICBTM0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgQnVja2V0TmFtZTogXCJ0ZXN0LWJ1Y2tldC1uYW1lXCIsXG4gICAgICAgIEluY2x1c2lvblBhdHRlcm5zOiBbJ0luY2x1ZGVUaGlzJ10sXG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpLZW5kcmE6OkluZGV4JywgMSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhcIkFXUzo6S2VuZHJhOjpEYXRhU291cmNlXCIsIDEpO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoXCJBV1M6OklBTTo6Um9sZVwiLCAyKTtcbn0pO1xuXG50ZXN0KCdMYXVuY2ggS2VuZHJhIGluZGV4IHdpdGggbm9uLWltcGxlbWVudGVkIGRhdGEgc291cmNlJywgKCkgPT4ge1xuICBjb25zdCBub25JbXBsZW1lbnRlZFNvdXJjZVR5cGUgPSBcIldFQkNSQVdMRVJcIjtcbiAgY29uc3Qgbm9uSW1wbGVtZW50ZWRTb3VyY2VOYW1lID0gXCJ0ZXN0LW90aGVyLXNvdXJjZVwiO1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gIGNvbnN0IHRlc3RJbmRleCA9IGJ1aWxkS2VuZHJhSW5kZXgoc3RhY2ssICd0ZXN0Jywge30pO1xuXG4gIC8vIENyZWF0ZSBhIHJvbGVcbiAgY29uc3QgZmFrZVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssICdmYWtlUm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgna2VuZHJhLmFtYXpvbmF3cy5jb20nKSxcbiAgICByb2xlTmFtZTogJ2V4dGVybmFsRmFrZVJvbGUnXG4gIH0pO1xuXG4gIC8vIENyZWF0ZSBkYXRhIHNvdXJjZSBwcm9wc1xuICBjb25zdCBkYXRhU291cmNlUHJvcHM6IFBhcnRpYWw8a2VuZHJhLkNmbkRhdGFTb3VyY2VQcm9wcz4gPSB7XG4gICAgbmFtZTogbm9uSW1wbGVtZW50ZWRTb3VyY2VOYW1lLFxuICAgIHJvbGVBcm46IGZha2VSb2xlLnJvbGVBcm4sXG4gICAgdHlwZTogbm9uSW1wbGVtZW50ZWRTb3VyY2VUeXBlLFxuICB9O1xuXG4gIC8vIEFkZCBhIGRhdGEgc291cmNlXG4gIEFkZEtlbmRyYURhdGFTb3VyY2Uoc3RhY2ssICd0ZXN0LW90aGVyLXNvdXJjZScsIHRlc3RJbmRleCwgZGF0YVNvdXJjZVByb3BzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpLZW5kcmE6OkluZGV4JywgMSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpLZW5kcmE6OkRhdGFTb3VyY2UnLCAxKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OklBTTo6Um9sZScsIDIpO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OktlbmRyYTo6RGF0YVNvdXJjZVwiLCB7XG4gICAgTmFtZTogbm9uSW1wbGVtZW50ZWRTb3VyY2VOYW1lLFxuICAgIFR5cGU6IG5vbkltcGxlbWVudGVkU291cmNlVHlwZVxuICB9KTtcbn0pO1xuXG50ZXN0KCdDb25maXJtIGVycm9yIGlmIGNsaWVudCBzdXBwbGllcyBhbiBpbmRleCBpbiB0aGUgRGF0YVNvdXJjZSBwcm9wcycsICgpID0+IHtcbiAgY29uc3Qgbm9uSW1wbGVtZW50ZWRTb3VyY2VUeXBlID0gXCJXRUJDUkFXTEVSXCI7XG4gIGNvbnN0IG5vbkltcGxlbWVudGVkU291cmNlTmFtZSA9IFwidGVzdC1vdGhlci1zb3VyY2VcIjtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICBjb25zdCB0ZXN0SW5kZXggPSBidWlsZEtlbmRyYUluZGV4KHN0YWNrLCAndGVzdCcsIHt9KTtcblxuICAvLyBDcmVhdGUgYSByb2xlXG4gIGNvbnN0IGZha2VSb2xlID0gbmV3IGlhbS5Sb2xlKHN0YWNrLCAnZmFrZVJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2tlbmRyYS5hbWF6b25hd3MuY29tJyksXG4gICAgcm9sZU5hbWU6ICdleHRlcm5hbEZha2VSb2xlJ1xuICB9KTtcblxuICAvLyBDcmVhdGUgZGF0YSBzb3VyY2UgcHJvcHNcbiAgY29uc3QgZGF0YVNvdXJjZVByb3BzOiBQYXJ0aWFsPGtlbmRyYS5DZm5EYXRhU291cmNlUHJvcHM+ID0ge1xuICAgIG5hbWU6IG5vbkltcGxlbWVudGVkU291cmNlTmFtZSxcbiAgICByb2xlQXJuOiBmYWtlUm9sZS5yb2xlQXJuLFxuICAgIHR5cGU6IG5vbkltcGxlbWVudGVkU291cmNlVHlwZSxcbiAgICBpbmRleElkOiB0ZXN0SW5kZXguYXR0cklkLFxuICB9O1xuXG4gIC8vIEFkZCBhIGRhdGEgc291cmNlXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBBZGRLZW5kcmFEYXRhU291cmNlKHN0YWNrLCAndGVzdC1vdGhlci1zb3VyY2UnLCB0ZXN0SW5kZXgsIGRhdGFTb3VyY2VQcm9wcyk7XG4gIH07XG5cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKC9JbnZhbGlkIERhdGFTb3VyY2UgcHJvcCBzcGVjaWZpZWQgLSBDb25zdHJ1Y3QgbXVzdCBzZXQgdGhlIGluZGV4SWQgcHJvcC8pO1xufSk7XG5cbnRlc3QoJ0NvbmZpcm0gZXJyb3IgaWYgZG9lcyBub3QgcHJvdmlkZSBEYXRhU291cmNlIGNvbmZpZ3VyYXRpb24nLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgY29uc3QgdGVzdEluZGV4ID0gYnVpbGRLZW5kcmFJbmRleChzdGFjaywgJ3Rlc3QnLCB7fSk7XG5cbiAgLy8gQ3JlYXRlIGRhdGEgc291cmNlIHByb3BzXG4gIGNvbnN0IGRhdGFTb3VyY2VQcm9wczogUGFydGlhbDxrZW5kcmEuQ2ZuRGF0YVNvdXJjZVByb3BzPiA9IHtcbiAgICB0eXBlOiBcIlMzXCJcbiAgfTtcblxuICAvLyBBZGQgYSBkYXRhIHNvdXJjZVxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgQWRkS2VuZHJhRGF0YVNvdXJjZShzdGFjaywgJ3Rlc3QtYmFkLXNvdXJjZScsIHRlc3RJbmRleCwgZGF0YVNvdXJjZVByb3BzKTtcbiAgfTtcblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoL0Vycm9yIC0gYW4gUzMgS2VuZHJhIERhdGFTb3VyY2UgcmVxdWlyZXMgYW4gRGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24gcHJvcC8pO1xufSk7XG5cbnRlc3QoJ0NvbmZpcm0gZXJyb3IgaWYgZG9lcyBub3QgcHJvdmlkZSBTMyBEYXRhU291cmNlIGNvbmZpZ3VyYXRpb24nLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgY29uc3QgdGVzdEluZGV4ID0gYnVpbGRLZW5kcmFJbmRleChzdGFjaywgJ3Rlc3QnLCB7fSk7XG5cbiAgLy8gQ3JlYXRlIGRhdGEgc291cmNlIHByb3BzXG4gIGNvbnN0IGRhdGFTb3VyY2VQcm9wczogUGFydGlhbDxrZW5kcmEuQ2ZuRGF0YVNvdXJjZVByb3BzPiA9IHtcbiAgICB0eXBlOiBcIlMzXCIsXG4gICAgZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb246IHtcblxuICAgIH1cbiAgfTtcblxuICAvLyBBZGQgYSBkYXRhIHNvdXJjZVxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgQWRkS2VuZHJhRGF0YVNvdXJjZShzdGFjaywgJ3Rlc3QtYmFkLXNvdXJjZScsIHRlc3RJbmRleCwgZGF0YVNvdXJjZVByb3BzKTtcbiAgfTtcblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoL0Vycm9yIC0gYW4gUzMgS2VuZHJhIERhdGFTb3VyY2UgcmVxdWlyZXMgYW4gRGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24uUzNDb25maWd1cmF0aW9uIHByb3AvKTtcbn0pO1xuXG50ZXN0KCdDb25maXJtIGVycm9yIGlmIGRvZXMgbm90IHByb3ZpZGUgUzMgQnVja2V0bmFtZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICBjb25zdCB0ZXN0SW5kZXggPSBidWlsZEtlbmRyYUluZGV4KHN0YWNrLCAndGVzdCcsIHt9KTtcblxuICAvLyBDcmVhdGUgZGF0YSBzb3VyY2UgcHJvcHNcbiAgY29uc3QgZGF0YVNvdXJjZVByb3BzOiBQYXJ0aWFsPGtlbmRyYS5DZm5EYXRhU291cmNlUHJvcHM+ID0ge1xuICAgIHR5cGU6IFwiUzNcIixcbiAgICBkYXRhU291cmNlQ29uZmlndXJhdGlvbjoge1xuICAgICAgczNDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIC8vIEdvaW5nIHRocm91Z2ggc29tZSBob29wcyBoZXJlIHRvIGZvcmNlIHRoaXMgY29uZGl0aWlvbiwgYnV0IHNpbmNlIHdlXG4gICAgICAgIC8vIGFsbG93IHwgYW55IGZvciBwcm9wcywgYSBjbGllbnQgY291bGQgZG8gdGhpc1xuICAgICAgfSBhcyBrZW5kcmEuQ2ZuRGF0YVNvdXJjZS5TM0RhdGFTb3VyY2VDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICB9XG4gIH07XG5cbiAgLy8gQWRkIGEgZGF0YSBzb3VyY2VcbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIEFkZEtlbmRyYURhdGFTb3VyY2Uoc3RhY2ssICd0ZXN0LWJhZC1zb3VyY2UnLCB0ZXN0SW5kZXgsIGRhdGFTb3VyY2VQcm9wcyk7XG4gIH07XG5cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKC9FcnJvciAtIGFuIFMzIEtlbmRyYSBEYXRhU291cmNlIHJlcXVpcmVzIHRoZSBEYXRhU291cmNlQ29uZmlndXJhdGlvbi5TM0NvbmZpZ3VyYXRpb24uYnVja2V0TmFtZSBwcm9wLyk7XG59KTtcblxudGVzdCgnTGF1bmNoIEtlbmRyYSBpbmRleCB3aXRoIG11bHRpcGxlIGRhdGEgc291cmNlcycsICgpID0+IHtcbiAgY29uc3QgdGVzdE5hbWUgPSAndGVzdC1uYW1lJztcbiAgY29uc3QgdGVzdEJ1Y2tldE5hbWUgPSAndGVzdC1idWNrZXQtbmFtZSc7XG4gIGNvbnN0IG5vbkltcGxlbWVudGVkU291cmNlVHlwZSA9IFwiV0VCQ1JBV0xFUlwiO1xuICBjb25zdCBub25JbXBsZW1lbnRlZFNvdXJjZU5hbWUgPSBcInRlc3Qtb3RoZXItc291cmNlXCI7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcblxuICBjb25zdCBuZXdJbmRleCA9IGJ1aWxkS2VuZHJhSW5kZXgoc3RhY2ssICd0ZXN0Jywge30pO1xuXG4gIGNvbnN0IHMzRGF0YVNvdXJjZVByb3BzID0ge1xuICAgIHR5cGU6ICdTMycsXG4gICAgbmFtZTogdGVzdE5hbWUsXG4gICAgZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgIHMzQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBidWNrZXROYW1lOiB0ZXN0QnVja2V0TmFtZSxcbiAgICAgIH1cbiAgICB9LFxuICB9O1xuXG4gIC8vIENyZWF0ZSBhIHJvbGVcbiAgY29uc3QgZmFrZVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssICdmYWtlUm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgna2VuZHJhLmFtYXpvbmF3cy5jb20nKSxcbiAgICByb2xlTmFtZTogJ2V4dGVybmFsRmFrZVJvbGUnXG4gIH0pO1xuXG4gIC8vIENyZWF0ZSBkYXRhIHNvdXJjZSBwcm9wc1xuICBjb25zdCBvdGhlckRhdGFTb3VyY2VQcm9wczogUGFydGlhbDxrZW5kcmEuQ2ZuRGF0YVNvdXJjZVByb3BzPiA9IHtcbiAgICBuYW1lOiBub25JbXBsZW1lbnRlZFNvdXJjZU5hbWUsXG4gICAgcm9sZUFybjogZmFrZVJvbGUucm9sZUFybixcbiAgICB0eXBlOiBub25JbXBsZW1lbnRlZFNvdXJjZVR5cGVcbiAgfTtcblxuICAvLyBBZGQgYSBkYXRhIHNvdXJjZVxuICBjb25zdCBzb3VyY2VPYmplY3RzID0gQWRkTXVsdGlwbGVLZW5kcmFEYXRhU291cmNlcyhzdGFjaywgJ3Rlc3Qtb3RoZXItc291cmNlJywgbmV3SW5kZXgsIFtcbiAgICBzM0RhdGFTb3VyY2VQcm9wcyxcbiAgICBvdGhlckRhdGFTb3VyY2VQcm9wc1xuICBdXG4gICk7XG5cbiAgZXhwZWN0KHNvdXJjZU9iamVjdHMubGVuZ3RoKS50b0VxdWFsKDIpO1xuICBleHBlY3Qoc291cmNlT2JqZWN0c1swXS50eXBlKS50b0VxdWFsKCdTMycpO1xuICBleHBlY3Qoc291cmNlT2JqZWN0c1sxXS5uYW1lKS50b0VxdWFsKG5vbkltcGxlbWVudGVkU291cmNlTmFtZSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6S2VuZHJhOjpJbmRleCcsIDEpO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6S2VuZHJhOjpEYXRhU291cmNlJywgMik7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpJQU06OlJvbGUnLCAzKTtcblxuICAvLyBMb29rIGZvciBTMyBkYXRhIHNvdXJjZVxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OktlbmRyYTo6RGF0YVNvdXJjZVwiLCB7XG4gICAgTmFtZTogdGVzdE5hbWUsXG4gICAgUm9sZUFybjogTWF0Y2guYW55VmFsdWUoKSxcbiAgICBUeXBlOiAnUzMnLFxuICAgIERhdGFTb3VyY2VDb25maWd1cmF0aW9uOiB7XG4gICAgICBTM0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgQnVja2V0TmFtZTogdGVzdEJ1Y2tldE5hbWVcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OklBTTo6Um9sZVwiLCB7XG4gICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OiB7XG4gICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjdGlvbjogXCJzdHM6QXNzdW1lUm9sZVwiLFxuICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgIFByaW5jaXBhbDoge1xuICAgICAgICAgICAgU2VydmljZTogXCJrZW5kcmEuYW1hem9uYXdzLmNvbVwiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCJcbiAgICB9LFxuICAgIFBvbGljaWVzOiBbXG4gICAgICB7XG4gICAgICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFjdGlvbjogXCJzMzpHZXRPYmplY3RcIixcbiAgICAgICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgICAgIFJlc291cmNlOiBgYXJuOmF3czpzMzo6OiR7dGVzdEJ1Y2tldE5hbWV9LypgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBY3Rpb246IFwiczM6TGlzdEJ1Y2tldFwiLFxuICAgICAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IGBhcm46YXdzOnMzOjo6JHt0ZXN0QnVja2V0TmFtZX1gXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBY3Rpb246IFtcbiAgICAgICAgICAgICAgICBcImtlbmRyYTpCYXRjaFB1dERvY3VtZW50XCIsXG4gICAgICAgICAgICAgICAgXCJrZW5kcmE6QmF0Y2hEZWxldGVEb2N1bWVudFwiXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgICAgICBSZXNvdXJjZToge1xuICAgICAgICAgICAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgICAgICAgICAgICBcImtlbmRyYWluZGV4dGVzdFwiLFxuICAgICAgICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCJcbiAgICAgICAgfSxcbiAgICAgICAgUG9saWN5TmFtZTogXCJzM0NyYXdsUG9saWN5XCJcbiAgICAgIH1cbiAgICBdXG4gIH0pO1xuXG4gIC8vIExvb2sgZm9yIG5vbi1pbXBsZW1lbnRlZCBkYXRhIHNvdXJjZVxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OktlbmRyYTo6RGF0YVNvdXJjZVwiLCB7XG4gICAgTmFtZTogbm9uSW1wbGVtZW50ZWRTb3VyY2VOYW1lLFxuICAgIFR5cGU6IG5vbkltcGxlbWVudGVkU291cmNlVHlwZSxcbiAgICBJbmRleElkOiBNYXRjaC5hbnlWYWx1ZSgpXG4gIH0pO1xuXG59KTtcblxudGVzdCgnQ29uZmlybSBFcnJvZiBmb3IgYmFkIGtlbmRyYSBQZXJtaXNzaW9uIGluIG5vcm1hbGl6ZUtlbmRyYVBlcm1pc3Npb25zKCknLCAoKSA9PiB7XG4gIGNvbnN0IGlucHV0cyA9IFtcInJlYWRcIiwgXCJzdWJtaXRmZWVkYmFja1wiLCBcIndyaXRlXCJdO1xuXG4gIGNvbnN0IG91dHB1dHMgPSBub3JtYWxpemVLZW5kcmFQZXJtaXNzaW9ucyhpbnB1dHMpO1xuXG4gIGV4cGVjdChvdXRwdXRzLmluY2x1ZGVzKFwiUkVBRFwiKSkudG9CZVRydXRoeSgpO1xuICBleHBlY3Qob3V0cHV0cy5pbmNsdWRlcyhcIlNVQk1JVEZFRURCQUNLXCIpKS50b0JlVHJ1dGh5KCk7XG4gIGV4cGVjdChvdXRwdXRzLmluY2x1ZGVzKFwiV1JJVEVcIikpLnRvQmVUcnV0aHkoKTtcbn0pO1xuXG50ZXN0KCdDb25maXJtIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uIG9mIG5vcm1hbGl6ZUtlbmRyYVBlcm1pc3Npb25zKCknLCAoKSA9PiB7XG4gIGNvbnN0IGlucHV0cyA9IFtcImJhZHZhbHVlXCIsIFwid3JpdGVcIl07XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIG5vcm1hbGl6ZUtlbmRyYVBlcm1pc3Npb25zKGlucHV0cyk7XG4gIH07XG5cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKC9JbnZhbGlkIGluZGV4UGVybWlzc2lvbiB2YWx1ZSAtIHZhbGlkIHZhbHVlcyBhcmUgXCJSRUFEXCIsIFwiU1VCTUlURkVFREJBQ0tcIiBhbmQgXCJXUklURVwiLyk7XG59KTtcbiJdfQ==
@@ -34,7 +34,7 @@ test("test kinesisanalytics override inputProperty", () => {
34
34
  const inProps = {
35
35
  inputs: [inputProperty],
36
36
  };
37
- const outProps = utils_1.overrideProps(defaultProps, inProps);
37
+ const outProps = (0, utils_1.overrideProps)(defaultProps, inProps);
38
38
  new kinesisanalytics.CfnApplication(stack, "KinesisAnalytics", outProps);
39
39
  assertions_1.Template.fromStack(stack).hasResourceProperties("AWS::KinesisAnalytics::Application", {
40
40
  Inputs: [
@@ -151,4 +151,4 @@ function CreateFirehose(stack) {
151
151
  const firehose = new kinesisFirehose.CfnDeliveryStream(stack, "KinesisFirehose", defaultKinesisFirehoseProps);
152
152
  return firehose;
153
153
  }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2luZXNpcy1hbmFseXRpY3MudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImtpbmVzaXMtYW5hbHl0aWNzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILDZDQUFtRDtBQUNuRCxtQ0FBbUM7QUFDbkMscUVBQXFFO0FBQ3JFLG1FQUFtRTtBQUNuRSwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBRTNDLHFDQUFxQztBQUNyQyx3Q0FBNkM7QUFDN0MsdURBQWtEO0FBRWxELElBQUksQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7SUFDeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFFMUIsTUFBTSxhQUFhLEdBQWtEO1FBQ25FLFdBQVcsRUFBRTtZQUNYLGFBQWEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDNUMsWUFBWSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFO1NBQzFDO1FBQ0QsVUFBVSxFQUFFLEtBQUs7S0FDbEIsQ0FBQztJQUVGLE1BQU0sWUFBWSxHQUNoQixRQUFRLENBQUMsMEJBQTBCLENBQUM7SUFFdEMsTUFBTSxPQUFPLEdBQXlDO1FBQ3BELE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQztLQUN4QixDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcscUJBQWEsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFdEQsSUFBSSxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXpFLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLHFCQUFxQixDQUFDLG9DQUFvQyxFQUFFO1FBQ3BGLE1BQU0sRUFBRTtZQUNOO2dCQUNFLFdBQVcsRUFBRTtvQkFDWCxhQUFhLEVBQUU7d0JBQ2I7NEJBQ0UsSUFB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LCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBTdGFjaywgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMga2luZXNpc2FuYWx5dGljcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWtpbmVzaXNhbmFseXRpY3NcIjtcbmltcG9ydCAqIGFzIGtpbmVzaXNGaXJlaG9zZSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWtpbmVzaXNmaXJlaG9zZVwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1rbXNcIjtcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tIFwiLi4vaW5kZXhcIjtcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMgfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuXG50ZXN0KFwidGVzdCBraW5lc2lzYW5hbHl0aWNzIG92ZXJyaWRlIGlucHV0UHJvcGVydHlcIiwgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGlucHV0UHJvcGVydHk6IGtpbmVzaXNhbmFseXRpY3MuQ2ZuQXBwbGljYXRpb24uSW5wdXRQcm9wZXJ0eSA9IHtcbiAgICBpbnB1dFNjaGVtYToge1xuICAgICAgcmVjb3JkQ29sdW1uczogW3sgbmFtZTogXCJ4XCIsIHNxbFR5cGU6IFwieVwiIH1dLFxuICAgICAgcmVjb3JkRm9ybWF0OiB7IHJlY29yZEZvcm1hdFR5cGU6IFwiY3N2XCIgfSxcbiAgICB9LFxuICAgIG5hbWVQcmVmaXg6IFwienp6XCIsXG4gIH07XG5cbiAgY29uc3QgZGVmYXVsdFByb3BzOiBraW5lc2lzYW5hbHl0aWNzLkNmbkFwcGxpY2F0aW9uUHJvcHMgPVxuICAgIGRlZmF1bHRzLkRlZmF1bHRDZm5BcHBsaWNhdGlvblByb3BzO1xuXG4gIGNvbnN0IGluUHJvcHM6IGtpbmVzaXNhbmFseXRpY3MuQ2ZuQXBwbGljYXRpb25Qcm9wcyA9IHtcbiAgICBpbnB1dHM6IFtpbnB1dFByb3BlcnR5XSxcbiAgfTtcblxuICBjb25zdCBvdXRQcm9wcyA9IG92ZXJyaWRlUHJvcHMoZGVmYXVsdFByb3BzLCBpblByb3BzKTtcblxuICBuZXcga2luZXNpc2FuYWx5dGljcy5DZm5BcHBsaWNhdGlvbihzdGFjaywgXCJLaW5lc2lzQW5hbHl0aWNzXCIsIG91dFByb3BzKTtcblxuICBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6S2luZXNpc0FuYWx5dGljczo6QXBwbGljYXRpb25cIiwge1xuICAgIElucHV0czogW1xuICAgICAge1xuICAgICAgICBJbnB1dFNjaGVtYToge1xuICAgICAgICAgIFJlY29yZENvbHVtbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgTmFtZTogXCJ4XCIsXG4gICAgICAgICAgICAgIFNxbFR5cGU6IFwieVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIFJlY29yZEZvcm1hdDoge1xuICAgICAgICAgICAgUmVjb3JkRm9ybWF0VHlwZTogXCJjc3ZcIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBOYW1lUHJlZml4OiBcInp6elwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KTtcbn0pO1xuXG50ZXN0KFwiVGVzdCBkZWZhdWx0IGltcGxlbWVudGF0aW9uXCIsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBuZXdGaXJlaG9zZSA9IENyZWF0ZUZpcmVob3NlKHN0YWNrKTtcbiAgY29uc3Qga2luZXNpc1Byb3BzOiBkZWZhdWx0cy5CdWlsZEtpbmVzaXNBbmFseXRpY3NBcHBQcm9wcyA9IHtcbiAgICBraW5lc2lzRmlyZWhvc2U6IG5ld0ZpcmVob3NlLFxuICAgIGtpbmVzaXNBbmFseXRpY3NQcm9wczoge1xuICAgICAgaW5wdXRzOiBbe1xuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHJlY29yZENvbHVtbnM6IFt7XG4gICAgICAgICAgICBuYW1lOiAndHMnLFxuICAgICAgICAgICAgc3FsVHlwZTogJ1RJTUVTVEFNUCcsXG4gICAgICAgICAgICBtYXBwaW5nOiAnJC50aW1lc3RhbXAnXG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ3RyaXBfaWQnLFxuICAgICAgICAgICAgc3FsVHlwZTogJ1ZBUkNIQVIoNjQpJyxcbiAgICAgICAgICAgIG1hcHBpbmc6ICckLnRyaXBfaWQnXG4gICAgICAgICAgfV0sXG4gICAgICAgICAgcmVjb3JkRm9ybWF0OiB7XG4gICAgICAgICAgICByZWNvcmRGb3JtYXRUeXBlOiAnSlNPTidcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlY29yZEVuY29kaW5nOiAnVVRGLTgnXG4gICAgICAgIH0sXG4gICAgICAgIG5hbWVQcmVmaXg6ICdTT1VSQ0VfU1FMX1NUUkVBTSdcbiAgICAgIH1dXG4gICAgfSxcbiAgfTtcblxuICBkZWZhdWx0cy5idWlsZEtpbmVzaXNBbmFseXRpY3NBcHAoc3RhY2ssIGtpbmVzaXNQcm9wcyk7XG5cbiAgVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OktpbmVzaXNBbmFseXRpY3M6OkFwcGxpY2F0aW9uXCIsIHtcbiAgICBJbnB1dHM6IFt7XG4gICAgICBJbnB1dFNjaGVtYToge1xuICAgICAgICBSZWNvcmRDb2x1bW5zOiBbe1xuICAgICAgICAgIE5hbWU6ICd0cycsXG4gICAgICAgICAgU3FsVHlwZTogJ1RJTUVTVEFNUCcsXG4gICAgICAgICAgTWFwcGluZzogJyQudGltZXN0YW1wJ1xuICAgICAgICB9LCB7XG4gICAgICAgICAgTmFtZTogJ3RyaXBfaWQnLFxuICAgICAgICAgIFNxbFR5cGU6ICdWQVJDSEFSKDY0KScsXG4gICAgICAgICAgTWFwcGluZzogJyQudHJpcF9pZCdcbiAgICAgICAgfV0sXG4gICAgICAgIFJlY29yZEZvcm1hdDoge1xuICAgICAgICAgIFJlY29yZEZvcm1hdFR5cGU6ICdKU09OJ1xuICAgICAgICB9LFxuICAgICAgICBSZWNvcmRFbmNvZGluZzogJ1VURi04J1xuICAgICAgfSxcbiAgICAgIE5hbWVQcmVmaXg6ICdTT1VSQ0VfU1FMX1NUUkVBTSdcbiAgICB9XVxuICB9KTtcbn0pO1xuXG4vLyB0ZXN0KCdUZXN0IGZvciBjdXN0b21lciBvdmVycmlkZXMnLCB7XG4vLyB0ZXN0KCdDaGVjayBwb2xpY3kgY3JlYXRlZCcsIHtcblxuZnVuY3Rpb24gQ3JlYXRlRmlyZWhvc2Uoc3RhY2s6IFN0YWNrKToga2luZXNpc0ZpcmVob3NlLkNmbkRlbGl2ZXJ5U3RyZWFtIHtcbiAgLy8gQ3JlYXRpbmcgdGhlIEZpcmVob3NlIGlzIGtpbmQgb2YgYSBiaWcgZGVhbC4gRmlyZWhvc2VUb1MzIGlzIG5vdCByZWFkaWx5IGF2YWlsYWJsZSBoZXJlIGluIGNvcmUsXG4gIC8vIHNvIHRoaXMgcm91dGluZSBwcmV0dHkgbXVjaCByZXBsaWNhdGVzIGl0LiBJZiB0aGlzIGZ1bmN0aW9uIGNlYXNlcyB0byB3b3JrIGNvcnJlY3RseSwgbG9vayBhdFxuICAvLyBGaXJlaG9zZVRvUzMgYW5kIHNlZSBpZiB0aGF0IGNoYW5nZWQuXG4gIGNvbnN0IGRlc3RpbmF0aW9uQnVja2V0ID0gZGVmYXVsdHMuQ3JlYXRlU2NyYXBCdWNrZXQoc3RhY2ssIFwic2NyYXBCdWNrZXRcIiwge1xuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3Qga2luZXNpc0ZpcmVob3NlTG9nR3JvdXAgPSBkZWZhdWx0cy5idWlsZExvZ0dyb3VwKFxuICAgIHN0YWNrLFxuICAgIFwiZmlyZWhvc2UtbG9nLWdyb3VwXCIsXG4gICAge31cbiAgKTtcblxuICBjb25zdCBjd0xvZ1N0cmVhbTogbG9ncy5Mb2dTdHJlYW0gPSBraW5lc2lzRmlyZWhvc2VMb2dHcm91cC5hZGRTdHJlYW0oXG4gICAgXCJmaXJlaG9zZS1sb2ctc3RyZWFtXCJcbiAgKTtcblxuICBjb25zdCBmaXJlaG9zZVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssIFwidGVzdC1yb2xlXCIsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbChcImZpcmVob3NlLmFtYXpvbmF3cy5jb21cIiksXG4gIH0pO1xuXG4gIC8vIFNldHVwIHRoZSBJQU0gcG9saWN5IGZvciBLaW5lc2lzIEZpcmVob3NlXG4gIGNvbnN0IGZpcmVob3NlUG9saWN5ID0gbmV3IGlhbS5Qb2xpY3koc3RhY2ssIFwiS2luZXNpc0ZpcmVob3NlUG9saWN5XCIsIHtcbiAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBcInMzOkFib3J0TXVsdGlwYXJ0VXBsb2FkXCIsXG4gICAgICAgICAgXCJzMzpHZXRCdWNrZXRMb2NhdGlvblwiLFxuICAgICAgICAgIFwiczM6R2V0T2JqZWN0XCIsXG4gICAgICAgICAgXCJzMzpMaXN0QnVja2V0XCIsXG4gICAgICAgICAgXCJzMzpMaXN0QnVja2V0TXVsdGlwYXJ0VXBsb2Fkc1wiLFxuICAgICAgICAgIFwiczM6UHV0T2JqZWN0XCIsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGAke2Rlc3RpbmF0aW9uQnVja2V0LmJ1Y2tldEFybn1gLFxuICAgICAgICAgIGAke2Rlc3RpbmF0aW9uQnVja2V0LmJ1Y2tldEFybn0vKmAsXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wibG9nczpQdXRMb2dFdmVudHNcIl0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGBhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06bG9nczoke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06bG9nLWdyb3VwOiR7a2luZXNpc0ZpcmVob3NlTG9nR3JvdXAubG9nR3JvdXBOYW1lfTpsb2ctc3RyZWFtOiR7Y3dMb2dTdHJlYW0ubG9nU3RyZWFtTmFtZX1gLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gQXR0YWNoIHBvbGljeSB0byByb2xlXG4gIGZpcmVob3NlUG9saWN5LmF0dGFjaFRvUm9sZShmaXJlaG9zZVJvbGUpO1xuXG4gIGNvbnN0IGF3c01hbmFnZWRLZXk6IGttcy5JS2V5ID0ga21zLkFsaWFzLmZyb21BbGlhc05hbWUoXG4gICAgc3RhY2ssXG4gICAgXCJhd3MtbWFuYWdlZC1rZXlcIixcbiAgICBcImFsaWFzL2F3cy9zM1wiXG4gICk7XG5cbiAgY29uc3QgZGVmYXVsdEtpbmVzaXNGaXJlaG9zZVByb3BzOiBraW5lc2lzRmlyZWhvc2UuQ2ZuRGVsaXZlcnlTdHJlYW1Qcm9wcyA9IGRlZmF1bHRzLkRlZmF1bHRDZm5EZWxpdmVyeVN0cmVhbVByb3BzKFxuICAgIGRlc3RpbmF0aW9uQnVja2V0LmJ1Y2tldEFybixcbiAgICBmaXJlaG9zZVJvbGUucm9sZUFybixcbiAgICBraW5lc2lzRmlyZWhvc2VMb2dHcm91cC5sb2dHcm91cE5hbWUsXG4gICAgY3dMb2dTdHJlYW0ubG9nU3RyZWFtTmFtZSxcbiAgICBhd3NNYW5hZ2VkS2V5XG4gICk7XG5cbiAgZGVzdGluYXRpb25CdWNrZXQuZ3JhbnRQdXQoZmlyZWhvc2VSb2xlKTtcblxuICBjb25zdCBmaXJlaG9zZSA9IG5ldyBraW5lc2lzRmlyZWhvc2UuQ2ZuRGVsaXZlcnlTdHJlYW0oXG4gICAgc3RhY2ssXG4gICAgXCJLaW5lc2lzRmlyZWhvc2VcIixcbiAgICBkZWZhdWx0S2luZXNpc0ZpcmVob3NlUHJvcHNcbiAgKTtcbiAgcmV0dXJuIGZpcmVob3NlO1xufVxuIl19
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2luZXNpcy1hbmFseXRpY3MudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImtpbmVzaXMtYW5hbHl0aWNzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILDZDQUFtRDtBQUNuRCxtQ0FBbUM7QUFDbkMscUVBQXFFO0FBQ3JFLG1FQUFtRTtBQUNuRSwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBRTNDLHFDQUFxQztBQUNyQyx3Q0FBNkM7QUFDN0MsdURBQWtEO0FBRWxELElBQUksQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7SUFDeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFFMUIsTUFBTSxhQUFhLEdBQWtEO1FBQ25FLFdBQVcsRUFBRTtZQUNYLGFBQWEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDNUMsWUFBWSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFO1NBQzFDO1FBQ0QsVUFBVSxFQUFFLEtBQUs7S0FDbEIsQ0FBQztJQUVGLE1BQU0sWUFBWSxHQUNoQixRQUFRLENBQUMsMEJBQTBCLENBQUM7SUFFdEMsTUFBTSxPQUFPLEdBQXlDO1FBQ3BELE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQztLQUN4QixDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsSUFBQSxxQkFBYSxFQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUV0RCxJQUFJLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFekUscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMscUJBQXFCLENBQUMsb0NBQW9DLEVBQUU7UUFDcEYsTUFBTSxFQUFFO1lBQ047Z0JBQ0UsV0FBVyxFQUFFO29CQUNYLGFBQWEsRUFBRTt3QkFDYjs0QkFD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Q0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFN0YWNrLCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBraW5lc2lzYW5hbHl0aWNzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mta2luZXNpc2FuYWx5dGljc1wiO1xuaW1wb3J0ICogYXMga2luZXNpc0ZpcmVob3NlIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mta2luZXNpc2ZpcmVob3NlXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCAqIGFzIGttcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWttc1wiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gXCIuLi9pbmRleFwiO1xuaW1wb3J0IHsgb3ZlcnJpZGVQcm9wcyB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnYXdzLWNkay1saWIvYXNzZXJ0aW9ucyc7XG5cbnRlc3QoXCJ0ZXN0IGtpbmVzaXNhbmFseXRpY3Mgb3ZlcnJpZGUgaW5wdXRQcm9wZXJ0eVwiLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgaW5wdXRQcm9wZXJ0eToga2luZXNpc2FuYWx5dGljcy5DZm5BcHBsaWNhdGlvbi5JbnB1dFByb3BlcnR5ID0ge1xuICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICByZWNvcmRDb2x1bW5zOiBbeyBuYW1lOiBcInhcIiwgc3FsVHlwZTogXCJ5XCIgfV0sXG4gICAgICByZWNvcmRGb3JtYXQ6IHsgcmVjb3JkRm9ybWF0VHlwZTogXCJjc3ZcIiB9LFxuICAgIH0sXG4gICAgbmFtZVByZWZpeDogXCJ6enpcIixcbiAgfTtcblxuICBjb25zdCBkZWZhdWx0UHJvcHM6IGtpbmVzaXNhbmFseXRpY3MuQ2ZuQXBwbGljYXRpb25Qcm9wcyA9XG4gICAgZGVmYXVsdHMuRGVmYXVsdENmbkFwcGxpY2F0aW9uUHJvcHM7XG5cbiAgY29uc3QgaW5Qcm9wczoga2luZXNpc2FuYWx5dGljcy5DZm5BcHBsaWNhdGlvblByb3BzID0ge1xuICAgIGlucHV0czogW2lucHV0UHJvcGVydHldLFxuICB9O1xuXG4gIGNvbnN0IG91dFByb3BzID0gb3ZlcnJpZGVQcm9wcyhkZWZhdWx0UHJvcHMsIGluUHJvcHMpO1xuXG4gIG5ldyBraW5lc2lzYW5hbHl0aWNzLkNmbkFwcGxpY2F0aW9uKHN0YWNrLCBcIktpbmVzaXNBbmFseXRpY3NcIiwgb3V0UHJvcHMpO1xuXG4gIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpLaW5lc2lzQW5hbHl0aWNzOjpBcHBsaWNhdGlvblwiLCB7XG4gICAgSW5wdXRzOiBbXG4gICAgICB7XG4gICAgICAgIElucHV0U2NoZW1hOiB7XG4gICAgICAgICAgUmVjb3JkQ29sdW1uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBOYW1lOiBcInhcIixcbiAgICAgICAgICAgICAgU3FsVHlwZTogXCJ5XCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgUmVjb3JkRm9ybWF0OiB7XG4gICAgICAgICAgICBSZWNvcmRGb3JtYXRUeXBlOiBcImNzdlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIE5hbWVQcmVmaXg6IFwienp6XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xufSk7XG5cbnRlc3QoXCJUZXN0IGRlZmF1bHQgaW1wbGVtZW50YXRpb25cIiwgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IG5ld0ZpcmVob3NlID0gQ3JlYXRlRmlyZWhvc2Uoc3RhY2spO1xuICBjb25zdCBraW5lc2lzUHJvcHM6IGRlZmF1bHRzLkJ1aWxkS2luZXNpc0FuYWx5dGljc0FwcFByb3BzID0ge1xuICAgIGtpbmVzaXNGaXJlaG9zZTogbmV3RmlyZWhvc2UsXG4gICAga2luZXNpc0FuYWx5dGljc1Byb3BzOiB7XG4gICAgICBpbnB1dHM6IFt7XG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgcmVjb3JkQ29sdW1uczogW3tcbiAgICAgICAgICAgIG5hbWU6ICd0cycsXG4gICAgICAgICAgICBzcWxUeXBlOiAnVElNRVNUQU1QJyxcbiAgICAgICAgICAgIG1hcHBpbmc6ICckLnRpbWVzdGFtcCdcbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAndHJpcF9pZCcsXG4gICAgICAgICAgICBzcWxUeXBlOiAnVkFSQ0hBUig2NCknLFxuICAgICAgICAgICAgbWFwcGluZzogJyQudHJpcF9pZCdcbiAgICAgICAgICB9XSxcbiAgICAgICAgICByZWNvcmRGb3JtYXQ6IHtcbiAgICAgICAgICAgIHJlY29yZEZvcm1hdFR5cGU6ICdKU09OJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVjb3JkRW5jb2Rpbmc6ICdVVEYtOCdcbiAgICAgICAgfSxcbiAgICAgICAgbmFtZVByZWZpeDogJ1NPVVJDRV9TUUxfU1RSRUFNJ1xuICAgICAgfV1cbiAgICB9LFxuICB9O1xuXG4gIGRlZmF1bHRzLmJ1aWxkS2luZXNpc0FuYWx5dGljc0FwcChzdGFjaywga2luZXNpc1Byb3BzKTtcblxuICBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6S2luZXNpc0FuYWx5dGljczo6QXBwbGljYXRpb25cIiwge1xuICAgIElucHV0czogW3tcbiAgICAgIElucHV0U2NoZW1hOiB7XG4gICAgICAgIFJlY29yZENvbHVtbnM6IFt7XG4gICAgICAgICAgTmFtZTogJ3RzJyxcbiAgICAgICAgICBTcWxUeXBlOiAnVElNRVNUQU1QJyxcbiAgICAgICAgICBNYXBwaW5nOiAnJC50aW1lc3RhbXAnXG4gICAgICAgIH0sIHtcbiAgICAgICAgICBOYW1lOiAndHJpcF9pZCcsXG4gICAgICAgICAgU3FsVHlwZTogJ1ZBUkNIQVIoNjQpJyxcbiAgICAgICAgICBNYXBwaW5nOiAnJC50cmlwX2lkJ1xuICAgICAgICB9XSxcbiAgICAgICAgUmVjb3JkRm9ybWF0OiB7XG4gICAgICAgICAgUmVjb3JkRm9ybWF0VHlwZTogJ0pTT04nXG4gICAgICAgIH0sXG4gICAgICAgIFJlY29yZEVuY29kaW5nOiAnVVRGLTgnXG4gICAgICB9LFxuICAgICAgTmFtZVByZWZpeDogJ1NPVVJDRV9TUUxfU1RSRUFNJ1xuICAgIH1dXG4gIH0pO1xufSk7XG5cbi8vIHRlc3QoJ1Rlc3QgZm9yIGN1c3RvbWVyIG92ZXJyaWRlcycsIHtcbi8vIHRlc3QoJ0NoZWNrIHBvbGljeSBjcmVhdGVkJywge1xuXG5mdW5jdGlvbiBDcmVhdGVGaXJlaG9zZShzdGFjazogU3RhY2spOiBraW5lc2lzRmlyZWhvc2UuQ2ZuRGVsaXZlcnlTdHJlYW0ge1xuICAvLyBDcmVhdGluZyB0aGUgRmlyZWhvc2UgaXMga2luZCBvZiBhIGJpZyBkZWFsLiBGaXJlaG9zZVRvUzMgaXMgbm90IHJlYWRpbHkgYXZhaWxhYmxlIGhlcmUgaW4gY29yZSxcbiAgLy8gc28gdGhpcyByb3V0aW5lIHByZXR0eSBtdWNoIHJlcGxpY2F0ZXMgaXQuIElmIHRoaXMgZnVuY3Rpb24gY2Vhc2VzIHRvIHdvcmsgY29ycmVjdGx5LCBsb29rIGF0XG4gIC8vIEZpcmVob3NlVG9TMyBhbmQgc2VlIGlmIHRoYXQgY2hhbmdlZC5cbiAgY29uc3QgZGVzdGluYXRpb25CdWNrZXQgPSBkZWZhdWx0cy5DcmVhdGVTY3JhcEJ1Y2tldChzdGFjaywgXCJzY3JhcEJ1Y2tldFwiLCB7XG4gICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICB9KTtcblxuICBjb25zdCBraW5lc2lzRmlyZWhvc2VMb2dHcm91cCA9IGRlZmF1bHRzLmJ1aWxkTG9nR3JvdXAoXG4gICAgc3RhY2ssXG4gICAgXCJmaXJlaG9zZS1sb2ctZ3JvdXBcIixcbiAgICB7fVxuICApO1xuXG4gIGNvbnN0IGN3TG9nU3RyZWFtOiBsb2dzLkxvZ1N0cmVhbSA9IGtpbmVzaXNGaXJlaG9zZUxvZ0dyb3VwLmFkZFN0cmVhbShcbiAgICBcImZpcmVob3NlLWxvZy1zdHJlYW1cIlxuICApO1xuXG4gIGNvbnN0IGZpcmVob3NlUm9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgXCJ0ZXN0LXJvbGVcIiwge1xuICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiZmlyZWhvc2UuYW1hem9uYXdzLmNvbVwiKSxcbiAgfSk7XG5cbiAgLy8gU2V0dXAgdGhlIElBTSBwb2xpY3kgZm9yIEtpbmVzaXMgRmlyZWhvc2VcbiAgY29uc3QgZmlyZWhvc2VQb2xpY3kgPSBuZXcgaWFtLlBvbGljeShzdGFjaywgXCJLaW5lc2lzRmlyZWhvc2VQb2xpY3lcIiwge1xuICAgIHN0YXRlbWVudHM6IFtcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwiczM6QWJvcnRNdWx0aXBhcnRVcGxvYWRcIixcbiAgICAgICAgICBcInMzOkdldEJ1Y2tldExvY2F0aW9uXCIsXG4gICAgICAgICAgXCJzMzpHZXRPYmplY3RcIixcbiAgICAgICAgICBcInMzOkxpc3RCdWNrZXRcIixcbiAgICAgICAgICBcInMzOkxpc3RCdWNrZXRNdWx0aXBhcnRVcGxvYWRzXCIsXG4gICAgICAgICAgXCJzMzpQdXRPYmplY3RcIixcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgYCR7ZGVzdGluYXRpb25CdWNrZXQuYnVja2V0QXJufWAsXG4gICAgICAgICAgYCR7ZGVzdGluYXRpb25CdWNrZXQuYnVja2V0QXJufS8qYCxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXCJsb2dzOlB1dExvZ0V2ZW50c1wiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgYGFybjoke2Nkay5Bd3MuUEFSVElUSU9OfTpsb2dzOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTpsb2ctZ3JvdXA6JHtraW5lc2lzRmlyZWhvc2VMb2dHcm91cC5sb2dHcm91cE5hbWV9OmxvZy1zdHJlYW06JHtjd0xvZ1N0cmVhbS5sb2dTdHJlYW1OYW1lfWAsXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBBdHRhY2ggcG9saWN5IHRvIHJvbGVcbiAgZmlyZWhvc2VQb2xpY3kuYXR0YWNoVG9Sb2xlKGZpcmVob3NlUm9sZSk7XG5cbiAgY29uc3QgYXdzTWFuYWdlZEtleToga21zLklLZXkgPSBrbXMuQWxpYXMuZnJvbUFsaWFzTmFtZShcbiAgICBzdGFjayxcbiAgICBcImF3cy1tYW5hZ2VkLWtleVwiLFxuICAgIFwiYWxpYXMvYXdzL3MzXCJcbiAgKTtcblxuICBjb25zdCBkZWZhdWx0S2luZXNpc0ZpcmVob3NlUHJvcHM6IGtpbmVzaXNGaXJlaG9zZS5DZm5EZWxpdmVyeVN0cmVhbVByb3BzID0gZGVmYXVsdHMuRGVmYXVsdENmbkRlbGl2ZXJ5U3RyZWFtUHJvcHMoXG4gICAgZGVzdGluYXRpb25CdWNrZXQuYnVja2V0QXJuLFxuICAgIGZpcmVob3NlUm9sZS5yb2xlQXJuLFxuICAgIGtpbmVzaXNGaXJlaG9zZUxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSxcbiAgICBjd0xvZ1N0cmVhbS5sb2dTdHJlYW1OYW1lLFxuICAgIGF3c01hbmFnZWRLZXlcbiAgKTtcblxuICBkZXN0aW5hdGlvbkJ1Y2tldC5ncmFudFB1dChmaXJlaG9zZVJvbGUpO1xuXG4gIGNvbnN0IGZpcmVob3NlID0gbmV3IGtpbmVzaXNGaXJlaG9zZS5DZm5EZWxpdmVyeVN0cmVhbShcbiAgICBzdGFjayxcbiAgICBcIktpbmVzaXNGaXJlaG9zZVwiLFxuICAgIGRlZmF1bHRLaW5lc2lzRmlyZWhvc2VQcm9wc1xuICApO1xuICByZXR1cm4gZmlyZWhvc2U7XG59XG4iXX0=
@@ -30,7 +30,7 @@ test('test kinesisanalytics override buffer conditions', () => {
30
30
  };
31
31
  const awsManagedKey = kms.Alias.fromAliasName(stack, 'aws-managed-key', 'alias/aws/s3');
32
32
  const defaultProps = defaults.DefaultCfnDeliveryStreamProps('bucket_arn', 'role_arn', 'log_group', 'log_stream', awsManagedKey);
33
- const outProps = utils_1.overrideProps(defaultProps, inProps);
33
+ const outProps = (0, utils_1.overrideProps)(defaultProps, inProps);
34
34
  new kinesisfirehose.CfnDeliveryStream(stack, 'KinesisFirehose', outProps);
35
35
  assertions_1.Template.fromStack(stack).hasResourceProperties("AWS::KinesisFirehose::DeliveryStream", {
36
36
  ExtendedS3DestinationConfiguration: {
@@ -73,4 +73,4 @@ test('test kinesisanalytics override buffer conditions', () => {
73
73
  }
74
74
  });
75
75
  });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2luZXNpcy1maXJlaG9zZS1zMy1kZWZhdWx0cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsia2luZXNpcy1maXJlaG9zZS1zMy1kZWZhdWx0cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCw2Q0FBb0M7QUFDcEMsbUVBQW1FO0FBQ25FLHFDQUFxQztBQUNyQyx3Q0FBNkM7QUFDN0MsdURBQWtEO0FBQ2xELDJDQUEyQztBQUUzQyxJQUFJLENBQUMsa0RBQWtELEVBQUUsR0FBRyxFQUFFO0lBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBRTFCLE1BQU0sT0FBTyxHQUFHO1FBQ2Qsa0NBQWtDLEVBQUU7WUFDbEMsY0FBYyxFQUFFO2dCQUNkLGlCQUFpQixFQUFFLEdBQUc7Z0JBQ3RCLFNBQVMsRUFBRSxFQUFFO2FBQ2Q7U0FDRjtLQUNGLENBQUM7SUFDRixNQUFNLGFBQWEsR0FBYSxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFbEcsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLDZCQUE2QixDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUVoSSxNQUFNLFFBQVEsR0FBRyxxQkFBYSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUV0RCxJQUFJLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFMUUscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMscUJBQXFCLENBQUMsc0NBQXNDLEVBQUU7UUFDdEYsa0NBQWtDLEVBQUU7WUFDbEMsU0FBUyxFQUFFLFlBQVk7WUFDdkIsY0FBYyxFQUFFO2dCQUNkLGlCQUFpQixFQUFFLEdBQUc7Z0JBQ3RCLFNBQVMsRUFBRSxFQUFFO2FBQ2Q7WUFDRCx3QkFBd0IsRUFBRTtnQkFDeEIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsWUFBWSxFQUFFLFdBQVc7Z0JBQ3pCLGFBQWEsRUFBRSxZQUFZO2FBQzVCO1lBQ0QsaUJBQWlCLEVBQUUsTUFBTTtZQUN6Qix1QkFBdUIsRUFBRTtnQkFDdkIsbUJBQW1CLEVBQUU7b0JBQ25CLFlBQVksRUFBRTt3QkFDWixVQUFVLEVBQUU7NEJBQ1YsRUFBRTs0QkFDRjtnQ0FDRSxNQUFNO2dDQUNOO29DQUNFLEdBQUcsRUFBRSxnQkFBZ0I7aUNBQ3RCO2dDQUNELE9BQU87Z0NBQ1A7b0NBQ0UsR0FBRyxFQUFFLGFBQWE7aUNBQ25CO2dDQUNELEdBQUc7Z0NBQ0g7b0NBQ0UsR0FBRyxFQUFFLGdCQUFnQjtpQ0FDdEI7Z0NBQ0QsZUFBZTs2QkFDaEI7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRSxVQUFVO1NBQ3BCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGtpbmVzaXNmaXJlaG9zZSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta2luZXNpc2ZpcmVob3NlJztcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMgfSBmcm9tICcuLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcblxudGVzdCgndGVzdCBraW5lc2lzYW5hbHl0aWNzIG92ZXJyaWRlIGJ1ZmZlciBjb25kaXRpb25zJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGluUHJvcHMgPSB7XG4gICAgZXh0ZW5kZWRTM0Rlc3RpbmF0aW9uQ29uZmlndXJhdGlvbjoge1xuICAgICAgYnVmZmVyaW5nSGludHM6IHtcbiAgICAgICAgaW50ZXJ2YWxJblNlY29uZHM6IDYwMCxcbiAgICAgICAgc2l6ZUluTUJzOiAxMFxuICAgICAgfSxcbiAgICB9XG4gIH07XG4gIGNvbnN0IGF3c01hbmFnZWRLZXk6IGttcy5JS2V5ID0ga21zLkFsaWFzLmZyb21BbGlhc05hbWUoc3RhY2ssICdhd3MtbWFuYWdlZC1rZXknLCAnYWxpYXMvYXdzL3MzJyk7XG5cbiAgY29uc3QgZGVmYXVsdFByb3BzID0gZGVmYXVsdHMuRGVmYXVsdENmbkRlbGl2ZXJ5U3RyZWFtUHJvcHMoJ2J1Y2tldF9hcm4nLCAncm9sZV9hcm4nLCAnbG9nX2dyb3VwJywgJ2xvZ19zdHJlYW0nLCBhd3NNYW5hZ2VkS2V5KTtcblxuICBjb25zdCBvdXRQcm9wcyA9IG92ZXJyaWRlUHJvcHMoZGVmYXVsdFByb3BzLCBpblByb3BzKTtcblxuICBuZXcga2luZXNpc2ZpcmVob3NlLkNmbkRlbGl2ZXJ5U3RyZWFtKHN0YWNrLCAnS2luZXNpc0ZpcmVob3NlJywgb3V0UHJvcHMpO1xuXG4gIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpLaW5lc2lzRmlyZWhvc2U6OkRlbGl2ZXJ5U3RyZWFtXCIsIHtcbiAgICBFeHRlbmRlZFMzRGVzdGluYXRpb25Db25maWd1cmF0aW9uOiB7XG4gICAgICBCdWNrZXRBUk46IFwiYnVja2V0X2FyblwiLFxuICAgICAgQnVmZmVyaW5nSGludHM6IHtcbiAgICAgICAgSW50ZXJ2YWxJblNlY29uZHM6IDYwMCxcbiAgICAgICAgU2l6ZUluTUJzOiAxMFxuICAgICAgfSxcbiAgICAgIENsb3VkV2F0Y2hMb2dnaW5nT3B0aW9uczoge1xuICAgICAgICBFbmFibGVkOiB0cnVlLFxuICAgICAgICBMb2dHcm91cE5hbWU6IFwibG9nX2dyb3VwXCIsXG4gICAgICAgIExvZ1N0cmVhbU5hbWU6IFwibG9nX3N0cmVhbVwiXG4gICAgICB9LFxuICAgICAgQ29tcHJlc3Npb25Gb3JtYXQ6IFwiR1pJUFwiLFxuICAgICAgRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgS01TRW5jcnlwdGlvbkNvbmZpZzoge1xuICAgICAgICAgIEFXU0tNU0tleUFSTjoge1xuICAgICAgICAgICAgXCJGbjo6Sm9pblwiOiBbXG4gICAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcImFybjpcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpQYXJ0aXRpb25cIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCI6a21zOlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFJlZjogXCJBV1M6OlJlZ2lvblwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcIjpcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpBY2NvdW50SWRcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCI6YWxpYXMvYXdzL3MzXCJcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFJvbGVBUk46IFwicm9sZV9hcm5cIlxuICAgIH1cbiAgfSk7XG59KTtcbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2luZXNpcy1maXJlaG9zZS1zMy1kZWZhdWx0cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsia2luZXNpcy1maXJlaG9zZS1zMy1kZWZhdWx0cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCw2Q0FBb0M7QUFDcEMsbUVBQW1FO0FBQ25FLHFDQUFxQztBQUNyQyx3Q0FBNkM7QUFDN0MsdURBQWtEO0FBQ2xELDJDQUEyQztBQUUzQyxJQUFJLENBQUMsa0RBQWtELEVBQUUsR0FBRyxFQUFFO0lBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBRTFCLE1BQU0sT0FBTyxHQUFHO1FBQ2Qsa0NBQWtDLEVBQUU7WUFDbEMsY0FBYyxFQUFFO2dCQUNkLGlCQUFpQixFQUFFLEdBQUc7Z0JBQ3RCLFNBQVMsRUFBRSxFQUFFO2FBQ2Q7U0FDRjtLQUNGLENBQUM7SUFDRixNQUFNLGFBQWEsR0FBYSxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFbEcsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLDZCQUE2QixDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUVoSSxNQUFNLFFBQVEsR0FBRyxJQUFBLHFCQUFhLEVBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXRELElBQUksZUFBZSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUUxRSxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxzQ0FBc0MsRUFBRTtRQUN0RixrQ0FBa0MsRUFBRTtZQUNsQyxTQUFTLEVBQUUsWUFBWTtZQUN2QixjQUFjLEVBQUU7Z0JBQ2QsaUJBQWlCLEVBQUUsR0FBRztnQkFDdEIsU0FBUyxFQUFFLEVBQUU7YUFDZDtZQUNELHdCQUF3QixFQUFFO2dCQUN4QixPQUFPLEVBQUUsSUFBSTtnQkFDYixZQUFZLEVBQUUsV0FBVztnQkFDekIsYUFBYSxFQUFFLFlBQVk7YUFDNUI7WUFDRCxpQkFBaUIsRUFBRSxNQUFNO1lBQ3pCLHVCQUF1QixFQUFFO2dCQUN2QixtQkFBbUIsRUFBRTtvQkFDbkIsWUFBWSxFQUFFO3dCQUNaLFVBQVUsRUFBRTs0QkFDVixFQUFFOzRCQUNGO2dDQUNFLE1BQU07Z0NBQ047b0NBQ0UsR0FBRyxFQUFFLGdCQUFnQjtpQ0FDdEI7Z0NBQ0QsT0FBTztnQ0FDUDtvQ0FDRSxHQUFHLEVBQUUsYUFBYTtpQ0FDbkI7Z0NBQ0QsR0FBRztnQ0FDSDtvQ0FDRSxHQUFHLEVBQUUsZ0JBQWdCO2lDQUN0QjtnQ0FDRCxlQUFlOzZCQUNoQjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLFVBQVU7U0FDcEI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMga2luZXNpc2ZpcmVob3NlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1raW5lc2lzZmlyZWhvc2UnO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHsgb3ZlcnJpZGVQcm9wcyB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuXG50ZXN0KCd0ZXN0IGtpbmVzaXNhbmFseXRpY3Mgb3ZlcnJpZGUgYnVmZmVyIGNvbmRpdGlvbnMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgaW5Qcm9wcyA9IHtcbiAgICBleHRlbmRlZFMzRGVzdGluYXRpb25Db25maWd1cmF0aW9uOiB7XG4gICAgICBidWZmZXJpbmdIaW50czoge1xuICAgICAgICBpbnRlcnZhbEluU2Vjb25kczogNjAwLFxuICAgICAgICBzaXplSW5NQnM6IDEwXG4gICAgICB9LFxuICAgIH1cbiAgfTtcbiAgY29uc3QgYXdzTWFuYWdlZEtleToga21zLklLZXkgPSBrbXMuQWxpYXMuZnJvbUFsaWFzTmFtZShzdGFjaywgJ2F3cy1tYW5hZ2VkLWtleScsICdhbGlhcy9hd3MvczMnKTtcblxuICBjb25zdCBkZWZhdWx0UHJvcHMgPSBkZWZhdWx0cy5EZWZhdWx0Q2ZuRGVsaXZlcnlTdHJlYW1Qcm9wcygnYnVja2V0X2FybicsICdyb2xlX2FybicsICdsb2dfZ3JvdXAnLCAnbG9nX3N0cmVhbScsIGF3c01hbmFnZWRLZXkpO1xuXG4gIGNvbnN0IG91dFByb3BzID0gb3ZlcnJpZGVQcm9wcyhkZWZhdWx0UHJvcHMsIGluUHJvcHMpO1xuXG4gIG5ldyBraW5lc2lzZmlyZWhvc2UuQ2ZuRGVsaXZlcnlTdHJlYW0oc3RhY2ssICdLaW5lc2lzRmlyZWhvc2UnLCBvdXRQcm9wcyk7XG5cbiAgVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OktpbmVzaXNGaXJlaG9zZTo6RGVsaXZlcnlTdHJlYW1cIiwge1xuICAgIEV4dGVuZGVkUzNEZXN0aW5hdGlvbkNvbmZpZ3VyYXRpb246IHtcbiAgICAgIEJ1Y2tldEFSTjogXCJidWNrZXRfYXJuXCIsXG4gICAgICBCdWZmZXJpbmdIaW50czoge1xuICAgICAgICBJbnRlcnZhbEluU2Vjb25kczogNjAwLFxuICAgICAgICBTaXplSW5NQnM6IDEwXG4gICAgICB9LFxuICAgICAgQ2xvdWRXYXRjaExvZ2dpbmdPcHRpb25zOiB7XG4gICAgICAgIEVuYWJsZWQ6IHRydWUsXG4gICAgICAgIExvZ0dyb3VwTmFtZTogXCJsb2dfZ3JvdXBcIixcbiAgICAgICAgTG9nU3RyZWFtTmFtZTogXCJsb2dfc3RyZWFtXCJcbiAgICAgIH0sXG4gICAgICBDb21wcmVzc2lvbkZvcm1hdDogXCJHWklQXCIsXG4gICAgICBFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBLTVNFbmNyeXB0aW9uQ29uZmlnOiB7XG4gICAgICAgICAgQVdTS01TS2V5QVJOOiB7XG4gICAgICAgICAgICBcIkZuOjpKb2luXCI6IFtcbiAgICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFwiYXJuOlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFJlZjogXCJBV1M6OlBhcnRpdGlvblwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcIjprbXM6XCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgUmVmOiBcIkFXUzo6UmVnaW9uXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiOlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFJlZjogXCJBV1M6OkFjY291bnRJZFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcIjphbGlhcy9hd3MvczNcIlxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgUm9sZUFSTjogXCJyb2xlX2FyblwiXG4gICAgfVxuICB9KTtcbn0pO1xuIl19
@@ -23,10 +23,10 @@ test('test kinesisstream override RetentionPeriodHours', () => {
23
23
  const inProps = {
24
24
  retentionPeriod: aws_cdk_lib_1.Duration.hours(48)
25
25
  };
26
- const outProps = utils_1.overrideProps(defaultProps, inProps);
26
+ const outProps = (0, utils_1.overrideProps)(defaultProps, inProps);
27
27
  new kinesis.Stream(stack, 'KinesisStream', outProps);
28
28
  assertions_1.Template.fromStack(stack).hasResourceProperties("AWS::Kinesis::Stream", {
29
29
  RetentionPeriodHours: 48
30
30
  });
31
31
  });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2luZXNpcy1zdHJlYW1zLWRlZmF1bHRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJraW5lc2lzLXN0cmVhbXMtZGVmYXVsdHMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsNkNBQThDO0FBQzlDLG1EQUFtRDtBQUNuRCxxQ0FBcUM7QUFDckMsd0NBQTZDO0FBQzdDLHVEQUFrRDtBQUVsRCxJQUFJLENBQUMsa0RBQWtELEVBQUUsR0FBRyxFQUFFO0lBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBRTFCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztJQUVqRCxNQUFNLE9BQU8sR0FBd0I7UUFDbkMsZUFBZSxFQUFFLHNCQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztLQUNwQyxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcscUJBQWEsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFdEQsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFckQscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMscUJBQXFCLENBQUMsc0JBQXNCLEVBQUU7UUFDdEUsb0JBQW9CLEVBQUUsRUFBRTtLQUN6QixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFN0YWNrLCBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGtpbmVzaXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWtpbmVzaXMnO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHsgb3ZlcnJpZGVQcm9wcyB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuXG50ZXN0KCd0ZXN0IGtpbmVzaXNzdHJlYW0gb3ZlcnJpZGUgUmV0ZW50aW9uUGVyaW9kSG91cnMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgZGVmYXVsdFByb3BzID0gZGVmYXVsdHMuRGVmYXVsdFN0cmVhbVByb3BzO1xuXG4gIGNvbnN0IGluUHJvcHM6IGtpbmVzaXMuU3RyZWFtUHJvcHMgPSB7XG4gICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5ob3Vycyg0OClcbiAgfTtcblxuICBjb25zdCBvdXRQcm9wcyA9IG92ZXJyaWRlUHJvcHMoZGVmYXVsdFByb3BzLCBpblByb3BzKTtcblxuICBuZXcga2luZXNpcy5TdHJlYW0oc3RhY2ssICdLaW5lc2lzU3RyZWFtJywgb3V0UHJvcHMpO1xuXG4gIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpLaW5lc2lzOjpTdHJlYW1cIiwge1xuICAgIFJldGVudGlvblBlcmlvZEhvdXJzOiA0OFxuICB9KTtcbn0pOyJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2luZXNpcy1zdHJlYW1zLWRlZmF1bHRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJraW5lc2lzLXN0cmVhbXMtZGVmYXVsdHMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsNkNBQThDO0FBQzlDLG1EQUFtRDtBQUNuRCxxQ0FBcUM7QUFDckMsd0NBQTZDO0FBQzdDLHVEQUFrRDtBQUVsRCxJQUFJLENBQUMsa0RBQWtELEVBQUUsR0FBRyxFQUFFO0lBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBRTFCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztJQUVqRCxNQUFNLE9BQU8sR0FBd0I7UUFDbkMsZUFBZSxFQUFFLHNCQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztLQUNwQyxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsSUFBQSxxQkFBYSxFQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUV0RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVyRCxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsRUFBRTtRQUN0RSxvQkFBb0IsRUFBRSxFQUFFO0tBQ3pCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgU3RhY2ssIER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMga2luZXNpcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta2luZXNpcyc7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgeyBvdmVycmlkZVByb3BzIH0gZnJvbSAnLi4vbGliL3V0aWxzJztcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnYXdzLWNkay1saWIvYXNzZXJ0aW9ucyc7XG5cbnRlc3QoJ3Rlc3Qga2luZXNpc3N0cmVhbSBvdmVycmlkZSBSZXRlbnRpb25QZXJpb2RIb3VycycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBkZWZhdWx0UHJvcHMgPSBkZWZhdWx0cy5EZWZhdWx0U3RyZWFtUHJvcHM7XG5cbiAgY29uc3QgaW5Qcm9wczoga2luZXNpcy5TdHJlYW1Qcm9wcyA9IHtcbiAgICByZXRlbnRpb25QZXJpb2Q6IER1cmF0aW9uLmhvdXJzKDQ4KVxuICB9O1xuXG4gIGNvbnN0IG91dFByb3BzID0gb3ZlcnJpZGVQcm9wcyhkZWZhdWx0UHJvcHMsIGluUHJvcHMpO1xuXG4gIG5ldyBraW5lc2lzLlN0cmVhbShzdGFjaywgJ0tpbmVzaXNTdHJlYW0nLCBvdXRQcm9wcyk7XG5cbiAgVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OktpbmVzaXM6OlN0cmVhbVwiLCB7XG4gICAgUmV0ZW50aW9uUGVyaW9kSG91cnM6IDQ4XG4gIH0pO1xufSk7Il19