@aws-cdk/aws-bedrock-agentcore-alpha 2.256.1-alpha.0 → 2.258.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/.jsii +2806 -2580
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +2135 -59
  4. package/lib/common/types.d.ts +2 -0
  5. package/lib/common/types.js +3 -1
  6. package/lib/evaluation/custom-evaluator.d.ts +1 -0
  7. package/lib/evaluation/custom-evaluator.js +37 -4
  8. package/lib/evaluation/data-source.d.ts +1 -0
  9. package/lib/evaluation/data-source.js +15 -2
  10. package/lib/evaluation/evaluator-base.d.ts +2 -0
  11. package/lib/evaluation/evaluator-base.js +65 -3
  12. package/lib/evaluation/evaluator-config.d.ts +4 -0
  13. package/lib/evaluation/evaluator-config.js +25 -3
  14. package/lib/evaluation/evaluator.d.ts +1 -0
  15. package/lib/evaluation/evaluator.js +14 -2
  16. package/lib/evaluation/online-evaluation-base.d.ts +2 -0
  17. package/lib/evaluation/online-evaluation-base.js +65 -3
  18. package/lib/evaluation/online-evaluation.d.ts +1 -0
  19. package/lib/evaluation/online-evaluation.js +37 -4
  20. package/lib/evaluation/perms.d.ts +5 -0
  21. package/lib/evaluation/perms.js +6 -1
  22. package/lib/evaluation/types.d.ts +15 -0
  23. package/lib/evaluation/types.js +75 -6
  24. package/lib/evaluation/validation-helpers.d.ts +22 -0
  25. package/lib/evaluation/validation-helpers.js +23 -1
  26. package/lib/gateway/gateway-base.d.ts +7 -0
  27. package/lib/gateway/gateway-base.js +178 -3
  28. package/lib/gateway/gateway.d.ts +9 -0
  29. package/lib/gateway/gateway.js +49 -6
  30. package/lib/gateway/inbound-auth/authorizer.d.ts +12 -0
  31. package/lib/gateway/inbound-auth/authorizer.js +31 -5
  32. package/lib/gateway/inbound-auth/custom-claim.d.ts +1 -0
  33. package/lib/gateway/inbound-auth/custom-claim.js +13 -2
  34. package/lib/gateway/interceptor.d.ts +5 -0
  35. package/lib/gateway/interceptor.js +7 -2
  36. package/lib/gateway/outbound-auth/api-key.d.ts +5 -0
  37. package/lib/gateway/outbound-auth/api-key.js +7 -2
  38. package/lib/gateway/outbound-auth/credential-provider.d.ts +5 -0
  39. package/lib/gateway/outbound-auth/credential-provider.js +17 -2
  40. package/lib/gateway/outbound-auth/iam-role.d.ts +1 -0
  41. package/lib/gateway/outbound-auth/iam-role.js +2 -1
  42. package/lib/gateway/outbound-auth/oauth.d.ts +2 -0
  43. package/lib/gateway/outbound-auth/oauth.js +2 -1
  44. package/lib/gateway/perms.d.ts +16 -0
  45. package/lib/gateway/perms.js +17 -1
  46. package/lib/gateway/protocol.d.ts +7 -0
  47. package/lib/gateway/protocol.js +10 -3
  48. package/lib/gateway/targets/schema/api-schema.d.ts +4 -0
  49. package/lib/gateway/targets/schema/api-schema.js +161 -6
  50. package/lib/gateway/targets/schema/base-schema.d.ts +1 -0
  51. package/lib/gateway/targets/schema/base-schema.js +2 -1
  52. package/lib/gateway/targets/schema/tool-schema.d.ts +12 -0
  53. package/lib/gateway/targets/schema/tool-schema.js +166 -6
  54. package/lib/gateway/targets/target-base.d.ts +5 -0
  55. package/lib/gateway/targets/target-base.js +76 -3
  56. package/lib/gateway/targets/target-configuration.d.ts +14 -0
  57. package/lib/gateway/targets/target-configuration.js +125 -9
  58. package/lib/gateway/targets/target.d.ts +8 -0
  59. package/lib/gateway/targets/target.js +37 -4
  60. package/lib/gateway/validation-helpers.d.ts +4 -0
  61. package/lib/gateway/validation-helpers.js +4 -1
  62. package/lib/identity/api-key-credential-provider.d.ts +4 -0
  63. package/lib/identity/api-key-credential-provider.js +36 -3
  64. package/lib/identity/grant-helpers.d.ts +7 -0
  65. package/lib/identity/grant-helpers.js +42 -2
  66. package/lib/identity/oauth2-credential-provider.d.ts +29 -0
  67. package/lib/identity/oauth2-credential-provider.js +37 -3
  68. package/lib/identity/perms.d.ts +5 -0
  69. package/lib/identity/perms.js +9 -4
  70. package/lib/identity/validation-helpers.d.ts +53 -0
  71. package/lib/identity/validation-helpers.js +54 -1
  72. package/lib/identity/workload-identity.d.ts +3 -0
  73. package/lib/identity/workload-identity.js +36 -3
  74. package/lib/memory/memory-strategy.d.ts +6 -0
  75. package/lib/memory/memory-strategy.js +47 -2
  76. package/lib/memory/memory.d.ts +4 -0
  77. package/lib/memory/memory.js +210 -5
  78. package/lib/memory/strategies/managed-strategy.d.ts +4 -0
  79. package/lib/memory/strategies/managed-strategy.js +22 -2
  80. package/lib/memory/strategies/self-managed-strategy.d.ts +4 -0
  81. package/lib/memory/strategies/self-managed-strategy.js +57 -4
  82. package/lib/memory/validation-helpers.d.ts +6 -0
  83. package/lib/memory/validation-helpers.js +7 -1
  84. package/lib/network/network-configuration.d.ts +5 -0
  85. package/lib/network/network-configuration.js +83 -6
  86. package/lib/policy/policy-base.js +36 -3
  87. package/lib/policy/policy-engine-base.js +36 -3
  88. package/lib/policy/policy-engine.js +37 -4
  89. package/lib/policy/policy-statement.js +5 -5
  90. package/lib/policy/policy-types.js +1 -1
  91. package/lib/policy/policy.js +36 -3
  92. package/lib/runtime/inbound-auth/custom-claim.d.ts +1 -0
  93. package/lib/runtime/inbound-auth/custom-claim.js +13 -2
  94. package/lib/runtime/inbound-auth/runtime-authorizer-configuration.d.ts +1 -0
  95. package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +40 -2
  96. package/lib/runtime/observability.d.ts +5 -0
  97. package/lib/runtime/observability.js +79 -5
  98. package/lib/runtime/perms.d.ts +12 -0
  99. package/lib/runtime/perms.js +13 -1
  100. package/lib/runtime/runtime-artifact.d.ts +3 -0
  101. package/lib/runtime/runtime-artifact.js +69 -5
  102. package/lib/runtime/runtime-base.d.ts +3 -0
  103. package/lib/runtime/runtime-base.js +200 -3
  104. package/lib/runtime/runtime-endpoint-base.d.ts +3 -0
  105. package/lib/runtime/runtime-endpoint-base.js +22 -2
  106. package/lib/runtime/runtime-endpoint.d.ts +1 -0
  107. package/lib/runtime/runtime-endpoint.js +36 -3
  108. package/lib/runtime/runtime.d.ts +2 -0
  109. package/lib/runtime/runtime.js +38 -5
  110. package/lib/runtime/types.d.ts +3 -0
  111. package/lib/runtime/types.js +2 -1
  112. package/lib/runtime/validation-helpers.d.ts +6 -0
  113. package/lib/runtime/validation-helpers.js +7 -1
  114. package/lib/tools/browser.d.ts +6 -0
  115. package/lib/tools/browser.js +205 -8
  116. package/lib/tools/code-interpreter.d.ts +4 -0
  117. package/lib/tools/code-interpreter.js +185 -7
  118. package/lib/tools/perms.d.ts +12 -0
  119. package/lib/tools/perms.js +13 -1
  120. package/lib/tools/validation-helpers.d.ts +6 -0
  121. package/lib/tools/validation-helpers.js +7 -1
  122. package/package.json +10 -10
@@ -4,6 +4,7 @@ import type * as s3 from 'aws-cdk-lib/aws-s3';
4
4
  import { Construct } from 'constructs';
5
5
  /**
6
6
  * Log types for AgentCore Runtime observability
7
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
7
8
  */
