@aws-cdk/aws-bedrock-agentcore-alpha 2.237.1-alpha.0 → 2.239.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +2128 -856
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +119 -1
- package/README.md +109 -47
- package/lib/gateway/gateway-base.d.ts +14 -7
- package/lib/gateway/gateway-base.js +13 -4
- package/lib/gateway/gateway.d.ts +66 -10
- package/lib/gateway/gateway.js +38 -3
- package/lib/gateway/inbound-auth/authorizer.d.ts +2 -2
- package/lib/gateway/inbound-auth/authorizer.js +4 -4
- package/lib/gateway/inbound-auth/custom-claim.d.ts +1 -1
- package/lib/gateway/inbound-auth/custom-claim.js +2 -2
- package/lib/gateway/interceptor.d.ts +3 -3
- package/lib/gateway/interceptor.js +2 -2
- package/lib/gateway/outbound-auth/api-key.d.ts +4 -2
- package/lib/gateway/outbound-auth/api-key.js +2 -2
- package/lib/gateway/outbound-auth/credential-provider.d.ts +5 -5
- package/lib/gateway/outbound-auth/credential-provider.js +2 -2
- package/lib/gateway/outbound-auth/iam-role.d.ts +3 -2
- package/lib/gateway/outbound-auth/iam-role.js +1 -1
- package/lib/gateway/outbound-auth/oauth.d.ts +4 -2
- package/lib/gateway/outbound-auth/oauth.js +1 -1
- package/lib/gateway/protocol.d.ts +1 -1
- package/lib/gateway/protocol.js +3 -3
- package/lib/gateway/targets/schema/api-schema.d.ts +3 -3
- package/lib/gateway/targets/schema/api-schema.js +5 -5
- package/lib/gateway/targets/schema/base-schema.d.ts +2 -2
- package/lib/gateway/targets/schema/base-schema.js +1 -1
- package/lib/gateway/targets/schema/tool-schema.d.ts +3 -3
- package/lib/gateway/targets/schema/tool-schema.js +5 -5
- package/lib/gateway/targets/target-base.d.ts +13 -5
- package/lib/gateway/targets/target-base.js +13 -2
- package/lib/gateway/targets/target-configuration.d.ts +251 -5
- package/lib/gateway/targets/target-configuration.js +344 -8
- package/lib/gateway/targets/target.d.ts +59 -9
- package/lib/gateway/targets/target.js +46 -3
- package/lib/memory/memory-strategy.d.ts +6 -4
- package/lib/memory/memory-strategy.js +2 -3
- package/lib/memory/memory.d.ts +12 -5
- package/lib/memory/memory.js +13 -17
- package/lib/memory/strategies/managed-strategy.d.ts +5 -4
- package/lib/memory/strategies/managed-strategy.js +2 -2
- package/lib/memory/strategies/self-managed-strategy.d.ts +4 -4
- package/lib/memory/strategies/self-managed-strategy.js +2 -2
- package/lib/memory/validation-helpers.d.ts +1 -1
- package/lib/memory/validation-helpers.js +1 -1
- package/lib/network/network-configuration.d.ts +2 -2
- package/lib/network/network-configuration.js +5 -5
- package/lib/runtime/inbound-auth/custom-claim.d.ts +1 -1
- package/lib/runtime/inbound-auth/custom-claim.js +2 -2
- package/lib/runtime/inbound-auth/runtime-authorizer-configuration.d.ts +3 -3
- package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +2 -2
- package/lib/runtime/runtime-artifact.d.ts +27 -4
- package/lib/runtime/runtime-artifact.js +67 -2
- package/lib/runtime/runtime-base.d.ts +12 -5
- package/lib/runtime/runtime-base.js +15 -18
- package/lib/runtime/runtime-endpoint-base.d.ts +9 -3
- package/lib/runtime/runtime-endpoint-base.js +10 -14
- package/lib/runtime/runtime-endpoint.d.ts +3 -2
- package/lib/runtime/runtime-endpoint.js +2 -2
- package/lib/runtime/runtime.d.ts +7 -5
- package/lib/runtime/runtime.js +2 -2
- package/lib/runtime/types.d.ts +1 -1
- package/lib/runtime/types.js +1 -1
- package/lib/tools/browser.d.ts +12 -5
- package/lib/tools/browser.js +14 -5
- package/lib/tools/code-interpreter.d.ts +11 -4
- package/lib/tools/code-interpreter.js +14 -5
- package/package.json +12 -12
- package/rosetta/default.ts-fixture +1 -0
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
import type { IRestApi } from 'aws-cdk-lib/aws-apigateway';
|
|
1
2
|
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
2
|
-
import { IFunction } from 'aws-cdk-lib/aws-lambda';
|
|
3
|
-
import { Construct } from 'constructs';
|
|
4
|
-
import { IGateway } from '../gateway-base';
|
|
5
|
-
import { ApiSchema } from './schema/api-schema';
|
|
6
|
-
import { ToolSchema } from './schema/tool-schema';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
3
|
+
import type { IFunction } from 'aws-cdk-lib/aws-lambda';
|
|
4
|
+
import type { Construct } from 'constructs';
|
|
5
|
+
import type { IGateway } from '../gateway-base';
|
|
6
|
+
import type { ApiSchema } from './schema/api-schema';
|
|
7
|
+
import type { ToolSchema } from './schema/tool-schema';
|
|
8
|
+
import type { IGatewayTarget, IMcpGatewayTarget } from './target-base';
|
|
9
|
+
import { GatewayTargetBase, GatewayTargetProtocolType, McpTargetType } from './target-base';
|
|
10
|
+
import type { ApiGatewayToolConfiguration, ITargetConfiguration, MetadataConfiguration } from './target-configuration';
|
|
11
|
+
import type { ICredentialProviderConfig } from '../outbound-auth/credential-provider';
|
|
10
12
|
/******************************************************************************
|
|
11
13
|
* Props
|
|
12
14
|
*****************************************************************************/
|
|
@@ -141,6 +143,43 @@ export interface GatewayTargetMcpServerProps extends GatewayTargetCommonProps {
|
|
|
141
143
|
*/
|
|
142
144
|
readonly credentialProviderConfigurations: ICredentialProviderConfig[];
|
|
143
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Properties for creating an API Gateway-based Gateway Target
|
|
148
|
+
*/
|
|
149
|
+
export interface GatewayTargetApiGatewayProps extends GatewayTargetCommonProps {
|
|
150
|
+
/**
|
|
151
|
+
* The gateway this target belongs to
|
|
152
|
+
* [disable-awslint:prefer-ref-interface]
|
|
153
|
+
*/
|
|
154
|
+
readonly gateway: IGateway;
|
|
155
|
+
/**
|
|
156
|
+
* The REST API to integrate with
|
|
157
|
+
* Must be in the same account and region as the gateway
|
|
158
|
+
* [disable-awslint:prefer-ref-interface]
|
|
159
|
+
*/
|
|
160
|
+
readonly restApi: IRestApi;
|
|
161
|
+
/**
|
|
162
|
+
* The stage name of the REST API
|
|
163
|
+
* @default - Uses the deployment stage from the RestApi (restApi.deploymentStage.stageName)
|
|
164
|
+
*/
|
|
165
|
+
readonly stage?: string;
|
|
166
|
+
/**
|
|
167
|
+
* Tool configuration defining which operations to expose
|
|
168
|
+
*/
|
|
169
|
+
readonly apiGatewayToolConfiguration: ApiGatewayToolConfiguration;
|
|
170
|
+
/**
|
|
171
|
+
* Credential providers for authentication
|
|
172
|
+
* API Gateway targets support IAM and API key authentication
|
|
173
|
+
* @default - Empty array (service handles IAM automatically)
|
|
174
|
+
*/
|
|
175
|
+
readonly credentialProviderConfigurations?: ICredentialProviderConfig[];
|
|
176
|
+
/**
|
|
177
|
+
* Metadata configuration for passing headers and query parameters
|
|
178
|
+
* Allows you to pass additional context through headers and query parameters
|
|
179
|
+
* @default - No metadata configuration
|
|
180
|
+
*/
|
|
181
|
+
readonly metadataConfiguration?: MetadataConfiguration;
|
|
182
|
+
}
|
|
144
183
|
/**
|
|
145
184
|
* Attributes for importing an existing Gateway Target
|
|
146
185
|
*/
|
|
@@ -245,6 +284,17 @@ export declare class GatewayTarget extends GatewayTargetBase implements IMcpGate
|
|
|
245
284
|
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-target-MCPservers.html
|
|
246
285
|
*/
|
|
247
286
|
static forMcpServer(scope: Construct, id: string, props: GatewayTargetMcpServerProps): GatewayTarget;
|
|
287
|
+
/**
|
|
288
|
+
* Create an API Gateway-based target
|
|
289
|
+
* Convenience method for creating a target that connects to an API Gateway REST API
|
|
290
|
+
*
|
|
291
|
+
* @param scope The construct scope
|
|
292
|
+
* @param id The construct id
|
|
293
|
+
* @param props The properties for the API Gateway target
|
|
294
|
+
* @returns A new GatewayTarget instance
|
|
295
|
+
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-target-api-gateway.html
|
|
296
|
+
*/
|
|
297
|
+
static forApiGateway(scope: Construct, id: string, props: GatewayTargetApiGatewayProps): GatewayTarget;
|
|
248
298
|
/**
|
|
249
299
|
* The ARN of the gateway target
|
|
250
300
|
* @attribute
|
|
@@ -317,7 +367,7 @@ export declare class GatewayTarget extends GatewayTargetBase implements IMcpGate
|
|
|
317
367
|
*
|
|
318
368
|
* - Lambda & Smithy: Default to IAM role if not provided
|
|
319
369
|
* - MCP Server: Return undefined if not provided (service handles NoAuth)
|
|
320
|
-
* - OpenAPI: Return as-is (must be explicitly provided)
|
|
370
|
+
* - OpenAPI & API Gateway: Return as-is (must be explicitly provided, service handles automatically)
|
|
321
371
|
*
|
|
322
372
|
* @param providedCredentials The credentials from props
|
|
323
373
|
* @returns The credential configurations to use, or undefined
|
|
@@ -78,7 +78,7 @@ let GatewayTarget = (() => {
|
|
|
78
78
|
GatewayTarget = _classThis = _classDescriptor.value;
|
|
79
79
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
80
80
|
}
|
|
81
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTarget", version: "2.
|
|
81
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTarget", version: "2.239.0-alpha.0" };
|
|
82
82
|
/** Uniquely identifies this class. */
|
|
83
83
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.GatewayTarget';
|
|
84
84
|
/**
|
|
@@ -228,6 +228,39 @@ let GatewayTarget = (() => {
|
|
|
228
228
|
targetConfiguration: target_configuration_1.McpServerTargetConfiguration.create(props.endpoint),
|
|
229
229
|
});
|
|
230
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Create an API Gateway-based target
|
|
233
|
+
* Convenience method for creating a target that connects to an API Gateway REST API
|
|
234
|
+
*
|
|
235
|
+
* @param scope The construct scope
|
|
236
|
+
* @param id The construct id
|
|
237
|
+
* @param props The properties for the API Gateway target
|
|
238
|
+
* @returns A new GatewayTarget instance
|
|
239
|
+
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-target-api-gateway.html
|
|
240
|
+
*/
|
|
241
|
+
static forApiGateway(scope, id, props) {
|
|
242
|
+
try {
|
|
243
|
+
jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_GatewayTargetApiGatewayProps(props);
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
247
|
+
Error.captureStackTrace(error, this.forApiGateway);
|
|
248
|
+
}
|
|
249
|
+
throw error;
|
|
250
|
+
}
|
|
251
|
+
return new GatewayTarget(scope, id, {
|
|
252
|
+
gateway: props.gateway,
|
|
253
|
+
gatewayTargetName: props.gatewayTargetName,
|
|
254
|
+
description: props.description,
|
|
255
|
+
credentialProviderConfigurations: props.credentialProviderConfigurations,
|
|
256
|
+
targetConfiguration: target_configuration_1.ApiGatewayTargetConfiguration.create({
|
|
257
|
+
restApi: props.restApi,
|
|
258
|
+
stage: props.stage,
|
|
259
|
+
apiGatewayToolConfiguration: props.apiGatewayToolConfiguration,
|
|
260
|
+
metadataConfiguration: props.metadataConfiguration,
|
|
261
|
+
}),
|
|
262
|
+
});
|
|
263
|
+
}
|
|
231
264
|
/**
|
|
232
265
|
* The ARN of the gateway target
|
|
233
266
|
* @attribute
|
|
@@ -330,6 +363,15 @@ let GatewayTarget = (() => {
|
|
|
330
363
|
targetConfiguration: aws_cdk_lib_1.Lazy.any({
|
|
331
364
|
produce: () => this.targetConfiguration._render(),
|
|
332
365
|
}),
|
|
366
|
+
// Add metadata configuration for API Gateway targets
|
|
367
|
+
metadataConfiguration: this.targetType === target_base_1.McpTargetType.API_GATEWAY &&
|
|
368
|
+
this.targetConfiguration.metadataConfiguration
|
|
369
|
+
? {
|
|
370
|
+
allowedQueryParameters: this.targetConfiguration.metadataConfiguration.allowedQueryParameters,
|
|
371
|
+
allowedRequestHeaders: this.targetConfiguration.metadataConfiguration.allowedRequestHeaders,
|
|
372
|
+
allowedResponseHeaders: this.targetConfiguration.metadataConfiguration.allowedResponseHeaders,
|
|
373
|
+
}
|
|
374
|
+
: undefined,
|
|
333
375
|
};
|
|
334
376
|
this.targetResource = new bedrockagentcore.CfnGatewayTarget(this, 'Resource', cfnProps);
|
|
335
377
|
if (this.credentialProviderConfigurations) {
|
|
@@ -367,7 +409,7 @@ let GatewayTarget = (() => {
|
|
|
367
409
|
*
|
|
368
410
|
* - Lambda & Smithy: Default to IAM role if not provided
|
|
369
411
|
* - MCP Server: Return undefined if not provided (service handles NoAuth)
|
|
370
|
-
* - OpenAPI: Return as-is (must be explicitly provided)
|
|
412
|
+
* - OpenAPI & API Gateway: Return as-is (must be explicitly provided, service handles automatically)
|
|
371
413
|
*
|
|
372
414
|
* @param providedCredentials The credentials from props
|
|
373
415
|
* @returns The credential configurations to use, or undefined
|
|
@@ -386,6 +428,7 @@ let GatewayTarget = (() => {
|
|
|
386
428
|
// Return empty array, - service handles NoAuth automatically
|
|
387
429
|
return undefined;
|
|
388
430
|
case target_base_1.McpTargetType.OPENAPI_SCHEMA:
|
|
431
|
+
case target_base_1.McpTargetType.API_GATEWAY:
|
|
389
432
|
// No default - must be explicitly provided, service handles automatically
|
|
390
433
|
return undefined;
|
|
391
434
|
default:
|
|
@@ -450,4 +493,4 @@ let GatewayTarget = (() => {
|
|
|
450
493
|
return GatewayTarget = _classThis;
|
|
451
494
|
})();
|
|
452
495
|
exports.GatewayTarget = GatewayTarget;
|
|
453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFyZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpRDtBQUNqRCxxRUFBcUU7QUFDckUsMkNBQTJDO0FBRTNDLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFHMUUsb0NBQThDO0FBRzlDLCtDQUErSDtBQUMvSCxpRUFBOEs7QUFDOUssOEVBQTRHO0FBQzVHLDhEQUFtRztBQXVNbkc7OytFQUUrRTtBQUUvRTs7Ozs7Ozs7O0dBU0c7SUFFVSxhQUFhOzRCQUR6QixvQ0FBa0I7Ozs7c0JBQ2dCLCtCQUFpQjs7OzZCQUF6QixTQUFRLFdBQWlCOzs7O3FDQTBSakQsSUFBQSxrQ0FBYyxHQUFFO1lBQ2pCLDhLQUFPLFNBQVMsNkRBTWY7WUFqU0gsNktBc1lDOzs7OztRQXJZQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLG9EQUFvRCxDQUFDO1FBQzVHOzs7Ozs7OztXQVFHO1FBQ0ksTUFBTSxDQUFDLDJCQUEyQixDQUN2QyxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBOEI7Ozs7Ozs7Ozs7WUFFOUIsTUFBTSxxQkFBc0IsU0FBUSwrQkFBaUI7Z0JBQ25DLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQzNCLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUN4QixnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7Z0JBQ3RDLGtCQUFrQixHQUFHLHVDQUF5QixDQUFDLEdBQUcsQ0FBQztnQkFDbkQsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ3RCLGFBQWEsR0FB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LENBQUM7U0FDRjtRQUVEOzs7OztXQUtHO1FBQ0ssbUJBQW1CLENBQUMsV0FBbUI7WUFDN0MsSUFBSSxtQkFBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLElBQUEsd0NBQW1CLEVBQUM7Z0JBQ2pDLEtBQUssRUFBRSxXQUFXO2dCQUNsQixTQUFTLEVBQUUsNEJBQTRCO2dCQUN2QyxTQUFTLEVBQUUsQ0FBQztnQkFDWixTQUFTLEVBQUUsR0FBRzthQUNmLENBQUMsQ0FBQztZQUVILElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLG9DQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUM7U0FDRjs7WUFyWVUsdURBQWE7Ozs7O0FBQWIsc0NBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXp5LCBUb2tlbiwgTmFtZXMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBiZWRyb2NrYWdlbnRjb3JlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUdhdGV3YXkgfSBmcm9tICcuLi9nYXRld2F5LWJhc2UnO1xuaW1wb3J0IHsgR0FURVdBWV9TWU5DX1BFUk1TIH0gZnJvbSAnLi4vcGVybXMnO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvYXBpLXNjaGVtYSc7XG5pbXBvcnQgeyBUb29sU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvdG9vbC1zY2hlbWEnO1xuaW1wb3J0IHsgR2F0ZXdheVRhcmdldEJhc2UsIEdhdGV3YXlUYXJnZXRQcm90b2NvbFR5cGUsIElHYXRld2F5VGFyZ2V0LCBJTWNwR2F0ZXdheVRhcmdldCwgTWNwVGFyZ2V0VHlwZSB9IGZyb20gJy4vdGFyZ2V0LWJhc2UnO1xuaW1wb3J0IHsgSVRhcmdldENvbmZpZ3VyYXRpb24sIExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24sIE1jcFNlcnZlclRhcmdldENvbmZpZ3VyYXRpb24sIE9wZW5BcGlUYXJnZXRDb25maWd1cmF0aW9uLCBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi90YXJnZXQtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLCBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIH0gZnJvbSAnLi4vb3V0Ym91bmQtYXV0aC9jcmVkZW50aWFsLXByb3ZpZGVyJztcbmltcG9ydCB7IHZhbGlkYXRlU3RyaW5nRmllbGQsIHZhbGlkYXRlRmllbGRQYXR0ZXJuLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYWxsIEdhdGV3YXkgVGFyZ2V0IHR5cGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBUaGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGdhdGV3YXlcbiAgICogUGF0dGVybjogXihbMC05YS16QS1aXVstXT8pezEsMTAwfSRcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBUaGUgZGVzY3JpcHRpb24gY2FuIGhhdmUgdXAgdG8gMjAwIGNoYXJhY3RlcnNcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBHYXRld2F5IFRhcmdldCByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRQcm9wcyBleHRlbmRzIEdhdGV3YXlUYXJnZXRDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIHRhcmdldCBjb25maWd1cmF0aW9uIChMYW1iZGEsIE9wZW5BUEksIG9yIFNtaXRoeSlcbiAgICogVXNlIG9uZSBvZiB0aGUgY29uZmlndXJhdGlvbiBoZWxwZXIgY2xhc3NlczpcbiAgICogLSBMYW1iZGFUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZSgpXG4gICAqIC0gT3BlbkFwaVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKClcbiAgICogLSBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZSgpXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRDb25maWd1cmF0aW9uOiBJVGFyZ2V0Q29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUlhbVJvbGUoKV1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgTGFtYmRhLWJhc2VkIEdhdGV3YXkgVGFyZ2V0XG4gKiBDb252ZW5pZW5jZSBpbnRlcmZhY2UgZm9yIHRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRMYW1iZGFQcm9wcyBleHRlbmRzIEdhdGV3YXlUYXJnZXRDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIExhbWJkYSBmdW5jdGlvbiB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIHRvb2wgc2NoZW1hIGRlZmluaW5nIHRoZSBhdmFpbGFibGUgdG9vbHNcbiAgICovXG4gIHJlYWRvbmx5IHRvb2xTY2hlbWE6IFRvb2xTY2hlbWE7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBMYW1iZGEgdGFyZ2V0cyBvbmx5IHN1cHBvcnQgSUFNIHJvbGUgYXV0aGVudGljYXRpb25cbiAgICogQGRlZmF1bHQgLSBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5mcm9tSWFtUm9sZSgpXVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gT3BlbkFQSS1iYXNlZCBHYXRld2F5IFRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRPcGVuQXBpUHJvcHMgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBPcGVuQVBJIHNjaGVtYSBkZWZpbmluZyB0aGUgQVBJXG4gICAqL1xuICByZWFkb25seSBhcGlTY2hlbWE6IEFwaVNjaGVtYTtcblxuICAvKipcbiAgICogV2hldGhlciB0byB2YWxpZGF0ZSB0aGUgT3BlbkFQSSBzY2hlbWEgKG9ubHkgYXBwbGllcyB0byBpbmxpbmUgc2NoZW1hcylcbiAgICogTm90ZTogVmFsaWRhdGlvbiBpcyBvbmx5IHBlcmZvcm1lZCBmb3IgaW5saW5lIHNjaGVtYXMgZHVyaW5nIENESyBzeW50aGVzaXMuXG4gICAqIFMzIGFuZCBhc3NldC1iYXNlZCBzY2hlbWFzIGNhbm5vdCBiZSB2YWxpZGF0ZWQgYXQgc3ludGhlc2lzIHRpbWUuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlT3BlbkFwaVNjaGVtYT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBPcGVuQVBJIHRhcmdldHMgc3VwcG9ydCBBUEkga2V5IGFuZCBPQXV0aCBhdXRoZW50aWNhdGlvbiAobm90IElBTSlcbiAgICogQGRlZmF1bHQgLSBJZiBub3QgcHJvdmlkZWQsIGRlZmF1bHRzIHRvIElBTSByb2xlIHdoaWNoIHdpbGwgZmFpbCBhdCBydW50aW1lXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIFNtaXRoeS1iYXNlZCBHYXRld2F5IFRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRTbWl0aHlQcm9wcyBleHRlbmRzIEdhdGV3YXlUYXJnZXRDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIFNtaXRoeSBtb2RlbCBkZWZpbmluZyB0aGUgQVBJXG4gICAqL1xuICByZWFkb25seSBzbWl0aHlNb2RlbDogQXBpU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogU21pdGh5IHRhcmdldHMgb25seSBzdXBwb3J0IElBTSByb2xlIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUlhbVJvbGUoKV1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIE1DUCBTZXJ2ZXItYmFzZWQgR2F0ZXdheSBUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0TWNwU2VydmVyUHJvcHMgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBIVFRQUyBlbmRwb2ludCBVUkwgb2YgdGhlIE1DUCBzZXJ2ZXJcbiAgICpcbiAgICogVGhlIGVuZHBvaW50IG11c3Q6XG4gICAqIC0gVXNlIEhUVFBTIHByb3RvY29sXG4gICAqIC0gQmUgcHJvcGVybHkgVVJMLWVuY29kZWRcbiAgICogLSBQb2ludCB0byBhbiBNQ1Agc2VydmVyIHRoYXQgaW1wbGVtZW50cyB0b29sIGNhcGFiaWxpdGllc1xuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBHYXRld2F5IFRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSB0YXJnZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgc3RhdHVzIG9mIHRoZSB0YXJnZXRcbiAgICogQGRlZmF1bHQgLSBObyBzdGF0dXNcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgY3JlYXRpb24gdGltZXN0YW1wXG4gICAqIEBkZWZhdWx0IC0gTm8gY3JlYXRpb24gdGltZXN0YW1wXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGxhc3QgdXBkYXRlIHRpbWVzdGFtcFxuICAgKiBAZGVmYXVsdCAtIE5vIHVwZGF0ZSB0aW1lc3RhbXBcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZWRBdD86IHN0cmluZztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICpcbiAqIERlZmluZXMgdG9vbHMgdGhhdCB5b3VyIGdhdGV3YXkgd2lsbCBob3N0LiBTdXBwb3J0cyBtdWx0aXBsZSB0YXJnZXQgdHlwZXM6XG4gKiAtIExhbWJkYTogV3JhcHMgYSBMYW1iZGEgZnVuY3Rpb24gYXMgTUNQIHRvb2xzXG4gKiAtIE9wZW5BUEk6IEV4cG9zZXMgYW4gT3BlbkFQSS9SRVNUIEFQSSBhcyBNQ1AgdG9vbHNcbiAqIC0gU21pdGh5OiBFeHBvc2VzIGEgU21pdGh5LW1vZGVsZWQgQVBJIGFzIE1DUCB0b29sc1xuICpcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OkdhdGV3YXlUYXJnZXRcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9nYXRld2F5LWJ1aWxkaW5nLWFkZGluZy10YXJnZXRzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEdhdGV3YXlUYXJnZXQgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0QmFzZSBpbXBsZW1lbnRzIElNY3BHYXRld2F5VGFyZ2V0IHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtYmVkcm9jay1hZ2VudGNvcmUtYWxwaGEuR2F0ZXdheVRhcmdldCc7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgR2F0ZXdheSBUYXJnZXQgdXNpbmcgaXRzIGF0dHJpYnV0ZXNcbiAgICogVGhpcyBhbGxvd3MgeW91IHRvIHJlZmVyZW5jZSBhIEdhdGV3YXkgVGFyZ2V0IHRoYXQgd2FzIGNyZWF0ZWQgb3V0c2lkZSBvZiBDREtcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBleGlzdGluZyBHYXRld2F5IFRhcmdldFxuICAgKiBAcmV0dXJucyBBbiBJR2F0ZXdheVRhcmdldCBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGltcG9ydGVkIHRhcmdldFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tR2F0ZXdheVRhcmdldEF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBHYXRld2F5VGFyZ2V0QXR0cmlidXRlcyxcbiAgKTogSUdhdGV3YXlUYXJnZXQge1xuICAgIGNsYXNzIEltcG9ydGVkR2F0ZXdheVRhcmdldCBleHRlbmRzIEdhdGV3YXlUYXJnZXRCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YXJnZXRBcm4gPSBhdHRycy50YXJnZXRBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0SWQgPSBhdHRycy50YXJnZXRJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBuYW1lID0gYXR0cnMuZ2F0ZXdheVRhcmdldE5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSBhdHRycy5zdGF0dXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheSA9IGF0dHJzLmdhdGV3YXk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YXJnZXRQcm90b2NvbFR5cGUgPSBHYXRld2F5VGFyZ2V0UHJvdG9jb2xUeXBlLk1DUDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXMgPSBhdHRycy5zdGF0dXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzUmVhc29ucyA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQgPSBhdHRycy5jcmVhdGVkQXQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0ID0gYXR0cnMudXBkYXRlZEF0O1xuXG4gICAgICBjb25zdHJ1Y3RvcihzOiBDb25zdHJ1Y3QsIGk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzLCBpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZEdhdGV3YXlUYXJnZXQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBMYW1iZGEtYmFzZWQgTUNQIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgd3JhcHMgYSBMYW1iZGEgZnVuY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgTGFtYmRhIHRhcmdldFxuICAgKiBAcmV0dXJucyBBIG5ldyBHYXRld2F5VGFyZ2V0IGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZvckxhbWJkYShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRMYW1iZGFQcm9wcyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VGFyZ2V0KHNjb3BlLCBpZCwge1xuICAgICAgZ2F0ZXdheTogcHJvcHMuZ2F0ZXdheSxcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICAgIHRhcmdldENvbmZpZ3VyYXRpb246IExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKFxuICAgICAgICBwcm9wcy5sYW1iZGFGdW5jdGlvbixcbiAgICAgICAgcHJvcHMudG9vbFNjaGVtYSxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE9wZW5BUEktYmFzZWQgTUNQIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgZXhwb3NlcyBhbiBPcGVuQVBJL1JFU1QgQVBJXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIE9wZW5BUEkgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yT3BlbkFwaShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRPcGVuQXBpUHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBPcGVuQXBpVGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUocHJvcHMuYXBpU2NoZW1hLCBwcm9wcy52YWxpZGF0ZU9wZW5BcGlTY2hlbWEpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIFNtaXRoeS1iYXNlZCBNQ1AgdGFyZ2V0XG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSB0YXJnZXQgdGhhdCBleHBvc2VzIGEgU21pdGh5LW1vZGVsZWQgQVBJXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIFNtaXRoeSB0YXJnZXRcbiAgICogQHJldHVybnMgQSBuZXcgR2F0ZXdheVRhcmdldCBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JTbWl0aHkoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBHYXRld2F5VGFyZ2V0U21pdGh5UHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZShwcm9wcy5zbWl0aHlNb2RlbCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE1DUCBTZXJ2ZXItYmFzZWQgdGFyZ2V0XG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSB0YXJnZXQgdGhhdCBjb25uZWN0cyB0byBhbiBleHRlcm5hbCBNQ1Agc2VydmVyXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIE1DUCBzZXJ2ZXIgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktdGFyZ2V0LU1DUHNlcnZlcnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JNY3BTZXJ2ZXIoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBHYXRld2F5VGFyZ2V0TWNwU2VydmVyUHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBNY3BTZXJ2ZXJUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZShwcm9wcy5lbmRwb2ludCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldEFybjtcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0SWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbjtcblxuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBjcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgdGhpcyB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvdG9jb2wgdHlwZSAoYWx3YXlzIE1DUCBmb3Igbm93KVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFByb3RvY29sVHlwZSA9IEdhdGV3YXlUYXJnZXRQcm90b2NvbFR5cGUuTUNQO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BlY2lmaWMgTUNQIHRhcmdldCB0eXBlIChMYW1iZGEsIE9wZW5BUEksIFNtaXRoeSwgb3IgTUNQIFNlcnZlcilcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRUeXBlOiBNY3BUYXJnZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzPztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyByZWFzb25zIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c1JlYXNvbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGltZXN0YW1wIHdoZW4gdGhlIGdhdGV3YXkgdGFyZ2V0IHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQ/O1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgd2hlbiB0aGUgZ2F0ZXdheSB0YXJnZXQgd2FzIGxhc3QgdXBkYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0PztcblxuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldFJlc291cmNlOiBiZWRyb2NrYWdlbnRjb3JlLkNmbkdhdGV3YXlUYXJnZXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0Q29uZmlndXJhdGlvbjogSVRhcmdldENvbmZpZ3VyYXRpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEdhdGV3YXlUYXJnZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLy8gTWF4aW11bSBuYW1lIGxlbmd0aCBvZiAxMDAgY2hhcmFjdGVyc1xuICAgICAgLy8gQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1RlbXBsYXRlUmVmZXJlbmNlL2F3cy1yZXNvdXJjZS1iZWRyb2NrYWdlbnRjb3JlLWdhdGV3YXl0YXJnZXQuaHRtbCNjZm4tYmVkcm9ja2FnZW50Y29yZS1nYXRld2F5dGFyZ2V0LW5hbWVcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUgPz9cbiAgICAgICAgTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogMTAwIH0pLFxuICAgICAgICB9KSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIC8vIFZhbGlkYXRlIGFuZCBhc3NpZ24gcHJvcGVydGllc1xuICAgIHRoaXMubmFtZSA9IHRoaXMucGh5c2ljYWxOYW1lO1xuICAgIHRoaXMudmFsaWRhdGVHYXRld2F5VGFyZ2V0TmFtZSh0aGlzLm5hbWUpO1xuXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHByb3BzLmRlc2NyaXB0aW9uO1xuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlRGVzY3JpcHRpb24odGhpcy5kZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5nYXRld2F5ID0gcHJvcHMuZ2F0ZXdheTtcbiAgICB0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24gPSBwcm9wcy50YXJnZXRDb25maWd1cmF0aW9uO1xuICAgIHRoaXMudGFyZ2V0VHlwZSA9IHRoaXMudGFyZ2V0Q29uZmlndXJhdGlvbi50YXJnZXRUeXBlO1xuXG4gICAgLy8gR2V0IHRhcmdldC1zcGVjaWZpYyBjcmVkZW50aWFsIGNvbmZpZ3VyYXRpb25zXG4gICAgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyA9IHRoaXMuX2dldFRhcmdldFNwZWNpZmljQ3JlZGVudGlhbHMoXG4gICAgICBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICApO1xuXG4gICAgLy8gQmluZCB0aGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICAvLyBUaGlzIHNldHMgdXAgcGVybWlzc2lvbnMgYW5kIGRlcGVuZGVuY2llc1xuICAgIHRoaXMudGFyZ2V0Q29uZmlndXJhdGlvbi5iaW5kKHRoaXMsIHRoaXMuZ2F0ZXdheSk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIEwxIGNvbnN0cnVjdFxuICAgIGNvbnN0IGNmblByb3BzOiBiZWRyb2NrYWdlbnRjb3JlLkNmbkdhdGV3YXlUYXJnZXRQcm9wcyA9IHtcbiAgICAgIGdhdGV3YXlJZGVudGlmaWVyOiB0aGlzLmdhdGV3YXkuZ2F0ZXdheUlkLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogTGF6eS5hbnkoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLl9yZW5kZXJDcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucygpLFxuICAgICAgfSksXG5cbiAgICAgIHRhcmdldENvbmZpZ3VyYXRpb246IExhenkuYW55KHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy50YXJnZXRDb25maWd1cmF0aW9uLl9yZW5kZXIoKSxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICB0aGlzLnRhcmdldFJlc291cmNlID0gbmV3IGJlZHJvY2thZ2VudGNvcmUuQ2ZuR2F0ZXdheVRhcmdldChcbiAgICAgIHRoaXMsXG4gICAgICAnUmVzb3VyY2UnLFxuICAgICAgY2ZuUHJvcHMsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMpIHtcbiAgICAgICAgcHJvdmlkZXJcbiAgICAgICAgICAuZ3JhbnROZWVkZWRQZXJtaXNzaW9uc1RvUm9sZSh0aGlzLmdhdGV3YXkucm9sZSlcbiAgICAgICAgICA/LmFwcGx5QmVmb3JlKHRoaXMudGFyZ2V0UmVzb3VyY2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudGFyZ2V0SWQgPSB0aGlzLnRhcmdldFJlc291cmNlLmF0dHJUYXJnZXRJZDtcbiAgICB0aGlzLnRhcmdldEFybiA9IHRoaXMudGFyZ2V0UmVzb3VyY2UucmVmO1xuICAgIHRoaXMuc3RhdHVzID0gdGhpcy50YXJnZXRSZXNvdXJjZS5hdHRyU3RhdHVzO1xuICAgIHRoaXMuc3RhdHVzUmVhc29ucyA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0clN0YXR1c1JlYXNvbnM7XG4gICAgdGhpcy5jcmVhdGVkQXQgPSB0aGlzLnRhcmdldFJlc291cmNlLmF0dHJDcmVhdGVkQXQ7XG4gICAgdGhpcy51cGRhdGVkQXQgPSB0aGlzLnRhcmdldFJlc291cmNlLmF0dHJVcGRhdGVkQXQ7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc3luY2hyb25pemUgdGhpcyBnYXRld2F5J3MgdGFyZ2V0c1xuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBncmFudHMgdGhlIGBTeW5jaHJvbml6ZUdhdGV3YXlUYXJnZXRzYCBwZXJtaXNzaW9uLCB3aGljaCBpcyBwcmltYXJpbHlcbiAgICogbmVlZGVkIGZvciBNQ1AgU2VydmVyIHRhcmdldHMgd2hlbiB5b3UgbmVlZCB0byByZWZyZXNoIHRoZSB0b29sIGNhdGFsb2cgYWZ0ZXIgdGhlXG4gICAqIE1DUCBzZXJ2ZXIncyB0b29scyBoYXZlIGNoYW5nZWQuXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGdyYW50U3luYyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgYWN0aW9uczogR0FURVdBWV9TWU5DX1BFUk1TLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5nYXRld2F5LmdhdGV3YXlBcm5dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIGNyZWRlbnRpYWwgcHJvdmlkZXIgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gdGFyZ2V0IHR5cGVcbiAgICpcbiAgICogLSBMYW1iZGEgJiBTbWl0aHk6IERlZmF1bHQgdG8gSUFNIHJvbGUgaWYgbm90IHByb3ZpZGVkXG4gICAqIC0gTUNQIFNlcnZlcjogUmV0dXJuIHVuZGVmaW5lZCBpZiBub3QgcHJvdmlkZWQgKHNlcnZpY2UgaGFuZGxlcyBOb0F1dGgpXG4gICAqIC0gT3BlbkFQSTogUmV0dXJuIGFzLWlzIChtdXN0IGJlIGV4cGxpY2l0bHkgcHJvdmlkZWQpXG4gICAqXG4gICAqIEBwYXJhbSBwcm92aWRlZENyZWRlbnRpYWxzIFRoZSBjcmVkZW50aWFscyBmcm9tIHByb3BzXG4gICAqIEByZXR1cm5zIFRoZSBjcmVkZW50aWFsIGNvbmZpZ3VyYXRpb25zIHRvIHVzZSwgb3IgdW5kZWZpbmVkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0VGFyZ2V0U3BlY2lmaWNDcmVkZW50aWFscyhcbiAgICBwcm92aWRlZENyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW10gfCB1bmRlZmluZWQsXG4gICk6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3ZpZGVkQ3JlZGVudGlhbHMgJiYgcHJvdmlkZWRDcmVkZW50aWFscy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gcHJvdmlkZWRDcmVkZW50aWFscztcbiAgICB9XG4gICAgLy8gQXBwbHkgdGFyZ2V0LXNwZWNpZmljIGRlZmF1bHRzIHdoZW4gbm90IHByb3ZpZGVkXG4gICAgc3dpdGNoICh0aGlzLnRhcmdldFR5cGUpIHtcbiAgICAgIGNhc2UgTWNwVGFyZ2V0VHlwZS5MQU1CREE6XG4gICAgICBjYXNlIE1jcFRhcmdldFR5cGUuU01JVEhZX01PREVMOlxuICAgICAgICByZXR1cm4gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUlhbVJvbGUoKV07XG5cbiAgICAgIGNhc2UgTWNwVGFyZ2V0VHlwZS5NQ1BfU0VSVkVSOlxuICAgICAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXksIC0gc2VydmljZSBoYW5kbGVzIE5vQXV0aCBhdXRvbWF0aWNhbGx5XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGNhc2UgTWNwVGFyZ2V0VHlwZS5PUEVOQVBJX1NDSEVNQTpcbiAgICAgICAgLy8gTm8gZGVmYXVsdCAtIG11c3QgYmUgZXhwbGljaXRseSBwcm92aWRlZCwgc2VydmljZSBoYW5kbGVzIGF1dG9tYXRpY2FsbHlcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmZyb21JYW1Sb2xlKCldO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGNyZWRlbnRpYWwgcHJvdmlkZXIgY29uZmlndXJhdGlvbnMgZm9yIENsb3VkRm9ybWF0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBfcmVuZGVyQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz8ubWFwKHByb3ZpZGVyID0+IHByb3ZpZGVyLl9yZW5kZXIoKSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBnYXRld2F5IHRhcmdldCBuYW1lIGZvcm1hdFxuICAgKiBQYXR0ZXJuOiBeKFswLTlhLXpBLVpdWy1dPyl7MSwxMDB9JFxuICAgKiBNYXggbGVuZ3RoOiAxMDAgY2hhcmFjdGVyc1xuICAgKiBAcGFyYW0gZ2F0ZXdheVRhcmdldE5hbWUgVGhlIGdhdGV3YXkgdGFyZ2V0IG5hbWUgdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBFcnJvciBpZiB0aGUgbmFtZSBpcyBpbnZhbGlkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUdhdGV3YXlUYXJnZXROYW1lKGdhdGV3YXlUYXJnZXROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGdhdGV3YXlUYXJnZXROYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aEVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IGdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZmllbGROYW1lOiAnR2F0ZXdheSB0YXJnZXQgbmFtZScsXG4gICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICBtYXhMZW5ndGg6IDEwMCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgJ0dhdGV3YXkgdGFyZ2V0IG5hbWUnLFxuICAgICAgL14oWzAtOWEtekEtWl1bLV0/KXsxLDEwMH0kLyxcbiAgICAgICdHYXRld2F5IHRhcmdldCBuYW1lIG11c3QgY29udGFpbiBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCBoeXBoZW5zLCB3aXRoIGh5cGhlbnMgb25seSBiZXR3ZWVuIGNoYXJhY3RlcnMnLFxuICAgICk7XG5cbiAgICBjb25zdCBhbGxFcnJvcnMgPSBbLi4ubGVuZ3RoRXJyb3JzLCAuLi5wYXR0ZXJuRXJyb3JzXTtcbiAgICBpZiAoYWxsRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYWxsRXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBkZXNjcmlwdGlvbiBmb3JtYXRcbiAgICogTXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIwMCBjaGFyYWN0ZXJzXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChkZXNjcmlwdGlvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHtcbiAgICAgIHZhbHVlOiBkZXNjcmlwdGlvbixcbiAgICAgIGZpZWxkTmFtZTogJ0dhdGV3YXkgdGFyZ2V0IGRlc2NyaXB0aW9uJyxcbiAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgIG1heExlbmd0aDogMjAwLFxuICAgIH0pO1xuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
496
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFyZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpRDtBQUVqRCxxRUFBcUU7QUFDckUsMkNBQTJDO0FBRTNDLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFHMUUsb0NBQThDO0FBSTlDLCtDQUE0RjtBQUU1RixpRUFBdUw7QUFFdkwsOEVBQWlGO0FBQ2pGLDhEQUFtRztBQWtQbkc7OytFQUUrRTtBQUUvRTs7Ozs7Ozs7O0dBU0c7SUFFVSxhQUFhOzRCQUR6QixvQ0FBa0I7Ozs7c0JBQ2dCLCtCQUFpQjs7OzZCQUF6QixTQUFRLFdBQWlCOzs7O3FDQWlVakQsSUFBQSxrQ0FBYyxHQUFFO1lBQ2pCLDhLQUFPLFNBQVMsNkRBTWY7WUF4VUgsNktBOGFDOzs7OztRQTdhQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLG9EQUFvRCxDQUFDO1FBQzVHOzs7Ozs7OztXQVFHO1FBQ0ksTUFBTSxDQUFDLDJCQUEyQixDQUN2QyxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBOEI7Ozs7Ozs7Ozs7WUFFOUIsTUFBTSxxQkFBc0IsU0FBUSwrQkFBaUI7Z0JBQ25DLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQzNCLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUN4QixnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7Z0JBQ3RDLGtCQUFrQixHQUFHLHVDQUF5QixDQUFDLEdBQUcsQ0FBQztnQkFDbkQsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ3RCLGFBQWEsR0FB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QUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBQSx3Q0FBbUIsRUFBQztnQkFDakMsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLFNBQVMsRUFBRSw0QkFBNEI7Z0JBQ3ZDLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFNBQVMsRUFBRSxHQUFHO2FBQ2YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLElBQUksb0NBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQztTQUNGOztZQTdhVSx1REFBYTs7Ozs7QUFBYixzQ0FBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhenksIFRva2VuLCBOYW1lcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHsgSVJlc3RBcGkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5pbXBvcnQgKiBhcyBiZWRyb2NrYWdlbnRjb3JlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB0eXBlIHsgSUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSUdhdGV3YXkgfSBmcm9tICcuLi9nYXRld2F5LWJhc2UnO1xuaW1wb3J0IHsgR0FURVdBWV9TWU5DX1BFUk1TIH0gZnJvbSAnLi4vcGVybXMnO1xuaW1wb3J0IHR5cGUgeyBBcGlTY2hlbWEgfSBmcm9tICcuL3NjaGVtYS9hcGktc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgVG9vbFNjaGVtYSB9IGZyb20gJy4vc2NoZW1hL3Rvb2wtc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgSUdhdGV3YXlUYXJnZXQsIElNY3BHYXRld2F5VGFyZ2V0IH0gZnJvbSAnLi90YXJnZXQtYmFzZSc7XG5pbXBvcnQgeyBHYXRld2F5VGFyZ2V0QmFzZSwgR2F0ZXdheVRhcmdldFByb3RvY29sVHlwZSwgTWNwVGFyZ2V0VHlwZSB9IGZyb20gJy4vdGFyZ2V0LWJhc2UnO1xuaW1wb3J0IHR5cGUgeyBBcGlHYXRld2F5VG9vbENvbmZpZ3VyYXRpb24sIElUYXJnZXRDb25maWd1cmF0aW9uLCBNZXRhZGF0YUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3RhcmdldC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IEFwaUdhdGV3YXlUYXJnZXRDb25maWd1cmF0aW9uLCBMYW1iZGFUYXJnZXRDb25maWd1cmF0aW9uLCBNY3BTZXJ2ZXJUYXJnZXRDb25maWd1cmF0aW9uLCBPcGVuQXBpVGFyZ2V0Q29uZmlndXJhdGlvbiwgU21pdGh5VGFyZ2V0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vdGFyZ2V0LWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIH0gZnJvbSAnLi4vb3V0Ym91bmQtYXV0aC9jcmVkZW50aWFsLXByb3ZpZGVyJztcbmltcG9ydCB7IEdhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIgfSBmcm9tICcuLi9vdXRib3VuZC1hdXRoL2NyZWRlbnRpYWwtcHJvdmlkZXInO1xuaW1wb3J0IHsgdmFsaWRhdGVTdHJpbmdGaWVsZCwgdmFsaWRhdGVGaWVsZFBhdHRlcm4sIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENvbW1vbiBwcm9wZXJ0aWVzIGZvciBhbGwgR2F0ZXdheSBUYXJnZXQgdHlwZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIFRoZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgZ2F0ZXdheVxuICAgKiBQYXR0ZXJuOiBeKFswLTlhLXpBLVpdWy1dPyl7MSwxMDB9JFxuICAgKiBAZGVmYXVsdCAtIGF1dG8gZ2VuZXJhdGVcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlUYXJnZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIFRoZSBkZXNjcmlwdGlvbiBjYW4gaGF2ZSB1cCB0byAyMDAgY2hhcmFjdGVyc1xuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIEdhdGV3YXkgVGFyZ2V0IHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldFByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gKExhbWJkYSwgT3BlbkFQSSwgb3IgU21pdGh5KVxuICAgKiBVc2Ugb25lIG9mIHRoZSBjb25maWd1cmF0aW9uIGhlbHBlciBjbGFzc2VzOlxuICAgKiAtIExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKClcbiAgICogLSBPcGVuQXBpVGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUoKVxuICAgKiAtIFNtaXRoeVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKClcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldENvbmZpZ3VyYXRpb246IElUYXJnZXRDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogQGRlZmF1bHQgLSBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5mcm9tSWFtUm9sZSgpXVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBMYW1iZGEtYmFzZWQgR2F0ZXdheSBUYXJnZXRcbiAqIENvbnZlbmllbmNlIGludGVyZmFjZSBmb3IgdGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldExhbWJkYVByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSBsYW1iZGFGdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgdG9vbCBzY2hlbWEgZGVmaW5pbmcgdGhlIGF2YWlsYWJsZSB0b29sc1xuICAgKi9cbiAgcmVhZG9ubHkgdG9vbFNjaGVtYTogVG9vbFNjaGVtYTtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIExhbWJkYSB0YXJnZXRzIG9ubHkgc3VwcG9ydCBJQU0gcm9sZSBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmZyb21JYW1Sb2xlKCldXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBPcGVuQVBJLWJhc2VkIEdhdGV3YXkgVGFyZ2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldE9wZW5BcGlQcm9wcyBleHRlbmRzIEdhdGV3YXlUYXJnZXRDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIE9wZW5BUEkgc2NoZW1hIGRlZmluaW5nIHRoZSBBUElcbiAgICovXG4gIHJlYWRvbmx5IGFwaVNjaGVtYTogQXBpU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHZhbGlkYXRlIHRoZSBPcGVuQVBJIHNjaGVtYSAob25seSBhcHBsaWVzIHRvIGlubGluZSBzY2hlbWFzKVxuICAgKiBOb3RlOiBWYWxpZGF0aW9uIGlzIG9ubHkgcGVyZm9ybWVkIGZvciBpbmxpbmUgc2NoZW1hcyBkdXJpbmcgQ0RLIHN5bnRoZXNpcy5cbiAgICogUzMgYW5kIGFzc2V0LWJhc2VkIHNjaGVtYXMgY2Fubm90IGJlIHZhbGlkYXRlZCBhdCBzeW50aGVzaXMgdGltZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGVPcGVuQXBpU2NoZW1hPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIE9wZW5BUEkgdGFyZ2V0cyBzdXBwb3J0IEFQSSBrZXkgYW5kIE9BdXRoIGF1dGhlbnRpY2F0aW9uIChub3QgSUFNKVxuICAgKiBAZGVmYXVsdCAtIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdHMgdG8gSUFNIHJvbGUgd2hpY2ggd2lsbCBmYWlsIGF0IHJ1bnRpbWVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgU21pdGh5LWJhc2VkIEdhdGV3YXkgVGFyZ2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldFNtaXRoeVByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgU21pdGh5IG1vZGVsIGRlZmluaW5nIHRoZSBBUElcbiAgICovXG4gIHJlYWRvbmx5IHNtaXRoeU1vZGVsOiBBcGlTY2hlbWE7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBTbWl0aHkgdGFyZ2V0cyBvbmx5IHN1cHBvcnQgSUFNIHJvbGUgYXV0aGVudGljYXRpb25cbiAgICogQGRlZmF1bHQgLSBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5mcm9tSWFtUm9sZSgpXVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gTUNQIFNlcnZlci1iYXNlZCBHYXRld2F5IFRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRNY3BTZXJ2ZXJQcm9wcyBleHRlbmRzIEdhdGV3YXlUYXJnZXRDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIEhUVFBTIGVuZHBvaW50IFVSTCBvZiB0aGUgTUNQIHNlcnZlclxuICAgKlxuICAgKiBUaGUgZW5kcG9pbnQgbXVzdDpcbiAgICogLSBVc2UgSFRUUFMgcHJvdG9jb2xcbiAgICogLSBCZSBwcm9wZXJseSBVUkwtZW5jb2RlZFxuICAgKiAtIFBvaW50IHRvIGFuIE1DUCBzZXJ2ZXIgdGhhdCBpbXBsZW1lbnRzIHRvb2wgY2FwYWJpbGl0aWVzXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gQVBJIEdhdGV3YXktYmFzZWQgR2F0ZXdheSBUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0QXBpR2F0ZXdheVByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICogW2Rpc2FibGUtYXdzbGludDpwcmVmZXItcmVmLWludGVyZmFjZV1cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgUkVTVCBBUEkgdG8gaW50ZWdyYXRlIHdpdGhcbiAgICogTXVzdCBiZSBpbiB0aGUgc2FtZSBhY2NvdW50IGFuZCByZWdpb24gYXMgdGhlIGdhdGV3YXlcbiAgICogW2Rpc2FibGUtYXdzbGludDpwcmVmZXItcmVmLWludGVyZmFjZV1cbiAgICovXG4gIHJlYWRvbmx5IHJlc3RBcGk6IElSZXN0QXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhZ2UgbmFtZSBvZiB0aGUgUkVTVCBBUElcbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBkZXBsb3ltZW50IHN0YWdlIGZyb20gdGhlIFJlc3RBcGkgKHJlc3RBcGkuZGVwbG95bWVudFN0YWdlLnN0YWdlTmFtZSlcbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUb29sIGNvbmZpZ3VyYXRpb24gZGVmaW5pbmcgd2hpY2ggb3BlcmF0aW9ucyB0byBleHBvc2VcbiAgICovXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlUb29sQ29uZmlndXJhdGlvbjogQXBpR2F0ZXdheVRvb2xDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogQVBJIEdhdGV3YXkgdGFyZ2V0cyBzdXBwb3J0IElBTSBhbmQgQVBJIGtleSBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIEVtcHR5IGFycmF5IChzZXJ2aWNlIGhhbmRsZXMgSUFNIGF1dG9tYXRpY2FsbHkpXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcblxuICAvKipcbiAgICogTWV0YWRhdGEgY29uZmlndXJhdGlvbiBmb3IgcGFzc2luZyBoZWFkZXJzIGFuZCBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEFsbG93cyB5b3UgdG8gcGFzcyBhZGRpdGlvbmFsIGNvbnRleHQgdGhyb3VnaCBoZWFkZXJzIGFuZCBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEBkZWZhdWx0IC0gTm8gbWV0YWRhdGEgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGFDb25maWd1cmF0aW9uPzogTWV0YWRhdGFDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBHYXRld2F5IFRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSB0YXJnZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgc3RhdHVzIG9mIHRoZSB0YXJnZXRcbiAgICogQGRlZmF1bHQgLSBObyBzdGF0dXNcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgY3JlYXRpb24gdGltZXN0YW1wXG4gICAqIEBkZWZhdWx0IC0gTm8gY3JlYXRpb24gdGltZXN0YW1wXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGxhc3QgdXBkYXRlIHRpbWVzdGFtcFxuICAgKiBAZGVmYXVsdCAtIE5vIHVwZGF0ZSB0aW1lc3RhbXBcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZWRBdD86IHN0cmluZztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICpcbiAqIERlZmluZXMgdG9vbHMgdGhhdCB5b3VyIGdhdGV3YXkgd2lsbCBob3N0LiBTdXBwb3J0cyBtdWx0aXBsZSB0YXJnZXQgdHlwZXM6XG4gKiAtIExhbWJkYTogV3JhcHMgYSBMYW1iZGEgZnVuY3Rpb24gYXMgTUNQIHRvb2xzXG4gKiAtIE9wZW5BUEk6IEV4cG9zZXMgYW4gT3BlbkFQSS9SRVNUIEFQSSBhcyBNQ1AgdG9vbHNcbiAqIC0gU21pdGh5OiBFeHBvc2VzIGEgU21pdGh5LW1vZGVsZWQgQVBJIGFzIE1DUCB0b29sc1xuICpcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OkdhdGV3YXlUYXJnZXRcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9nYXRld2F5LWJ1aWxkaW5nLWFkZGluZy10YXJnZXRzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEdhdGV3YXlUYXJnZXQgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0QmFzZSBpbXBsZW1lbnRzIElNY3BHYXRld2F5VGFyZ2V0IHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtYmVkcm9jay1hZ2VudGNvcmUtYWxwaGEuR2F0ZXdheVRhcmdldCc7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgR2F0ZXdheSBUYXJnZXQgdXNpbmcgaXRzIGF0dHJpYnV0ZXNcbiAgICogVGhpcyBhbGxvd3MgeW91IHRvIHJlZmVyZW5jZSBhIEdhdGV3YXkgVGFyZ2V0IHRoYXQgd2FzIGNyZWF0ZWQgb3V0c2lkZSBvZiBDREtcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBleGlzdGluZyBHYXRld2F5IFRhcmdldFxuICAgKiBAcmV0dXJucyBBbiBJR2F0ZXdheVRhcmdldCBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGltcG9ydGVkIHRhcmdldFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tR2F0ZXdheVRhcmdldEF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBHYXRld2F5VGFyZ2V0QXR0cmlidXRlcyxcbiAgKTogSUdhdGV3YXlUYXJnZXQge1xuICAgIGNsYXNzIEltcG9ydGVkR2F0ZXdheVRhcmdldCBleHRlbmRzIEdhdGV3YXlUYXJnZXRCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YXJnZXRBcm4gPSBhdHRycy50YXJnZXRBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0SWQgPSBhdHRycy50YXJnZXRJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBuYW1lID0gYXR0cnMuZ2F0ZXdheVRhcmdldE5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSBhdHRycy5zdGF0dXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheSA9IGF0dHJzLmdhdGV3YXk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YXJnZXRQcm90b2NvbFR5cGUgPSBHYXRld2F5VGFyZ2V0UHJvdG9jb2xUeXBlLk1DUDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXMgPSBhdHRycy5zdGF0dXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzUmVhc29ucyA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQgPSBhdHRycy5jcmVhdGVkQXQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0ID0gYXR0cnMudXBkYXRlZEF0O1xuXG4gICAgICBjb25zdHJ1Y3RvcihzOiBDb25zdHJ1Y3QsIGk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzLCBpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZEdhdGV3YXlUYXJnZXQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBMYW1iZGEtYmFzZWQgTUNQIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgd3JhcHMgYSBMYW1iZGEgZnVuY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgTGFtYmRhIHRhcmdldFxuICAgKiBAcmV0dXJucyBBIG5ldyBHYXRld2F5VGFyZ2V0IGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZvckxhbWJkYShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRMYW1iZGFQcm9wcyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VGFyZ2V0KHNjb3BlLCBpZCwge1xuICAgICAgZ2F0ZXdheTogcHJvcHMuZ2F0ZXdheSxcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICAgIHRhcmdldENvbmZpZ3VyYXRpb246IExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKFxuICAgICAgICBwcm9wcy5sYW1iZGFGdW5jdGlvbixcbiAgICAgICAgcHJvcHMudG9vbFNjaGVtYSxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE9wZW5BUEktYmFzZWQgTUNQIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgZXhwb3NlcyBhbiBPcGVuQVBJL1JFU1QgQVBJXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIE9wZW5BUEkgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yT3BlbkFwaShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRPcGVuQXBpUHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBPcGVuQXBpVGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUocHJvcHMuYXBpU2NoZW1hLCBwcm9wcy52YWxpZGF0ZU9wZW5BcGlTY2hlbWEpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIFNtaXRoeS1iYXNlZCBNQ1AgdGFyZ2V0XG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSB0YXJnZXQgdGhhdCBleHBvc2VzIGEgU21pdGh5LW1vZGVsZWQgQVBJXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIFNtaXRoeSB0YXJnZXRcbiAgICogQHJldHVybnMgQSBuZXcgR2F0ZXdheVRhcmdldCBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JTbWl0aHkoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBHYXRld2F5VGFyZ2V0U21pdGh5UHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZShwcm9wcy5zbWl0aHlNb2RlbCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE1DUCBTZXJ2ZXItYmFzZWQgdGFyZ2V0XG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSB0YXJnZXQgdGhhdCBjb25uZWN0cyB0byBhbiBleHRlcm5hbCBNQ1Agc2VydmVyXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIE1DUCBzZXJ2ZXIgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktdGFyZ2V0LU1DUHNlcnZlcnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JNY3BTZXJ2ZXIoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBHYXRld2F5VGFyZ2V0TWNwU2VydmVyUHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBNY3BTZXJ2ZXJUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZShwcm9wcy5lbmRwb2ludCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEFQSSBHYXRld2F5LWJhc2VkIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgY29ubmVjdHMgdG8gYW4gQVBJIEdhdGV3YXkgUkVTVCBBUElcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgQVBJIEdhdGV3YXkgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktdGFyZ2V0LWFwaS1nYXRld2F5Lmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yQXBpR2F0ZXdheShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRBcGlHYXRld2F5UHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBBcGlHYXRld2F5VGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUoe1xuICAgICAgICByZXN0QXBpOiBwcm9wcy5yZXN0QXBpLFxuICAgICAgICBzdGFnZTogcHJvcHMuc3RhZ2UsXG4gICAgICAgIGFwaUdhdGV3YXlUb29sQ29uZmlndXJhdGlvbjogcHJvcHMuYXBpR2F0ZXdheVRvb2xDb25maWd1cmF0aW9uLFxuICAgICAgICBtZXRhZGF0YUNvbmZpZ3VyYXRpb246IHByb3BzLm1ldGFkYXRhQ29uZmlndXJhdGlvbixcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRBcm47XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldElkO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgY3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIHRoaXMgdGFyZ2V0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHByb3RvY29sIHR5cGUgKGFsd2F5cyBNQ1AgZm9yIG5vdylcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRQcm90b2NvbFR5cGUgPSBHYXRld2F5VGFyZ2V0UHJvdG9jb2xUeXBlLk1DUDtcblxuICAvKipcbiAgICogVGhlIHNwZWNpZmljIE1DUCB0YXJnZXQgdHlwZSAoTGFtYmRhLCBPcGVuQVBJLCBTbWl0aHksIG9yIE1DUCBTZXJ2ZXIpXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0VHlwZTogTWNwVGFyZ2V0VHlwZTtcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cz87XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgcmVhc29ucyBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0dXNSZWFzb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBnYXRld2F5IHRhcmdldCB3YXMgY3JlYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0PztcblxuICAvKipcbiAgICogVGltZXN0YW1wIHdoZW4gdGhlIGdhdGV3YXkgdGFyZ2V0IHdhcyBsYXN0IHVwZGF0ZWRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVwZGF0ZWRBdD87XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXRSZXNvdXJjZTogYmVkcm9ja2FnZW50Y29yZS5DZm5HYXRld2F5VGFyZ2V0O1xuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldENvbmZpZ3VyYXRpb246IElUYXJnZXRDb25maWd1cmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBHYXRld2F5VGFyZ2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC8vIE1heGltdW0gbmFtZSBsZW5ndGggb2YgMTAwIGNoYXJhY3RlcnNcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9UZW1wbGF0ZVJlZmVyZW5jZS9hd3MtcmVzb3VyY2UtYmVkcm9ja2FnZW50Y29yZS1nYXRld2F5dGFyZ2V0Lmh0bWwjY2ZuLWJlZHJvY2thZ2VudGNvcmUtZ2F0ZXdheXRhcmdldC1uYW1lXG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDEwMCB9KSxcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICAvLyBWYWxpZGF0ZSBhbmQgYXNzaWduIHByb3BlcnRpZXNcbiAgICB0aGlzLm5hbWUgPSB0aGlzLnBoeXNpY2FsTmFtZTtcbiAgICB0aGlzLnZhbGlkYXRlR2F0ZXdheVRhcmdldE5hbWUodGhpcy5uYW1lKTtcblxuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBwcm9wcy5kZXNjcmlwdGlvbjtcbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy52YWxpZGF0ZURlc2NyaXB0aW9uKHRoaXMuZGVzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHRoaXMuZ2F0ZXdheSA9IHByb3BzLmdhdGV3YXk7XG4gICAgdGhpcy50YXJnZXRDb25maWd1cmF0aW9uID0gcHJvcHMudGFyZ2V0Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLnRhcmdldFR5cGUgPSB0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24udGFyZ2V0VHlwZTtcblxuICAgIC8vIEdldCB0YXJnZXQtc3BlY2lmaWMgY3JlZGVudGlhbCBjb25maWd1cmF0aW9uc1xuICAgIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgPSB0aGlzLl9nZXRUYXJnZXRTcGVjaWZpY0NyZWRlbnRpYWxzKFxuICAgICAgcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgKTtcblxuICAgIC8vIEJpbmQgdGhlIHRhcmdldCBjb25maWd1cmF0aW9uXG4gICAgLy8gVGhpcyBzZXRzIHVwIHBlcm1pc3Npb25zIGFuZCBkZXBlbmRlbmNpZXNcbiAgICB0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24uYmluZCh0aGlzLCB0aGlzLmdhdGV3YXkpO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBMMSBjb25zdHJ1Y3RcbiAgICBjb25zdCBjZm5Qcm9wczogYmVkcm9ja2FnZW50Y29yZS5DZm5HYXRld2F5VGFyZ2V0UHJvcHMgPSB7XG4gICAgICBnYXRld2F5SWRlbnRpZmllcjogdGhpcy5nYXRld2F5LmdhdGV3YXlJZCxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IExhenkuYW55KHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5fcmVuZGVyQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMoKSxcbiAgICAgIH0pLFxuXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBMYXp5LmFueSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMudGFyZ2V0Q29uZmlndXJhdGlvbi5fcmVuZGVyKCksXG4gICAgICB9KSxcblxuICAgICAgLy8gQWRkIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24gZm9yIEFQSSBHYXRld2F5IHRhcmdldHNcbiAgICAgIG1ldGFkYXRhQ29uZmlndXJhdGlvbjogdGhpcy50YXJnZXRUeXBlID09PSBNY3BUYXJnZXRUeXBlLkFQSV9HQVRFV0FZICYmXG4gICAgICAgICh0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24gYXMgQXBpR2F0ZXdheVRhcmdldENvbmZpZ3VyYXRpb24pLm1ldGFkYXRhQ29uZmlndXJhdGlvblxuICAgICAgICA/IHtcbiAgICAgICAgICBhbGxvd2VkUXVlcnlQYXJhbWV0ZXJzOiAodGhpcy50YXJnZXRDb25maWd1cmF0aW9uIGFzIEFwaUdhdGV3YXlUYXJnZXRDb25maWd1cmF0aW9uKS5tZXRhZGF0YUNvbmZpZ3VyYXRpb24hLmFsbG93ZWRRdWVyeVBhcmFtZXRlcnMsXG4gICAgICAgICAgYWxsb3dlZFJlcXVlc3RIZWFkZXJzOiAodGhpcy50YXJnZXRDb25maWd1cmF0aW9uIGFzIEFwaUdhdGV3YXlUYXJnZXRDb25maWd1cmF0aW9uKS5tZXRhZGF0YUNvbmZpZ3VyYXRpb24hLmFsbG93ZWRSZXF1ZXN0SGVhZGVycyxcbiAgICAgICAgICBhbGxvd2VkUmVzcG9uc2VIZWFkZXJzOiAodGhpcy50YXJnZXRDb25maWd1cmF0aW9uIGFzIEFwaUdhdGV3YXlUYXJnZXRDb25maWd1cmF0aW9uKS5tZXRhZGF0YUNvbmZpZ3VyYXRpb24hLmFsbG93ZWRSZXNwb25zZUhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIHRoaXMudGFyZ2V0UmVzb3VyY2UgPSBuZXcgYmVkcm9ja2FnZW50Y29yZS5DZm5HYXRld2F5VGFyZ2V0KFxuICAgICAgdGhpcyxcbiAgICAgICdSZXNvdXJjZScsXG4gICAgICBjZm5Qcm9wcyxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucykge1xuICAgICAgICBwcm92aWRlclxuICAgICAgICAgIC5ncmFudE5lZWRlZFBlcm1pc3Npb25zVG9Sb2xlKHRoaXMuZ2F0ZXdheS5yb2xlKVxuICAgICAgICAgID8uYXBwbHlCZWZvcmUodGhpcy50YXJnZXRSZXNvdXJjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50YXJnZXRJZCA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0clRhcmdldElkO1xuICAgIHRoaXMudGFyZ2V0QXJuID0gdGhpcy50YXJnZXRSZXNvdXJjZS5yZWY7XG4gICAgdGhpcy5zdGF0dXMgPSB0aGlzLnRhcmdldFJlc291cmNlLmF0dHJTdGF0dXM7XG4gICAgdGhpcy5zdGF0dXNSZWFzb25zID0gdGhpcy50YXJnZXRSZXNvdXJjZS5hdHRyU3RhdHVzUmVhc29ucztcbiAgICB0aGlzLmNyZWF0ZWRBdCA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0ckNyZWF0ZWRBdDtcbiAgICB0aGlzLnVwZGF0ZWRBdCA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0clVwZGF0ZWRBdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBzeW5jaHJvbml6ZSB0aGlzIGdhdGV3YXkncyB0YXJnZXRzXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGdyYW50cyB0aGUgYFN5bmNocm9uaXplR2F0ZXdheVRhcmdldHNgIHBlcm1pc3Npb24sIHdoaWNoIGlzIHByaW1hcmlseVxuICAgKiBuZWVkZWQgZm9yIE1DUCBTZXJ2ZXIgdGFyZ2V0cyB3aGVuIHlvdSBuZWVkIHRvIHJlZnJlc2ggdGhlIHRvb2wgY2F0YWxvZyBhZnRlciB0aGVcbiAgICogTUNQIHNlcnZlcidzIHRvb2xzIGhhdmUgY2hhbmdlZC5cbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnRTeW5jKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiBHQVRFV0FZX1NZTkNfUEVSTVMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmdhdGV3YXkuZ2F0ZXdheUFybl0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgY3JlZGVudGlhbCBwcm92aWRlciBjb25maWd1cmF0aW9ucyBiYXNlZCBvbiB0YXJnZXQgdHlwZVxuICAgKlxuICAgKiAtIExhbWJkYSAmIFNtaXRoeTogRGVmYXVsdCB0byBJQU0gcm9sZSBpZiBub3QgcHJvdmlkZWRcbiAgICogLSBNQ1AgU2VydmVyOiBSZXR1cm4gdW5kZWZpbmVkIGlmIG5vdCBwcm92aWRlZCAoc2VydmljZSBoYW5kbGVzIE5vQXV0aClcbiAgICogLSBPcGVuQVBJICYgQVBJIEdhdGV3YXk6IFJldHVybiBhcy1pcyAobXVzdCBiZSBleHBsaWNpdGx5IHByb3ZpZGVkLCBzZXJ2aWNlIGhhbmRsZXMgYXV0b21hdGljYWxseSlcbiAgICpcbiAgICogQHBhcmFtIHByb3ZpZGVkQ3JlZGVudGlhbHMgVGhlIGNyZWRlbnRpYWxzIGZyb20gcHJvcHNcbiAgICogQHJldHVybnMgVGhlIGNyZWRlbnRpYWwgY29uZmlndXJhdGlvbnMgdG8gdXNlLCBvciB1bmRlZmluZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIF9nZXRUYXJnZXRTcGVjaWZpY0NyZWRlbnRpYWxzKFxuICAgIHByb3ZpZGVkQ3JlZGVudGlhbHM6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXSB8IHVuZGVmaW5lZCxcbiAgKTogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocHJvdmlkZWRDcmVkZW50aWFscyAmJiBwcm92aWRlZENyZWRlbnRpYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBwcm92aWRlZENyZWRlbnRpYWxzO1xuICAgIH1cbiAgICAvLyBBcHBseSB0YXJnZXQtc3BlY2lmaWMgZGVmYXVsdHMgd2hlbiBub3QgcHJvdmlkZWRcbiAgICBzd2l0Y2ggKHRoaXMudGFyZ2V0VHlwZSkge1xuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLkxBTUJEQTpcbiAgICAgIGNhc2UgTWNwVGFyZ2V0VHlwZS5TTUlUSFlfTU9ERUw6XG4gICAgICAgIHJldHVybiBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5mcm9tSWFtUm9sZSgpXTtcblxuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLk1DUF9TRVJWRVI6XG4gICAgICAgIC8vIFJldHVybiBlbXB0eSBhcnJheSwgLSBzZXJ2aWNlIGhhbmRsZXMgTm9BdXRoIGF1dG9tYXRpY2FsbHlcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLk9QRU5BUElfU0NIRU1BOlxuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLkFQSV9HQVRFV0FZOlxuICAgICAgICAvLyBObyBkZWZhdWx0IC0gbXVzdCBiZSBleHBsaWNpdGx5IHByb3ZpZGVkLCBzZXJ2aWNlIGhhbmRsZXMgYXV0b21hdGljYWxseVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUlhbVJvbGUoKV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgY3JlZGVudGlhbCBwcm92aWRlciBjb25maWd1cmF0aW9ucyBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJDcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPy5tYXAocHJvdmlkZXIgPT4gcHJvdmlkZXIuX3JlbmRlcigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGdhdGV3YXkgdGFyZ2V0IG5hbWUgZm9ybWF0XG4gICAqIFBhdHRlcm46IF4oWzAtOWEtekEtWl1bLV0/KXsxLDEwMH0kXG4gICAqIE1heCBsZW5ndGg6IDEwMCBjaGFyYWN0ZXJzXG4gICAqIEBwYXJhbSBnYXRld2F5VGFyZ2V0TmFtZSBUaGUgZ2F0ZXdheSB0YXJnZXQgbmFtZSB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBuYW1lIGlzIGludmFsaWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlR2F0ZXdheVRhcmdldE5hbWUoZ2F0ZXdheVRhcmdldE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoZ2F0ZXdheVRhcmdldE5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGVuZ3RoRXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICB2YWx1ZTogZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBmaWVsZE5hbWU6ICdHYXRld2F5IHRhcmdldCBuYW1lJyxcbiAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgIG1heExlbmd0aDogMTAwLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGF0dGVybkVycm9ycyA9IHZhbGlkYXRlRmllbGRQYXR0ZXJuKFxuICAgICAgZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICAnR2F0ZXdheSB0YXJnZXQgbmFtZScsXG4gICAgICAvXihbMC05YS16QS1aXVstXT8pezEsMTAwfSQvLFxuICAgICAgJ0dhdGV3YXkgdGFyZ2V0IG5hbWUgbXVzdCBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGh5cGhlbnMsIHdpdGggaHlwaGVucyBvbmx5IGJldHdlZW4gY2hhcmFjdGVycycsXG4gICAgKTtcblxuICAgIGNvbnN0IGFsbEVycm9ycyA9IFsuLi5sZW5ndGhFcnJvcnMsIC4uLnBhdHRlcm5FcnJvcnNdO1xuICAgIGlmIChhbGxFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihhbGxFcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGRlc2NyaXB0aW9uIGZvcm1hdFxuICAgKiBNdXN0IGJlIGJldHdlZW4gMSBhbmQgMjAwIGNoYXJhY3RlcnNcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGRlc2NyaXB0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IGRlc2NyaXB0aW9uLFxuICAgICAgZmllbGROYW1lOiAnR2F0ZXdheSB0YXJnZXQgZGVzY3JpcHRpb24nLFxuICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgbWF4TGVuZ3RoOiAyMDAsXG4gICAgfSk7XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -10,10 +10,12 @@
|
|
|
10
10
|
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
11
11
|
* and limitations under the License.
|
|
12
12
|
*/
|
|
13
|
-
import * as bedrockagentcore from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
14
|
-
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
13
|
+
import type * as bedrockagentcore from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
14
|
+
import type * as iam from 'aws-cdk-lib/aws-iam';
|
|
15
|
+
import type { ManagedStrategyProps } from './strategies/managed-strategy';
|
|
16
|
+
import { ManagedMemoryStrategy } from './strategies/managed-strategy';
|
|
17
|
+
import type { SelfManagedStrategyProps } from './strategies/self-managed-strategy';
|
|
18
|
+
import { SelfManagedMemoryStrategy } from './strategies/self-managed-strategy';
|
|
17
19
|
/******************************************************************************
|
|
18
20
|
* CONSTANTS
|
|
19
21
|
*****************************************************************************/
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MemoryStrategy = exports.MemoryStrategyType = exports.MEMORY_NAME_MAX_LENGTH = exports.MEMORY_NAME_MIN_LENGTH = void 0;
|
|
4
4
|
const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
-
// Internal libs
|
|
7
6
|
const managed_strategy_1 = require("./strategies/managed-strategy");
|
|
8
7
|
const self_managed_strategy_1 = require("./strategies/self-managed-strategy");
|
|
9
8
|
/******************************************************************************
|
|
@@ -57,7 +56,7 @@ var MemoryStrategyType;
|
|
|
57
56
|
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/memory-strategies.html
|
|
58
57
|
*/
|
|
59
58
|
class MemoryStrategy {
|
|
60
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryStrategy", version: "2.
|
|
59
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryStrategy", version: "2.239.0-alpha.0" };
|
|
61
60
|
/**
|
|
62
61
|
* Default strategies for organizing and extracting memory data, each optimized for specific use cases.
|
|
63
62
|
* This strategy compresses conversations into concise overviews, preserving essential context and key insights for quick recall.
|
|
@@ -210,4 +209,4 @@ class MemoryStrategy {
|
|
|
210
209
|
}
|
|
211
210
|
}
|
|
212
211
|
exports.MemoryStrategy = MemoryStrategy;
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVtb3J5LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZUEsZ0JBQWdCO0FBQ2hCLG9FQUE0RjtBQUM1Riw4RUFBeUc7QUFFekc7OytFQUUrRTtBQUMvRTs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUN4Qzs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUV6Qzs7R0FFRztBQUNILElBQVksa0JBc0JYO0FBdEJELFdBQVksa0JBQWtCO0lBQzVCOztPQUVHO0lBQ0gscURBQStCLENBQUE7SUFDL0I7OztPQUdHO0lBQ0gsMkNBQXFCLENBQUE7SUFDckI7O09BRUc7SUFDSCx5REFBbUMsQ0FBQTtJQUNuQzs7T0FFRztJQUNILDJDQUFxQixDQUFBO0lBQ3JCOztPQUVHO0lBQ0gsdUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQXRCVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQXNCN0I7QUFtREQ7OytFQUUrRTtBQUMvRTs7Ozs7O0dBTUc7QUFDSCxNQUFhLGNBQWM7O0lBQ3pCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHlCQUF5QjtRQUNyQyxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFO1lBQ2pFLElBQUksRUFBRSw0QkFBNEI7WUFDbEMsV0FBVyxFQUFFLHNFQUFzRTtZQUNuRixVQUFVLEVBQUUsQ0FBQyxzRUFBc0UsQ0FBQztTQUNyRixDQUFDLENBQUM7S0FDSjtJQUNEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQjtRQUNoQyxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQzVELElBQUksRUFBRSw2QkFBNkI7WUFDbkMsV0FBVyxFQUNYLGtIQUFrSDtZQUNsSCxVQUFVLEVBQUUsQ0FBQyxpREFBaUQsQ0FBQztTQUNoRSxDQUFDLENBQUM7S0FDSjtJQUNEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLDBCQUEwQjtRQUN0QyxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFO1lBQ25FLElBQUksRUFBRSwrQkFBK0I7WUFDckMsV0FBVyxFQUFFLGdIQUFnSDtZQUM3SCxVQUFVLEVBQUUsQ0FBQyxpREFBaUQsQ0FBQztTQUNoRSxDQUFDLENBQUM7S0FDSjtJQUNEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQjtRQUNoQyxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQzVELElBQUksRUFBRSw2QkFBNkI7WUFDbkMsV0FBVyxFQUFFLDZEQUE2RDtZQUMxRSxVQUFVLEVBQUUsQ0FBQyxrRUFBa0UsQ0FBQztZQUNoRix1QkFBdUIsRUFBRTtnQkFDdkIsVUFBVSxFQUFFLENBQUMsOENBQThDLENBQUM7YUFDN0Q7U0FDRixDQUFDLENBQUM7S0FDSjtJQUNEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBNEI7Ozs7Ozs7Ozs7UUFDdEQsT0FBTyxJQUFJLHdDQUFxQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUN2RTtJQUNEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUE0Qjs7Ozs7Ozs7OztRQUM1RCxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzlFO0lBQ0Q7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQTRCOzs7Ozs7Ozs7O1FBQzNELE9BQU8sSUFBSSx3Q0FBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDNUU7SUFDRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQTRCOzs7Ozs7Ozs7O1FBQ3RELE9BQU8sSUFBSSx3Q0FBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDdkU7SUFDRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFnQzs7Ozs7Ozs7OztRQUM3RCx3REFBd0Q7UUFDeEQsT0FBTyxJQUFJLGlEQUF5QixDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztLQUN6RTs7QUExR0gsd0NBMkdDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0ICogYXMgYmVkcm9ja2FnZW50Y29yZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG4vLyBJbnRlcm5hbCBsaWJzXG5pbXBvcnQgeyBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3ksIE1hbmFnZWRTdHJhdGVneVByb3BzIH0gZnJvbSAnLi9zdHJhdGVnaWVzL21hbmFnZWQtc3RyYXRlZ3knO1xuaW1wb3J0IHsgU2VsZk1hbmFnZWRNZW1vcnlTdHJhdGVneSwgU2VsZk1hbmFnZWRTdHJhdGVneVByb3BzIH0gZnJvbSAnLi9zdHJhdGVnaWVzL3NlbGYtbWFuYWdlZC1zdHJhdGVneSc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RBTlRTXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIE1pbmltdW0gbGVuZ3RoIGZvciBtZW1vcnkgc3RyYXRlZ3kgbmFtZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBNRU1PUllfTkFNRV9NSU5fTEVOR1RIID0gMTtcbi8qKlxuICogTWF4aW11bSBsZW5ndGggZm9yIG1lbW9yeSBzdHJhdGVneSBuYW1lXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IE1FTU9SWV9OQU1FX01BWF9MRU5HVEggPSA0ODtcblxuLyoqXG4gKiBMb25nLXRlcm0gbWVtb3J5IGV4dHJhY3Rpb24gc3RyYXRlZ3kgdHlwZXMuXG4gKi9cbmV4cG9ydCBlbnVtIE1lbW9yeVN0cmF0ZWd5VHlwZSB7XG4gIC8qKlxuICAgKiBTdW1tYXJpemF0aW9uIHN0cmF0ZWd5IC0gZXh0cmFjdHMgY29uY2lzZSBzdW1tYXJpZXMgdG8gcHJlc2VydmUgY3JpdGljYWwgY29udGV4dCBhbmQga2V5IGluc2lnaHRzXG4gICAqL1xuICBTVU1NQVJJWkFUSU9OID0gJ1NVTU1BUklaQVRJT04nLFxuICAvKipcbiAgICogU2VtYW50aWMgbWVtb3J5IHN0cmF0ZWd5IC0gZXh0cmFjdHMgZ2VuZXJhbCBmYWN0dWFsIGtub3dsZWRnZSwgY29uY2VwdHMgYW5kIG1lYW5pbmdzIGZyb20gcmF3IGNvbnZlcnNhdGlvbnNcbiAgICogdXNpbmcgdmVjdG9yIGVtYmVkZGluZ3MgZm9yIHNpbWlsYXJpdHkgc2VhcmNoLlxuICAgKi9cbiAgU0VNQU5USUMgPSAnU0VNQU5USUMnLFxuICAvKipcbiAgICogVXNlciBwcmVmZXJlbmNlcyBzdHJhdGVneSAtIGV4dHJhY3RzIHVzZXIgYmVoYXZpb3IgcGF0dGVybnMgZnJvbSByYXcgY29udmVyc2F0aW9ucy5cbiAgICovXG4gIFVTRVJfUFJFRkVSRU5DRSA9ICdVU0VSX1BSRUZFUkVOQ0UnLFxuICAvKipcbiAgICogRXBpc29kaWMgbWVtb3J5IHN0cmF0ZWd5IC0gY2FwdHVyZXMgbWVhbmluZ2Z1bCBzbGljZXMgb2YgdXNlciBhbmQgc3lzdGVtIGludGVyYWN0aW9uc1xuICAgKi9cbiAgRVBJU09ESUMgPSAnRVBJU09ESUMnLFxuICAvKipcbiAgICogQ3VzdG9taXplIG1lbW9yeSBwcm9jZXNzaW5nIHRocm91Z2ggY3VzdG9tIGZvdW5kYXRpb24gbW9kZWwgYW5kIHByb21wdCB0ZW1wbGF0ZXMuXG4gICAqL1xuICBDVVNUT00gPSAnQ1VTVE9NJyxcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb25cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGNvbW1vbiBmb3IgYW55IG1lbW9yeSBzdHJhdGVneVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeVN0cmF0ZWd5Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBzdHJhdGVneVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzdHJhdGVneVxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogSW50ZXJmYWNlIGZvciBNZW1vcnkgc3RyYXRlZ2llc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElNZW1vcnlTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWVtb3J5IHN0cmF0ZWd5XG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIG1lbW9yeSBzdHJhdGVneVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBtZW1vcnkgc3RyYXRlZ3lcbiAgICovXG4gIHJlYWRvbmx5IHN0cmF0ZWd5VHlwZTogTWVtb3J5U3RyYXRlZ3lUeXBlO1xuICAvKipcbiAgICogUmVuZGVycyBpbnRlcm5hbCBhdHRyaWJ1dGVzIHRvIENsb3VkRm9ybWF0aW9uXG4gICAqL1xuICByZW5kZXIoKTogYmVkcm9ja2FnZW50Y29yZS5DZm5NZW1vcnkuTWVtb3J5U3RyYXRlZ3lQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHRvIHRoZSByb2xlXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIGdyYW50ZWUgdG8gZ3JhbnQgcGVybWlzc2lvbnMgdG9cbiAgICogQHJldHVybnMgVGhlIEdyYW50IG9iamVjdCBmb3IgY2hhaW5pbmdcbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHwgdW5kZWZpbmVkO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhY3RvcnlcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogRmFjdG9yeSBjbGFzcyBmb3IgY3JlYXRpbmcgbWVtb3J5IHN0cmF0ZWdpZXNcbiAqIElmIHlvdSBuZWVkIGxvbmctdGVybSBtZW1vcnkgZm9yIGNvbnRleHQgcmVjYWxsIGFjcm9zcyBzZXNzaW9ucywgeW91IGNhbiBzZXR1cCBtZW1vcnkgZXh0cmFjdGlvbiBzdHJhdGVnaWVzIHRvIGV4dHJhY3QgdGhlIHJlbGV2YW50IG1lbW9yeSBmcm9tIHRoZSByYXcgZXZlbnRzLlxuICogVXNlIGJ1aWx0LWluIHN0cmF0ZWdpZXMgZm9yIHF1aWNrIHNldHVwLCB1c2UgYnVpbHQtaW4gc3RyYXRlZ2llcyB3aXRoIG92ZXJyaWRlIHRvIHNwZWNpZnkgbW9kZWxzIGFuZCBwcm9tcHQgdGVtcGxhdGVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9tZW1vcnktc3RyYXRlZ2llcy5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBNZW1vcnlTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IHN0cmF0ZWdpZXMgZm9yIG9yZ2FuaXppbmcgYW5kIGV4dHJhY3RpbmcgbWVtb3J5IGRhdGEsIGVhY2ggb3B0aW1pemVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuXG4gICAqIFRoaXMgc3RyYXRlZ3kgY29tcHJlc3NlcyBjb252ZXJzYXRpb25zIGludG8gY29uY2lzZSBvdmVydmlld3MsIHByZXNlcnZpbmcgZXNzZW50aWFsIGNvbnRleHQgYW5kIGtleSBpbnNpZ2h0cyBmb3IgcXVpY2sgcmVjYWxsLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXJzIGNvbmZ1c2VkIGJ5IGNsb3VkIHNldHVwIGR1cmluZyBvbmJvYXJkaW5nLlxuICAgKiBAcmV0dXJucyBBIE1hbmFnZWRNZW1vcnlTdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdCdWlsdEluU3VtbWFyaXphdGlvbigpOiBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5TVU1NQVJJWkFUSU9OLCB7XG4gICAgICBuYW1lOiAnc3VtbWFyeV9idWlsdGluX2Nka0dlbjAwMDEnLFxuICAgICAgZGVzY3JpcHRpb246ICdTdW1tYXJpemUgaW50ZXJhY3Rpb25zIHRvIHByZXNlcnZlIGNyaXRpY2FsIGNvbnRleHQgYW5kIGtleSBpbnNpZ2h0cycsXG4gICAgICBuYW1lc3BhY2VzOiBbJy9zdHJhdGVnaWVzL3ttZW1vcnlTdHJhdGVneUlkfS9hY3RvcnMve2FjdG9ySWR9L3Nlc3Npb25zL3tzZXNzaW9uSWR9J10sXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIERlZmF1bHQgc3RyYXRlZ2llcyBmb3Igb3JnYW5pemluZyBhbmQgZXh0cmFjdGluZyBtZW1vcnkgZGF0YSwgZWFjaCBvcHRpbWl6ZWQgZm9yIHNwZWNpZmljIHVzZSBjYXNlcy5cbiAgICogRGlzdGlsbHMgZ2VuZXJhbCBmYWN0cywgY29uY2VwdHMsIGFuZCB1bmRlcmx5aW5nIG1lYW5pbmdzIGZyb20gcmF3IGNvbnZlcnNhdGlvbmFsIGRhdGEsIHByZXNlbnRpbmcgdGhlIGluZm9ybWF0aW9uIGluIGEgY29udGV4dC1pbmRlcGVuZGVudCBmb3JtYXQuXG4gICAqIEV4dHJhY3RlZCBtZW1vcnkgZXhhbXBsZTogSW4tY29udGV4dCBsZWFybmluZyA9IHRhc2stc29sdmluZyB2aWEgZXhhbXBsZXMsIG5vIHRyYWluaW5nIG5lZWRlZC5cbiAgICogQHJldHVybnMgQSBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nQnVpbHRJblNlbWFudGljKCk6IE1hbmFnZWRNZW1vcnlTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3koTWVtb3J5U3RyYXRlZ3lUeXBlLlNFTUFOVElDLCB7XG4gICAgICBuYW1lOiAnc2VtYW50aWNfYnVpbHRpbl9jZGtHZW4wMDAxJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0V4dHJhY3QgZ2VuZXJhbCBmYWN0dWFsIGtub3dsZWRnZSwgY29uY2VwdHMgYW5kIG1lYW5pbmdzIGZyb20gcmF3IGNvbnZlcnNhdGlvbnMgaW4gYSBjb250ZXh0LWluZGVwZW5kZW50IGZvcm1hdC4nLFxuICAgICAgbmFtZXNwYWNlczogWycvc3RyYXRlZ2llcy97bWVtb3J5U3RyYXRlZ3lJZH0vYWN0b3JzL3thY3RvcklkfSddLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBEZWZhdWx0IHN0cmF0ZWdpZXMgZm9yIG9yZ2FuaXppbmcgYW5kIGV4dHJhY3RpbmcgbWVtb3J5IGRhdGEsIGVhY2ggb3B0aW1pemVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuXG4gICAqIENhcHR1cmVzIGluZGl2aWR1YWwgcHJlZmVyZW5jZXMsIGludGVyYWN0aW9uIHBhdHRlcm5zLCBhbmQgcGVyc29uYWxpemVkIHNldHRpbmdzIHRvIGVuaGFuY2UgZnV0dXJlIGV4cGVyaWVuY2VzLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXIgbmVlZHMgY2xlYXIgZ3VpZGFuY2Ugb24gY2xvdWQgc3RvcmFnZSBhY2NvdW50IGNvbm5lY3Rpb24gZHVyaW5nIG9uYm9hcmRpbmcuXG4gICAqIEByZXR1cm5zIEEgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ0J1aWx0SW5Vc2VyUHJlZmVyZW5jZSgpOiBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5VU0VSX1BSRUZFUkVOQ0UsIHtcbiAgICAgIG5hbWU6ICdwcmVmZXJlbmNlX2J1aWx0aW5fY2RrR2VuMDAwMScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0NhcHR1cmUgaW5kaXZpZHVhbCBwcmVmZXJlbmNlcywgaW50ZXJhY3Rpb24gcGF0dGVybnMsIGFuZCBwZXJzb25hbGl6ZWQgc2V0dGluZ3MgdG8gZW5oYW5jZSBmdXR1cmUgZXhwZXJpZW5jZXMuJyxcbiAgICAgIG5hbWVzcGFjZXM6IFsnL3N0cmF0ZWdpZXMve21lbW9yeVN0cmF0ZWd5SWR9L2FjdG9ycy97YWN0b3JJZH0nXSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRGVmYXVsdCBzdHJhdGVnaWVzIGZvciBvcmdhbml6aW5nIGFuZCBleHRyYWN0aW5nIG1lbW9yeSBkYXRhLCBlYWNoIG9wdGltaXplZCBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLlxuICAgKiBDYXB0dXJlcyBtZWFuaW5nZnVsIHNsaWNlcyBvZiB1c2VyIGFuZCBzeXN0ZW0gaW50ZXJhY3Rpb25zLCBwcmVzZXJ2ZSB0aGVtIGludG8gY29tcGFjdCByZWNvcmRzIGFmdGVyIHN1bW1hcml6aW5nLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXIgZmlyc3QgYXNrZWQgYWJvdXQgcHJpY2luZyBvbiBNb25kYXksIHRoZW4gcmVxdWVzdGVkIGZlYXR1cmUgY29tcGFyaXNvbiBvbiBUdWVzZGF5LCBmaW5hbGx5IG1hZGUgcHVyY2hhc2UgZGVjaXNpb24gb24gV2VkbmVzZGF5LlxuICAgKiBAcmV0dXJucyBBIE1hbmFnZWRNZW1vcnlTdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdCdWlsdEluRXBpc29kaWMoKTogTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IE1hbmFnZWRNZW1vcnlTdHJhdGVneShNZW1vcnlTdHJhdGVneVR5cGUuRVBJU09ESUMsIHtcbiAgICAgIG5hbWU6ICdlcGlzb2RpY19idWlsdGluX2Nka0dlbjAwMDEnLFxuICAgICAgZGVzY3JpcHRpb246ICdDYXB0dXJlcyBtZWFuaW5nZnVsIHNsaWNlcyBvZiB1c2VyIGFuZCBzeXN0ZW0gaW50ZXJhY3Rpb25zLicsXG4gICAgICBuYW1lc3BhY2VzOiBbJy9zdHJhdGVneS97bWVtb3J5U3RyYXRlZ3lJZH0vYWN0b3Ive2FjdG9ySWR9L3Nlc3Npb24ve3Nlc3Npb25JZH0nXSxcbiAgICAgIHJlZmxlY3Rpb25Db25maWd1cmF0aW9uOiB7XG4gICAgICAgIG5hbWVzcGFjZXM6IFsnL3N0cmF0ZWd5L3ttZW1vcnlTdHJhdGVneUlkfS9hY3Rvci97YWN0b3JJZH0nXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzZW1hbnRpYyBtZW1vcnkgc3RyYXRlZ3kgd2l0aCBjdXN0b20gY29uZmlndXJhdGlvbi5cbiAgICogRGlzdGlsbHMgZ2VuZXJhbCBmYWN0cywgY29uY2VwdHMsIGFuZCB1bmRlcmx5aW5nIG1lYW5pbmdzIGZyb20gcmF3IGNvbnZlcnNhdGlvbmFsIGRhdGEsIHByZXNlbnRpbmcgdGhlIGluZm9ybWF0aW9uIGluIGEgY29udGV4dC1pbmRlcGVuZGVudCBmb3JtYXQuXG4gICAqIEV4dHJhY3RlZCBtZW1vcnkgZXhhbXBsZTogSW4tY29udGV4dCBsZWFybmluZyA9IHRhc2stc29sdmluZyB2aWEgZXhhbXBsZXMsIG5vIHRyYWluaW5nIG5lZWRlZC5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc2VtYW50aWMgbWVtb3J5IHN0cmF0ZWd5LlxuICAgKiBAcmV0dXJucyBBIE1hbmFnZWRNZW1vcnlTdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdTZW1hbnRpYyhjb25maWc6IE1hbmFnZWRTdHJhdGVneVByb3BzKTogTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IE1hbmFnZWRNZW1vcnlTdHJhdGVneShNZW1vcnlTdHJhdGVneVR5cGUuU0VNQU5USUMsIGNvbmZpZyk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB1c2VyIHByZWZlcmVuY2UgbWVtb3J5IHN0cmF0ZWd5IHdpdGggY3VzdG9tIGNvbmZpZ3VyYXRpb24uXG4gICAqIENhcHR1cmVzIGluZGl2aWR1YWwgcHJlZmVyZW5jZXMsIGludGVyYWN0aW9uIHBhdHRlcm5zLCBhbmQgcGVyc29uYWxpemVkIHNldHRpbmdzIHRvIGVuaGFuY2UgZnV0dXJlIGV4cGVyaWVuY2VzLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXIgbmVlZHMgY2xlYXIgZ3VpZGFuY2Ugb24gY2xvdWQgc3RvcmFnZSBhY2NvdW50IGNvbm5lY3Rpb24gZHVyaW5nIG9uYm9hcmRpbmcuXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHVzZXIgcHJlZmVyZW5jZSBtZW1vcnkgc3RyYXRlZ3kuXG4gICAqIEByZXR1cm5zIEEgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ1VzZXJQcmVmZXJlbmNlKGNvbmZpZzogTWFuYWdlZFN0cmF0ZWd5UHJvcHMpOiBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5VU0VSX1BSRUZFUkVOQ0UsIGNvbmZpZyk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdW1tYXJpemF0aW9uIG1lbW9yeSBzdHJhdGVneSB3aXRoIGN1c3RvbSBjb25maWd1cmF0aW9uLlxuICAgKiBUaGlzIHN0cmF0ZWd5IGNvbXByZXNzZXMgY29udmVyc2F0aW9ucyBpbnRvIGNvbmNpc2Ugb3ZlcnZpZXdzLCBwcmVzZXJ2aW5nIGVzc2VudGlhbCBjb250ZXh0IGFuZCBrZXkgaW5zaWdodHMgZm9yIHF1aWNrIHJlY2FsbC5cbiAgICogRXh0cmFjdGVkIG1lbW9yeSBleGFtcGxlOiBVc2VycyBjb25mdXNlZCBieSBjbG91ZCBzZXR1cCBkdXJpbmcgb25ib2FyZGluZy5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc3VtbWFyaXphdGlvbiBtZW1vcnkgc3RyYXRlZ3kuXG4gICAqIEByZXR1cm5zIEEgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ1N1bW1hcml6YXRpb24oY29uZmlnOiBNYW5hZ2VkU3RyYXRlZ3lQcm9wcyk6IE1hbmFnZWRNZW1vcnlTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3koTWVtb3J5U3RyYXRlZ3lUeXBlLlNVTU1BUklaQVRJT04sIGNvbmZpZyk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZXBpc29kaWMgbWVtb3J5IHN0cmF0ZWd5IHdpdGggY3VzdG9tIGNvbmZpZ3VyYXRpb24uXG4gICAqIENhcHR1cmVzIG1lYW5pbmdmdWwgc2xpY2VzIG9mIHVzZXIgYW5kIHN5c3RlbSBpbnRlcmFjdGlvbnMsIHByZXNlcnZlIHRoZW0gaW50byBjb21wYWN0IHJlY29yZHMgYWZ0ZXIgc3VtbWFyaXppbmcuXG4gICAqIEV4dHJhY3RlZCBtZW1vcnkgZXhhbXBsZTogVXNlciBmaXJzdCBhc2tlZCBhYm91dCBwcmljaW5nIG9uIE1vbmRheSwgdGhlbiByZXF1ZXN0ZWQgZmVhdHVyZSBjb21wYXJpc29uIG9uIFR1ZXNkYXksIGZpbmFsbHkgbWFkZSBwdXJjaGFzZSBkZWNpc2lvbiBvbiBXZWRuZXNkYXkuXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGVwaXNvZGljIG1lbW9yeSBzdHJhdGVneS5cbiAgICogQHJldHVybnMgQSBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nRXBpc29kaWMoY29uZmlnOiBNYW5hZ2VkU3RyYXRlZ3lQcm9wcyk6IE1hbmFnZWRNZW1vcnlTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3koTWVtb3J5U3RyYXRlZ3lUeXBlLkVQSVNPRElDLCBjb25maWcpO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2VsZi1tYW5hZ2VkIG1lbW9yeSBzdHJhdGVneS5cbiAgICogQSBzZWxmLW1hbmFnZWQgc3RyYXRlZ3kgZ2l2ZXMgeW91IGNvbXBsZXRlIGNvbnRyb2wgb3ZlciB5b3VyIG1lbW9yeSBleHRyYWN0aW9uIGFuZCBjb25zb2xpZGF0aW9uIHBpcGVsaW5lcy5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc2VsZi1tYW5hZ2VkIG1lbW9yeSBzdHJhdGVneS5cbiAgICogQHJldHVybnMgQSBTZWxmTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ1NlbGZNYW5hZ2VkKGNvbmZpZzogU2VsZk1hbmFnZWRTdHJhdGVneVByb3BzKTogU2VsZk1hbmFnZWRNZW1vcnlTdHJhdGVneSB7XG4gICAgLy8gU2NvcGUgaXMgcGFzc2VkIGZvciBmdXR1cmUgdXNlIGluIHBlcm1pc3Npb24gZ3JhbnRpbmdcbiAgICByZXR1cm4gbmV3IFNlbGZNYW5hZ2VkTWVtb3J5U3RyYXRlZ3koTWVtb3J5U3RyYXRlZ3lUeXBlLkNVU1RPTSwgY29uZmlnKTtcbiAgfVxufVxuIl19
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVtb3J5LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBaUJBLG9FQUFzRTtBQUV0RSw4RUFBK0U7QUFFL0U7OytFQUUrRTtBQUMvRTs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUN4Qzs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUV6Qzs7R0FFRztBQUNILElBQVksa0JBc0JYO0FBdEJELFdBQVksa0JBQWtCO0lBQzVCOztPQUVHO0lBQ0gscURBQStCLENBQUE7SUFDL0I7OztPQUdHO0lBQ0gsMkNBQXFCLENBQUE7SUFDckI7O09BRUc7SUFDSCx5REFBbUMsQ0FBQTtJQUNuQzs7T0FFRztJQUNILDJDQUFxQixDQUFBO0lBQ3JCOztPQUVHO0lBQ0gsdUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQXRCVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQXNCN0I7QUFtREQ7OytFQUUrRTtBQUMvRTs7Ozs7O0dBTUc7QUFDSCxNQUFhLGNBQWM7O0lBQ3pCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHlCQUF5QjtRQUNyQyxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFO1lBQ2pFLElBQUksRUFBRSw0QkFBNEI7WUFDbEMsV0FBVyxFQUFFLHNFQUFzRTtZQUNuRixVQUFVLEVBQUUsQ0FBQyxzRUFBc0UsQ0FBQztTQUNyRixDQUFDLENBQUM7S0FDSjtJQUNEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQjtRQUNoQyxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQzVELElBQUksRUFBRSw2QkFBNkI7WUFDbkMsV0FBVyxFQUNYLGtIQUFrSDtZQUNsSCxVQUFVLEVBQUUsQ0FBQyxpREFBaUQsQ0FBQztTQUNoRSxDQUFDLENBQUM7S0FDSjtJQUNEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLDBCQUEwQjtRQUN0QyxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFO1lBQ25FLElBQUksRUFBRSwrQkFBK0I7WUFDckMsV0FBVyxFQUFFLGdIQUFnSDtZQUM3SCxVQUFVLEVBQUUsQ0FBQyxpREFBaUQsQ0FBQztTQUNoRSxDQUFDLENBQUM7S0FDSjtJQUNEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQjtRQUNoQyxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQzVELElBQUksRUFBRSw2QkFBNkI7WUFDbkMsV0FBVyxFQUFFLDZEQUE2RDtZQUMxRSxVQUFVLEVBQUUsQ0FBQyxrRUFBa0UsQ0FBQztZQUNoRix1QkFBdUIsRUFBRTtnQkFDdkIsVUFBVSxFQUFFLENBQUMsOENBQThDLENBQUM7YUFDN0Q7U0FDRixDQUFDLENBQUM7S0FDSjtJQUNEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBNEI7Ozs7Ozs7Ozs7UUFDdEQsT0FBTyxJQUFJLHdDQUFxQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUN2RTtJQUNEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUE0Qjs7Ozs7Ozs7OztRQUM1RCxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzlFO0lBQ0Q7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQTRCOzs7Ozs7Ozs7O1FBQzNELE9BQU8sSUFBSSx3Q0FBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDNUU7SUFDRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQTRCOzs7Ozs7Ozs7O1FBQ3RELE9BQU8sSUFBSSx3Q0FBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDdkU7SUFDRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFnQzs7Ozs7Ozs7OztRQUM3RCx3REFBd0Q7UUFDeEQsT0FBTyxJQUFJLGlEQUF5QixDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztLQUN6RTs7QUExR0gsd0NBMkdDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgKiBhcyBiZWRyb2NrYWdlbnRjb3JlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCB0eXBlICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuLy8gSW50ZXJuYWwgbGlic1xuaW1wb3J0IHR5cGUgeyBNYW5hZ2VkU3RyYXRlZ3lQcm9wcyB9IGZyb20gJy4vc3RyYXRlZ2llcy9tYW5hZ2VkLXN0cmF0ZWd5JztcbmltcG9ydCB7IE1hbmFnZWRNZW1vcnlTdHJhdGVneSB9IGZyb20gJy4vc3RyYXRlZ2llcy9tYW5hZ2VkLXN0cmF0ZWd5JztcbmltcG9ydCB0eXBlIHsgU2VsZk1hbmFnZWRTdHJhdGVneVByb3BzIH0gZnJvbSAnLi9zdHJhdGVnaWVzL3NlbGYtbWFuYWdlZC1zdHJhdGVneSc7XG5pbXBvcnQgeyBTZWxmTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IH0gZnJvbSAnLi9zdHJhdGVnaWVzL3NlbGYtbWFuYWdlZC1zdHJhdGVneSc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RBTlRTXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIE1pbmltdW0gbGVuZ3RoIGZvciBtZW1vcnkgc3RyYXRlZ3kgbmFtZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBNRU1PUllfTkFNRV9NSU5fTEVOR1RIID0gMTtcbi8qKlxuICogTWF4aW11bSBsZW5ndGggZm9yIG1lbW9yeSBzdHJhdGVneSBuYW1lXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IE1FTU9SWV9OQU1FX01BWF9MRU5HVEggPSA0ODtcblxuLyoqXG4gKiBMb25nLXRlcm0gbWVtb3J5IGV4dHJhY3Rpb24gc3RyYXRlZ3kgdHlwZXMuXG4gKi9cbmV4cG9ydCBlbnVtIE1lbW9yeVN0cmF0ZWd5VHlwZSB7XG4gIC8qKlxuICAgKiBTdW1tYXJpemF0aW9uIHN0cmF0ZWd5IC0gZXh0cmFjdHMgY29uY2lzZSBzdW1tYXJpZXMgdG8gcHJlc2VydmUgY3JpdGljYWwgY29udGV4dCBhbmQga2V5IGluc2lnaHRzXG4gICAqL1xuICBTVU1NQVJJWkFUSU9OID0gJ1NVTU1BUklaQVRJT04nLFxuICAvKipcbiAgICogU2VtYW50aWMgbWVtb3J5IHN0cmF0ZWd5IC0gZXh0cmFjdHMgZ2VuZXJhbCBmYWN0dWFsIGtub3dsZWRnZSwgY29uY2VwdHMgYW5kIG1lYW5pbmdzIGZyb20gcmF3IGNvbnZlcnNhdGlvbnNcbiAgICogdXNpbmcgdmVjdG9yIGVtYmVkZGluZ3MgZm9yIHNpbWlsYXJpdHkgc2VhcmNoLlxuICAgKi9cbiAgU0VNQU5USUMgPSAnU0VNQU5USUMnLFxuICAvKipcbiAgICogVXNlciBwcmVmZXJlbmNlcyBzdHJhdGVneSAtIGV4dHJhY3RzIHVzZXIgYmVoYXZpb3IgcGF0dGVybnMgZnJvbSByYXcgY29udmVyc2F0aW9ucy5cbiAgICovXG4gIFVTRVJfUFJFRkVSRU5DRSA9ICdVU0VSX1BSRUZFUkVOQ0UnLFxuICAvKipcbiAgICogRXBpc29kaWMgbWVtb3J5IHN0cmF0ZWd5IC0gY2FwdHVyZXMgbWVhbmluZ2Z1bCBzbGljZXMgb2YgdXNlciBhbmQgc3lzdGVtIGludGVyYWN0aW9uc1xuICAgKi9cbiAgRVBJU09ESUMgPSAnRVBJU09ESUMnLFxuICAvKipcbiAgICogQ3VzdG9taXplIG1lbW9yeSBwcm9jZXNzaW5nIHRocm91Z2ggY3VzdG9tIGZvdW5kYXRpb24gbW9kZWwgYW5kIHByb21wdCB0ZW1wbGF0ZXMuXG4gICAqL1xuICBDVVNUT00gPSAnQ1VTVE9NJyxcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb25cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGNvbW1vbiBmb3IgYW55IG1lbW9yeSBzdHJhdGVneVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeVN0cmF0ZWd5Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBzdHJhdGVneVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzdHJhdGVneVxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogSW50ZXJmYWNlIGZvciBNZW1vcnkgc3RyYXRlZ2llc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElNZW1vcnlTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWVtb3J5IHN0cmF0ZWd5XG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIG1lbW9yeSBzdHJhdGVneVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBtZW1vcnkgc3RyYXRlZ3lcbiAgICovXG4gIHJlYWRvbmx5IHN0cmF0ZWd5VHlwZTogTWVtb3J5U3RyYXRlZ3lUeXBlO1xuICAvKipcbiAgICogUmVuZGVycyBpbnRlcm5hbCBhdHRyaWJ1dGVzIHRvIENsb3VkRm9ybWF0aW9uXG4gICAqL1xuICByZW5kZXIoKTogYmVkcm9ja2FnZW50Y29yZS5DZm5NZW1vcnkuTWVtb3J5U3RyYXRlZ3lQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHRvIHRoZSByb2xlXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIGdyYW50ZWUgdG8gZ3JhbnQgcGVybWlzc2lvbnMgdG9cbiAgICogQHJldHVybnMgVGhlIEdyYW50IG9iamVjdCBmb3IgY2hhaW5pbmdcbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHwgdW5kZWZpbmVkO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhY3RvcnlcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogRmFjdG9yeSBjbGFzcyBmb3IgY3JlYXRpbmcgbWVtb3J5IHN0cmF0ZWdpZXNcbiAqIElmIHlvdSBuZWVkIGxvbmctdGVybSBtZW1vcnkgZm9yIGNvbnRleHQgcmVjYWxsIGFjcm9zcyBzZXNzaW9ucywgeW91IGNhbiBzZXR1cCBtZW1vcnkgZXh0cmFjdGlvbiBzdHJhdGVnaWVzIHRvIGV4dHJhY3QgdGhlIHJlbGV2YW50IG1lbW9yeSBmcm9tIHRoZSByYXcgZXZlbnRzLlxuICogVXNlIGJ1aWx0LWluIHN0cmF0ZWdpZXMgZm9yIHF1aWNrIHNldHVwLCB1c2UgYnVpbHQtaW4gc3RyYXRlZ2llcyB3aXRoIG92ZXJyaWRlIHRvIHNwZWNpZnkgbW9kZWxzIGFuZCBwcm9tcHQgdGVtcGxhdGVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9tZW1vcnktc3RyYXRlZ2llcy5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBNZW1vcnlTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IHN0cmF0ZWdpZXMgZm9yIG9yZ2FuaXppbmcgYW5kIGV4dHJhY3RpbmcgbWVtb3J5IGRhdGEsIGVhY2ggb3B0aW1pemVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuXG4gICAqIFRoaXMgc3RyYXRlZ3kgY29tcHJlc3NlcyBjb252ZXJzYXRpb25zIGludG8gY29uY2lzZSBvdmVydmlld3MsIHByZXNlcnZpbmcgZXNzZW50aWFsIGNvbnRleHQgYW5kIGtleSBpbnNpZ2h0cyBmb3IgcXVpY2sgcmVjYWxsLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXJzIGNvbmZ1c2VkIGJ5IGNsb3VkIHNldHVwIGR1cmluZyBvbmJvYXJkaW5nLlxuICAgKiBAcmV0dXJucyBBIE1hbmFnZWRNZW1vcnlTdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdCdWlsdEluU3VtbWFyaXphdGlvbigpOiBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5TVU1NQVJJWkFUSU9OLCB7XG4gICAgICBuYW1lOiAnc3VtbWFyeV9idWlsdGluX2Nka0dlbjAwMDEnLFxuICAgICAgZGVzY3JpcHRpb246ICdTdW1tYXJpemUgaW50ZXJhY3Rpb25zIHRvIHByZXNlcnZlIGNyaXRpY2FsIGNvbnRleHQgYW5kIGtleSBpbnNpZ2h0cycsXG4gICAgICBuYW1lc3BhY2VzOiBbJy9zdHJhdGVnaWVzL3ttZW1vcnlTdHJhdGVneUlkfS9hY3RvcnMve2FjdG9ySWR9L3Nlc3Npb25zL3tzZXNzaW9uSWR9J10sXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIERlZmF1bHQgc3RyYXRlZ2llcyBmb3Igb3JnYW5pemluZyBhbmQgZXh0cmFjdGluZyBtZW1vcnkgZGF0YSwgZWFjaCBvcHRpbWl6ZWQgZm9yIHNwZWNpZmljIHVzZSBjYXNlcy5cbiAgICogRGlzdGlsbHMgZ2VuZXJhbCBmYWN0cywgY29uY2VwdHMsIGFuZCB1bmRlcmx5aW5nIG1lYW5pbmdzIGZyb20gcmF3IGNvbnZlcnNhdGlvbmFsIGRhdGEsIHByZXNlbnRpbmcgdGhlIGluZm9ybWF0aW9uIGluIGEgY29udGV4dC1pbmRlcGVuZGVudCBmb3JtYXQuXG4gICAqIEV4dHJhY3RlZCBtZW1vcnkgZXhhbXBsZTogSW4tY29udGV4dCBsZWFybmluZyA9IHRhc2stc29sdmluZyB2aWEgZXhhbXBsZXMsIG5vIHRyYWluaW5nIG5lZWRlZC5cbiAgICogQHJldHVybnMgQSBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nQnVpbHRJblNlbWFudGljKCk6IE1hbmFnZWRNZW1vcnlTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3koTWVtb3J5U3RyYXRlZ3lUeXBlLlNFTUFOVElDLCB7XG4gICAgICBuYW1lOiAnc2VtYW50aWNfYnVpbHRpbl9jZGtHZW4wMDAxJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0V4dHJhY3QgZ2VuZXJhbCBmYWN0dWFsIGtub3dsZWRnZSwgY29uY2VwdHMgYW5kIG1lYW5pbmdzIGZyb20gcmF3IGNvbnZlcnNhdGlvbnMgaW4gYSBjb250ZXh0LWluZGVwZW5kZW50IGZvcm1hdC4nLFxuICAgICAgbmFtZXNwYWNlczogWycvc3RyYXRlZ2llcy97bWVtb3J5U3RyYXRlZ3lJZH0vYWN0b3JzL3thY3RvcklkfSddLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBEZWZhdWx0IHN0cmF0ZWdpZXMgZm9yIG9yZ2FuaXppbmcgYW5kIGV4dHJhY3RpbmcgbWVtb3J5IGRhdGEsIGVhY2ggb3B0aW1pemVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuXG4gICAqIENhcHR1cmVzIGluZGl2aWR1YWwgcHJlZmVyZW5jZXMsIGludGVyYWN0aW9uIHBhdHRlcm5zLCBhbmQgcGVyc29uYWxpemVkIHNldHRpbmdzIHRvIGVuaGFuY2UgZnV0dXJlIGV4cGVyaWVuY2VzLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXIgbmVlZHMgY2xlYXIgZ3VpZGFuY2Ugb24gY2xvdWQgc3RvcmFnZSBhY2NvdW50IGNvbm5lY3Rpb24gZHVyaW5nIG9uYm9hcmRpbmcuXG4gICAqIEByZXR1cm5zIEEgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ0J1aWx0SW5Vc2VyUHJlZmVyZW5jZSgpOiBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5VU0VSX1BSRUZFUkVOQ0UsIHtcbiAgICAgIG5hbWU6ICdwcmVmZXJlbmNlX2J1aWx0aW5fY2RrR2VuMDAwMScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0NhcHR1cmUgaW5kaXZpZHVhbCBwcmVmZXJlbmNlcywgaW50ZXJhY3Rpb24gcGF0dGVybnMsIGFuZCBwZXJzb25hbGl6ZWQgc2V0dGluZ3MgdG8gZW5oYW5jZSBmdXR1cmUgZXhwZXJpZW5jZXMuJyxcbiAgICAgIG5hbWVzcGFjZXM6IFsnL3N0cmF0ZWdpZXMve21lbW9yeVN0cmF0ZWd5SWR9L2FjdG9ycy97YWN0b3JJZH0nXSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRGVmYXVsdCBzdHJhdGVnaWVzIGZvciBvcmdhbml6aW5nIGFuZCBleHRyYWN0aW5nIG1lbW9yeSBkYXRhLCBlYWNoIG9wdGltaXplZCBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLlxuICAgKiBDYXB0dXJlcyBtZWFuaW5nZnVsIHNsaWNlcyBvZiB1c2VyIGFuZCBzeXN0ZW0gaW50ZXJhY3Rpb25zLCBwcmVzZXJ2ZSB0aGVtIGludG8gY29tcGFjdCByZWNvcmRzIGFmdGVyIHN1bW1hcml6aW5nLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXIgZmlyc3QgYXNrZWQgYWJvdXQgcHJpY2luZyBvbiBNb25kYXksIHRoZW4gcmVxdWVzdGVkIGZlYXR1cmUgY29tcGFyaXNvbiBvbiBUdWVzZGF5LCBmaW5hbGx5IG1hZGUgcHVyY2hhc2UgZGVjaXNpb24gb24gV2VkbmVzZGF5LlxuICAgKiBAcmV0dXJucyBBIE1hbmFnZWRNZW1vcnlTdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdCdWlsdEluRXBpc29kaWMoKTogTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IE1hbmFnZWRNZW1vcnlTdHJhdGVneShNZW1vcnlTdHJhdGVneVR5cGUuRVBJU09ESUMsIHtcbiAgICAgIG5hbWU6ICdlcGlzb2RpY19idWlsdGluX2Nka0dlbjAwMDEnLFxuICAgICAgZGVzY3JpcHRpb246ICdDYXB0dXJlcyBtZWFuaW5nZnVsIHNsaWNlcyBvZiB1c2VyIGFuZCBzeXN0ZW0gaW50ZXJhY3Rpb25zLicsXG4gICAgICBuYW1lc3BhY2VzOiBbJy9zdHJhdGVneS97bWVtb3J5U3RyYXRlZ3lJZH0vYWN0b3Ive2FjdG9ySWR9L3Nlc3Npb24ve3Nlc3Npb25JZH0nXSxcbiAgICAgIHJlZmxlY3Rpb25Db25maWd1cmF0aW9uOiB7XG4gICAgICAgIG5hbWVzcGFjZXM6IFsnL3N0cmF0ZWd5L3ttZW1vcnlTdHJhdGVneUlkfS9hY3Rvci97YWN0b3JJZH0nXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzZW1hbnRpYyBtZW1vcnkgc3RyYXRlZ3kgd2l0aCBjdXN0b20gY29uZmlndXJhdGlvbi5cbiAgICogRGlzdGlsbHMgZ2VuZXJhbCBmYWN0cywgY29uY2VwdHMsIGFuZCB1bmRlcmx5aW5nIG1lYW5pbmdzIGZyb20gcmF3IGNvbnZlcnNhdGlvbmFsIGRhdGEsIHByZXNlbnRpbmcgdGhlIGluZm9ybWF0aW9uIGluIGEgY29udGV4dC1pbmRlcGVuZGVudCBmb3JtYXQuXG4gICAqIEV4dHJhY3RlZCBtZW1vcnkgZXhhbXBsZTogSW4tY29udGV4dCBsZWFybmluZyA9IHRhc2stc29sdmluZyB2aWEgZXhhbXBsZXMsIG5vIHRyYWluaW5nIG5lZWRlZC5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc2VtYW50aWMgbWVtb3J5IHN0cmF0ZWd5LlxuICAgKiBAcmV0dXJucyBBIE1hbmFnZWRNZW1vcnlTdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdTZW1hbnRpYyhjb25maWc6IE1hbmFnZWRTdHJhdGVneVByb3BzKTogTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IE1hbmFnZWRNZW1vcnlTdHJhdGVneShNZW1vcnlTdHJhdGVneVR5cGUuU0VNQU5USUMsIGNvbmZpZyk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB1c2VyIHByZWZlcmVuY2UgbWVtb3J5IHN0cmF0ZWd5IHdpdGggY3VzdG9tIGNvbmZpZ3VyYXRpb24uXG4gICAqIENhcHR1cmVzIGluZGl2aWR1YWwgcHJlZmVyZW5jZXMsIGludGVyYWN0aW9uIHBhdHRlcm5zLCBhbmQgcGVyc29uYWxpemVkIHNldHRpbmdzIHRvIGVuaGFuY2UgZnV0dXJlIGV4cGVyaWVuY2VzLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXIgbmVlZHMgY2xlYXIgZ3VpZGFuY2Ugb24gY2xvdWQgc3RvcmFnZSBhY2NvdW50IGNvbm5lY3Rpb24gZHVyaW5nIG9uYm9hcmRpbmcuXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHVzZXIgcHJlZmVyZW5jZSBtZW1vcnkgc3RyYXRlZ3kuXG4gICAqIEByZXR1cm5zIEEgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ1VzZXJQcmVmZXJlbmNlKGNvbmZpZzogTWFuYWdlZFN0cmF0ZWd5UHJvcHMpOiBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5VU0VSX1BSRUZFUkVOQ0UsIGNvbmZpZyk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdW1tYXJpemF0aW9uIG1lbW9yeSBzdHJhdGVneSB3aXRoIGN1c3RvbSBjb25maWd1cmF0aW9uLlxuICAgKiBUaGlzIHN0cmF0ZWd5IGNvbXByZXNzZXMgY29udmVyc2F0aW9ucyBpbnRvIGNvbmNpc2Ugb3ZlcnZpZXdzLCBwcmVzZXJ2aW5nIGVzc2VudGlhbCBjb250ZXh0IGFuZCBrZXkgaW5zaWdodHMgZm9yIHF1aWNrIHJlY2FsbC5cbiAgICogRXh0cmFjdGVkIG1lbW9yeSBleGFtcGxlOiBVc2VycyBjb25mdXNlZCBieSBjbG91ZCBzZXR1cCBkdXJpbmcgb25ib2FyZGluZy5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc3VtbWFyaXphdGlvbiBtZW1vcnkgc3RyYXRlZ3kuXG4gICAqIEByZXR1cm5zIEEgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ1N1bW1hcml6YXRpb24oY29uZmlnOiBNYW5hZ2VkU3RyYXRlZ3lQcm9wcyk6IE1hbmFnZWRNZW1vcnlTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3koTWVtb3J5U3RyYXRlZ3lUeXBlLlNVTU1BUklaQVRJT04sIGNvbmZpZyk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZXBpc29kaWMgbWVtb3J5IHN0cmF0ZWd5IHdpdGggY3VzdG9tIGNvbmZpZ3VyYXRpb24uXG4gICAqIENhcHR1cmVzIG1lYW5pbmdmdWwgc2xpY2VzIG9mIHVzZXIgYW5kIHN5c3RlbSBpbnRlcmFjdGlvbnMsIHByZXNlcnZlIHRoZW0gaW50byBjb21wYWN0IHJlY29yZHMgYWZ0ZXIgc3VtbWFyaXppbmcuXG4gICAqIEV4dHJhY3RlZCBtZW1vcnkgZXhhbXBsZTogVXNlciBmaXJzdCBhc2tlZCBhYm91dCBwcmljaW5nIG9uIE1vbmRheSwgdGhlbiByZXF1ZXN0ZWQgZmVhdHVyZSBjb21wYXJpc29uIG9uIFR1ZXNkYXksIGZpbmFsbHkgbWFkZSBwdXJjaGFzZSBkZWNpc2lvbiBvbiBXZWRuZXNkYXkuXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGVwaXNvZGljIG1lbW9yeSBzdHJhdGVneS5cbiAgICogQHJldHVybnMgQSBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nRXBpc29kaWMoY29uZmlnOiBNYW5hZ2VkU3RyYXRlZ3lQcm9wcyk6IE1hbmFnZWRNZW1vcnlTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3koTWVtb3J5U3RyYXRlZ3lUeXBlLkVQSVNPRElDLCBjb25maWcpO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2VsZi1tYW5hZ2VkIG1lbW9yeSBzdHJhdGVneS5cbiAgICogQSBzZWxmLW1hbmFnZWQgc3RyYXRlZ3kgZ2l2ZXMgeW91IGNvbXBsZXRlIGNvbnRyb2wgb3ZlciB5b3VyIG1lbW9yeSBleHRyYWN0aW9uIGFuZCBjb25zb2xpZGF0aW9uIHBpcGVsaW5lcy5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc2VsZi1tYW5hZ2VkIG1lbW9yeSBzdHJhdGVneS5cbiAgICogQHJldHVybnMgQSBTZWxmTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ1NlbGZNYW5hZ2VkKGNvbmZpZzogU2VsZk1hbmFnZWRTdHJhdGVneVByb3BzKTogU2VsZk1hbmFnZWRNZW1vcnlTdHJhdGVneSB7XG4gICAgLy8gU2NvcGUgaXMgcGFzc2VkIGZvciBmdXR1cmUgdXNlIGluIHBlcm1pc3Npb24gZ3JhbnRpbmdcbiAgICByZXR1cm4gbmV3IFNlbGZNYW5hZ2VkTWVtb3J5U3RyYXRlZ3koTWVtb3J5U3RyYXRlZ3lUeXBlLkNVU1RPTSwgY29uZmlnKTtcbiAgfVxufVxuIl19
|
package/lib/memory/memory.d.ts
CHANGED
|
@@ -10,19 +10,22 @@
|
|
|
10
10
|
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
11
11
|
* and limitations under the License.
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
13
|
+
import type { IResource, ResourceProps } from 'aws-cdk-lib';
|
|
14
|
+
import { Duration, Resource } from 'aws-cdk-lib';
|
|
15
|
+
import type { IMemoryRef, MemoryReference } from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
16
|
+
import type { DimensionsMap, MetricOptions } from 'aws-cdk-lib/aws-cloudwatch';
|
|
17
|
+
import { Metric } from 'aws-cdk-lib/aws-cloudwatch';
|
|
15
18
|
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
16
19
|
import * as kms from 'aws-cdk-lib/aws-kms';
|
|
17
|
-
import { Construct } from 'constructs';
|
|
18
|
-
import { IMemoryStrategy } from './memory-strategy';
|
|
20
|
+
import type { Construct } from 'constructs';
|
|
21
|
+
import type { IMemoryStrategy } from './memory-strategy';
|
|
19
22
|
/******************************************************************************
|
|
20
23
|
* Interface
|
|
21
24
|
*****************************************************************************/
|
|
22
25
|
/**
|
|
23
26
|
* Interface for Memory resources
|
|
24
27
|
*/
|
|
25
|
-
export interface IMemory extends IResource, iam.IGrantable {
|
|
28
|
+
export interface IMemory extends IResource, iam.IGrantable, IMemoryRef {
|
|
26
29
|
/**
|
|
27
30
|
* The ARN of the memory resource
|
|
28
31
|
* @attribute
|
|
@@ -141,6 +144,10 @@ export declare abstract class MemoryBase extends Resource implements IMemory {
|
|
|
141
144
|
* The principal to grant permissions to
|
|
142
145
|
*/
|
|
143
146
|
abstract readonly grantPrincipal: iam.IPrincipal;
|
|
147
|
+
/**
|
|
148
|
+
* A reference to a Memory resource.
|
|
149
|
+
*/
|
|
150
|
+
get memoryRef(): MemoryReference;
|
|
144
151
|
constructor(scope: Construct, id: string, props?: ResourceProps);
|
|
145
152
|
/**
|
|
146
153
|
* Grants IAM actions to the IAM Principal
|