@aws-cdk/aws-bedrock-agentcore-alpha 2.221.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +4 -0
- package/.jsii +12000 -0
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +183 -0
- package/LICENSE +201 -0
- package/NOTICE +2 -0
- package/README.md +796 -0
- package/agentcore/index.d.ts +11 -0
- package/agentcore/index.js +36 -0
- package/agentcore/network/network-configuration.d.ts +152 -0
- package/agentcore/network/network-configuration.js +234 -0
- package/agentcore/runtime/perms.d.ts +67 -0
- package/agentcore/runtime/perms.js +101 -0
- package/agentcore/runtime/runtime-artifact.d.ts +42 -0
- package/agentcore/runtime/runtime-artifact.js +90 -0
- package/agentcore/runtime/runtime-authorizer-configuration.d.ts +62 -0
- package/agentcore/runtime/runtime-authorizer-configuration.js +165 -0
- package/agentcore/runtime/runtime-base.d.ts +309 -0
- package/agentcore/runtime/runtime-base.js +207 -0
- package/agentcore/runtime/runtime-endpoint-base.d.ts +130 -0
- package/agentcore/runtime/runtime-endpoint-base.js +31 -0
- package/agentcore/runtime/runtime-endpoint.d.ts +182 -0
- package/agentcore/runtime/runtime-endpoint.js +372 -0
- package/agentcore/runtime/runtime.d.ts +230 -0
- package/agentcore/runtime/runtime.js +590 -0
- package/agentcore/runtime/types.d.ts +16 -0
- package/agentcore/runtime/types.js +21 -0
- package/agentcore/runtime/validation-helpers.d.ts +37 -0
- package/agentcore/runtime/validation-helpers.js +85 -0
- package/agentcore/tools/browser.d.ts +519 -0
- package/agentcore/tools/browser.js +641 -0
- package/agentcore/tools/code-interpreter.d.ts +447 -0
- package/agentcore/tools/code-interpreter.js +553 -0
- package/agentcore/tools/perms.d.ts +74 -0
- package/agentcore/tools/perms.js +122 -0
- package/agentcore/tools/validation-helpers.d.ts +37 -0
- package/agentcore/tools/validation-helpers.js +85 -0
- package/jest.config.js +2 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +22 -0
- package/package.json +122 -0
- package/rosetta/_generated.ts-fixture +6 -0
- package/rosetta/default.ts-fixture +19 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
5
|
+
* with the License. A copy of the License is located at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
10
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
11
|
+
* and limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
import { IResource, Resource } from 'aws-cdk-lib';
|
|
14
|
+
import { DimensionsMap, Metric, MetricOptions } from 'aws-cdk-lib/aws-cloudwatch';
|
|
15
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
16
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
17
|
+
import { Construct } from 'constructs';
|
|
18
|
+
/******************************************************************************
|
|
19
|
+
* Interface
|
|
20
|
+
*****************************************************************************/
|
|
21
|
+
/**
|
|
22
|
+
* Interface for Agent Runtime resources
|
|
23
|
+
*/
|
|
24
|
+
export interface IBedrockAgentRuntime extends IResource, iam.IGrantable, ec2.IConnectable {
|
|
25
|
+
/**
|
|
26
|
+
* The ARN of the agent runtime resource
|
|
27
|
+
* - Format `arn:${Partition}:bedrock-agentcore:${Region}:${Account}:runtime/${RuntimeId}`
|
|
28
|
+
*
|
|
29
|
+
* @attribute
|
|
30
|
+
* @example "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/runtime-abc123"
|
|
31
|
+
*/
|
|
32
|
+
readonly agentRuntimeArn: string;
|
|
33
|
+
/**
|
|
34
|
+
* The ID of the agent runtime
|
|
35
|
+
* @attribute
|
|
36
|
+
* @example "runtime-abc123"
|
|
37
|
+
*/
|
|
38
|
+
readonly agentRuntimeId: string;
|
|
39
|
+
/**
|
|
40
|
+
* The name of the agent runtime
|
|
41
|
+
*/
|
|
42
|
+
readonly agentRuntimeName: string;
|
|
43
|
+
/**
|
|
44
|
+
* The IAM role that provides permissions for the agent runtime
|
|
45
|
+
*
|
|
46
|
+
*/
|
|
47
|
+
readonly role: iam.IRole;
|
|
48
|
+
/**
|
|
49
|
+
* The version of the agent runtime
|
|
50
|
+
* @attribute
|
|
51
|
+
*/
|
|
52
|
+
readonly agentRuntimeVersion?: string;
|
|
53
|
+
/**
|
|
54
|
+
* The current status of the agent runtime
|
|
55
|
+
*/
|
|
56
|
+
readonly agentStatus?: string;
|
|
57
|
+
/**
|
|
58
|
+
* The time at which the runtime was created
|
|
59
|
+
* @attribute
|
|
60
|
+
* @example "2024-01-15T10:30:00Z"
|
|
61
|
+
*/
|
|
62
|
+
readonly createdAt?: string;
|
|
63
|
+
/**
|
|
64
|
+
* The time at which the runtime was last updated
|
|
65
|
+
* @attribute
|
|
66
|
+
* @example "2024-01-15T14:45:00Z"
|
|
67
|
+
*/
|
|
68
|
+
readonly lastUpdatedAt?: string;
|
|
69
|
+
/**
|
|
70
|
+
* Return the given named metric for this agent runtime.
|
|
71
|
+
*/
|
|
72
|
+
metric(metricName: string, dimensions: DimensionsMap, props?: MetricOptions): Metric;
|
|
73
|
+
/**
|
|
74
|
+
* Return a metric containing the total number of invocations for this agent runtime.
|
|
75
|
+
*/
|
|
76
|
+
metricInvocations(props?: MetricOptions): Metric;
|
|
77
|
+
/**
|
|
78
|
+
* Return a metric containing the total number of invocations across all resources.
|
|
79
|
+
*/
|
|
80
|
+
metricInvocationsAggregated(props?: MetricOptions): Metric;
|
|
81
|
+
/**
|
|
82
|
+
* Return a metric containing the number of throttled requests for this agent runtime.
|
|
83
|
+
*/
|
|
84
|
+
metricThrottles(props?: MetricOptions): Metric;
|
|
85
|
+
/**
|
|
86
|
+
* Return a metric containing the number of system errors for this agent runtime.
|
|
87
|
+
*/
|
|
88
|
+
metricSystemErrors(props?: MetricOptions): Metric;
|
|
89
|
+
/**
|
|
90
|
+
* Return a metric containing the number of user errors for this agent runtime.
|
|
91
|
+
*/
|
|
92
|
+
metricUserErrors(props?: MetricOptions): Metric;
|
|
93
|
+
/**
|
|
94
|
+
* Return a metric measuring the latency of requests for this agent runtime.
|
|
95
|
+
*/
|
|
96
|
+
metricLatency(props?: MetricOptions): Metric;
|
|
97
|
+
/**
|
|
98
|
+
* Return a metric containing the total number of errors (system + user) for this agent runtime.
|
|
99
|
+
*/
|
|
100
|
+
metricTotalErrors(props?: MetricOptions): Metric;
|
|
101
|
+
/**
|
|
102
|
+
* Return a metric containing the number of agent sessions for this agent runtime.
|
|
103
|
+
*/
|
|
104
|
+
metricSessionCount(props?: MetricOptions): Metric;
|
|
105
|
+
/**
|
|
106
|
+
* Return a metric containing the total number of sessions across all resources.
|
|
107
|
+
*/
|
|
108
|
+
metricSessionsAggregated(props?: MetricOptions): Metric;
|
|
109
|
+
/**
|
|
110
|
+
* Grant the runtime specific actions on AWS resources
|
|
111
|
+
*
|
|
112
|
+
* @param actions The actions to grant
|
|
113
|
+
* @param resources The resource ARNs to grant access to
|
|
114
|
+
* @returns The Grant object for chaining
|
|
115
|
+
*/
|
|
116
|
+
grant(actions: string[], resources: string[]): iam.Grant;
|
|
117
|
+
/**
|
|
118
|
+
* Adds a policy statement to the runtime's execution role
|
|
119
|
+
*
|
|
120
|
+
* @param statement The IAM policy statement to add
|
|
121
|
+
* @returns The runtime instance for chaining
|
|
122
|
+
*/
|
|
123
|
+
addToRolePolicy(statement: iam.PolicyStatement): IBedrockAgentRuntime;
|
|
124
|
+
/**
|
|
125
|
+
* Permits an IAM principal to invoke this runtime
|
|
126
|
+
* Grants the bedrock-agentcore:InvokeAgentRuntime permission
|
|
127
|
+
* @param grantee The principal to grant access to
|
|
128
|
+
*/
|
|
129
|
+
grantInvokeRuntime(grantee: iam.IGrantable): iam.Grant;
|
|
130
|
+
/**
|
|
131
|
+
* Permits an IAM principal to invoke this runtime on behalf of a user
|
|
132
|
+
* Grants the bedrock-agentcore:InvokeAgentRuntimeForUser permission
|
|
133
|
+
* Required when using the X-Amzn-Bedrock-AgentCore-Runtime-User-Id header
|
|
134
|
+
* @param grantee The principal to grant access to
|
|
135
|
+
*/
|
|
136
|
+
grantInvokeRuntimeForUser(grantee: iam.IGrantable): iam.Grant;
|
|
137
|
+
/**
|
|
138
|
+
* Permits an IAM principal to invoke this runtime both directly and on behalf of users
|
|
139
|
+
* Grants both bedrock-agentcore:InvokeAgentRuntime and bedrock-agentcore:InvokeAgentRuntimeForUser permissions
|
|
140
|
+
* @param grantee The principal to grant access to
|
|
141
|
+
*/
|
|
142
|
+
grantInvoke(grantee: iam.IGrantable): iam.Grant;
|
|
143
|
+
}
|
|
144
|
+
/******************************************************************************
|
|
145
|
+
* Base Class
|
|
146
|
+
*****************************************************************************/
|
|
147
|
+
/**
|
|
148
|
+
* Base class for Agent Runtime
|
|
149
|
+
*/
|
|
150
|
+
export declare abstract class RuntimeBase extends Resource implements IBedrockAgentRuntime {
|
|
151
|
+
abstract readonly agentRuntimeArn: string;
|
|
152
|
+
abstract readonly agentRuntimeId: string;
|
|
153
|
+
abstract readonly agentRuntimeName: string;
|
|
154
|
+
abstract readonly role: iam.IRole;
|
|
155
|
+
abstract readonly agentRuntimeVersion?: string;
|
|
156
|
+
abstract readonly agentStatus?: string;
|
|
157
|
+
abstract readonly createdAt?: string;
|
|
158
|
+
abstract readonly lastUpdatedAt?: string;
|
|
159
|
+
abstract readonly grantPrincipal: iam.IPrincipal;
|
|
160
|
+
/**
|
|
161
|
+
* An accessor for the Connections object that will fail if this Runtime does not have a VPC
|
|
162
|
+
* configured.
|
|
163
|
+
*/
|
|
164
|
+
get connections(): ec2.Connections;
|
|
165
|
+
/**
|
|
166
|
+
* The actual Connections object for this Runtime. This may be unset in the event that a VPC has not
|
|
167
|
+
* been configured.
|
|
168
|
+
* @internal
|
|
169
|
+
*/
|
|
170
|
+
protected _connections: ec2.Connections | undefined;
|
|
171
|
+
constructor(scope: Construct, id: string);
|
|
172
|
+
/**
|
|
173
|
+
* Grant the runtime specific actions on AWS resources
|
|
174
|
+
*
|
|
175
|
+
* @param actions The actions to grant
|
|
176
|
+
* @param resources The resource ARNs to grant access to
|
|
177
|
+
* @returns The Grant object for chaining
|
|
178
|
+
*/
|
|
179
|
+
grant(actions: string[], resources: string[]): iam.Grant;
|
|
180
|
+
/**
|
|
181
|
+
* Adds a policy statement to the runtime's execution role
|
|
182
|
+
*
|
|
183
|
+
* @param statement The IAM policy statement to add
|
|
184
|
+
* @returns The runtime instance for chaining
|
|
185
|
+
*/
|
|
186
|
+
addToRolePolicy(statement: iam.PolicyStatement): IBedrockAgentRuntime;
|
|
187
|
+
/**
|
|
188
|
+
* Permits an IAM principal to invoke this runtime
|
|
189
|
+
* Grants the bedrock-agentcore:InvokeAgentRuntime permission
|
|
190
|
+
* @param grantee The principal to grant access to
|
|
191
|
+
*/
|
|
192
|
+
grantInvokeRuntime(grantee: iam.IGrantable): iam.Grant;
|
|
193
|
+
/**
|
|
194
|
+
* Permits an IAM principal to invoke this runtime on behalf of a user
|
|
195
|
+
* Grants the bedrock-agentcore:InvokeAgentRuntimeForUser permission
|
|
196
|
+
* Required when using the X-Amzn-Bedrock-AgentCore-Runtime-User-Id header
|
|
197
|
+
* @param grantee The principal to grant access to
|
|
198
|
+
*/
|
|
199
|
+
grantInvokeRuntimeForUser(grantee: iam.IGrantable): iam.Grant;
|
|
200
|
+
/**
|
|
201
|
+
* Permits an IAM principal to invoke this runtime both directly and on behalf of users
|
|
202
|
+
* Grants both bedrock-agentcore:InvokeAgentRuntime and bedrock-agentcore:InvokeAgentRuntimeForUser permissions
|
|
203
|
+
* @param grantee The principal to grant access to
|
|
204
|
+
*/
|
|
205
|
+
grantInvoke(grantee: iam.IGrantable): iam.Grant;
|
|
206
|
+
/**
|
|
207
|
+
* Return the given named metric for this agent runtime.
|
|
208
|
+
*
|
|
209
|
+
* By default, the metric will be calculated as a sum over a period of 5 minutes.
|
|
210
|
+
* You can customize this by using the `statistic` and `period` properties.
|
|
211
|
+
*/
|
|
212
|
+
metric(metricName: string, dimensions: DimensionsMap, props?: MetricOptions): Metric;
|
|
213
|
+
/**
|
|
214
|
+
* Return a metric containing the total number of invocations for this agent runtime.
|
|
215
|
+
*/
|
|
216
|
+
metricInvocations(props?: MetricOptions): Metric;
|
|
217
|
+
/**
|
|
218
|
+
* Return a metric containing the total number of invocations across all resources.
|
|
219
|
+
*/
|
|
220
|
+
metricInvocationsAggregated(props?: MetricOptions): Metric;
|
|
221
|
+
/**
|
|
222
|
+
* Return a metric containing the number of throttled requests for this agent runtime.
|
|
223
|
+
*/
|
|
224
|
+
metricThrottles(props?: MetricOptions): Metric;
|
|
225
|
+
/**
|
|
226
|
+
* Return a metric containing the number of system errors for this agent runtime.
|
|
227
|
+
*/
|
|
228
|
+
metricSystemErrors(props?: MetricOptions): Metric;
|
|
229
|
+
/**
|
|
230
|
+
* Return a metric containing the number of user errors for this agent runtime.
|
|
231
|
+
*/
|
|
232
|
+
metricUserErrors(props?: MetricOptions): Metric;
|
|
233
|
+
/**
|
|
234
|
+
* Return a metric measuring the latency of requests for this agent runtime.
|
|
235
|
+
*
|
|
236
|
+
* The latency metric represents the total time elapsed between receiving the request
|
|
237
|
+
* and sending the final response token, representing complete end-to-end processing time.
|
|
238
|
+
*/
|
|
239
|
+
metricLatency(props?: MetricOptions): Metric;
|
|
240
|
+
/**
|
|
241
|
+
* Return a metric containing the total number of errors (system + user) for this agent runtime.
|
|
242
|
+
*/
|
|
243
|
+
metricTotalErrors(props?: MetricOptions): Metric;
|
|
244
|
+
/**
|
|
245
|
+
* Return a metric containing the number of agent sessions for this agent runtime.
|
|
246
|
+
*/
|
|
247
|
+
metricSessionCount(props?: MetricOptions): Metric;
|
|
248
|
+
/**
|
|
249
|
+
* Return a metric containing the total number of sessions across all resources.
|
|
250
|
+
*/
|
|
251
|
+
metricSessionsAggregated(props?: MetricOptions): Metric;
|
|
252
|
+
/**
|
|
253
|
+
* Internal method to create a metric.
|
|
254
|
+
*/
|
|
255
|
+
private configureMetric;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Attributes for importing an existing Agent Runtime
|
|
259
|
+
*/
|
|
260
|
+
export interface AgentRuntimeAttributes {
|
|
261
|
+
/**
|
|
262
|
+
* The ARN of the agent runtime
|
|
263
|
+
*/
|
|
264
|
+
readonly agentRuntimeArn: string;
|
|
265
|
+
/**
|
|
266
|
+
* The ID of the agent runtime
|
|
267
|
+
*/
|
|
268
|
+
readonly agentRuntimeId: string;
|
|
269
|
+
/**
|
|
270
|
+
* The name of the agent runtime
|
|
271
|
+
*/
|
|
272
|
+
readonly agentRuntimeName: string;
|
|
273
|
+
/**
|
|
274
|
+
* The IAM role ARN
|
|
275
|
+
*/
|
|
276
|
+
readonly roleArn: string;
|
|
277
|
+
/**
|
|
278
|
+
* The version of the agent runtime
|
|
279
|
+
* When importing a runtime and this is not specified or undefined, endpoints created on this runtime
|
|
280
|
+
* will point to version "1" unless explicitly overridden.
|
|
281
|
+
* @default - undefined
|
|
282
|
+
*/
|
|
283
|
+
readonly agentRuntimeVersion?: string;
|
|
284
|
+
/**
|
|
285
|
+
* The description of the agent runtime
|
|
286
|
+
* @default - No description
|
|
287
|
+
*/
|
|
288
|
+
readonly description?: string;
|
|
289
|
+
/**
|
|
290
|
+
* The security groups for this runtime, if in a VPC.
|
|
291
|
+
* @default - By default, the runtime is not in a VPC.
|
|
292
|
+
*/
|
|
293
|
+
readonly securityGroups?: ec2.ISecurityGroup[];
|
|
294
|
+
/**
|
|
295
|
+
* The current status of the agent runtime
|
|
296
|
+
* @default - Status not available
|
|
297
|
+
*/
|
|
298
|
+
readonly agentStatus?: string;
|
|
299
|
+
/**
|
|
300
|
+
* The time at which the runtime was created
|
|
301
|
+
* @default - Creation time not available
|
|
302
|
+
*/
|
|
303
|
+
readonly createdAt?: string;
|
|
304
|
+
/**
|
|
305
|
+
* The time at which the runtime was last updated
|
|
306
|
+
* @default - Last update time not available
|
|
307
|
+
*/
|
|
308
|
+
readonly lastUpdatedAt?: string;
|
|
309
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RuntimeBase = void 0;
|
|
4
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
9
|
+
* with the License. A copy of the License is located at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
14
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
15
|
+
* and limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
18
|
+
const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
|
|
19
|
+
const iam = require("aws-cdk-lib/aws-iam");
|
|
20
|
+
const perms_1 = require("./perms");
|
|
21
|
+
const validation_helpers_1 = require("./validation-helpers");
|
|
22
|
+
/******************************************************************************
|
|
23
|
+
* Base Class
|
|
24
|
+
*****************************************************************************/
|
|
25
|
+
/**
|
|
26
|
+
* Base class for Agent Runtime
|
|
27
|
+
*/
|
|
28
|
+
class RuntimeBase extends aws_cdk_lib_1.Resource {
|
|
29
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeBase", version: "2.221.0-alpha.0" };
|
|
30
|
+
/**
|
|
31
|
+
* An accessor for the Connections object that will fail if this Runtime does not have a VPC
|
|
32
|
+
* configured.
|
|
33
|
+
*/
|
|
34
|
+
get connections() {
|
|
35
|
+
if (!this._connections) {
|
|
36
|
+
throw new validation_helpers_1.ValidationError('Cannot manage network access without configuring a VPC');
|
|
37
|
+
}
|
|
38
|
+
return this._connections;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The actual Connections object for this Runtime. This may be unset in the event that a VPC has not
|
|
42
|
+
* been configured.
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
_connections;
|
|
46
|
+
constructor(scope, id) {
|
|
47
|
+
super(scope, id);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Grant the runtime specific actions on AWS resources
|
|
51
|
+
*
|
|
52
|
+
* @param actions The actions to grant
|
|
53
|
+
* @param resources The resource ARNs to grant access to
|
|
54
|
+
* @returns The Grant object for chaining
|
|
55
|
+
*/
|
|
56
|
+
grant(actions, resources) {
|
|
57
|
+
return iam.Grant.addToPrincipal({
|
|
58
|
+
grantee: this.role,
|
|
59
|
+
actions,
|
|
60
|
+
resourceArns: resources,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Adds a policy statement to the runtime's execution role
|
|
65
|
+
*
|
|
66
|
+
* @param statement The IAM policy statement to add
|
|
67
|
+
* @returns The runtime instance for chaining
|
|
68
|
+
*/
|
|
69
|
+
addToRolePolicy(statement) {
|
|
70
|
+
// Check if role is a concrete Role instance
|
|
71
|
+
if (this.role instanceof iam.Role) {
|
|
72
|
+
this.role.addToPolicy(statement);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// For imported roles (IRole), we need to attach via a new policy
|
|
76
|
+
const policy = new iam.Policy(this, `CustomPolicy${Date.now()}`, {
|
|
77
|
+
statements: [statement],
|
|
78
|
+
});
|
|
79
|
+
this.role.attachInlinePolicy(policy);
|
|
80
|
+
}
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Permits an IAM principal to invoke this runtime
|
|
85
|
+
* Grants the bedrock-agentcore:InvokeAgentRuntime permission
|
|
86
|
+
* @param grantee The principal to grant access to
|
|
87
|
+
*/
|
|
88
|
+
grantInvokeRuntime(grantee) {
|
|
89
|
+
return iam.Grant.addToPrincipal({
|
|
90
|
+
grantee,
|
|
91
|
+
actions: perms_1.RUNTIME_INVOKE_PERMS,
|
|
92
|
+
resourceArns: [this.agentRuntimeArn],
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Permits an IAM principal to invoke this runtime on behalf of a user
|
|
97
|
+
* Grants the bedrock-agentcore:InvokeAgentRuntimeForUser permission
|
|
98
|
+
* Required when using the X-Amzn-Bedrock-AgentCore-Runtime-User-Id header
|
|
99
|
+
* @param grantee The principal to grant access to
|
|
100
|
+
*/
|
|
101
|
+
grantInvokeRuntimeForUser(grantee) {
|
|
102
|
+
return iam.Grant.addToPrincipal({
|
|
103
|
+
grantee,
|
|
104
|
+
actions: perms_1.RUNTIME_INVOKE_USER_PERMS,
|
|
105
|
+
resourceArns: [this.agentRuntimeArn],
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Permits an IAM principal to invoke this runtime both directly and on behalf of users
|
|
110
|
+
* Grants both bedrock-agentcore:InvokeAgentRuntime and bedrock-agentcore:InvokeAgentRuntimeForUser permissions
|
|
111
|
+
* @param grantee The principal to grant access to
|
|
112
|
+
*/
|
|
113
|
+
grantInvoke(grantee) {
|
|
114
|
+
return iam.Grant.addToPrincipal({
|
|
115
|
+
grantee,
|
|
116
|
+
actions: [...perms_1.RUNTIME_INVOKE_PERMS, ...perms_1.RUNTIME_INVOKE_USER_PERMS],
|
|
117
|
+
resourceArns: [this.agentRuntimeArn],
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
// ------------------------------------------------------
|
|
121
|
+
// Metrics
|
|
122
|
+
// ------------------------------------------------------
|
|
123
|
+
/**
|
|
124
|
+
* Return the given named metric for this agent runtime.
|
|
125
|
+
*
|
|
126
|
+
* By default, the metric will be calculated as a sum over a period of 5 minutes.
|
|
127
|
+
* You can customize this by using the `statistic` and `period` properties.
|
|
128
|
+
*/
|
|
129
|
+
metric(metricName, dimensions, props) {
|
|
130
|
+
const metricProps = {
|
|
131
|
+
namespace: 'AWS/Bedrock-AgentCore',
|
|
132
|
+
metricName,
|
|
133
|
+
dimensionsMap: { ...dimensions, Resource: this.agentRuntimeArn },
|
|
134
|
+
...props,
|
|
135
|
+
};
|
|
136
|
+
return this.configureMetric(metricProps);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Return a metric containing the total number of invocations for this agent runtime.
|
|
140
|
+
*/
|
|
141
|
+
metricInvocations(props) {
|
|
142
|
+
return this.metric('Invocations', {}, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Return a metric containing the total number of invocations across all resources.
|
|
146
|
+
*/
|
|
147
|
+
metricInvocationsAggregated(props) {
|
|
148
|
+
return this.metric('Invocations', { Resource: 'All' }, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Return a metric containing the number of throttled requests for this agent runtime.
|
|
152
|
+
*/
|
|
153
|
+
metricThrottles(props) {
|
|
154
|
+
return this.metric('Throttles', {}, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Return a metric containing the number of system errors for this agent runtime.
|
|
158
|
+
*/
|
|
159
|
+
metricSystemErrors(props) {
|
|
160
|
+
return this.metric('SystemErrors', {}, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Return a metric containing the number of user errors for this agent runtime.
|
|
164
|
+
*/
|
|
165
|
+
metricUserErrors(props) {
|
|
166
|
+
return this.metric('UserErrors', {}, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Return a metric measuring the latency of requests for this agent runtime.
|
|
170
|
+
*
|
|
171
|
+
* The latency metric represents the total time elapsed between receiving the request
|
|
172
|
+
* and sending the final response token, representing complete end-to-end processing time.
|
|
173
|
+
*/
|
|
174
|
+
metricLatency(props) {
|
|
175
|
+
return this.metric('Latency', {}, { statistic: aws_cloudwatch_1.Stats.AVERAGE, ...props });
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Return a metric containing the total number of errors (system + user) for this agent runtime.
|
|
179
|
+
*/
|
|
180
|
+
metricTotalErrors(props) {
|
|
181
|
+
return this.metric('TotalErrors', {}, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Return a metric containing the number of agent sessions for this agent runtime.
|
|
185
|
+
*/
|
|
186
|
+
metricSessionCount(props) {
|
|
187
|
+
return this.metric('SessionCount', {}, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Return a metric containing the total number of sessions across all resources.
|
|
191
|
+
*/
|
|
192
|
+
metricSessionsAggregated(props) {
|
|
193
|
+
return this.metric('Sessions', { Resource: 'All' }, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Internal method to create a metric.
|
|
197
|
+
*/
|
|
198
|
+
configureMetric(props) {
|
|
199
|
+
return new aws_cloudwatch_1.Metric({
|
|
200
|
+
...props,
|
|
201
|
+
region: props?.region ?? this.stack.region,
|
|
202
|
+
account: props?.account ?? this.stack.account,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
exports.RuntimeBase = RuntimeBase;
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicnVudGltZS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUVILDZDQUFrRDtBQUNsRCwrREFNb0M7QUFFcEMsMkNBQTJDO0FBRTNDLG1DQUEwRTtBQUMxRSw2REFBdUQ7QUErSnZEOzsrRUFFK0U7QUFFL0U7O0dBRUc7QUFDSCxNQUFzQixXQUFZLFNBQVEsc0JBQVE7O0lBWWhEOzs7T0FHRztJQUNILElBQVcsV0FBVztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxvQ0FBZSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztLQUMxQjtJQUVEOzs7O09BSUc7SUFDTyxZQUFZLENBQThCO0lBRXBELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDbEI7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsT0FBaUIsRUFBRSxTQUFtQjtRQUNqRCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNsQixPQUFPO1lBQ1AsWUFBWSxFQUFFLFNBQVM7U0FDeEIsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7Ozs7T0FLRztJQUNJLGVBQWUsQ0FBQyxTQUE4QjtRQUNuRCw0Q0FBNEM7UUFDNUMsSUFBSSxJQUFJLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuQyxDQUFDO2FBQU0sQ0FBQztZQUNOLGlFQUFpRTtZQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdB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ICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IElSZXNvdXJjZSwgUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBEaW1lbnNpb25zTWFwLFxuICBNZXRyaWMsXG4gIE1ldHJpY09wdGlvbnMsXG4gIE1ldHJpY1Byb3BzLFxuICBTdGF0cyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBSVU5USU1FX0lOVk9LRV9QRVJNUywgUlVOVElNRV9JTlZPS0VfVVNFUl9QRVJNUyB9IGZyb20gJy4vcGVybXMnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBBZ2VudCBSdW50aW1lIHJlc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElCZWRyb2NrQWdlbnRSdW50aW1lIGV4dGVuZHMgSVJlc291cmNlLCBpYW0uSUdyYW50YWJsZSwgZWMyLklDb25uZWN0YWJsZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBhZ2VudCBydW50aW1lIHJlc291cmNlXG4gICAqIC0gRm9ybWF0IGBhcm46JHtQYXJ0aXRpb259OmJlZHJvY2stYWdlbnRjb3JlOiR7UmVnaW9ufToke0FjY291bnR9OnJ1bnRpbWUvJHtSdW50aW1lSWR9YFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqIEBleGFtcGxlIFwiYXJuOmF3czpiZWRyb2NrLWFnZW50Y29yZTp1cy13ZXN0LTI6MTIzNDU2Nzg5MDEyOnJ1bnRpbWUvcnVudGltZS1hYmMxMjNcIlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYWdlbnQgcnVudGltZVxuICAgKiBAYXR0cmlidXRlXG4gICAqIEBleGFtcGxlIFwicnVudGltZS1hYmMxMjNcIlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFnZW50IHJ1bnRpbWVcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50UnVudGltZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIHRoYXQgcHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIHRoZSBhZ2VudCBydW50aW1lXG4gICAqXG4gICAqL1xuICByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50UnVudGltZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgYWdlbnQgcnVudGltZVxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRTdGF0dXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGF0IHdoaWNoIHRoZSBydW50aW1lIHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQGV4YW1wbGUgXCIyMDI0LTAxLTE1VDEwOjMwOjAwWlwiXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGF0IHdoaWNoIHRoZSBydW50aW1lIHdhcyBsYXN0IHVwZGF0ZWRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAZXhhbXBsZSBcIjIwMjQtMDEtMTVUMTQ6NDU6MDBaXCJcbiAgICovXG4gIHJlYWRvbmx5IGxhc3RVcGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIE1ldHJpY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljKG1ldHJpY05hbWU6IHN0cmluZywgZGltZW5zaW9uczogRGltZW5zaW9uc01hcCwgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGludm9jYXRpb25zIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBtZXRyaWNJbnZvY2F0aW9ucyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgaW52b2NhdGlvbnMgYWNyb3NzIGFsbCByZXNvdXJjZXMuXG4gICAqL1xuICBtZXRyaWNJbnZvY2F0aW9uc0FnZ3JlZ2F0ZWQocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHRocm90dGxlZCByZXF1ZXN0cyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljVGhyb3R0bGVzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBzeXN0ZW0gZXJyb3JzIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBtZXRyaWNTeXN0ZW1FcnJvcnMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHVzZXIgZXJyb3JzIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBtZXRyaWNVc2VyRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgbGF0ZW5jeSBvZiByZXF1ZXN0cyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljTGF0ZW5jeShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgZXJyb3JzIChzeXN0ZW0gKyB1c2VyKSBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljVG90YWxFcnJvcnMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGFnZW50IHNlc3Npb25zIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBtZXRyaWNTZXNzaW9uQ291bnQocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIHNlc3Npb25zIGFjcm9zcyBhbGwgcmVzb3VyY2VzLlxuICAgKi9cbiAgbWV0cmljU2Vzc2lvbnNBZ2dyZWdhdGVkKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gR3JhbnQgTWV0aG9kc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogR3JhbnQgdGhlIHJ1bnRpbWUgc3BlY2lmaWMgYWN0aW9ucyBvbiBBV1MgcmVzb3VyY2VzXG4gICAqXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBhY3Rpb25zIHRvIGdyYW50XG4gICAqIEBwYXJhbSByZXNvdXJjZXMgVGhlIHJlc291cmNlIEFSTnMgdG8gZ3JhbnQgYWNjZXNzIHRvXG4gICAqIEByZXR1cm5zIFRoZSBHcmFudCBvYmplY3QgZm9yIGNoYWluaW5nXG4gICAqL1xuICBncmFudChhY3Rpb25zOiBzdHJpbmdbXSwgcmVzb3VyY2VzOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogQWRkcyBhIHBvbGljeSBzdGF0ZW1lbnQgdG8gdGhlIHJ1bnRpbWUncyBleGVjdXRpb24gcm9sZVxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IFRoZSBJQU0gcG9saWN5IHN0YXRlbWVudCB0byBhZGRcbiAgICogQHJldHVybnMgVGhlIHJ1bnRpbWUgaW5zdGFuY2UgZm9yIGNoYWluaW5nXG4gICAqL1xuICBhZGRUb1JvbGVQb2xpY3koc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50KTogSUJlZHJvY2tBZ2VudFJ1bnRpbWU7XG5cbiAgLyoqXG4gICAqIFBlcm1pdHMgYW4gSUFNIHByaW5jaXBhbCB0byBpbnZva2UgdGhpcyBydW50aW1lXG4gICAqIEdyYW50cyB0aGUgYmVkcm9jay1hZ2VudGNvcmU6SW52b2tlQWdlbnRSdW50aW1lIHBlcm1pc3Npb25cbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbCB0byBncmFudCBhY2Nlc3MgdG9cbiAgICovXG4gIGdyYW50SW52b2tlUnVudGltZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogUGVybWl0cyBhbiBJQU0gcHJpbmNpcGFsIHRvIGludm9rZSB0aGlzIHJ1bnRpbWUgb24gYmVoYWxmIG9mIGEgdXNlclxuICAgKiBHcmFudHMgdGhlIGJlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZUZvclVzZXIgcGVybWlzc2lvblxuICAgKiBSZXF1aXJlZCB3aGVuIHVzaW5nIHRoZSBYLUFtem4tQmVkcm9jay1BZ2VudENvcmUtUnVudGltZS1Vc2VyLUlkIGhlYWRlclxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IGFjY2VzcyB0b1xuICAgKi9cbiAgZ3JhbnRJbnZva2VSdW50aW1lRm9yVXNlcihncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogUGVybWl0cyBhbiBJQU0gcHJpbmNpcGFsIHRvIGludm9rZSB0aGlzIHJ1bnRpbWUgYm90aCBkaXJlY3RseSBhbmQgb24gYmVoYWxmIG9mIHVzZXJzXG4gICAqIEdyYW50cyBib3RoIGJlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZSBhbmQgYmVkcm9jay1hZ2VudGNvcmU6SW52b2tlQWdlbnRSdW50aW1lRm9yVXNlciBwZXJtaXNzaW9uc1xuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IGFjY2VzcyB0b1xuICAgKi9cbiAgZ3JhbnRJbnZva2UoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgQWdlbnQgUnVudGltZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUnVudGltZUJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElCZWRyb2NrQWdlbnRSdW50aW1lIHtcbiAgLy8gQWJzdHJhY3QgcHJvcGVydGllc1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWdlbnRSdW50aW1lQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhZ2VudFJ1bnRpbWVJZDogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWdlbnRSdW50aW1lTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWdlbnRSdW50aW1lVmVyc2lvbj86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFnZW50U3RhdHVzPzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgbGFzdFVwZGF0ZWRBdD86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsOiBpYW0uSVByaW5jaXBhbDtcblxuICAvKipcbiAgICogQW4gYWNjZXNzb3IgZm9yIHRoZSBDb25uZWN0aW9ucyBvYmplY3QgdGhhdCB3aWxsIGZhaWwgaWYgdGhpcyBSdW50aW1lIGRvZXMgbm90IGhhdmUgYSBWUENcbiAgICogY29uZmlndXJlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgY29ubmVjdGlvbnMoKTogZWMyLkNvbm5lY3Rpb25zIHtcbiAgICBpZiAoIXRoaXMuX2Nvbm5lY3Rpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdDYW5ub3QgbWFuYWdlIG5ldHdvcmsgYWNjZXNzIHdpdGhvdXQgY29uZmlndXJpbmcgYSBWUEMnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhY3R1YWwgQ29ubmVjdGlvbnMgb2JqZWN0IGZvciB0aGlzIFJ1bnRpbWUuIFRoaXMgbWF5IGJlIHVuc2V0IGluIHRoZSBldmVudCB0aGF0IGEgVlBDIGhhcyBub3RcbiAgICogYmVlbiBjb25maWd1cmVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBfY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgcnVudGltZSBzcGVjaWZpYyBhY3Rpb25zIG9uIEFXUyByZXNvdXJjZXNcbiAgICpcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGFjdGlvbnMgdG8gZ3JhbnRcbiAgICogQHBhcmFtIHJlc291cmNlcyBUaGUgcmVzb3VyY2UgQVJOcyB0byBncmFudCBhY2Nlc3MgdG9cbiAgICogQHJldHVybnMgVGhlIEdyYW50IG9iamVjdCBmb3IgY2hhaW5pbmdcbiAgICovXG4gIHB1YmxpYyBncmFudChhY3Rpb25zOiBzdHJpbmdbXSwgcmVzb3VyY2VzOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiB0aGlzLnJvbGUsXG4gICAgICBhY3Rpb25zLFxuICAgICAgcmVzb3VyY2VBcm5zOiByZXNvdXJjZXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHBvbGljeSBzdGF0ZW1lbnQgdG8gdGhlIHJ1bnRpbWUncyBleGVjdXRpb24gcm9sZVxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IFRoZSBJQU0gcG9saWN5IHN0YXRlbWVudCB0byBhZGRcbiAgICogQHJldHVybnMgVGhlIHJ1bnRpbWUgaW5zdGFuY2UgZm9yIGNoYWluaW5nXG4gICAqL1xuICBwdWJsaWMgYWRkVG9Sb2xlUG9saWN5KHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCk6IElCZWRyb2NrQWdlbnRSdW50aW1lIHtcbiAgICAvLyBDaGVjayBpZiByb2xlIGlzIGEgY29uY3JldGUgUm9sZSBpbnN0YW5jZVxuICAgIGlmICh0aGlzLnJvbGUgaW5zdGFuY2VvZiBpYW0uUm9sZSkge1xuICAgICAgdGhpcy5yb2xlLmFkZFRvUG9saWN5KHN0YXRlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBpbXBvcnRlZCByb2xlcyAoSVJvbGUpLCB3ZSBuZWVkIHRvIGF0dGFjaCB2aWEgYSBuZXcgcG9saWN5XG4gICAgICBjb25zdCBwb2xpY3kgPSBuZXcgaWFtLlBvbGljeSh0aGlzLCBgQ3VzdG9tUG9saWN5JHtEYXRlLm5vdygpfWAsIHtcbiAgICAgICAgc3RhdGVtZW50czogW3N0YXRlbWVudF0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMucm9sZS5hdHRhY2hJbmxpbmVQb2xpY3kocG9saWN5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUGVybWl0cyBhbiBJQU0gcHJpbmNpcGFsIHRvIGludm9rZSB0aGlzIHJ1bnRpbWVcbiAgICogR3JhbnRzIHRoZSBiZWRyb2NrLWFnZW50Y29yZTpJbnZva2VBZ2VudFJ1bnRpbWUgcGVybWlzc2lvblxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IGFjY2VzcyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50SW52b2tlUnVudGltZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9uczogUlVOVElNRV9JTlZPS0VfUEVSTVMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmFnZW50UnVudGltZUFybl0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGVybWl0cyBhbiBJQU0gcHJpbmNpcGFsIHRvIGludm9rZSB0aGlzIHJ1bnRpbWUgb24gYmVoYWxmIG9mIGEgdXNlclxuICAgKiBHcmFudHMgdGhlIGJlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZUZvclVzZXIgcGVybWlzc2lvblxuICAgKiBSZXF1aXJlZCB3aGVuIHVzaW5nIHRoZSBYLUFtem4tQmVkcm9jay1BZ2VudENvcmUtUnVudGltZS1Vc2VyLUlkIGhlYWRlclxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IGFjY2VzcyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50SW52b2tlUnVudGltZUZvclVzZXIoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnM6IFJVTlRJTUVfSU5WT0tFX1VTRVJfUEVSTVMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmFnZW50UnVudGltZUFybl0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGVybWl0cyBhbiBJQU0gcHJpbmNpcGFsIHRvIGludm9rZSB0aGlzIHJ1bnRpbWUgYm90aCBkaXJlY3RseSBhbmQgb24gYmVoYWxmIG9mIHVzZXJzXG4gICAqIEdyYW50cyBib3RoIGJlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZSBhbmQgYmVkcm9jay1hZ2VudGNvcmU6SW52b2tlQWdlbnRSdW50aW1lRm9yVXNlciBwZXJtaXNzaW9uc1xuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IGFjY2VzcyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50SW52b2tlKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiBbLi4uUlVOVElNRV9JTlZPS0VfUEVSTVMsIC4uLlJVTlRJTUVfSU5WT0tFX1VTRVJfUEVSTVNdLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5hZ2VudFJ1bnRpbWVBcm5dLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIE1ldHJpY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgbWV0cmljIHdpbGwgYmUgY2FsY3VsYXRlZCBhcyBhIHN1bSBvdmVyIGEgcGVyaW9kIG9mIDUgbWludXRlcy5cbiAgICogWW91IGNhbiBjdXN0b21pemUgdGhpcyBieSB1c2luZyB0aGUgYHN0YXRpc3RpY2AgYW5kIGBwZXJpb2RgIHByb3BlcnRpZXMuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljKG1ldHJpY05hbWU6IHN0cmluZywgZGltZW5zaW9uczogRGltZW5zaW9uc01hcCwgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICBjb25zdCBtZXRyaWNQcm9wczogTWV0cmljUHJvcHMgPSB7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvQmVkcm9jay1BZ2VudENvcmUnLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgLi4uZGltZW5zaW9ucywgUmVzb3VyY2U6IHRoaXMuYWdlbnRSdW50aW1lQXJuIH0sXG4gICAgICAuLi5wcm9wcyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZU1ldHJpYyhtZXRyaWNQcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBpbnZvY2F0aW9ucyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0ludm9jYXRpb25zKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdJbnZvY2F0aW9ucycsIHt9LCB7IHN0YXRpc3RpYzogU3RhdHMuU1VNLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGludm9jYXRpb25zIGFjcm9zcyBhbGwgcmVzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0ludm9jYXRpb25zQWdncmVnYXRlZChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnSW52b2NhdGlvbnMnLCB7IFJlc291cmNlOiAnQWxsJyB9LCB7IHN0YXRpc3RpYzogU3RhdHMuU1VNLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHRocm90dGxlZCByZXF1ZXN0cyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1Rocm90dGxlcyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnVGhyb3R0bGVzJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2Ygc3lzdGVtIGVycm9ycyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1N5c3RlbUVycm9ycyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnU3lzdGVtRXJyb3JzJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgdXNlciBlcnJvcnMgZm9yIHRoaXMgYWdlbnQgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNVc2VyRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdVc2VyRXJyb3JzJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBtZWFzdXJpbmcgdGhlIGxhdGVuY3kgb2YgcmVxdWVzdHMgZm9yIHRoaXMgYWdlbnQgcnVudGltZS5cbiAgICpcbiAgICogVGhlIGxhdGVuY3kgbWV0cmljIHJlcHJlc2VudHMgdGhlIHRvdGFsIHRpbWUgZWxhcHNlZCBiZXR3ZWVuIHJlY2VpdmluZyB0aGUgcmVxdWVzdFxuICAgKiBhbmQgc2VuZGluZyB0aGUgZmluYWwgcmVzcG9uc2UgdG9rZW4sIHJlcHJlc2VudGluZyBjb21wbGV0ZSBlbmQtdG8tZW5kIHByb2Nlc3NpbmcgdGltZS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNMYXRlbmN5KHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdMYXRlbmN5Jywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5BVkVSQUdFLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGVycm9ycyAoc3lzdGVtICsgdXNlcikgZm9yIHRoaXMgYWdlbnQgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNUb3RhbEVycm9ycyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnVG90YWxFcnJvcnMnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBhZ2VudCBzZXNzaW9ucyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1Nlc3Npb25Db3VudChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnU2Vzc2lvbkNvdW50Jywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2Vzc2lvbnMgYWNyb3NzIGFsbCByZXNvdXJjZXMuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljU2Vzc2lvbnNBZ2dyZWdhdGVkKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdTZXNzaW9ucycsIHsgUmVzb3VyY2U6ICdBbGwnIH0sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIG1ldGhvZCB0byBjcmVhdGUgYSBtZXRyaWMuXG4gICAqL1xuICBwcml2YXRlIGNvbmZpZ3VyZU1ldHJpYyhwcm9wczogTWV0cmljUHJvcHMpIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlZ2lvbjogcHJvcHM/LnJlZ2lvbiA/PyB0aGlzLnN0YWNrLnJlZ2lvbixcbiAgICAgIGFjY291bnQ6IHByb3BzPy5hY2NvdW50ID8/IHRoaXMuc3RhY2suYWNjb3VudCxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBBZ2VudCBSdW50aW1lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRSdW50aW1lQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYWdlbnQgcnVudGltZVxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgQVJOXG4gICAqL1xuICByZWFkb25seSByb2xlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqIFdoZW4gaW1wb3J0aW5nIGEgcnVudGltZSBhbmQgdGhpcyBpcyBub3Qgc3BlY2lmaWVkIG9yIHVuZGVmaW5lZCwgZW5kcG9pbnRzIGNyZWF0ZWQgb24gdGhpcyBydW50aW1lXG4gICAqIHdpbGwgcG9pbnQgdG8gdmVyc2lvbiBcIjFcIiB1bmxlc3MgZXhwbGljaXRseSBvdmVycmlkZGVuLlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgZ3JvdXBzIGZvciB0aGlzIHJ1bnRpbWUsIGlmIGluIGEgVlBDLlxuICAgKiBAZGVmYXVsdCAtIEJ5IGRlZmF1bHQsIHRoZSBydW50aW1lIGlzIG5vdCBpbiBhIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgYWdlbnQgcnVudGltZVxuICAgKiBAZGVmYXVsdCAtIFN0YXR1cyBub3QgYXZhaWxhYmxlXG4gICAqL1xuICByZWFkb25seSBhZ2VudFN0YXR1cz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRpbWUgYXQgd2hpY2ggdGhlIHJ1bnRpbWUgd2FzIGNyZWF0ZWRcbiAgICogQGRlZmF1bHQgLSBDcmVhdGlvbiB0aW1lIG5vdCBhdmFpbGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRpbWUgYXQgd2hpY2ggdGhlIHJ1bnRpbWUgd2FzIGxhc3QgdXBkYXRlZFxuICAgKiBAZGVmYXVsdCAtIExhc3QgdXBkYXRlIHRpbWUgbm90IGF2YWlsYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFzdFVwZGF0ZWRBdD86IHN0cmluZztcbn1cbiJdfQ==
|