8
9
  export declare class LogType {
9
10
  /**
@@ -28,6 +29,7 @@ export declare class LogType {
28
29
  }
29
30
  /**
30
31
  * Configuration for logging with log type and destination
32
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
31
33
  */
32
34
  export interface LoggingConfig {
33
35
  /**
@@ -56,6 +58,7 @@ interface LoggingDestinationBindConfig {
56
58
  * - `LoggingDestination.cloudWatchLogs(logGroup)` - Send logs to CloudWatch Logs
57
59
  * - `LoggingDestination.s3(bucket)` - Send logs to S3
58
60
  * - `LoggingDestination.firehose(stream)` - Send logs to Kinesis Data Firehose
61
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
59
62
  */
60
63
  export declare abstract class LoggingDestination {
61
64
  /**
@@ -91,6 +94,7 @@ export declare abstract class LoggingDestination {
91
94
  * @param scope The construct scope
92
95
  * @param sourceArn The ARN of the source resource (runtime)
93
96
  * @internal
97
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
94
98
  */
95
99
  export declare function configureTracingDelivery(scope: Construct, sourceArn: string): logs.CfnDelivery;
96
100
  /**
@@ -100,6 +104,7 @@ export declare function configureTracingDelivery(scope: Construct, sourceArn: st
100
104
  * @param sourceArn The ARN of the source resource (runtime)
101
105
  * @param loggingConfigs Array of logging configurations
102
106
  * @internal
107
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
103
108
  */
104
109
  export declare function configureLoggingDelivery(scope: Construct, sourceArn: string, loggingConfigs: LoggingConfig[]): logs.CfnDelivery[];
105
110
  export {};
@@ -1,13 +1,47 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.LoggingDestination = exports.LogType = void 0;
4
37
  exports.configureTracingDelivery = configureTracingDelivery;
5
38
  exports.configureLoggingDelivery = configureLoggingDelivery;
39
+ const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
6
40
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
41
  const aws_cdk_lib_1 = require("aws-cdk-lib");
8
42
  const aws_iam_1 = require("aws-cdk-lib/aws-iam");
9
- const logs = require("aws-cdk-lib/aws-logs");
10
- const xray = require("aws-cdk-lib/aws-xray");
43
+ const logs = __importStar(require("aws-cdk-lib/aws-logs"));
44
+ const xray = __importStar(require("aws-cdk-lib/aws-xray"));
11
45
  const constructs_1 = require("constructs");
12
46
  /**
13
47
  * Maximum length for delivery source and destination names
@@ -15,10 +49,11 @@ const constructs_1 = require("constructs");
15
49
  const MAX_DELIVERY_NAME_LENGTH = 60;
16
50
  /**
17
51
  * Log types for AgentCore Runtime observability
52
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
18
53
  */
19
54
  class LogType {
20
55
  value;
21
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.LogType", version: "2.256.1-alpha.0" };
56
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.LogType", version: "2.258.0-alpha.0" };
22
57
  /**
23
58
  * Application logs for agent runtime invocations
24
59
  */
@@ -33,6 +68,15 @@ class LogType {
33
68
  * @param value The log type value
34
69
  */
35
70
  static of(value) {
71
+ try {
72
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-bedrock-agentcore-alpha.LogType#of", "Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.");
73
+ }
74
+ catch (error) {
75
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
76
+ Error.captureStackTrace(error, this.of);
77
+ }
78
+ throw error;
79
+ }
36
80
  return new LogType(value);
37
81
  }
38
82
  constructor(
@@ -51,15 +95,25 @@ exports.LogType = LogType;
51
95
  * - `LoggingDestination.cloudWatchLogs(logGroup)` - Send logs to CloudWatch Logs
52
96
  * - `LoggingDestination.s3(bucket)` - Send logs to S3
53
97
  * - `LoggingDestination.firehose(stream)` - Send logs to Kinesis Data Firehose
98
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
54
99
  */
55
100
  class LoggingDestination {
56
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.LoggingDestination", version: "2.256.1-alpha.0" };
101
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.LoggingDestination", version: "2.258.0-alpha.0" };
57
102
  /**
58
103
  * Create a logging destination that sends logs to a CloudWatch Log Group
59
104
  *
60
105
  * @param logGroup The CloudWatch Log Group to send logs to
61
106
  */
62
107
  static cloudWatchLogs(logGroup) {
108
+ try {
109
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-bedrock-agentcore-alpha.LoggingDestination#cloudWatchLogs", "Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.");
110
+ }
111
+ catch (error) {
112
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
113
+ Error.captureStackTrace(error, this.cloudWatchLogs);
114
+ }
115
+ throw error;
116
+ }
63
117
  return new CloudWatchLogsDestination(logGroup);
64
118
  }
65
119
  /**
@@ -68,6 +122,15 @@ class LoggingDestination {
68
122
  * @param bucket The S3 bucket to send logs to
69
123
  */
70
124
  static s3(bucket) {
125
+ try {
126
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-bedrock-agentcore-alpha.LoggingDestination#s3", "Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.");
127
+ }
128
+ catch (error) {
129
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
130
+ Error.captureStackTrace(error, this.s3);
131
+ }
132
+ throw error;
133
+ }
71
134
  return new S3Destination(bucket);
72
135
  }
73
136
  /**
@@ -76,6 +139,15 @@ class LoggingDestination {
76
139
  * @param stream The Firehose delivery stream to send logs to
77
140
  */
78
141
  static firehose(stream) {
142
+ try {
143
+ jsiiDeprecationWarnings.print("@aws-cdk/aws-bedrock-agentcore-alpha.LoggingDestination#firehose", "Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.");
144
+ }
145
+ catch (error) {
146
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
147
+ Error.captureStackTrace(error, this.firehose);
148
+ }
149
+ throw error;
150
+ }
79
151
  return new FirehoseDestination(stream);
80
152
  }
81
153
  }
@@ -212,6 +284,7 @@ class XRayResourcePolicy extends constructs_1.Construct {
212
284
  * @param scope The construct scope
213
285
  * @param sourceArn The ARN of the source resource (runtime)
214
286
  * @internal
287
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
215
288
  */
216
289
  function configureTracingDelivery(scope, sourceArn) {
217
290
  const stack = aws_cdk_lib_1.Stack.of(scope);
@@ -276,6 +349,7 @@ function configureTracingDelivery(scope, sourceArn) {
276
349
  * @param sourceArn The ARN of the source resource (runtime)
277
350
  * @param loggingConfigs Array of logging configurations
278
351
  * @internal
352
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
279
353
  */
280
354
  function configureLoggingDelivery(scope, sourceArn, loggingConfigs) {
281
355
  const deliveries = [];
@@ -314,4 +388,4 @@ function configureLoggingDelivery(scope, sourceArn, loggingConfigs) {
314
388
  }
315
389
  return deliveries;
316
390
  }
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm9ic2VydmFiaWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBd1FBLDREQW1FQztBQVVELDREQWlEQzs7QUF0WUQsNkNBQWtFO0FBQ2xFLGlEQUFnRztBQUVoRyw2Q0FBNkM7QUFFN0MsNkNBQTZDO0FBQzdDLDJDQUF1QztBQUV2Qzs7R0FFRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBYSxPQUFPO0lBd0JBOztJQXZCbEI7O09BRUc7SUFDSSxNQUFNLENBQVUsZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUUxRTs7T0FFRztJQUNJLE1BQU0sQ0FBVSxVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFOUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzNCO0lBRUQ7SUFDRTs7T0FFRztJQUNhLEtBQWE7UUFBYixVQUFLLEdBQUwsS0FBSyxDQUFRO0tBQzNCOztBQXpCTiwwQkEwQkM7QUE0QkQ7Ozs7Ozs7R0FPRztBQUNILE1BQXNCLGtCQUFrQjs7SUFDdEM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBd0I7UUFDbkQsT0FBTyxJQUFJLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ2hEO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBa0I7UUFDakMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNsQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQXVCO1FBQzVDLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN4Qzs7QUEx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QUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJuRm9ybWF0LCBMYXp5LCBOYW1lcywgU3RhY2ssIFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCwgU2VydmljZVByaW5jaXBhbCwgUG9saWN5RG9jdW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB0eXBlIHsgSURlbGl2ZXJ5U3RyZWFtIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWtpbmVzaXNmaXJlaG9zZSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB0eXBlICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHhyYXkgZnJvbSAnYXdzLWNkay1saWIvYXdzLXhyYXknO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogTWF4aW11bSBsZW5ndGggZm9yIGRlbGl2ZXJ5IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gbmFtZXNcbiAqL1xuY29uc3QgTUFYX0RFTElWRVJZX05BTUVfTEVOR1RIID0gNjA7XG5cbi8qKlxuICogTG9nIHR5cGVzIGZvciBBZ2VudENvcmUgUnVudGltZSBvYnNlcnZhYmlsaXR5XG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dUeXBlIHtcbiAgLyoqXG4gICAqIEFwcGxpY2F0aW9uIGxvZ3MgZm9yIGFnZW50IHJ1bnRpbWUgaW52b2NhdGlvbnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVBQTElDQVRJT05fTE9HUyA9IG5ldyBMb2dUeXBlKCdBUFBMSUNBVElPTl9MT0dTJyk7XG5cbiAgLyoqXG4gICAqIFVzYWdlIGxvZ3MgZm9yIHNlc3Npb24tbGV2ZWwgcmVzb3VyY2UgY29uc3VtcHRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVVNBR0VfTE9HUyA9IG5ldyBMb2dUeXBlKCdVU0FHRV9MT0dTJyk7XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIGxvZyB0eXBlIHZhbHVlXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgbG9nIHR5cGUgdmFsdWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IExvZ1R5cGUge1xuICAgIHJldHVybiBuZXcgTG9nVHlwZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIFRoZSBsb2cgdHlwZSB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nLFxuICApIHt9XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgbG9nZ2luZyB3aXRoIGxvZyB0eXBlIGFuZCBkZXN0aW5hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdDb25maWcge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgbG9ncyB0byBkZWxpdmVyXG4gICAqL1xuICByZWFkb25seSBsb2dUeXBlOiBMb2dUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzdGluYXRpb24gZm9yIGxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBMb2dnaW5nRGVzdGluYXRpb247XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiByZXR1cm5lZCBieSBMb2dnaW5nRGVzdGluYXRpb24uYmluZCgpXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIExvZ2dpbmdEZXN0aW5hdGlvbkJpbmRDb25maWcge1xuICAvKipcbiAgICogVGhlIGRlbGl2ZXJ5IGRlc3RpbmF0aW9uIGNvbnN0cnVjdFxuICAgKi9cbiAgcmVhZG9ubHkgZGVsaXZlcnlEZXN0aW5hdGlvbjogbG9ncy5DZm5EZWxpdmVyeURlc3RpbmF0aW9uO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBsb2dnaW5nIGRlc3RpbmF0aW9uIGZvciBBZ2VudENvcmUgUnVudGltZVxuICpcbiAqIFVzZSB0aGUgc3RhdGljIGZhY3RvcnkgbWV0aG9kcyB0byBjcmVhdGUgaW5zdGFuY2VzOlxuICogLSBgTG9nZ2luZ0Rlc3RpbmF0aW9uLmNsb3VkV2F0Y2hMb2dzKGxvZ0dyb3VwKWAgLSBTZW5kIGxvZ3MgdG8gQ2xvdWRXYXRjaCBMb2dzXG4gKiAtIGBMb2dnaW5nRGVzdGluYXRpb24uczMoYnVja2V0KWAgLSBTZW5kIGxvZ3MgdG8gUzNcbiAqIC0gYExvZ2dpbmdEZXN0aW5hdGlvbi5maXJlaG9zZShzdHJlYW0pYCAtIFNlbmQgbG9ncyB0byBLaW5lc2lzIERhdGEgRmlyZWhvc2VcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExvZ2dpbmdEZXN0aW5hdGlvbiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBsb2dnaW5nIGRlc3RpbmF0aW9uIHRoYXQgc2VuZHMgbG9ncyB0byBhIENsb3VkV2F0Y2ggTG9nIEdyb3VwXG4gICAqXG4gICAqIEBwYXJhbSBsb2dHcm91cCBUaGUgQ2xvdWRXYXRjaCBMb2cgR3JvdXAgdG8gc2VuZCBsb2dzIHRvXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNsb3VkV2F0Y2hMb2dzKGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cCk6IExvZ2dpbmdEZXN0aW5hdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDbG91ZFdhdGNoTG9nc0Rlc3RpbmF0aW9uKGxvZ0dyb3VwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBsb2dnaW5nIGRlc3RpbmF0aW9uIHRoYXQgc2VuZHMgbG9ncyB0byBhbiBTMyBidWNrZXRcbiAgICpcbiAgICogQHBhcmFtIGJ1Y2tldCBUaGUgUzMgYnVja2V0IHRvIHNlbmQgbG9ncyB0b1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzMyhidWNrZXQ6IHMzLklCdWNrZXQpOiBMb2dnaW5nRGVzdGluYXRpb24ge1xuICAgIHJldHVybiBuZXcgUzNEZXN0aW5hdGlvbihidWNrZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGxvZ2dpbmcgZGVzdGluYXRpb24gdGhhdCBzZW5kcyBsb2dzIHRvIGEgS2luZXNpcyBEYXRhIEZpcmVob3NlIGRlbGl2ZXJ5IHN0cmVhbVxuICAgKlxuICAgKiBAcGFyYW0gc3RyZWFtIFRoZSBGaXJlaG9zZSBkZWxpdmVyeSBzdHJlYW0gdG8gc2VuZCBsb2dzIHRvXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZpcmVob3NlKHN0cmVhbTogSURlbGl2ZXJ5U3RyZWFtKTogTG9nZ2luZ0Rlc3RpbmF0aW9uIHtcbiAgICByZXR1cm4gbmV3IEZpcmVob3NlRGVzdGluYXRpb24oc3RyZWFtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIHRoaXMgZGVzdGluYXRpb24gdG8gYSBzY29wZSBhbmQgY3JlYXRlIHRoZSBkZWxpdmVyeSBkZXN0aW5hdGlvbiByZXNvdXJjZVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBfYmluZChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKTogTG9nZ2luZ0Rlc3RpbmF0aW9uQmluZENvbmZpZztcbn1cblxuLyoqXG4gKiBDbG91ZFdhdGNoIExvZ3MgZGVzdGluYXRpb24gaW1wbGVtZW50YXRpb25cbiAqL1xuY2xhc3MgQ2xvdWRXYXRjaExvZ3NEZXN0aW5hdGlvbiBleHRlbmRzIExvZ2dpbmdEZXN0aW5hdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9nR3JvdXA6IGxvZ3MuSUxvZ0dyb3VwKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBfYmluZChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKTogTG9nZ2luZ0Rlc3RpbmF0aW9uQmluZENvbmZpZyB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG5cbiAgICAvLyBHZXQgb3IgY3JlYXRlIGEgc2luZ2xldG9uIHJlc291cmNlIHBvbGljeSBmb3IgbG9ncyBkZWxpdmVyeVxuICAgIGNvbnN0IHBvbGljeUlkID0gJ0Nka0xvZ0dyb3VwTG9nc0RlbGl2ZXJ5UG9saWN5JztcbiAgICBsZXQgcmVzb3VyY2VQb2xpY3kgPSBzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChwb2xpY3lJZCkgYXMgbG9ncy5SZXNvdXJjZVBvbGljeSB8IHVuZGVmaW5lZDtcblxuICAgIGlmICghcmVzb3VyY2VQb2xpY3kpIHtcbiAgICAgIHJlc291cmNlUG9saWN5ID0gbmV3IGxvZ3MuUmVzb3VyY2VQb2xpY3koc3RhY2ssIHBvbGljeUlkKTtcbiAgICB9XG5cbiAgICAvLyBHcmFudCBwZXJtaXNzaW9ucyBmb3IgdGhpcyBzcGVjaWZpYyBsb2cgZ3JvdXBcbiAgICAvLyBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9sb2dzL0FXUy1sb2dzLWluZnJhc3RydWN0dXJlLVYyLUNsb3VkV2F0Y2hMb2dzLmh0bWxcbiAgICByZXNvdXJjZVBvbGljeS5kb2N1bWVudC5hZGRTdGF0ZW1lbnRzKG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICBwcmluY2lwYWxzOiBbbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2RlbGl2ZXJ5LmxvZ3MuYW1hem9uYXdzLmNvbScpXSxcbiAgICAgIGFjdGlvbnM6IFsnbG9nczpDcmVhdGVMb2dTdHJlYW0nLCAnbG9nczpQdXRMb2dFdmVudHMnXSxcbiAgICAgIHJlc291cmNlczogW2Ake3RoaXMubG9nR3JvdXAubG9nR3JvdXBBcm59OmxvZy1zdHJlYW06KmBdLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAnYXdzOlNvdXJjZUFjY291bnQnOiBzdGFjay5hY2NvdW50LFxuICAgICAgICB9LFxuICAgICAgICBBcm5MaWtlOiB7XG4gICAgICAgICAgJ2F3czpTb3VyY2VBcm4nOiBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgICAgICAgc2VydmljZTogJ2xvZ3MnLFxuICAgICAgICAgICAgcmVzb3VyY2U6ICcqJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuXG4gICAgY29uc3QgZGVsaXZlcnlEZXN0aW5hdGlvbiA9IG5ldyBsb2dzLkNmbkRlbGl2ZXJ5RGVzdGluYXRpb24oc2NvcGUsIGAke2lkfURlc3RgLCB7XG4gICAgICBuYW1lOiBMYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpOiBzdHJpbmcgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKGRlbGl2ZXJ5RGVzdGluYXRpb24sIHsgbWF4TGVuZ3RoOiBNQVhfREVMSVZFUllfTkFNRV9MRU5HVEggfSkgfSksXG4gICAgICBkZWxpdmVyeURlc3RpbmF0aW9uVHlwZTogJ0NXTCcsXG4gICAgICBkZXN0aW5hdGlvblJlc291cmNlQXJuOiB0aGlzLmxvZ0dyb3VwLmxvZ0dyb3VwQXJuLFxuICAgIH0pO1xuXG4gICAgZGVsaXZlcnlEZXN0aW5hdGlvbi5ub2RlLmFkZERlcGVuZGVuY3kocmVzb3VyY2VQb2xpY3kpO1xuXG4gICAgcmV0dXJuIHsgZGVsaXZlcnlEZXN0aW5hdGlvbiB9O1xuICB9XG59XG5cbi8qKlxuICogUzMgZGVzdGluYXRpb24gaW1wbGVtZW50YXRpb25cbiAqL1xuY2xhc3MgUzNEZXN0aW5hdGlvbiBleHRlbmRzIExvZ2dpbmdEZXN0aW5hdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYnVja2V0OiBzMy5JQnVja2V0KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBfYmluZChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKTogTG9nZ2luZ0Rlc3RpbmF0aW9uQmluZENvbmZpZyB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG5cbiAgICAvLyBBZGQgYnVja2V0IHBvbGljeSBmb3IgbG9ncyBkZWxpdmVyeVxuICAgIC8vIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L2xvZ3MvQVdTLWxvZ3MtaW5mcmFzdHJ1Y3R1cmUtVjItUzMuaHRtbFxuICAgIHRoaXMuYnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIHByaW5jaXBhbHM6IFtuZXcgU2VydmljZVByaW5jaXBhbCgnZGVsaXZlcnkubG9ncy5hbWF6b25hd3MuY29tJyldLFxuICAgICAgYWN0aW9uczogWydzMzpQdXRPYmplY3QnXSxcbiAgICAgIHJlc291cmNlczogW2Ake3RoaXMuYnVja2V0LmJ1Y2tldEFybn0vQVdTTG9ncy8ke3N0YWNrLmFjY291bnR9LypgXSxcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgJ3MzOngtYW16LWFjbCc6ICdidWNrZXQtb3duZXItZnVsbC1jb250cm9sJyxcbiAgICAgICAgICAnYXdzOlNvdXJjZUFjY291bnQnOiBzdGFjay5hY2NvdW50LFxuICAgICAgICB9LFxuICAgICAgICBBcm5MaWtlOiB7XG4gICAgICAgICAgJ2F3czpTb3VyY2VBcm4nOiBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgICAgICAgc2VydmljZTogJ2xvZ3MnLFxuICAgICAgICAgICAgcmVzb3VyY2U6ICdkZWxpdmVyeS1zb3VyY2UnLFxuICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAnKicsXG4gICAgICAgICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICBjb25zdCBkZWxpdmVyeURlc3RpbmF0aW9uID0gbmV3IGxvZ3MuQ2ZuRGVsaXZlcnlEZXN0aW5hdGlvbihzY29wZSwgYCR7aWR9RGVzdGAsIHtcbiAgICAgIG5hbWU6IExhenkuc3RyaW5nKHsgcHJvZHVjZTogKCk6IHN0cmluZyA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUoZGVsaXZlcnlEZXN0aW5hdGlvbiwgeyBtYXhMZW5ndGg6IE1BWF9ERUxJVkVSWV9OQU1FX0xFTkdUSCB9KSB9KSxcbiAgICAgIGRlbGl2ZXJ5RGVzdGluYXRpb25UeXBlOiAnUzMnLFxuICAgICAgZGVzdGluYXRpb25SZXNvdXJjZUFybjogdGhpcy5idWNrZXQuYnVja2V0QXJuLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgZGVsaXZlcnlEZXN0aW5hdGlvbiB9O1xuICB9XG59XG5cbi8qKlxuICogRmlyZWhvc2UgZGVzdGluYXRpb24gaW1wbGVtZW50YXRpb25cbiAqL1xuY2xhc3MgRmlyZWhvc2VEZXN0aW5hdGlvbiBleHRlbmRzIExvZ2dpbmdEZXN0aW5hdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3RyZWFtOiBJRGVsaXZlcnlTdHJlYW0pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIF9iaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpOiBMb2dnaW5nRGVzdGluYXRpb25CaW5kQ29uZmlnIHtcbiAgICAvLyBGaXJlaG9zZSB1c2VzIGEgc2VydmljZS1saW5rZWQgcm9sZSB0aGF0IHJlcXVpcmVzIHRoaXMgdGFnIHRvIGdyYW50IGFjY2Vzc1xuICAgIC8vIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L2xvZ3MvQVdTLWxvZ3MtaW5mcmFzdHJ1Y3R1cmUtVjItRmlyZWhvc2UuaHRtbFxuICAgIFRhZ3Mub2YodGhpcy5zdHJlYW0pLmFkZCgnTG9nRGVsaXZlcnlFbmFibGVkJywgJ3RydWUnKTtcblxuICAgIGNvbnN0IGRlbGl2ZXJ5RGVzdGluYXRpb24gPSBuZXcgbG9ncy5DZm5EZWxpdmVyeURlc3RpbmF0aW9uKHNjb3BlLCBgJHtpZH1EZXN0YCwge1xuICAgICAgbmFtZTogTGF6eS5zdHJpbmcoeyBwcm9kdWNlOiAoKTogc3RyaW5nID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZShkZWxpdmVyeURlc3RpbmF0aW9uLCB7IG1heExlbmd0aDogTUFYX0RFTElWRVJZX05BTUVfTEVOR1RIIH0pIH0pLFxuICAgICAgZGVsaXZlcnlEZXN0aW5hdGlvblR5cGU6ICdGSCcsXG4gICAgICBkZXN0aW5hdGlvblJlc291cmNlQXJuOiB0aGlzLnN0cmVhbS5kZWxpdmVyeVN0cmVhbUFybixcbiAgICB9KTtcblxuICAgIHJldHVybiB7IGRlbGl2ZXJ5RGVzdGluYXRpb24gfTtcbiAgfVxufVxuXG4vKipcbiAqIEludGVybmFsIFgtUmF5IHJlc291cmNlIHBvbGljeSB3cmFwcGVyIHRoYXQgYWxsb3dzIGFkZGluZyBzdGF0ZW1lbnRzIGFmdGVyIGNyZWF0aW9uLlxuICogVGhpcyBpcyBzaW1pbGFyIHRvIGxvZ3MuUmVzb3VyY2VQb2xpY3kgYnV0IGZvciBYLVJheS5cbiAqL1xuY2xhc3MgWFJheVJlc291cmNlUG9saWN5IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50OiBQb2xpY3lEb2N1bWVudDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuZG9jdW1lbnQgPSBuZXcgUG9saWN5RG9jdW1lbnQoKTtcblxuICAgIG5ldyB4cmF5LkNmblJlc291cmNlUG9saWN5KHRoaXMsICdSZXNvdXJjZVBvbGljeScsIHtcbiAgICAgIHBvbGljeU5hbWU6IExhenkuc3RyaW5nKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiAxMjggfSksXG4gICAgICB9KSxcbiAgICAgIHBvbGljeURvY3VtZW50OiBMYXp5LnN0cmluZyh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IEpTT04uc3RyaW5naWZ5KHRoaXMuZG9jdW1lbnQudG9KU09OKCkpLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25maWd1cmUgWC1SYXkgdHJhY2luZyBkZWxpdmVyeSBmb3IgYSBydW50aW1lXG4gKlxuICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAqIEBwYXJhbSBzb3VyY2VBcm4gVGhlIEFSTiBvZiB0aGUgc291cmNlIHJlc291cmNlIChydW50aW1lKVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVUcmFjaW5nRGVsaXZlcnkoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIHNvdXJjZUFybjogc3RyaW5nLFxuKTogbG9ncy5DZm5EZWxpdmVyeSB7XG4gIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuXG4gIC8vIENyZWF0ZSBkZWxpdmVyeSBzb3VyY2UgZm9yIHRyYWNlc1xuICBjb25zdCBkZWxpdmVyeVNvdXJjZSA9IG5ldyBsb2dzLkNmbkRlbGl2ZXJ5U291cmNlKHNjb3BlLCAnVHJhY2VzRGVsaXZlcnlTb3VyY2UnLCB7XG4gICAgbmFtZTogTGF6eS5zdHJpbmcoeyBwcm9kdWNlOiAoKTogc3RyaW5nID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZShkZWxpdmVyeVNvdXJjZSwgeyBtYXhMZW5ndGg6IE1BWF9ERUxJVkVSWV9OQU1FX0xFTkdUSCB9KSB9KSxcbiAgICBsb2dUeXBlOiAnVFJBQ0VTJyxcbiAgICByZXNvdXJjZUFybjogc291cmNlQXJuLFxuICB9KTtcblxuICAvLyBHZXQgb3IgY3JlYXRlIFgtUmF5IHJlc291cmNlIHBvbGljeSAoc2luZ2xldG9uIHBlciBzdGFjaylcbiAgY29uc3QgcG9saWN5SWQgPSAnQ2RrWFJheUxvZ3NEZWxpdmVyeVBvbGljeSc7XG4gIGxldCB4cmF5UG9saWN5ID0gc3RhY2subm9kZS50cnlGaW5kQ2hpbGQocG9saWN5SWQpIGFzIFhSYXlSZXNvdXJjZVBvbGljeSB8IHVuZGVmaW5lZDtcblxuICBpZiAoIXhyYXlQb2xpY3kpIHtcbiAgICB4cmF5UG9saWN5ID0gbmV3IFhSYXlSZXNvdXJjZVBvbGljeShzdGFjaywgcG9saWN5SWQpO1xuICB9XG5cbiAgLy8gR3JhbnQgcGVybWlzc2lvbnMgZm9yIHRoaXMgc3BlY2lmaWMgc291cmNlIHJlc291cmNlXG4gIC8vIFRoZSB4cmF5OlB1dFRyYWNlU2VnbWVudHMgYWN0aW9uIHJlcXVpcmVzIHJlc291cmNlczogWycqJ10gcGVyIEFXUyBkb2N1bWVudGF0aW9uLlxuICAvLyBUaGUgY29uZGl0aW9ucyBiZWxvdyByZXN0cmljdCB0aGlzIGJyb2FkIHNjb3BlIHRvIG9ubHkgdGhlIHNwZWNpZmljIHNvdXJjZSByZXNvdXJjZVxuICAvLyAodmlhIGxvZ3M6TG9nR2VuZXJhdGluZ1Jlc291cmNlQXJucykgYW5kIHRoZSBjdXJyZW50IGFjY291bnQgYW5kIGRlbGl2ZXJ5LXNvdXJjZSBBUk4uXG4gIC8vIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L2xvZ3MvQVdTLWxvZ3MtaW5mcmFzdHJ1Y3R1cmUtVjItWFJBWS5odG1sXG4gIHhyYXlQb2xpY3kuZG9jdW1lbnQuYWRkU3RhdGVtZW50cyhuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICBwcmluY2lwYWxzOiBbbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2RlbGl2ZXJ5LmxvZ3MuYW1hem9uYXdzLmNvbScpXSxcbiAgICBhY3Rpb25zOiBbJ3hyYXk6UHV0VHJhY2VTZWdtZW50cyddLFxuICAgIHJlc291cmNlczogWycqJ10sXG4gICAgY29uZGl0aW9uczoge1xuICAgICAgJ0ZvckFsbFZhbHVlczpBcm5MaWtlJzoge1xuICAgICAgICAnbG9nczpMb2dHZW5lcmF0aW5nUmVzb3VyY2VBcm5zJzogW3NvdXJjZUFybl0sXG4gICAgICB9LFxuICAgICAgJ1N0cmluZ0VxdWFscyc6IHtcbiAgICAgICAgJ2F3czpTb3VyY2VBY2NvdW50Jzogc3RhY2suYWNjb3VudCxcbiAgICAgIH0sXG4gICAgICAnQXJuTGlrZSc6IHtcbiAgICAgICAgJ2F3czpTb3VyY2VBcm4nOiBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgICAgIHNlcnZpY2U6ICdsb2dzJyxcbiAgICAgICAgICByZXNvdXJjZTogJ2RlbGl2ZXJ5LXNvdXJjZScsXG4gICAgICAgICAgcmVzb3VyY2VOYW1lOiAnKicsXG4gICAgICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0sXG4gIH0pKTtcblxuICAvLyBDcmVhdGUgZGVsaXZlcnkgZGVzdGluYXRpb24gZm9yIFgtUmF5XG4gIGNvbnN0IGRlbGl2ZXJ5RGVzdGluYXRpb24gPSBuZXcgbG9ncy5DZm5EZWxpdmVyeURlc3RpbmF0aW9uKHNjb3BlLCAnVHJhY2VzRGVsaXZlcnlEZXN0Jywge1xuICAgIG5hbWU6IExhenkuc3RyaW5nKHsgcHJvZHVjZTogKCk6IHN0cmluZyA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUoZGVsaXZlcnlEZXN0aW5hdGlvbiwgeyBtYXhMZW5ndGg6IE1BWF9ERUxJVkVSWV9OQU1FX0xFTkdUSCB9KSB9KSxcbiAgICBkZWxpdmVyeURlc3RpbmF0aW9uVHlwZTogJ1hSQVknLFxuICB9KTtcblxuICBkZWxpdmVyeURlc3RpbmF0aW9uLm5vZGUuYWRkRGVwZW5kZW5jeSh4cmF5UG9saWN5KTtcblxuICAvLyBDcmVhdGUgZGVsaXZlcnkgdG8gY29ubmVjdCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uXG4gIGNvbnN0IGRlbGl2ZXJ5ID0gbmV3IGxvZ3MuQ2ZuRGVsaXZlcnkoc2NvcGUsICdUcmFjZXNEZWxpdmVyeScsIHtcbiAgICBkZWxpdmVyeVNvdXJjZU5hbWU6IGRlbGl2ZXJ5U291cmNlLmRlbGl2ZXJ5U291cmNlUmVmLmRlbGl2ZXJ5U291cmNlTmFtZSxcbiAgICBkZWxpdmVyeURlc3RpbmF0aW9uQXJuOiBkZWxpdmVyeURlc3RpbmF0aW9uLmF0dHJBcm4sXG4gIH0pO1xuXG4gIGRlbGl2ZXJ5Lm5vZGUuYWRkRGVwZW5kZW5jeShkZWxpdmVyeVNvdXJjZSk7XG4gIGRlbGl2ZXJ5Lm5vZGUuYWRkRGVwZW5kZW5jeShkZWxpdmVyeURlc3RpbmF0aW9uKTtcblxuICByZXR1cm4gZGVsaXZlcnk7XG59XG5cbi8qKlxuICogQ29uZmlndXJlIGxvZ2dpbmcgZGVsaXZlcnkgZm9yIGEgcnVudGltZVxuICpcbiAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gKiBAcGFyYW0gc291cmNlQXJuIFRoZSBBUk4gb2YgdGhlIHNvdXJjZSByZXNvdXJjZSAocnVudGltZSlcbiAqIEBwYXJhbSBsb2dnaW5nQ29uZmlncyBBcnJheSBvZiBsb2dnaW5nIGNvbmZpZ3VyYXRpb25zXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZUxvZ2dpbmdEZWxpdmVyeShcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgc291cmNlQXJuOiBzdHJpbmcsXG4gIGxvZ2dpbmdDb25maWdzOiBMb2dnaW5nQ29uZmlnW10sXG4pOiBsb2dzLkNmbkRlbGl2ZXJ5W10ge1xuICBjb25zdCBkZWxpdmVyaWVzOiBsb2dzLkNmbkRlbGl2ZXJ5W10gPSBbXTtcblxuICAvLyBHcm91cCBjb25maWdzIGJ5IGxvZyB0eXBlIHRvIGNyZWF0ZSBvbmUgc291cmNlIHBlciBsb2cgdHlwZVxuICBjb25zdCBjb25maWdzQnlMb2dUeXBlID0gbmV3IE1hcDxzdHJpbmcsIExvZ2dpbmdDb25maWdbXT4oKTtcbiAgZm9yIChjb25zdCBjb25maWcgb2YgbG9nZ2luZ0NvbmZpZ3MpIHtcbiAgICBjb25zdCBleGlzdGluZyA9IGNvbmZpZ3NCeUxvZ1R5cGUuZ2V0KGNvbmZpZy5sb2dUeXBlLnZhbHVlKSA/PyBbXTtcbiAgICBleGlzdGluZy5wdXNoKGNvbmZpZyk7XG4gICAgY29uZmlnc0J5TG9nVHlwZS5zZXQoY29uZmlnLmxvZ1R5cGUudmFsdWUsIGV4aXN0aW5nKTtcbiAgfVxuXG4gIC8vIENyZWF0ZSBkZWxpdmVyeSBzb3VyY2VzIGFuZCBkZWxpdmVyaWVzIGZvciBlYWNoIGxvZyB0eXBlXG4gIGZvciAoY29uc3QgW2xvZ1R5cGUsIGNvbmZpZ3NdIG9mIGNvbmZpZ3NCeUxvZ1R5cGUpIHtcbiAgICAvLyBDb252ZXJ0IGxvZyB0eXBlIHRvIFBhc2NhbENhc2UgZm9yIGNvbnN0cnVjdCBJRHMgKGUuZy4sIEFQUExJQ0FUSU9OX0xPR1Mg4oaSIEFwcGxpY2F0aW9uTG9ncylcbiAgICBjb25zdCBsb2dUeXBlSWQgPSBsb2dUeXBlLnNwbGl0KCdfJykubWFwKHdvcmQgPT4gd29yZC5jaGFyQXQoMCkgKyB3b3JkLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCkpLmpvaW4oJycpO1xuXG4gICAgLy8gQ3JlYXRlIGEgZGVsaXZlcnkgc291cmNlIGZvciB0aGlzIGxvZyB0eXBlXG4gICAgY29uc3QgZGVsaXZlcnlTb3VyY2U6IGxvZ3MuQ2ZuRGVsaXZlcnlTb3VyY2UgPSBuZXcgbG9ncy5DZm5EZWxpdmVyeVNvdXJjZShzY29wZSwgYCR7bG9nVHlwZUlkfURlbGl2ZXJ5U291cmNlYCwge1xuICAgICAgbmFtZTogTGF6eS5zdHJpbmcoeyBwcm9kdWNlOiAoKTogc3RyaW5nID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZShkZWxpdmVyeVNvdXJjZSwgeyBtYXhMZW5ndGg6IE1BWF9ERUxJVkVSWV9OQU1FX0xFTkdUSCB9KSB9KSxcbiAgICAgIGxvZ1R5cGU6IGxvZ1R5cGUsXG4gICAgICByZXNvdXJjZUFybjogc291cmNlQXJuLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGRlbGl2ZXJ5IGZvciBlYWNoIGRlc3RpbmF0aW9uXG4gICAgY29uZmlncy5mb3JFYWNoKChjb25maWcsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGNvbmZpZ3MubGVuZ3RoID09PSAxID8gbG9nVHlwZUlkIDogYCR7bG9nVHlwZUlkfSR7aW5kZXh9YDtcbiAgICAgIGNvbnN0IGJpbmRDb25maWcgPSBjb25maWcuZGVzdGluYXRpb24uX2JpbmQoc2NvcGUsIGlkKTtcblxuICAgICAgY29uc3QgZGVsaXZlcnkgPSBuZXcgbG9ncy5DZm5EZWxpdmVyeShzY29wZSwgYCR7aWR9RGVsaXZlcnlgLCB7XG4gICAgICAgIGRlbGl2ZXJ5U291cmNlTmFtZTogZGVsaXZlcnlTb3VyY2UuZGVsaXZlcnlTb3VyY2VSZWYuZGVsaXZlcnlTb3VyY2VOYW1lLFxuICAgICAgICBkZWxpdmVyeURlc3RpbmF0aW9uQXJuOiBiaW5kQ29uZmlnLmRlbGl2ZXJ5RGVzdGluYXRpb24uYXR0ckFybixcbiAgICAgIH0pO1xuXG4gICAgICBkZWxpdmVyeS5ub2RlLmFkZERlcGVuZGVuY3koZGVsaXZlcnlTb3VyY2UpO1xuICAgICAgZGVsaXZlcnkubm9kZS5hZGREZXBlbmRlbmN5KGJpbmRDb25maWcuZGVsaXZlcnlEZXN0aW5hdGlvbik7XG5cbiAgICAgIGlmIChkZWxpdmVyaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGVsaXZlcnkubm9kZS5hZGREZXBlbmRlbmN5KGRlbGl2ZXJpZXNbZGVsaXZlcmllcy5sZW5ndGggLSAxXSk7XG4gICAgICB9XG5cbiAgICAgIGRlbGl2ZXJpZXMucHVzaChkZWxpdmVyeSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZGVsaXZlcmllcztcbn1cbiJdfQ==
391
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm9ic2VydmFiaWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNFFBLDREQW1FQztBQVdELDREQWlEQzs7O0FBM1lELDZDQUFrRTtBQUNsRSxpREFBZ0c7QUFFaEcsMkRBQTZDO0FBRTdDLDJEQUE2QztBQUM3QywyQ0FBdUM7QUFFdkM7O0dBRUc7QUFDSCxNQUFNLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztBQUVwQzs7O0dBR0c7QUFDSCxNQUFhLE9BQU87SUF3QkE7O0lBdkJsQjs7T0FFRztJQUNJLE1BQU0sQ0FBVSxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRTFFOztPQUVHO0lBQ0ksTUFBTSxDQUFVLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUU5RDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFhOzs7Ozs7Ozs7O1FBQzVCLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDM0I7SUFFRDtJQUNFOztPQUVHO0lBQ2EsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7S0FDM0I7O0FBekJOLDBCQTBCQztBQTZCRDs7Ozs7Ozs7R0FRRztBQUNILE1BQXNCLGtCQUFrQjs7SUFDdEM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBd0I7Ozs7Ozs7Ozs7UUFDbkQsT0FBTyxJQUFJLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ2hEO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBa0I7Ozs7Ozs7Ozs7UUFDakMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNsQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBUSxD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SSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcm5Gb3JtYXQsIExhenksIE5hbWVzLCBTdGFjaywgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50LCBTZXJ2aWNlUHJpbmNpcGFsLCBQb2xpY3lEb2N1bWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHR5cGUgeyBJRGVsaXZlcnlTdHJlYW0gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta2luZXNpc2ZpcmVob3NlJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHR5cGUgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgeHJheSBmcm9tICdhd3MtY2RrLWxpYi9hd3MteHJheSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBNYXhpbXVtIGxlbmd0aCBmb3IgZGVsaXZlcnkgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBuYW1lc1xuICovXG5jb25zdCBNQVhfREVMSVZFUllfTkFNRV9MRU5HVEggPSA2MDtcblxuLyoqXG4gKiBMb2cgdHlwZXMgZm9yIEFnZW50Q29yZSBSdW50aW1lIG9ic2VydmFiaWxpdHlcbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgZXF1aXZhbGVudCBjb25zdHJ1Y3QgZnJvbSBgYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmVgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dUeXBlIHtcbiAgLyoqXG4gICAqIEFwcGxpY2F0aW9uIGxvZ3MgZm9yIGFnZW50IHJ1bnRpbWUgaW52b2NhdGlvbnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVBQTElDQVRJT05fTE9HUyA9IG5ldyBMb2dUeXBlKCdBUFBMSUNBVElPTl9MT0dTJyk7XG5cbiAgLyoqXG4gICAqIFVzYWdlIGxvZ3MgZm9yIHNlc3Npb24tbGV2ZWwgcmVzb3VyY2UgY29uc3VtcHRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVVNBR0VfTE9HUyA9IG5ldyBMb2dUeXBlKCdVU0FHRV9MT0dTJyk7XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIGxvZyB0eXBlIHZhbHVlXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgbG9nIHR5cGUgdmFsdWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IExvZ1R5cGUge1xuICAgIHJldHVybiBuZXcgTG9nVHlwZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIFRoZSBsb2cgdHlwZSB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nLFxuICApIHt9XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgbG9nZ2luZyB3aXRoIGxvZyB0eXBlIGFuZCBkZXN0aW5hdGlvblxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBlcXVpdmFsZW50IGNvbnN0cnVjdCBmcm9tIGBhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZWAgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dnaW5nQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGxvZ3MgdG8gZGVsaXZlclxuICAgKi9cbiAgcmVhZG9ubHkgbG9nVHlwZTogTG9nVHlwZTtcblxuICAvKipcbiAgICogVGhlIGRlc3RpbmF0aW9uIGZvciBsb2dzXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbjogTG9nZ2luZ0Rlc3RpbmF0aW9uO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gcmV0dXJuZWQgYnkgTG9nZ2luZ0Rlc3RpbmF0aW9uLmJpbmQoKVxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBMb2dnaW5nRGVzdGluYXRpb25CaW5kQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBkZWxpdmVyeSBkZXN0aW5hdGlvbiBjb25zdHJ1Y3RcbiAgICovXG4gIHJlYWRvbmx5IGRlbGl2ZXJ5RGVzdGluYXRpb246IGxvZ3MuQ2ZuRGVsaXZlcnlEZXN0aW5hdGlvbjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbG9nZ2luZyBkZXN0aW5hdGlvbiBmb3IgQWdlbnRDb3JlIFJ1bnRpbWVcbiAqXG4gKiBVc2UgdGhlIHN0YXRpYyBmYWN0b3J5IG1ldGhvZHMgdG8gY3JlYXRlIGluc3RhbmNlczpcbiAqIC0gYExvZ2dpbmdEZXN0aW5hdGlvbi5jbG91ZFdhdGNoTG9ncyhsb2dHcm91cClgIC0gU2VuZCBsb2dzIHRvIENsb3VkV2F0Y2ggTG9nc1xuICogLSBgTG9nZ2luZ0Rlc3RpbmF0aW9uLnMzKGJ1Y2tldClgIC0gU2VuZCBsb2dzIHRvIFMzXG4gKiAtIGBMb2dnaW5nRGVzdGluYXRpb24uZmlyZWhvc2Uoc3RyZWFtKWAgLSBTZW5kIGxvZ3MgdG8gS2luZXNpcyBEYXRhIEZpcmVob3NlXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGVxdWl2YWxlbnQgY29uc3RydWN0IGZyb20gYGF3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTG9nZ2luZ0Rlc3RpbmF0aW9uIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGxvZ2dpbmcgZGVzdGluYXRpb24gdGhhdCBzZW5kcyBsb2dzIHRvIGEgQ2xvdWRXYXRjaCBMb2cgR3JvdXBcbiAgICpcbiAgICogQHBhcmFtIGxvZ0dyb3VwIFRoZSBDbG91ZFdhdGNoIExvZyBHcm91cCB0byBzZW5kIGxvZ3MgdG9cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2xvdWRXYXRjaExvZ3MobG9nR3JvdXA6IGxvZ3MuSUxvZ0dyb3VwKTogTG9nZ2luZ0Rlc3RpbmF0aW9uIHtcbiAgICByZXR1cm4gbmV3IENsb3VkV2F0Y2hMb2dzRGVzdGluYXRpb24obG9nR3JvdXApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGxvZ2dpbmcgZGVzdGluYXRpb24gdGhhdCBzZW5kcyBsb2dzIHRvIGFuIFMzIGJ1Y2tldFxuICAgKlxuICAgKiBAcGFyYW0gYnVja2V0IFRoZSBTMyBidWNrZXQgdG8gc2VuZCBsb2dzIHRvXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHMzKGJ1Y2tldDogczMuSUJ1Y2tldCk6IExvZ2dpbmdEZXN0aW5hdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTM0Rlc3RpbmF0aW9uKGJ1Y2tldCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbG9nZ2luZyBkZXN0aW5hdGlvbiB0aGF0IHNlbmRzIGxvZ3MgdG8gYSBLaW5lc2lzIERhdGEgRmlyZWhvc2UgZGVsaXZlcnkgc3RyZWFtXG4gICAqXG4gICAqIEBwYXJhbSBzdHJlYW0gVGhlIEZpcmVob3NlIGRlbGl2ZXJ5IHN0cmVhbSB0byBzZW5kIGxvZ3MgdG9cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmlyZWhvc2Uoc3RyZWFtOiBJRGVsaXZlcnlTdHJlYW0pOiBMb2dnaW5nRGVzdGluYXRpb24ge1xuICAgIHJldHVybiBuZXcgRmlyZWhvc2VEZXN0aW5hdGlvbihzdHJlYW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmQgdGhpcyBkZXN0aW5hdGlvbiB0byBhIHNjb3BlIGFuZCBjcmVhdGUgdGhlIGRlbGl2ZXJ5IGRlc3RpbmF0aW9uIHJlc291cmNlXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IF9iaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpOiBMb2dnaW5nRGVzdGluYXRpb25CaW5kQ29uZmlnO1xufVxuXG4vKipcbiAqIENsb3VkV2F0Y2ggTG9ncyBkZXN0aW5hdGlvbiBpbXBsZW1lbnRhdGlvblxuICovXG5jbGFzcyBDbG91ZFdhdGNoTG9nc0Rlc3RpbmF0aW9uIGV4dGVuZHMgTG9nZ2luZ0Rlc3RpbmF0aW9uIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBsb2dHcm91cDogbG9ncy5JTG9nR3JvdXApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIF9iaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpOiBMb2dnaW5nRGVzdGluYXRpb25CaW5kQ29uZmlnIHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgIC8vIEdldCBvciBjcmVhdGUgYSBzaW5nbGV0b24gcmVzb3VyY2UgcG9saWN5IGZvciBsb2dzIGRlbGl2ZXJ5XG4gICAgY29uc3QgcG9saWN5SWQgPSAnQ2RrTG9nR3JvdXBMb2dzRGVsaXZlcnlQb2xpY3knO1xuICAgIGxldCByZXNvdXJjZVBvbGljeSA9IHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKHBvbGljeUlkKSBhcyBsb2dzLlJlc291cmNlUG9saWN5IHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCFyZXNvdXJjZVBvbGljeSkge1xuICAgICAgcmVzb3VyY2VQb2xpY3kgPSBuZXcgbG9ncy5SZXNvdXJjZVBvbGljeShzdGFjaywgcG9saWN5SWQpO1xuICAgIH1cblxuICAgIC8vIEdyYW50IHBlcm1pc3Npb25zIGZvciB0aGlzIHNwZWNpZmljIGxvZyBncm91cFxuICAgIC8vIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L2xvZ3MvQVdTLWxvZ3MtaW5mcmFzdHJ1Y3R1cmUtVjItQ2xvdWRXYXRjaExvZ3MuaHRtbFxuICAgIHJlc291cmNlUG9saWN5LmRvY3VtZW50LmFkZFN0YXRlbWVudHMobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIHByaW5jaXBhbHM6IFtuZXcgU2VydmljZVByaW5jaXBhbCgnZGVsaXZlcnkubG9ncy5hbWF6b25hd3MuY29tJyldLFxuICAgICAgYWN0aW9uczogWydsb2dzOkNyZWF0ZUxvZ1N0cmVhbScsICdsb2dzOlB1dExvZ0V2ZW50cyddLFxuICAgICAgcmVzb3VyY2VzOiBbYCR7dGhpcy5sb2dHcm91cC5sb2dHcm91cEFybn06bG9nLXN0cmVhbToqYF0sXG4gICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICdhd3M6U291cmNlQWNjb3VudCc6IHN0YWNrLmFjY291bnQsXG4gICAgICAgIH0sXG4gICAgICAgIEFybkxpa2U6IHtcbiAgICAgICAgICAnYXdzOlNvdXJjZUFybic6IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgICAgICBzZXJ2aWNlOiAnbG9ncycsXG4gICAgICAgICAgICByZXNvdXJjZTogJyonLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICBjb25zdCBkZWxpdmVyeURlc3RpbmF0aW9uID0gbmV3IGxvZ3MuQ2ZuRGVsaXZlcnlEZXN0aW5hdGlvbihzY29wZSwgYCR7aWR9RGVzdGAsIHtcbiAgICAgIG5hbWU6IExhenkuc3RyaW5nKHsgcHJvZHVjZTogKCk6IHN0cmluZyA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUoZGVsaXZlcnlEZXN0aW5hdGlvbiwgeyBtYXhMZW5ndGg6IE1BWF9ERUxJVkVSWV9OQU1FX0xFTkdUSCB9KSB9KSxcbiAgICAgIGRlbGl2ZXJ5RGVzdGluYXRpb25UeXBlOiAnQ1dMJyxcbiAgICAgIGRlc3RpbmF0aW9uUmVzb3VyY2VBcm46IHRoaXMubG9nR3JvdXAubG9nR3JvdXBBcm4sXG4gICAgfSk7XG5cbiAgICBkZWxpdmVyeURlc3RpbmF0aW9uLm5vZGUuYWRkRGVwZW5kZW5jeShyZXNvdXJjZVBvbGljeSk7XG5cbiAgICByZXR1cm4geyBkZWxpdmVyeURlc3RpbmF0aW9uIH07XG4gIH1cbn1cblxuLyoqXG4gKiBTMyBkZXN0aW5hdGlvbiBpbXBsZW1lbnRhdGlvblxuICovXG5jbGFzcyBTM0Rlc3RpbmF0aW9uIGV4dGVuZHMgTG9nZ2luZ0Rlc3RpbmF0aW9uIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBidWNrZXQ6IHMzLklCdWNrZXQpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIF9iaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpOiBMb2dnaW5nRGVzdGluYXRpb25CaW5kQ29uZmlnIHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgIC8vIEFkZCBidWNrZXQgcG9saWN5IGZvciBsb2dzIGRlbGl2ZXJ5XG4gICAgLy8gQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbG9ncy9BV1MtbG9ncy1pbmZyYXN0cnVjdHVyZS1WMi1TMy5odG1sXG4gICAgdGhpcy5idWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgcHJpbmNpcGFsczogW25ldyBTZXJ2aWNlUHJpbmNpcGFsKCdkZWxpdmVyeS5sb2dzLmFtYXpvbmF3cy5jb20nKV0sXG4gICAgICBhY3Rpb25zOiBbJ3MzOlB1dE9iamVjdCddLFxuICAgICAgcmVzb3VyY2VzOiBbYCR7dGhpcy5idWNrZXQuYnVja2V0QXJufS9BV1NMb2dzLyR7c3RhY2suYWNjb3VudH0vKmBdLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAnczM6eC1hbXotYWNsJzogJ2J1Y2tldC1vd25lci1mdWxsLWNvbnRyb2wnLFxuICAgICAgICAgICdhd3M6U291cmNlQWNjb3VudCc6IHN0YWNrLmFjY291bnQsXG4gICAgICAgIH0sXG4gICAgICAgIEFybkxpa2U6IHtcbiAgICAgICAgICAnYXdzOlNvdXJjZUFybic6IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgICAgICBzZXJ2aWNlOiAnbG9ncycsXG4gICAgICAgICAgICByZXNvdXJjZTogJ2RlbGl2ZXJ5LXNvdXJjZScsXG4gICAgICAgICAgICByZXNvdXJjZU5hbWU6ICcqJyxcbiAgICAgICAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LkNPTE9OX1JFU09VUkNFX05BTUUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGRlbGl2ZXJ5RGVzdGluYXRpb24gPSBuZXcgbG9ncy5DZm5EZWxpdmVyeURlc3RpbmF0aW9uKHNjb3BlLCBgJHtpZH1EZXN0YCwge1xuICAgICAgbmFtZTogTGF6eS5zdHJpbmcoeyBwcm9kdWNlOiAoKTogc3RyaW5nID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZShkZWxpdmVyeURlc3RpbmF0aW9uLCB7IG1heExlbmd0aDogTUFYX0RFTElWRVJZX05BTUVfTEVOR1RIIH0pIH0pLFxuICAgICAgZGVsaXZlcnlEZXN0aW5hdGlvblR5cGU6ICdTMycsXG4gICAgICBkZXN0aW5hdGlvblJlc291cmNlQXJuOiB0aGlzLmJ1Y2tldC5idWNrZXRBcm4sXG4gICAgfSk7XG5cbiAgICByZXR1cm4geyBkZWxpdmVyeURlc3RpbmF0aW9uIH07XG4gIH1cbn1cblxuLyoqXG4gKiBGaXJlaG9zZSBkZXN0aW5hdGlvbiBpbXBsZW1lbnRhdGlvblxuICovXG5jbGFzcyBGaXJlaG9zZURlc3RpbmF0aW9uIGV4dGVuZHMgTG9nZ2luZ0Rlc3RpbmF0aW9uIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdHJlYW06IElEZWxpdmVyeVN0cmVhbSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgX2JpbmQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZyk6IExvZ2dpbmdEZXN0aW5hdGlvbkJpbmRDb25maWcge1xuICAgIC8vIEZpcmVob3NlIHVzZXMgYSBzZXJ2aWNlLWxpbmtlZCByb2xlIHRoYXQgcmVxdWlyZXMgdGhpcyB0YWcgdG8gZ3JhbnQgYWNjZXNzXG4gICAgLy8gQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbG9ncy9BV1MtbG9ncy1pbmZyYXN0cnVjdHVyZS1WMi1GaXJlaG9zZS5odG1sXG4gICAgVGFncy5vZih0aGlzLnN0cmVhbSkuYWRkKCdMb2dEZWxpdmVyeUVuYWJsZWQnLCAndHJ1ZScpO1xuXG4gICAgY29uc3QgZGVsaXZlcnlEZXN0aW5hdGlvbiA9IG5ldyBsb2dzLkNmbkRlbGl2ZXJ5RGVzdGluYXRpb24oc2NvcGUsIGAke2lkfURlc3RgLCB7XG4gICAgICBuYW1lOiBMYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpOiBzdHJpbmcgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKGRlbGl2ZXJ5RGVzdGluYXRpb24sIHsgbWF4TGVuZ3RoOiBNQVhfREVMSVZFUllfTkFNRV9MRU5HVEggfSkgfSksXG4gICAgICBkZWxpdmVyeURlc3RpbmF0aW9uVHlwZTogJ0ZIJyxcbiAgICAgIGRlc3RpbmF0aW9uUmVzb3VyY2VBcm46IHRoaXMuc3RyZWFtLmRlbGl2ZXJ5U3RyZWFtQXJuLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgZGVsaXZlcnlEZXN0aW5hdGlvbiB9O1xuICB9XG59XG5cbi8qKlxuICogSW50ZXJuYWwgWC1SYXkgcmVzb3VyY2UgcG9saWN5IHdyYXBwZXIgdGhhdCBhbGxvd3MgYWRkaW5nIHN0YXRlbWVudHMgYWZ0ZXIgY3JlYXRpb24uXG4gKiBUaGlzIGlzIHNpbWlsYXIgdG8gbG9ncy5SZXNvdXJjZVBvbGljeSBidXQgZm9yIFgtUmF5LlxuICovXG5jbGFzcyBYUmF5UmVzb3VyY2VQb2xpY3kgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnQ6IFBvbGljeURvY3VtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5kb2N1bWVudCA9IG5ldyBQb2xpY3lEb2N1bWVudCgpO1xuXG4gICAgbmV3IHhyYXkuQ2ZuUmVzb3VyY2VQb2xpY3kodGhpcywgJ1Jlc291cmNlUG9saWN5Jywge1xuICAgICAgcG9saWN5TmFtZTogTGF6eS5zdHJpbmcoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDEyOCB9KSxcbiAgICAgIH0pLFxuICAgICAgcG9saWN5RG9jdW1lbnQ6IExhenkuc3RyaW5nKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gSlNPTi5zdHJpbmdpZnkodGhpcy5kb2N1bWVudC50b0pTT04oKSksXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyZSBYLVJheSB0cmFjaW5nIGRlbGl2ZXJ5IGZvciBhIHJ1bnRpbWVcbiAqXG4gKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICogQHBhcmFtIHNvdXJjZUFybiBUaGUgQVJOIG9mIHRoZSBzb3VyY2UgcmVzb3VyY2UgKHJ1bnRpbWUpXG4gKiBAaW50ZXJuYWxcbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgZXF1aXZhbGVudCBjb25zdHJ1Y3QgZnJvbSBgYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmVgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVUcmFjaW5nRGVsaXZlcnkoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIHNvdXJjZUFybjogc3RyaW5nLFxuKTogbG9ncy5DZm5EZWxpdmVyeSB7XG4gIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuXG4gIC8vIENyZWF0ZSBkZWxpdmVyeSBzb3VyY2UgZm9yIHRyYWNlc1xuICBjb25zdCBkZWxpdmVyeVNvdXJjZSA9IG5ldyBsb2dzLkNmbkRlbGl2ZXJ5U291cmNlKHNjb3BlLCAnVHJhY2VzRGVsaXZlcnlTb3VyY2UnLCB7XG4gICAgbmFtZTogTGF6eS5zdHJpbmcoeyBwcm9kdWNlOiAoKTogc3RyaW5nID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZShkZWxpdmVyeVNvdXJjZSwgeyBtYXhMZW5ndGg6IE1BWF9ERUxJVkVSWV9OQU1FX0xFTkdUSCB9KSB9KSxcbiAgICBsb2dUeXBlOiAnVFJBQ0VTJyxcbiAgICByZXNvdXJjZUFybjogc291cmNlQXJuLFxuICB9KTtcblxuICAvLyBHZXQgb3IgY3JlYXRlIFgtUmF5IHJlc291cmNlIHBvbGljeSAoc2luZ2xldG9uIHBlciBzdGFjaylcbiAgY29uc3QgcG9saWN5SWQgPSAnQ2RrWFJheUxvZ3NEZWxpdmVyeVBvbGljeSc7XG4gIGxldCB4cmF5UG9saWN5ID0gc3RhY2subm9kZS50cnlGaW5kQ2hpbGQocG9saWN5SWQpIGFzIFhSYXlSZXNvdXJjZVBvbGljeSB8IHVuZGVmaW5lZDtcblxuICBpZiAoIXhyYXlQb2xpY3kpIHtcbiAgICB4cmF5UG9saWN5ID0gbmV3IFhSYXlSZXNvdXJjZVBvbGljeShzdGFjaywgcG9saWN5SWQpO1xuICB9XG5cbiAgLy8gR3JhbnQgcGVybWlzc2lvbnMgZm9yIHRoaXMgc3BlY2lmaWMgc291cmNlIHJlc291cmNlXG4gIC8vIFRoZSB4cmF5OlB1dFRyYWNlU2VnbWVudHMgYWN0aW9uIHJlcXVpcmVzIHJlc291cmNlczogWycqJ10gcGVyIEFXUyBkb2N1bWVudGF0aW9uLlxuICAvLyBUaGUgY29uZGl0aW9ucyBiZWxvdyByZXN0cmljdCB0aGlzIGJyb2FkIHNjb3BlIHRvIG9ubHkgdGhlIHNwZWNpZmljIHNvdXJjZSByZXNvdXJjZVxuICAvLyAodmlhIGxvZ3M6TG9nR2VuZXJhdGluZ1Jlc291cmNlQXJucykgYW5kIHRoZSBjdXJyZW50IGFjY291bnQgYW5kIGRlbGl2ZXJ5LXNvdXJjZSBBUk4uXG4gIC8vIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L2xvZ3MvQVdTLWxvZ3MtaW5mcmFzdHJ1Y3R1cmUtVjItWFJBWS5odG1sXG4gIHhyYXlQb2xpY3kuZG9jdW1lbnQuYWRkU3RhdGVtZW50cyhuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICBwcmluY2lwYWxzOiBbbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2RlbGl2ZXJ5LmxvZ3MuYW1hem9uYXdzLmNvbScpXSxcbiAgICBhY3Rpb25zOiBbJ3hyYXk6UHV0VHJhY2VTZWdtZW50cyddLFxuICAgIHJlc291cmNlczogWycqJ10sXG4gICAgY29uZGl0aW9uczoge1xuICAgICAgJ0ZvckFsbFZhbHVlczpBcm5MaWtlJzoge1xuICAgICAgICAnbG9nczpMb2dHZW5lcmF0aW5nUmVzb3VyY2VBcm5zJzogW3NvdXJjZUFybl0sXG4gICAgICB9LFxuICAgICAgJ1N0cmluZ0VxdWFscyc6IHtcbiAgICAgICAgJ2F3czpTb3VyY2VBY2NvdW50Jzogc3RhY2suYWNjb3VudCxcbiAgICAgIH0sXG4gICAgICAnQXJuTGlrZSc6IHtcbiAgICAgICAgJ2F3czpTb3VyY2VBcm4nOiBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgICAgIHNlcnZpY2U6ICdsb2dzJyxcbiAgICAgICAgICByZXNvdXJjZTogJ2RlbGl2ZXJ5LXNvdXJjZScsXG4gICAgICAgICAgcmVzb3VyY2VOYW1lOiAnKicsXG4gICAgICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0sXG4gIH0pKTtcblxuICAvLyBDcmVhdGUgZGVsaXZlcnkgZGVzdGluYXRpb24gZm9yIFgtUmF5XG4gIGNvbnN0IGRlbGl2ZXJ5RGVzdGluYXRpb24gPSBuZXcgbG9ncy5DZm5EZWxpdmVyeURlc3RpbmF0aW9uKHNjb3BlLCAnVHJhY2VzRGVsaXZlcnlEZXN0Jywge1xuICAgIG5hbWU6IExhenkuc3RyaW5nKHsgcHJvZHVjZTogKCk6IHN0cmluZyA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUoZGVsaXZlcnlEZXN0aW5hdGlvbiwgeyBtYXhMZW5ndGg6IE1BWF9ERUxJVkVSWV9OQU1FX0xFTkdUSCB9KSB9KSxcbiAgICBkZWxpdmVyeURlc3RpbmF0aW9uVHlwZTogJ1hSQVknLFxuICB9KTtcblxuICBkZWxpdmVyeURlc3RpbmF0aW9uLm5vZGUuYWRkRGVwZW5kZW5jeSh4cmF5UG9saWN5KTtcblxuICAvLyBDcmVhdGUgZGVsaXZlcnkgdG8gY29ubmVjdCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uXG4gIGNvbnN0IGRlbGl2ZXJ5ID0gbmV3IGxvZ3MuQ2ZuRGVsaXZlcnkoc2NvcGUsICdUcmFjZXNEZWxpdmVyeScsIHtcbiAgICBkZWxpdmVyeVNvdXJjZU5hbWU6IGRlbGl2ZXJ5U291cmNlLmRlbGl2ZXJ5U291cmNlUmVmLmRlbGl2ZXJ5U291cmNlTmFtZSxcbiAgICBkZWxpdmVyeURlc3RpbmF0aW9uQXJuOiBkZWxpdmVyeURlc3RpbmF0aW9uLmF0dHJBcm4sXG4gIH0pO1xuXG4gIGRlbGl2ZXJ5Lm5vZGUuYWRkRGVwZW5kZW5jeShkZWxpdmVyeVNvdXJjZSk7XG4gIGRlbGl2ZXJ5Lm5vZGUuYWRkRGVwZW5kZW5jeShkZWxpdmVyeURlc3RpbmF0aW9uKTtcblxuICByZXR1cm4gZGVsaXZlcnk7XG59XG5cbi8qKlxuICogQ29uZmlndXJlIGxvZ2dpbmcgZGVsaXZlcnkgZm9yIGEgcnVudGltZVxuICpcbiAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gKiBAcGFyYW0gc291cmNlQXJuIFRoZSBBUk4gb2YgdGhlIHNvdXJjZSByZXNvdXJjZSAocnVudGltZSlcbiAqIEBwYXJhbSBsb2dnaW5nQ29uZmlncyBBcnJheSBvZiBsb2dnaW5nIGNvbmZpZ3VyYXRpb25zXG4gKiBAaW50ZXJuYWxcbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgZXF1aXZhbGVudCBjb25zdHJ1Y3QgZnJvbSBgYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmVgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVMb2dnaW5nRGVsaXZlcnkoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIHNvdXJjZUFybjogc3RyaW5nLFxuICBsb2dnaW5nQ29uZmlnczogTG9nZ2luZ0NvbmZpZ1tdLFxuKTogbG9ncy5DZm5EZWxpdmVyeVtdIHtcbiAgY29uc3QgZGVsaXZlcmllczogbG9ncy5DZm5EZWxpdmVyeVtdID0gW107XG5cbiAgLy8gR3JvdXAgY29uZmlncyBieSBsb2cgdHlwZSB0byBjcmVhdGUgb25lIHNvdXJjZSBwZXIgbG9nIHR5cGVcbiAgY29uc3QgY29uZmlnc0J5TG9nVHlwZSA9IG5ldyBNYXA8c3RyaW5nLCBMb2dnaW5nQ29uZmlnW10+KCk7XG4gIGZvciAoY29uc3QgY29uZmlnIG9mIGxvZ2dpbmdDb25maWdzKSB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBjb25maWdzQnlMb2dUeXBlLmdldChjb25maWcubG9nVHlwZS52YWx1ZSkgPz8gW107XG4gICAgZXhpc3RpbmcucHVzaChjb25maWcpO1xuICAgIGNvbmZpZ3NCeUxvZ1R5cGUuc2V0KGNvbmZpZy5sb2dUeXBlLnZhbHVlLCBleGlzdGluZyk7XG4gIH1cblxuICAvLyBDcmVhdGUgZGVsaXZlcnkgc291cmNlcyBhbmQgZGVsaXZlcmllcyBmb3IgZWFjaCBsb2cgdHlwZVxuICBmb3IgKGNvbnN0IFtsb2dUeXBlLCBjb25maWdzXSBvZiBjb25maWdzQnlMb2dUeXBlKSB7XG4gICAgLy8gQ29udmVydCBsb2cgdHlwZSB0byBQYXNjYWxDYXNlIGZvciBjb25zdHJ1Y3QgSURzIChlLmcuLCBBUFBMSUNBVElPTl9MT0dTIOKGkiBBcHBsaWNhdGlvbkxvZ3MpXG4gICAgY29uc3QgbG9nVHlwZUlkID0gbG9nVHlwZS5zcGxpdCgnXycpLm1hcCh3b3JkID0+IHdvcmQuY2hhckF0KDApICsgd29yZC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpKS5qb2luKCcnKTtcblxuICAgIC8vIENyZWF0ZSBhIGRlbGl2ZXJ5IHNvdXJjZSBmb3IgdGhpcyBsb2cgdHlwZVxuICAgIGNvbnN0IGRlbGl2ZXJ5U291cmNlOiBsb2dzLkNmbkRlbGl2ZXJ5U291cmNlID0gbmV3IGxvZ3MuQ2ZuRGVsaXZlcnlTb3VyY2Uoc2NvcGUsIGAke2xvZ1R5cGVJZH1EZWxpdmVyeVNvdXJjZWAsIHtcbiAgICAgIG5hbWU6IExhenkuc3RyaW5nKHsgcHJvZHVjZTogKCk6IHN0cmluZyA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUoZGVsaXZlcnlTb3VyY2UsIHsgbWF4TGVuZ3RoOiBNQVhfREVMSVZFUllfTkFNRV9MRU5HVEggfSkgfSksXG4gICAgICBsb2dUeXBlOiBsb2dUeXBlLFxuICAgICAgcmVzb3VyY2VBcm46IHNvdXJjZUFybixcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBkZWxpdmVyeSBmb3IgZWFjaCBkZXN0aW5hdGlvblxuICAgIGNvbmZpZ3MuZm9yRWFjaCgoY29uZmlnLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBjb25maWdzLmxlbmd0aCA9PT0gMSA/IGxvZ1R5cGVJZCA6IGAke2xvZ1R5cGVJZH0ke2luZGV4fWA7XG4gICAgICBjb25zdCBiaW5kQ29uZmlnID0gY29uZmlnLmRlc3RpbmF0aW9uLl9iaW5kKHNjb3BlLCBpZCk7XG5cbiAgICAgIGNvbnN0IGRlbGl2ZXJ5ID0gbmV3IGxvZ3MuQ2ZuRGVsaXZlcnkoc2NvcGUsIGAke2lkfURlbGl2ZXJ5YCwge1xuICAgICAgICBkZWxpdmVyeVNvdXJjZU5hbWU6IGRlbGl2ZXJ5U291cmNlLmRlbGl2ZXJ5U291cmNlUmVmLmRlbGl2ZXJ5U291cmNlTmFtZSxcbiAgICAgICAgZGVsaXZlcnlEZXN0aW5hdGlvbkFybjogYmluZENvbmZpZy5kZWxpdmVyeURlc3RpbmF0aW9uLmF0dHJBcm4sXG4gICAgICB9KTtcblxuICAgICAgZGVsaXZlcnkubm9kZS5hZGREZXBlbmRlbmN5KGRlbGl2ZXJ5U291cmNlKTtcbiAgICAgIGRlbGl2ZXJ5Lm5vZGUuYWRkRGVwZW5kZW5jeShiaW5kQ29uZmlnLmRlbGl2ZXJ5RGVzdGluYXRpb24pO1xuXG4gICAgICBpZiAoZGVsaXZlcmllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRlbGl2ZXJ5Lm5vZGUuYWRkRGVwZW5kZW5jeShkZWxpdmVyaWVzW2RlbGl2ZXJpZXMubGVuZ3RoIC0gMV0pO1xuICAgICAgfVxuXG4gICAgICBkZWxpdmVyaWVzLnB1c2goZGVsaXZlcnkpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGRlbGl2ZXJpZXM7XG59XG4iXX0=
@@ -3,11 +3,13 @@
3
3
  *****************************************************************************/
4
4
  /**
5
5
  * Permissions to invoke the agent runtime
6
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
6
7
  */
7
8
  export declare const RUNTIME_INVOKE_PERMS: string[];
8
9
  /**
9
10
  * Permissions to invoke the agent runtime on behalf of a user
10
11
  * Required when using the X-Amzn-Bedrock-AgentCore-Runtime-User-Id header
12
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
11
13
  */
12
14
  export declare const RUNTIME_INVOKE_USER_PERMS: string[];
13
15
  /******************************************************************************
@@ -15,6 +17,7 @@ export declare const RUNTIME_INVOKE_USER_PERMS: string[];
15
17
  *****************************************************************************/
16
18
  /**
17
19
  * Grants control plane operations to manage the runtime (CRUD)
20
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
18
21
  */
19
22
  export declare const RUNTIME_ADMIN_PERMS: string[];
20
23
  /******************************************************************************
@@ -23,45 +26,54 @@ export declare const RUNTIME_ADMIN_PERMS: string[];
23
26
  /**
24
27
  * ECR permissions for pulling container images
25
28
  * Used to download container images from ECR repositories
29
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
26
30
  */
27
31
  export declare const RUNTIME_ECR_IMAGE_ACTIONS: string[];
28
32
  /**
29
33
  * ECR authorization token permissions
30
34
  * Required to authenticate with ECR (must use * resource)
35
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
31
36
  */
32
37
  export declare const RUNTIME_ECR_TOKEN_ACTIONS: string[];
33
38
  /**
34
39
  * CloudWatch Logs permissions for log group operations
35
40
  * Used to create and describe log groups for runtime logs
41
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
36
42
  */
37
43
  export declare const RUNTIME_LOGS_GROUP_ACTIONS: string[];
38
44
  /**
39
45
  * CloudWatch Logs describe permissions
40
46
  * Used to list and describe all log groups
47
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
41
48
  */
42
49
  export declare const RUNTIME_LOGS_DESCRIBE_ACTIONS: string[];
43
50
  /**
44
51
  * CloudWatch Logs permissions for log stream operations
45
52
  * Used to create log streams and write log events
53
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
46
54
  */
47
55
  export declare const RUNTIME_LOGS_STREAM_ACTIONS: string[];
48
56
  /**
49
57
  * X-Ray tracing permissions
50
58
  * Required for distributed tracing (must use * resource)
59
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
51
60
  */
52
61
  export declare const RUNTIME_XRAY_ACTIONS: string[];
53
62
  /**
54
63
  * CloudWatch metrics permissions
55
64
  * Used to publish custom metrics
65
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
56
66
  */
57
67
  export declare const RUNTIME_CLOUDWATCH_METRICS_ACTIONS: string[];
58
68
  /**
59
69
  * Bedrock AgentCore workload identity permissions
60
70
  * Used to obtain access tokens for workload identity
71
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
61
72
  */
62
73
  export declare const RUNTIME_WORKLOAD_IDENTITY_ACTIONS: string[];
63
74
  /**
64
75
  * CloudWatch namespace for metrics
65
76
  * Used as a condition for CloudWatch metrics permissions
77
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
66
78
  */
67
79
  export declare const RUNTIME_CLOUDWATCH_NAMESPACE = "bedrock-agentcore";
@@ -6,11 +6,13 @@ exports.RUNTIME_CLOUDWATCH_NAMESPACE = exports.RUNTIME_WORKLOAD_IDENTITY_ACTIONS
6
6
  *****************************************************************************/
7
7
  /**
8
8
  * Permissions to invoke the agent runtime
9
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
9
10
  */
10
11
  exports.RUNTIME_INVOKE_PERMS = ['bedrock-agentcore:InvokeAgentRuntime'];
11
12
  /**
12
13
  * Permissions to invoke the agent runtime on behalf of a user
13
14
  * Required when using the X-Amzn-Bedrock-AgentCore-Runtime-User-Id header
15
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
14
16
  */
15
17
  exports.RUNTIME_INVOKE_USER_PERMS = ['bedrock-agentcore:InvokeAgentRuntimeForUser'];
16
18
  /******************************************************************************
@@ -18,6 +20,7 @@ exports.RUNTIME_INVOKE_USER_PERMS = ['bedrock-agentcore:InvokeAgentRuntimeForUse
18
20
  *****************************************************************************/
19
21
  /**
20
22
  * Grants control plane operations to manage the runtime (CRUD)
23
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
21
24
  */
22
25
  exports.RUNTIME_ADMIN_PERMS = [
23
26
  'bedrock-agentcore:CreateAgentRuntime',
@@ -38,6 +41,7 @@ exports.RUNTIME_ADMIN_PERMS = [
38
41
  /**
39
42
  * ECR permissions for pulling container images
40
43
  * Used to download container images from ECR repositories
44
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
41
45
  */
42
46
  exports.RUNTIME_ECR_IMAGE_ACTIONS = [
43
47
  'ecr:BatchGetImage',
@@ -46,11 +50,13 @@ exports.RUNTIME_ECR_IMAGE_ACTIONS = [
46
50
  /**
47
51
  * ECR authorization token permissions
48
52
  * Required to authenticate with ECR (must use * resource)
53
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
49
54
  */
50
55
  exports.RUNTIME_ECR_TOKEN_ACTIONS = ['ecr:GetAuthorizationToken'];
51
56
  /**
52
57
  * CloudWatch Logs permissions for log group operations
53
58
  * Used to create and describe log groups for runtime logs
59
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
54
60
  */
55
61
  exports.RUNTIME_LOGS_GROUP_ACTIONS = [
56
62
  'logs:DescribeLogStreams',
@@ -59,11 +65,13 @@ exports.RUNTIME_LOGS_GROUP_ACTIONS = [
59
65
  /**
60
66
  * CloudWatch Logs describe permissions
61
67
  * Used to list and describe all log groups
68
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
62
69
  */
63
70
  exports.RUNTIME_LOGS_DESCRIBE_ACTIONS = ['logs:DescribeLogGroups'];
64
71
  /**
65
72
  * CloudWatch Logs permissions for log stream operations
66
73
  * Used to create log streams and write log events
74
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
67
75
  */
68
76
  exports.RUNTIME_LOGS_STREAM_ACTIONS = [
69
77
  'logs:CreateLogStream',
@@ -72,6 +80,7 @@ exports.RUNTIME_LOGS_STREAM_ACTIONS = [
72
80
  /**
73
81
  * X-Ray tracing permissions
74
82
  * Required for distributed tracing (must use * resource)
83
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
75
84
  */
76
85
  exports.RUNTIME_XRAY_ACTIONS = [
77
86
  'xray:PutTraceSegments',
@@ -82,11 +91,13 @@ exports.RUNTIME_XRAY_ACTIONS = [
82
91
  /**
83
92
  * CloudWatch metrics permissions
84
93
  * Used to publish custom metrics
94
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
85
95
  */
86
96
  exports.RUNTIME_CLOUDWATCH_METRICS_ACTIONS = ['cloudwatch:PutMetricData'];
87
97
  /**
88
98
  * Bedrock AgentCore workload identity permissions
89
99
  * Used to obtain access tokens for workload identity
100
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
90
101
  */
91
102
  exports.RUNTIME_WORKLOAD_IDENTITY_ACTIONS = [
92
103
  'bedrock-agentcore:GetWorkloadAccessToken',
@@ -96,6 +107,7 @@ exports.RUNTIME_WORKLOAD_IDENTITY_ACTIONS = [
96
107
  /**
97
108
  * CloudWatch namespace for metrics
98
109
  * Used as a condition for CloudWatch metrics permissions
110
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
99
111
  */
100
112
  exports.RUNTIME_CLOUDWATCH_NAMESPACE = 'bedrock-agentcore';
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwZXJtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7K0VBRStFO0FBQy9FOztHQUVHO0FBQ1UsUUFBQSxvQkFBb0IsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7QUFFN0U7OztHQUdHO0FBQ1UsUUFBQSx5QkFBeUIsR0FBRyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7QUFFekY7OytFQUUrRTtBQUMvRTs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQUc7SUFDakMsc0NBQXNDO0lBQ3RDLDhDQUE4QztJQUM5QyxzQ0FBc0M7SUFDdEMsOENBQThDO0lBQzlDLG1DQUFtQztJQUNuQywyQ0FBMkM7SUFDM0MscUNBQXFDO0lBQ3JDLDRDQUE0QztJQUM1Qyw2Q0FBNkM7SUFDN0Msc0NBQXNDO0lBQ3RDLDhDQUE4QztDQUMvQyxDQUFDO0FBRUY7OytFQUUrRTtBQUUvRTs7O0dBR0c7QUFDVSxRQUFBLHlCQUF5QixHQUFHO0lBQ3ZDLG1CQUFtQjtJQUNuQiw0QkFBNEI7Q0FDN0IsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEseUJBQXlCLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBRXZFOzs7R0FHRztBQUNVLFFBQUEsMEJBQTBCLEdBQUc7SUFDeEMseUJBQXlCO0lBQ3pCLHFCQUFxQjtDQUN0QixDQUFDO0FBRUY7OztHQUdHO0FBQ1UsUUFBQSw2QkFBNkIsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFFeEU7OztHQUdHO0FBQ1UsUUFBQSwyQkFBMkIsR0FBRztJQUN6QyxzQkFBc0I7SUFDdEIsbUJBQW1CO0NBQ3BCLENBQUM7QUFFRjs7O0dBR0c7QUFDVSxRQUFBLG9CQUFvQixHQUFHO0lBQ2xDLHVCQUF1QjtJQUN2QiwwQkFBMEI7SUFDMUIsdUJBQXVCO0lBQ3ZCLHlCQUF5QjtDQUMxQixDQUFDO0FBRUY7OztHQUdHO0FBQ1UsUUFBQSxrQ0FBa0MsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFL0U7OztHQUdHO0FBQ1UsUUFBQSxpQ0FBaUMsR0FBRztJQUMvQywwQ0FBMEM7SUFDMUMsZ0RBQWdEO0lBQ2hELG1EQUFtRDtDQUNwRCxDQUFDO0FBQ0Y7OztHQUdHO0FBQ1UsUUFBQSw0QkFBNEIsR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgUGxhbmUgUGVybWlzc2lvbnNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogUGVybWlzc2lvbnMgdG8gaW52b2tlIHRoZSBhZ2VudCBydW50aW1lXG4gKi9cbmV4cG9ydCBjb25zdCBSVU5USU1FX0lOVk9LRV9QRVJNUyA9IFsnYmVkcm9jay1hZ2VudGNvcmU6SW52b2tlQWdlbnRSdW50aW1lJ107XG5cbi8qKlxuICogUGVybWlzc2lvbnMgdG8gaW52b2tlIHRoZSBhZ2VudCBydW50aW1lIG9uIGJlaGFsZiBvZiBhIHVzZXJcbiAqIFJlcXVpcmVkIHdoZW4gdXNpbmcgdGhlIFgtQW16bi1CZWRyb2NrLUFnZW50Q29yZS1SdW50aW1lLVVzZXItSWQgaGVhZGVyXG4gKi9cbmV4cG9ydCBjb25zdCBSVU5USU1FX0lOVk9LRV9VU0VSX1BFUk1TID0gWydiZWRyb2NrLWFnZW50Y29yZTpJbnZva2VBZ2VudFJ1bnRpbWVGb3JVc2VyJ107XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2wgUGxhbmUgUGVybWlzc2lvbnNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogR3JhbnRzIGNvbnRyb2wgcGxhbmUgb3BlcmF0aW9ucyB0byBtYW5hZ2UgdGhlIHJ1bnRpbWUgKENSVUQpXG4gKi9cbmV4cG9ydCBjb25zdCBSVU5USU1FX0FETUlOX1BFUk1TID0gW1xuICAnYmVkcm9jay1hZ2VudGNvcmU6Q3JlYXRlQWdlbnRSdW50aW1lJyxcbiAgJ2JlZHJvY2stYWdlbnRjb3JlOkNyZWF0ZUFnZW50UnVudGltZUVuZHBvaW50JyxcbiAgJ2JlZHJvY2stYWdlbnRjb3JlOkRlbGV0ZUFnZW50UnVudGltZScsXG4gICdiZWRyb2NrLWFnZW50Y29yZTpEZWxldGVBZ2VudFJ1bnRpbWVFbmRwb2ludCcsXG4gICdiZWRyb2NrLWFnZW50Y29yZTpHZXRBZ2VudFJ1bnRpbWUnLFxuICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0QWdlbnRSdW50aW1lRW5kcG9pbnQnLFxuICAnYmVkcm9jay1hZ2VudGNvcmU6TGlzdEFnZW50UnVudGltZXMnLFxuICAnYmVkcm9jay1hZ2VudGNvcmU6TGlzdEFnZW50UnVudGltZVZlcnNpb25zJyxcbiAgJ2JlZHJvY2stYWdlbnRjb3JlOkxpc3RBZ2VudFJ1bnRpbWVFbmRwb2ludHMnLFxuICAnYmVkcm9jay1hZ2VudGNvcmU6VXBkYXRlQWdlbnRSdW50aW1lJyxcbiAgJ2JlZHJvY2stYWdlbnRjb3JlOlVwZGF0ZUFnZW50UnVudGltZUVuZHBvaW50Jyxcbl07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICBFeGVjdXRpb24gUm9sZSBQZXJtaXNzaW9uc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEVDUiBwZXJtaXNzaW9ucyBmb3IgcHVsbGluZyBjb250YWluZXIgaW1hZ2VzXG4gKiBVc2VkIHRvIGRvd25sb2FkIGNvbnRhaW5lciBpbWFnZXMgZnJvbSBFQ1IgcmVwb3NpdG9yaWVzXG4gKi9cbmV4cG9ydCBjb25zdCBSVU5USU1FX0VDUl9JTUFHRV9BQ1RJT05TID0gW1xuICAnZWNyOkJhdGNoR2V0SW1hZ2UnLFxuICAnZWNyOkdldERvd25sb2FkVXJsRm9yTGF5ZXInLFxuXTtcblxuLyoqXG4gKiBFQ1IgYXV0aG9yaXphdGlvbiB0b2tlbiBwZXJtaXNzaW9uc1xuICogUmVxdWlyZWQgdG8gYXV0aGVudGljYXRlIHdpdGggRUNSIChtdXN0IHVzZSAqIHJlc291cmNlKVxuICovXG5leHBvcnQgY29uc3QgUlVOVElNRV9FQ1JfVE9LRU5fQUNUSU9OUyA9IFsnZWNyOkdldEF1dGhvcml6YXRpb25Ub2tlbiddO1xuXG4vKipcbiAqIENsb3VkV2F0Y2ggTG9ncyBwZXJtaXNzaW9ucyBmb3IgbG9nIGdyb3VwIG9wZXJhdGlvbnNcbiAqIFVzZWQgdG8gY3JlYXRlIGFuZCBkZXNjcmliZSBsb2cgZ3JvdXBzIGZvciBydW50aW1lIGxvZ3NcbiAqL1xuZXhwb3J0IGNvbnN0IFJVTlRJTUVfTE9HU19HUk9VUF9BQ1RJT05TID0gW1xuICAnbG9nczpEZXNjcmliZUxvZ1N0cmVhbXMnLFxuICAnbG9nczpDcmVhdGVMb2dHcm91cCcsXG5dO1xuXG4vKipcbiAqIENsb3VkV2F0Y2ggTG9ncyBkZXNjcmliZSBwZXJtaXNzaW9uc1xuICogVXNlZCB0byBsaXN0IGFuZCBkZXNjcmliZSBhbGwgbG9nIGdyb3Vwc1xuICovXG5leHBvcnQgY29uc3QgUlVOVElNRV9MT0dTX0RFU0NSSUJFX0FDVElPTlMgPSBbJ2xvZ3M6RGVzY3JpYmVMb2dHcm91cHMnXTtcblxuLyoqXG4gKiBDbG91ZFdhdGNoIExvZ3MgcGVybWlzc2lvbnMgZm9yIGxvZyBzdHJlYW0gb3BlcmF0aW9uc1xuICogVXNlZCB0byBjcmVhdGUgbG9nIHN0cmVhbXMgYW5kIHdyaXRlIGxvZyBldmVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IFJVTlRJTUVfTE9HU19TVFJFQU1fQUNUSU9OUyA9IFtcbiAgJ2xvZ3M6Q3JlYXRlTG9nU3RyZWFtJyxcbiAgJ2xvZ3M6UHV0TG9nRXZlbnRzJyxcbl07XG5cbi8qKlxuICogWC1SYXkgdHJhY2luZyBwZXJtaXNzaW9uc1xuICogUmVxdWlyZWQgZm9yIGRpc3RyaWJ1dGVkIHRyYWNpbmcgKG11c3QgdXNlICogcmVzb3VyY2UpXG4gKi9cbmV4cG9ydCBjb25zdCBSVU5USU1FX1hSQVlfQUNUSU9OUyA9IFtcbiAgJ3hyYXk6UHV0VHJhY2VTZWdtZW50cycsXG4gICd4cmF5OlB1dFRlbGVtZXRyeVJlY29yZHMnLFxuICAneHJheTpHZXRTYW1wbGluZ1J1bGVzJyxcbiAgJ3hyYXk6R2V0U2FtcGxpbmdUYXJnZXRzJyxcbl07XG5cbi8qKlxuICogQ2xvdWRXYXRjaCBtZXRyaWNzIHBlcm1pc3Npb25zXG4gKiBVc2VkIHRvIHB1Ymxpc2ggY3VzdG9tIG1ldHJpY3NcbiAqL1xuZXhwb3J0IGNvbnN0IFJVTlRJTUVfQ0xPVURXQVRDSF9NRVRSSUNTX0FDVElPTlMgPSBbJ2Nsb3Vkd2F0Y2g6UHV0TWV0cmljRGF0YSddO1xuXG4vKipcbiAqIEJlZHJvY2sgQWdlbnRDb3JlIHdvcmtsb2FkIGlkZW50aXR5IHBlcm1pc3Npb25zXG4gKiBVc2VkIHRvIG9idGFpbiBhY2Nlc3MgdG9rZW5zIGZvciB3b3JrbG9hZCBpZGVudGl0eVxuICovXG5leHBvcnQgY29uc3QgUlVOVElNRV9XT1JLTE9BRF9JREVOVElUWV9BQ1RJT05TID0gW1xuICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0V29ya2xvYWRBY2Nlc3NUb2tlbicsXG4gICdiZWRyb2NrLWFnZW50Y29yZTpHZXRXb3JrbG9hZEFjY2Vzc1Rva2VuRm9ySldUJyxcbiAgJ2JlZHJvY2stYWdlbnRjb3JlOkdldFdvcmtsb2FkQWNjZXNzVG9rZW5Gb3JVc2VySWQnLFxuXTtcbi8qKlxuICogQ2xvdWRXYXRjaCBuYW1lc3BhY2UgZm9yIG1ldHJpY3NcbiAqIFVzZWQgYXMgYSBjb25kaXRpb24gZm9yIENsb3VkV2F0Y2ggbWV0cmljcyBwZXJtaXNzaW9uc1xuICovXG5leHBvcnQgY29uc3QgUlVOVElNRV9DTE9VRFdBVENIX05BTUVTUEFDRSA9ICdiZWRyb2NrLWFnZW50Y29yZSc7XG4iXX0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwZXJtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7K0VBRStFO0FBQy9FOzs7R0FHRztBQUNVLFFBQUEsb0JBQW9CLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBRTdFOzs7O0dBSUc7QUFDVSxRQUFBLHlCQUF5QixHQUFHLENBQUMsNkNBQTZDLENBQUMsQ0FBQztBQUV6Rjs7K0VBRStFO0FBQy9FOzs7R0FHRztBQUNVLFFBQUEsbUJBQW1CLEdBQUc7SUFDakMsc0NBQXNDO0lBQ3RDLDhDQUE4QztJQUM5QyxzQ0FBc0M7SUFDdEMsOENBQThDO0lBQzlDLG1DQUFtQztJQUNuQywyQ0FBMkM7SUFDM0MscUNBQXFDO0lBQ3JDLDRDQUE0QztJQUM1Qyw2Q0FBNkM7SUFDN0Msc0NBQXNDO0lBQ3RDLDhDQUE4QztDQUMvQyxDQUFDO0FBRUY7OytFQUUrRTtBQUUvRTs7OztHQUlHO0FBQ1UsUUFBQSx5QkFBeUIsR0FBRztJQUN2QyxtQkFBbUI7SUFDbkIsNEJBQTRCO0NBQzdCLENBQUM7QUFFRjs7OztHQUlHO0FBQ1UsUUFBQSx5QkFBeUIsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFdkU7Ozs7R0FJRztBQUNVLFFBQUEsMEJBQTBCLEdBQUc7SUFDeEMseUJBQXlCO0lBQ3pCLHFCQUFxQjtDQUN0QixDQUFDO0FBRUY7Ozs7R0FJRztBQUNVLFFBQUEsNkJBQTZCLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBRXhFOzs7O0dBSUc7QUFDVSxRQUFBLDJCQUEyQixHQUFHO0lBQ3pDLHNCQUFzQjtJQUN0QixtQkFBbUI7Q0FDcEIsQ0FBQztBQUVGOzs7O0dBSUc7QUFDVSxRQUFBLG9CQUFvQixHQUFHO0lBQ2xDLHVCQUF1QjtJQUN2QiwwQkFBMEI7SUFDMUIsdUJBQXVCO0lBQ3ZCLHlCQUF5QjtDQUMxQixDQUFDO0FBRUY7Ozs7R0FJRztBQUNVLFFBQUEsa0NBQWtDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBRS9FOzs7O0dBSUc7QUFDVSxRQUFBLGlDQUFpQyxHQUFHO0lBQy9DLDBDQUEwQztJQUMxQyxnREFBZ0Q7SUFDaEQsbURBQW1EO0NBQ3BELENBQUM7QUFDRjs7OztHQUlHO0FBQ1UsUUFBQSw0QkFBNEIsR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgUGxhbmUgUGVybWlzc2lvbnNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogUGVybWlzc2lvbnMgdG8gaW52b2tlIHRoZSBhZ2VudCBydW50aW1lXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGVxdWl2YWxlbnQgY29uc3RydWN0IGZyb20gYGF3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgUlVOVElNRV9JTlZPS0VfUEVSTVMgPSBbJ2JlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZSddO1xuXG4vKipcbiAqIFBlcm1pc3Npb25zIHRvIGludm9rZSB0aGUgYWdlbnQgcnVudGltZSBvbiBiZWhhbGYgb2YgYSB1c2VyXG4gKiBSZXF1aXJlZCB3aGVuIHVzaW5nIHRoZSBYLUFtem4tQmVkcm9jay1BZ2VudENvcmUtUnVudGltZS1Vc2VyLUlkIGhlYWRlclxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBlcXVpdmFsZW50IGNvbnN0cnVjdCBmcm9tIGBhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZWAgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJVTlRJTUVfSU5WT0tFX1VTRVJfUEVSTVMgPSBbJ2JlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZUZvclVzZXInXTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbCBQbGFuZSBQZXJtaXNzaW9uc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBHcmFudHMgY29udHJvbCBwbGFuZSBvcGVyYXRpb25zIHRvIG1hbmFnZSB0aGUgcnVudGltZSAoQ1JVRClcbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgZXF1aXZhbGVudCBjb25zdHJ1Y3QgZnJvbSBgYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmVgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBSVU5USU1FX0FETUlOX1BFUk1TID0gW1xuICAnYmVkcm9jay1hZ2VudGNvcmU6Q3JlYXRlQWdlbnRSdW50aW1lJyxcbiAgJ2JlZHJvY2stYWdlbnRjb3JlOkNyZWF0ZUFnZW50UnVudGltZUVuZHBvaW50JyxcbiAgJ2JlZHJvY2stYWdlbnRjb3JlOkRlbGV0ZUFnZW50UnVudGltZScsXG4gICdiZWRyb2NrLWFnZW50Y29yZTpEZWxldGVBZ2VudFJ1bnRpbWVFbmRwb2ludCcsXG4gICdiZWRyb2NrLWFnZW50Y29yZTpHZXRBZ2VudFJ1bnRpbWUnLFxuICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0QWdlbnRSdW50aW1lRW5kcG9pbnQnLFxuICAnYmVkcm9jay1hZ2VudGNvcmU6TGlzdEFnZW50UnVudGltZXMnLFxuICAnYmVkcm9jay1hZ2VudGNvcmU6TGlzdEFnZW50UnVudGltZVZlcnNpb25zJyxcbiAgJ2JlZHJvY2stYWdlbnRjb3JlOkxpc3RBZ2VudFJ1bnRpbWVFbmRwb2ludHMnLFxuICAnYmVkcm9jay1hZ2VudGNvcmU6VXBkYXRlQWdlbnRSdW50aW1lJyxcbiAgJ2JlZHJvY2stYWdlbnRjb3JlOlVwZGF0ZUFnZW50UnVudGltZUVuZHBvaW50Jyxcbl07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICBFeGVjdXRpb24gUm9sZSBQZXJtaXNzaW9uc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEVDUiBwZXJtaXNzaW9ucyBmb3IgcHVsbGluZyBjb250YWluZXIgaW1hZ2VzXG4gKiBVc2VkIHRvIGRvd25sb2FkIGNvbnRhaW5lciBpbWFnZXMgZnJvbSBFQ1IgcmVwb3NpdG9yaWVzXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGVxdWl2YWxlbnQgY29uc3RydWN0IGZyb20gYGF3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgUlVOVElNRV9FQ1JfSU1BR0VfQUNUSU9OUyA9IFtcbiAgJ2VjcjpCYXRjaEdldEltYWdlJyxcbiAgJ2VjcjpHZXREb3dubG9hZFVybEZvckxheWVyJyxcbl07XG5cbi8qKlxuICogRUNSIGF1dGhvcml6YXRpb24gdG9rZW4gcGVybWlzc2lvbnNcbiAqIFJlcXVpcmVkIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIEVDUiAobXVzdCB1c2UgKiByZXNvdXJjZSlcbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgZXF1aXZhbGVudCBjb25zdHJ1Y3QgZnJvbSBgYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmVgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBSVU5USU1FX0VDUl9UT0tFTl9BQ1RJT05TID0gWydlY3I6R2V0QXV0aG9yaXphdGlvblRva2VuJ107XG5cbi8qKlxuICogQ2xvdWRXYXRjaCBMb2dzIHBlcm1pc3Npb25zIGZvciBsb2cgZ3JvdXAgb3BlcmF0aW9uc1xuICogVXNlZCB0byBjcmVhdGUgYW5kIGRlc2NyaWJlIGxvZyBncm91cHMgZm9yIHJ1bnRpbWUgbG9nc1xuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBlcXVpdmFsZW50IGNvbnN0cnVjdCBmcm9tIGBhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZWAgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJVTlRJTUVfTE9HU19HUk9VUF9BQ1RJT05TID0gW1xuICAnbG9nczpEZXNjcmliZUxvZ1N0cmVhbXMnLFxuICAnbG9nczpDcmVhdGVMb2dHcm91cCcsXG5dO1xuXG4vKipcbiAqIENsb3VkV2F0Y2ggTG9ncyBkZXNjcmliZSBwZXJtaXNzaW9uc1xuICogVXNlZCB0byBsaXN0IGFuZCBkZXNjcmliZSBhbGwgbG9nIGdyb3Vwc1xuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBlcXVpdmFsZW50IGNvbnN0cnVjdCBmcm9tIGBhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZWAgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJVTlRJTUVfTE9HU19ERVNDUklCRV9BQ1RJT05TID0gWydsb2dzOkRlc2NyaWJlTG9nR3JvdXBzJ107XG5cbi8qKlxuICogQ2xvdWRXYXRjaCBMb2dzIHBlcm1pc3Npb25zIGZvciBsb2cgc3RyZWFtIG9wZXJhdGlvbnNcbiAqIFVzZWQgdG8gY3JlYXRlIGxvZyBzdHJlYW1zIGFuZCB3cml0ZSBsb2cgZXZlbnRzXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGVxdWl2YWxlbnQgY29uc3RydWN0IGZyb20gYGF3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgUlVOVElNRV9MT0dTX1NUUkVBTV9BQ1RJT05TID0gW1xuICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAnbG9nczpQdXRMb2dFdmVudHMnLFxuXTtcblxuLyoqXG4gKiBYLVJheSB0cmFjaW5nIHBlcm1pc3Npb25zXG4gKiBSZXF1aXJlZCBmb3IgZGlzdHJpYnV0ZWQgdHJhY2luZyAobXVzdCB1c2UgKiByZXNvdXJjZSlcbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgZXF1aXZhbGVudCBjb25zdHJ1Y3QgZnJvbSBgYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmVgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBSVU5USU1FX1hSQVlfQUNUSU9OUyA9IFtcbiAgJ3hyYXk6UHV0VHJhY2VTZWdtZW50cycsXG4gICd4cmF5OlB1dFRlbGVtZXRyeVJlY29yZHMnLFxuICAneHJheTpHZXRTYW1wbGluZ1J1bGVzJyxcbiAgJ3hyYXk6R2V0U2FtcGxpbmdUYXJnZXRzJyxcbl07XG5cbi8qKlxuICogQ2xvdWRXYXRjaCBtZXRyaWNzIHBlcm1pc3Npb25zXG4gKiBVc2VkIHRvIHB1Ymxpc2ggY3VzdG9tIG1ldHJpY3NcbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgZXF1aXZhbGVudCBjb25zdHJ1Y3QgZnJvbSBgYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmVgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBSVU5USU1FX0NMT1VEV0FUQ0hfTUVUUklDU19BQ1RJT05TID0gWydjbG91ZHdhdGNoOlB1dE1ldHJpY0RhdGEnXTtcblxuLyoqXG4gKiBCZWRyb2NrIEFnZW50Q29yZSB3b3JrbG9hZCBpZGVudGl0eSBwZXJtaXNzaW9uc1xuICogVXNlZCB0byBvYnRhaW4gYWNjZXNzIHRva2VucyBmb3Igd29ya2xvYWQgaWRlbnRpdHlcbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgZXF1aXZhbGVudCBjb25zdHJ1Y3QgZnJvbSBgYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmVgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBSVU5USU1FX1dPUktMT0FEX0lERU5USVRZX0FDVElPTlMgPSBbXG4gICdiZWRyb2NrLWFnZW50Y29yZTpHZXRXb3JrbG9hZEFjY2Vzc1Rva2VuJyxcbiAgJ2JlZHJvY2stYWdlbnRjb3JlOkdldFdvcmtsb2FkQWNjZXNzVG9rZW5Gb3JKV1QnLFxuICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0V29ya2xvYWRBY2Nlc3NUb2tlbkZvclVzZXJJZCcsXG5dO1xuLyoqXG4gKiBDbG91ZFdhdGNoIG5hbWVzcGFjZSBmb3IgbWV0cmljc1xuICogVXNlZCBhcyBhIGNvbmRpdGlvbiBmb3IgQ2xvdWRXYXRjaCBtZXRyaWNzIHBlcm1pc3Npb25zXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGVxdWl2YWxlbnQgY29uc3RydWN0IGZyb20gYGF3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgUlVOVElNRV9DTE9VRFdBVENIX05BTUVTUEFDRSA9ICdiZWRyb2NrLWFnZW50Y29yZSc7XG4iXX0=
@@ -20,6 +20,7 @@ import type { Runtime } from './runtime';
20
20
  /**
21
21
  * Bedrock AgentCore runtime environment for code execution
22
22
  * Allowed values: PYTHON_3_10 | PYTHON_3_11 | PYTHON_3_12 | PYTHON_3_13 | PYTHON_3_14 | NODE_22
23
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
23
24
  */
24
25
  export declare enum AgentCoreRuntime {
25
26
  /**
@@ -49,6 +50,7 @@ export declare enum AgentCoreRuntime {
49
50
  }
50
51
  /**
51
52
  * Options for configuring an S3 code asset from local files for agent runtime artifact
53
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
52
54
  */
53
55
  export interface CodeAssetOptions extends s3_assets.AssetOptions {
54
56
  /**
@@ -67,6 +69,7 @@ export interface CodeAssetOptions extends s3_assets.AssetOptions {
67
69
  /**
68
70
  * Abstract base class for agent runtime artifacts.
69
71
  * Provides methods to reference container images from ECR repositories or local assets.
72
+ * @deprecated Use the equivalent construct from `aws-cdk-lib/aws-bedrockagentcore` instead.
70
73
  */
71
74
  export declare abstract class AgentRuntimeArtifact {
72
75
  /**