@cdklabs/cdk-appmod-catalog-blueprints 1.16.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/.jsii +992 -168
  2. package/lib/document-processing/adapter/queued-s3-adapter.js +1 -1
  3. package/lib/document-processing/agentic-document-processing.js +1 -1
  4. package/lib/document-processing/base-document-processing.js +1 -1
  5. package/lib/document-processing/bedrock-document-processing.d.ts +1 -0
  6. package/lib/document-processing/bedrock-document-processing.js +10 -6
  7. package/lib/document-processing/default-document-processing-config.js +1 -1
  8. package/lib/document-processing/index.d.ts +2 -0
  9. package/lib/document-processing/index.js +3 -1
  10. package/lib/document-processing/localstack-agentic-document-processing.d.ts +20 -0
  11. package/lib/document-processing/localstack-agentic-document-processing.js +66 -0
  12. package/lib/document-processing/localstack-bedrock-document-processing.d.ts +16 -0
  13. package/lib/document-processing/localstack-bedrock-document-processing.js +38 -0
  14. package/lib/document-processing/resources/cleanup/handler.py +16 -1
  15. package/lib/document-processing/resources/default-localstack-invoke/index.py +184 -0
  16. package/lib/document-processing/resources/default-localstack-invoke/provider_runtime.py +251 -0
  17. package/lib/document-processing/resources/default-localstack-invoke/requirements.txt +5 -0
  18. package/lib/document-processing/resources/default-sqs-consumer/index.py +17 -2
  19. package/lib/document-processing/resources/pdf-chunking/handler.py +16 -1
  20. package/lib/document-processing/tests/localstack-agentic-document-processing.test.d.ts +1 -0
  21. package/lib/document-processing/tests/localstack-agentic-document-processing.test.js +78 -0
  22. package/lib/document-processing/tests/localstack-document-processing.test.d.ts +1 -0
  23. package/lib/document-processing/tests/localstack-document-processing.test.js +116 -0
  24. package/lib/framework/agents/base-agent.js +1 -1
  25. package/lib/framework/agents/batch-agent.d.ts +1 -0
  26. package/lib/framework/agents/batch-agent.js +7 -4
  27. package/lib/framework/agents/default-agent-config.js +1 -1
  28. package/lib/framework/agents/index.d.ts +1 -0
  29. package/lib/framework/agents/index.js +2 -1
  30. package/lib/framework/agents/interactive-agent.js +88 -11
  31. package/lib/framework/agents/knowledge-base/base-knowledge-base.js +1 -1
  32. package/lib/framework/agents/knowledge-base/bedrock-knowledge-base.js +1 -1
  33. package/lib/framework/agents/localstack-batch-agent.d.ts +15 -0
  34. package/lib/framework/agents/localstack-batch-agent.js +33 -0
  35. package/lib/framework/agents/resources/default-ollama-agent/batch.py +396 -0
  36. package/lib/framework/agents/resources/default-ollama-agent/models.py +7 -0
  37. package/lib/framework/agents/resources/default-ollama-agent/requirements.txt +9 -0
  38. package/lib/framework/agents/resources/default-ollama-agent/runtime_support.py +237 -0
  39. package/lib/framework/agents/resources/default-ollama-agent/utils.py +77 -0
  40. package/lib/framework/bedrock/bedrock.d.ts +9 -0
  41. package/lib/framework/bedrock/bedrock.js +20 -10
  42. package/lib/framework/custom-resource/default-runtimes.js +1 -1
  43. package/lib/framework/foundation/access-log.js +1 -1
  44. package/lib/framework/foundation/eventbridge-broker.js +1 -1
  45. package/lib/framework/foundation/network.d.ts +1 -1
  46. package/lib/framework/foundation/network.js +8 -3
  47. package/lib/framework/index.d.ts +1 -0
  48. package/lib/framework/index.js +2 -1
  49. package/lib/framework/localstack/index.d.ts +1 -0
  50. package/lib/framework/localstack/index.js +18 -0
  51. package/lib/framework/localstack/localstack-config.d.ts +79 -0
  52. package/lib/framework/localstack/localstack-config.js +49 -0
  53. package/lib/framework/tests/localstack-batch-agent.test.d.ts +1 -0
  54. package/lib/framework/tests/localstack-batch-agent.test.js +67 -0
  55. package/lib/tsconfig.tsbuildinfo +1 -1
  56. package/lib/utilities/data-loader.js +1 -1
  57. package/lib/utilities/lambda-iam-utils.js +1 -1
  58. package/lib/utilities/observability/cloudfront-distribution-observability-property-injector.js +1 -1
  59. package/lib/utilities/observability/cloudwatch-transaction-search.js +1 -1
  60. package/lib/utilities/observability/default-observability-config.js +1 -1
  61. package/lib/utilities/observability/lambda-observability-property-injector.js +1 -1
  62. package/lib/utilities/observability/log-group-data-protection-utils.js +1 -1
  63. package/lib/utilities/observability/powertools-config.js +1 -1
  64. package/lib/utilities/observability/state-machine-observability-property-injector.js +1 -1
  65. package/lib/webapp/frontend-construct.js +1 -1
  66. package/package.json +1 -1
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const path = require("path");
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const assertions_1 = require("aws-cdk-lib/assertions");
6
+ const aws_s3_assets_1 = require("aws-cdk-lib/aws-s3-assets");
7
+ const localstack_1 = require("../../framework/localstack");
8
+ const test_utils_1 = require("../../utilities/test-utils");
9
+ const localstack_agentic_document_processing_1 = require("../localstack-agentic-document-processing");
10
+ class TestableLocalStackAgenticDocumentProcessing extends localstack_agentic_document_processing_1.LocalStackAgenticDocumentProcessing {
11
+ runtimeEntryPath() {
12
+ return this.resolveBedrockInvokeEntry();
13
+ }
14
+ }
15
+ describe('LocalStackAgenticDocumentProcessing', () => {
16
+ test('uses LocalStackBatchAgent and injects LocalStack endpoint env vars', () => {
17
+ const app = (0, test_utils_1.createTestApp)();
18
+ const stack = new aws_cdk_lib_1.Stack(app, 'LocalStackAgenticStack');
19
+ const systemPrompt = new aws_s3_assets_1.Asset(stack, 'SystemPrompt', {
20
+ path: path.join(__dirname, '../../framework/agents/resources/default-strands-agent/batch.py'),
21
+ });
22
+ new localstack_agentic_document_processing_1.LocalStackAgenticDocumentProcessing(stack, 'LocalStackAgentic', {
23
+ classificationBedrockModel: {
24
+ customModelId: localstack_1.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID,
25
+ },
26
+ processingAgentParameters: {
27
+ agentName: 'LocalAgenticProcessor',
28
+ prompt: 'Process the insurance claim document',
29
+ agentDefinition: {
30
+ bedrockModel: {
31
+ customModelId: localstack_1.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID,
32
+ },
33
+ systemPrompt,
34
+ },
35
+ },
36
+ localStack: {
37
+ endpointUrl: localstack_1.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL,
38
+ },
39
+ });
40
+ const template = assertions_1.Template.fromStack(stack);
41
+ template.hasResourceProperties('AWS::Lambda::Function', {
42
+ Environment: {
43
+ Variables: assertions_1.Match.objectLike({
44
+ PROMPT: 'Process the insurance claim document',
45
+ LOCALSTACK_ENABLED: 'true',
46
+ AWS_ENDPOINT_URL: localstack_1.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL,
47
+ AWS_ENDPOINT_URL_BEDROCK_RUNTIME: localstack_1.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL,
48
+ AWS_ENDPOINT_URL_BEDROCK_AGENT_RUNTIME: localstack_1.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL,
49
+ AWS_ENDPOINT_URL_S3: localstack_1.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL,
50
+ }),
51
+ },
52
+ });
53
+ });
54
+ test('uses the LocalStack invoke runtime entry', () => {
55
+ const app = (0, test_utils_1.createTestApp)();
56
+ const stack = new aws_cdk_lib_1.Stack(app, 'LocalStackAgenticRuntimeStack');
57
+ const systemPrompt = new aws_s3_assets_1.Asset(stack, 'RuntimeSystemPrompt', {
58
+ path: path.join(__dirname, '../../framework/agents/resources/default-strands-agent/batch.py'),
59
+ });
60
+ const processing = new TestableLocalStackAgenticDocumentProcessing(stack, 'LocalStackAgenticRuntime', {
61
+ classificationBedrockModel: {
62
+ customModelId: localstack_1.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID,
63
+ },
64
+ processingAgentParameters: {
65
+ agentName: 'LocalAgenticProcessorRuntime',
66
+ prompt: 'Process the insurance claim document',
67
+ agentDefinition: {
68
+ bedrockModel: {
69
+ customModelId: localstack_1.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID,
70
+ },
71
+ systemPrompt,
72
+ },
73
+ },
74
+ });
75
+ expect(processing.runtimeEntryPath()).toContain(path.join('resources', 'default-localstack-invoke'));
76
+ });
77
+ });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxzdGFjay1hZ2VudGljLWRvY3VtZW50LXByb2Nlc3NpbmcudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9kb2N1bWVudC1wcm9jZXNzaW5nL3Rlc3RzL2xvY2Fsc3RhY2stYWdlbnRpYy1kb2N1bWVudC1wcm9jZXNzaW5nLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2QkFBNkI7QUFDN0IsNkNBQW9DO0FBQ3BDLHVEQUF5RDtBQUN6RCw2REFBa0Q7QUFDbEQsMkRBR29DO0FBQ3BDLDJEQUEyRDtBQUMzRCxzR0FBZ0c7QUFFaEcsTUFBTSwyQ0FBNEMsU0FBUSw0RUFBbUM7SUFDcEYsZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtJQUNuRCxJQUFJLENBQUMsb0VBQW9FLEVBQUUsR0FBRyxFQUFFO1FBQzlFLE1BQU0sR0FBRyxHQUFHLElBQUEsMEJBQWEsR0FBRSxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUV2RCxNQUFNLFlBQVksR0FBRyxJQUFJLHFCQUFLLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRTtZQUNwRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUVBQWlFLENBQUM7U0FDOUYsQ0FBQyxDQUFDO1FBRUgsSUFBSSw0RUFBbUMsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7WUFDbEUsMEJBQTBCLEVBQUU7Z0JBQzFCLGFBQWEsRUFBRSwrQ0FBa0M7YUFDbEQ7WUFDRCx5QkFBeUIsRUFBRTtnQkFDekIsU0FBUyxFQUFFLHVCQUF1QjtnQkFDbEMsTUFBTSxFQUFFLHNDQUFzQztnQkFDOUMsZUFBZSxFQUFFO29CQUNmLFlBQVksRUFBRTt3QkFDWixhQUFhLEVBQUUsK0NBQWtDO3FCQUNsRDtvQkFDRCxZQUFZO2lCQUNiO2FBQ0Y7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLG9EQUF1QzthQUNyRDtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsRUFBRTtZQUN0RCxXQUFXLEVBQUU7Z0JBQ1gsU0FBUyxFQUFFLGtCQUFLLENBQUMsVUFBVSxDQUFDO29CQUMxQixNQUFNLEVBQUUsc0NBQXNDO29CQUM5QyxrQkFBa0IsRUFBRSxNQUFNO29CQUMxQixnQkFBZ0IsRUFBRSxvREFBdUM7b0JBQ3pELGdDQUFnQyxFQUFFLG9EQUF1QztvQkFDekUsc0NBQXNDLEVBQUUsb0RBQXVDO29CQUMvRSxtQkFBbUIsRUFBRSxvREFBdUM7aUJBQzdELENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLEdBQUcsRUFBRTtRQUNwRCxNQUFNLEdBQUcsR0FBRyxJQUFBLDBCQUFhLEdBQUUsQ0FBQztRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsR0FBRyxFQUFFLCtCQUErQixDQUFDLENBQUM7UUFFOUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxxQkFBSyxDQUFDLEtBQUssRUFBRSxxQkFBcUIsRUFBRTtZQUMzRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUVBQWlFLENBQUM7U0FDOUYsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsSUFBSSwyQ0FBMkMsQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLEVBQUU7WUFDcEcsMEJBQTBCLEVBQUU7Z0JBQzFCLGFBQWEsRUFBRSwrQ0FBa0M7YUFDbEQ7WUFDRCx5QkFBeUIsRUFBRTtnQkFDekIsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsTUFBTSxFQUFFLHNDQUFzQztnQkFDOUMsZUFBZSxFQUFFO29CQUNmLFlBQVksRUFBRTt3QkFDWixhQUFhLEVBQUUsK0NBQWtDO3FCQUNsRDtvQkFDRCxZQUFZO2lCQUNiO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBNYXRjaCwgVGVtcGxhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcbmltcG9ydCB7IEFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0xPQ0FMU1RBQ0tfT0xMQU1BX01PREVMX0lELFxuICBERUZBVUxUX0xPQ0FMU1RBQ0tfU0FOREJPWF9FTkRQT0lOVF9VUkwsXG59IGZyb20gJy4uLy4uL2ZyYW1ld29yay9sb2NhbHN0YWNrJztcbmltcG9ydCB7IGNyZWF0ZVRlc3RBcHAgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvdGVzdC11dGlscyc7XG5pbXBvcnQgeyBMb2NhbFN0YWNrQWdlbnRpY0RvY3VtZW50UHJvY2Vzc2luZyB9IGZyb20gJy4uL2xvY2Fsc3RhY2stYWdlbnRpYy1kb2N1bWVudC1wcm9jZXNzaW5nJztcblxuY2xhc3MgVGVzdGFibGVMb2NhbFN0YWNrQWdlbnRpY0RvY3VtZW50UHJvY2Vzc2luZyBleHRlbmRzIExvY2FsU3RhY2tBZ2VudGljRG9jdW1lbnRQcm9jZXNzaW5nIHtcbiAgcHVibGljIHJ1bnRpbWVFbnRyeVBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlQmVkcm9ja0ludm9rZUVudHJ5KCk7XG4gIH1cbn1cblxuZGVzY3JpYmUoJ0xvY2FsU3RhY2tBZ2VudGljRG9jdW1lbnRQcm9jZXNzaW5nJywgKCkgPT4ge1xuICB0ZXN0KCd1c2VzIExvY2FsU3RhY2tCYXRjaEFnZW50IGFuZCBpbmplY3RzIExvY2FsU3RhY2sgZW5kcG9pbnQgZW52IHZhcnMnLCAoKSA9PiB7XG4gICAgY29uc3QgYXBwID0gY3JlYXRlVGVzdEFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgJ0xvY2FsU3RhY2tBZ2VudGljU3RhY2snKTtcblxuICAgIGNvbnN0IHN5c3RlbVByb21wdCA9IG5ldyBBc3NldChzdGFjaywgJ1N5c3RlbVByb21wdCcsIHtcbiAgICAgIHBhdGg6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9mcmFtZXdvcmsvYWdlbnRzL3Jlc291cmNlcy9kZWZhdWx0LXN0cmFuZHMtYWdlbnQvYmF0Y2gucHknKSxcbiAgICB9KTtcblxuICAgIG5ldyBMb2NhbFN0YWNrQWdlbnRpY0RvY3VtZW50UHJvY2Vzc2luZyhzdGFjaywgJ0xvY2FsU3RhY2tBZ2VudGljJywge1xuICAgICAgY2xhc3NpZmljYXRpb25CZWRyb2NrTW9kZWw6IHtcbiAgICAgICAgY3VzdG9tTW9kZWxJZDogREVGQVVMVF9MT0NBTFNUQUNLX09MTEFNQV9NT0RFTF9JRCxcbiAgICAgIH0sXG4gICAgICBwcm9jZXNzaW5nQWdlbnRQYXJhbWV0ZXJzOiB7XG4gICAgICAgIGFnZW50TmFtZTogJ0xvY2FsQWdlbnRpY1Byb2Nlc3NvcicsXG4gICAgICAgIHByb21wdDogJ1Byb2Nlc3MgdGhlIGluc3VyYW5jZSBjbGFpbSBkb2N1bWVudCcsXG4gICAgICAgIGFnZW50RGVmaW5pdGlvbjoge1xuICAgICAgICAgIGJlZHJvY2tNb2RlbDoge1xuICAgICAgICAgICAgY3VzdG9tTW9kZWxJZDogREVGQVVMVF9MT0NBTFNUQUNLX09MTEFNQV9NT0RFTF9JRCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN5c3RlbVByb21wdCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsb2NhbFN0YWNrOiB7XG4gICAgICAgIGVuZHBvaW50VXJsOiBERUZBVUxUX0xPQ0FMU1RBQ0tfU0FOREJPWF9FTkRQT0lOVF9VUkwsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCB7XG4gICAgICBFbnZpcm9ubWVudDoge1xuICAgICAgICBWYXJpYWJsZXM6IE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgIFBST01QVDogJ1Byb2Nlc3MgdGhlIGluc3VyYW5jZSBjbGFpbSBkb2N1bWVudCcsXG4gICAgICAgICAgTE9DQUxTVEFDS19FTkFCTEVEOiAndHJ1ZScsXG4gICAgICAgICAgQVdTX0VORFBPSU5UX1VSTDogREVGQVVMVF9MT0NBTFNUQUNLX1NBTkRCT1hfRU5EUE9JTlRfVVJMLFxuICAgICAgICAgIEFXU19FTkRQT0lOVF9VUkxfQkVEUk9DS19SVU5USU1FOiBERUZBVUxUX0xPQ0FMU1RBQ0tfU0FOREJPWF9FTkRQT0lOVF9VUkwsXG4gICAgICAgICAgQVdTX0VORFBPSU5UX1VSTF9CRURST0NLX0FHRU5UX1JVTlRJTUU6IERFRkFVTFRfTE9DQUxTVEFDS19TQU5EQk9YX0VORFBPSU5UX1VSTCxcbiAgICAgICAgICBBV1NfRU5EUE9JTlRfVVJMX1MzOiBERUZBVUxUX0xPQ0FMU1RBQ0tfU0FOREJPWF9FTkRQT0lOVF9VUkwsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgndXNlcyB0aGUgTG9jYWxTdGFjayBpbnZva2UgcnVudGltZSBlbnRyeScsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBjcmVhdGVUZXN0QXBwKCk7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnTG9jYWxTdGFja0FnZW50aWNSdW50aW1lU3RhY2snKTtcblxuICAgIGNvbnN0IHN5c3RlbVByb21wdCA9IG5ldyBBc3NldChzdGFjaywgJ1J1bnRpbWVTeXN0ZW1Qcm9tcHQnLCB7XG4gICAgICBwYXRoOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vZnJhbWV3b3JrL2FnZW50cy9yZXNvdXJjZXMvZGVmYXVsdC1zdHJhbmRzLWFnZW50L2JhdGNoLnB5JyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBwcm9jZXNzaW5nID0gbmV3IFRlc3RhYmxlTG9jYWxTdGFja0FnZW50aWNEb2N1bWVudFByb2Nlc3Npbmcoc3RhY2ssICdMb2NhbFN0YWNrQWdlbnRpY1J1bnRpbWUnLCB7XG4gICAgICBjbGFzc2lmaWNhdGlvbkJlZHJvY2tNb2RlbDoge1xuICAgICAgICBjdXN0b21Nb2RlbElkOiBERUZBVUxUX0xPQ0FMU1RBQ0tfT0xMQU1BX01PREVMX0lELFxuICAgICAgfSxcbiAgICAgIHByb2Nlc3NpbmdBZ2VudFBhcmFtZXRlcnM6IHtcbiAgICAgICAgYWdlbnROYW1lOiAnTG9jYWxBZ2VudGljUHJvY2Vzc29yUnVudGltZScsXG4gICAgICAgIHByb21wdDogJ1Byb2Nlc3MgdGhlIGluc3VyYW5jZSBjbGFpbSBkb2N1bWVudCcsXG4gICAgICAgIGFnZW50RGVmaW5pdGlvbjoge1xuICAgICAgICAgIGJlZHJvY2tNb2RlbDoge1xuICAgICAgICAgICAgY3VzdG9tTW9kZWxJZDogREVGQVVMVF9MT0NBTFNUQUNLX09MTEFNQV9NT0RFTF9JRCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN5c3RlbVByb21wdCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocHJvY2Vzc2luZy5ydW50aW1lRW50cnlQYXRoKCkpLnRvQ29udGFpbihwYXRoLmpvaW4oJ3Jlc291cmNlcycsICdkZWZhdWx0LWxvY2Fsc3RhY2staW52b2tlJykpO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const path = require("path");
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const assertions_1 = require("aws-cdk-lib/assertions");
6
+ const network_1 = require("../../framework/foundation/network");
7
+ const localstack_1 = require("../../framework/localstack");
8
+ const test_utils_1 = require("../../utilities/test-utils");
9
+ const bedrock_document_processing_1 = require("../bedrock-document-processing");
10
+ const localstack_bedrock_document_processing_1 = require("../localstack-bedrock-document-processing");
11
+ class TestableLocalStackBedrockDocumentProcessing extends localstack_bedrock_document_processing_1.LocalStackBedrockDocumentProcessing {
12
+ runtimeEntryPath() {
13
+ return this.resolveBedrockInvokeEntry();
14
+ }
15
+ }
16
+ class TestableBedrockDocumentProcessing extends bedrock_document_processing_1.BedrockDocumentProcessing {
17
+ runtimeEntryPath() {
18
+ return this.resolveBedrockInvokeEntry();
19
+ }
20
+ }
21
+ describe('LocalStackBedrockDocumentProcessing', () => {
22
+ test('injects LocalStack endpoint variables into classification Lambda', () => {
23
+ const app = (0, test_utils_1.createTestApp)();
24
+ const stack = new aws_cdk_lib_1.Stack(app, 'LocalStackBedrockStack');
25
+ new localstack_bedrock_document_processing_1.LocalStackBedrockDocumentProcessing(stack, 'LocalStackBedrock', {
26
+ classificationBedrockModel: {
27
+ customModelId: localstack_1.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID,
28
+ useCrossRegionInference: true,
29
+ },
30
+ processingBedrockModel: {
31
+ customModelId: localstack_1.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID,
32
+ },
33
+ localStack: {
34
+ endpointUrl: localstack_1.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL,
35
+ },
36
+ });
37
+ const template = assertions_1.Template.fromStack(stack);
38
+ template.hasResourceProperties('AWS::Lambda::Function', {
39
+ Environment: {
40
+ Variables: assertions_1.Match.objectLike({
41
+ INVOKE_TYPE: 'classification',
42
+ MODEL_ID: localstack_1.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID,
43
+ LOCALSTACK_ENABLED: 'true',
44
+ AWS_ENDPOINT_URL_BEDROCK_RUNTIME: localstack_1.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL,
45
+ AWS_ENDPOINT_URL_S3: localstack_1.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL,
46
+ }),
47
+ },
48
+ });
49
+ template.hasResourceProperties('AWS::Lambda::Function', {
50
+ Environment: {
51
+ Variables: assertions_1.Match.objectLike({
52
+ STATE_MACHINE_ARN: assertions_1.Match.anyValue(),
53
+ AWS_ENDPOINT_URL_STEPFUNCTIONS: localstack_1.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL,
54
+ }),
55
+ },
56
+ });
57
+ });
58
+ test('does not create AWS Bedrock VPC endpoints when network is enabled', () => {
59
+ const app = (0, test_utils_1.createTestApp)();
60
+ const stack = new aws_cdk_lib_1.Stack(app, 'LocalStackBedrockNetworkStack');
61
+ const network = new network_1.Network(stack, 'Network');
62
+ new localstack_bedrock_document_processing_1.LocalStackBedrockDocumentProcessing(stack, 'LocalStackBedrockNetwork', {
63
+ network,
64
+ classificationBedrockModel: {
65
+ customModelId: localstack_1.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID,
66
+ },
67
+ processingBedrockModel: {
68
+ customModelId: localstack_1.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID,
69
+ },
70
+ localStack: {
71
+ endpointUrl: localstack_1.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL,
72
+ },
73
+ });
74
+ const template = assertions_1.Template.fromStack(stack);
75
+ const vpcEndpoints = template.findResources('AWS::EC2::VPCEndpoint');
76
+ expect(Object.keys(vpcEndpoints)).toHaveLength(5);
77
+ const serviceNames = Object.values(vpcEndpoints)
78
+ .map((endpoint) => JSON.stringify(endpoint.Properties?.ServiceName ?? ''))
79
+ .join(' ');
80
+ expect(serviceNames).toContain('states');
81
+ expect(serviceNames).toContain('events');
82
+ expect(serviceNames).toContain('sqs');
83
+ expect(serviceNames).toContain('s3');
84
+ expect(serviceNames).not.toContain('bedrock');
85
+ expect(serviceNames).not.toContain('bedrock-runtime');
86
+ });
87
+ test('uses the LocalStack invoke runtime entry', () => {
88
+ const app = (0, test_utils_1.createTestApp)();
89
+ const stack = new aws_cdk_lib_1.Stack(app, 'LocalStackBedrockRuntimeStack');
90
+ const processing = new TestableLocalStackBedrockDocumentProcessing(stack, 'LocalStackBedrockRuntime', {
91
+ classificationBedrockModel: {
92
+ customModelId: localstack_1.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID,
93
+ },
94
+ });
95
+ expect(processing.runtimeEntryPath()).toContain(path.join('resources', 'default-localstack-invoke'));
96
+ });
97
+ test('keeps existing BedrockDocumentProcessing behavior unchanged', () => {
98
+ const app = (0, test_utils_1.createTestApp)();
99
+ const stack = new aws_cdk_lib_1.Stack(app, 'AwsBedrockStack');
100
+ new bedrock_document_processing_1.BedrockDocumentProcessing(stack, 'AwsBedrock', {});
101
+ const template = assertions_1.Template.fromStack(stack);
102
+ const lambdas = template.findResources('AWS::Lambda::Function');
103
+ for (const lambda of Object.values(lambdas)) {
104
+ const variables = lambda.Properties?.Environment?.Variables || {};
105
+ expect(variables.LOCALSTACK_ENABLED).toBeUndefined();
106
+ expect(variables.AWS_ENDPOINT_URL).toBeUndefined();
107
+ }
108
+ });
109
+ test('keeps default AWS Bedrock invoke runtime entry', () => {
110
+ const app = (0, test_utils_1.createTestApp)();
111
+ const stack = new aws_cdk_lib_1.Stack(app, 'AwsBedrockRuntimeStack');
112
+ const processing = new TestableBedrockDocumentProcessing(stack, 'AwsBedrockRuntime', {});
113
+ expect(processing.runtimeEntryPath()).toContain(path.join('resources', 'default-bedrock-invoke'));
114
+ });
115
+ });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxzdGFjay1kb2N1bWVudC1wcm9jZXNzaW5nLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZG9jdW1lbnQtcHJvY2Vzc2luZy90ZXN0cy9sb2NhbHN0YWNrLWRvY3VtZW50LXByb2Nlc3NpbmcudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUE2QjtBQUM3Qiw2Q0FBb0M7QUFDcEMsdURBQXlEO0FBQ3pELGdFQUE2RDtBQUM3RCwyREFHb0M7QUFDcEMsMkRBQTJEO0FBQzNELGdGQUEyRTtBQUMzRSxzR0FBZ0c7QUFFaEcsTUFBTSwyQ0FBNEMsU0FBUSw0RUFBbUM7SUFDcEYsZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBRUQsTUFBTSxpQ0FBa0MsU0FBUSx1REFBeUI7SUFDaEUsZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtJQUNuRCxJQUFJLENBQUMsa0VBQWtFLEVBQUUsR0FBRyxFQUFFO1FBQzVFLE1BQU0sR0FBRyxHQUFHLElBQUEsMEJBQWEsR0FBRSxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUV2RCxJQUFJLDRFQUFtQyxDQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtZQUNsRSwwQkFBMEIsRUFBRTtnQkFDMUIsYUFBYSxFQUFFLCtDQUFrQztnQkFDakQsdUJBQXVCLEVBQUUsSUFBSTthQUM5QjtZQUNELHNCQUFzQixFQUFFO2dCQUN0QixhQUFhLEVBQUUsK0NBQWtDO2FBQ2xEO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLFdBQVcsRUFBRSxvREFBdUM7YUFDckQ7U0FDRixDQUFDLENBQUM7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LGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtRQUMxRCxNQUFNLEdBQUcsR0FBRyxJQUFBLDBCQUFhLEdBQUUsQ0FBQztRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFFdkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFekYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLHdCQUF3QixDQUFDLENBQUMsQ0FBQztJQUNwRyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgTWF0Y2gsIFRlbXBsYXRlIH0gZnJvbSAnYXdzLWNkay1saWIvYXNzZXJ0aW9ucyc7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL2ZvdW5kYXRpb24vbmV0d29yayc7XG5pbXBvcnQge1xuICBERUZBVUxUX0xPQ0FMU1RBQ0tfT0xMQU1BX01PREVMX0lELFxuICBERUZBVUxUX0xPQ0FMU1RBQ0tfU0FOREJPWF9FTkRQT0lOVF9VUkwsXG59IGZyb20gJy4uLy4uL2ZyYW1ld29yay9sb2NhbHN0YWNrJztcbmltcG9ydCB7IGNyZWF0ZVRlc3RBcHAgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvdGVzdC11dGlscyc7XG5pbXBvcnQgeyBCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nIH0gZnJvbSAnLi4vYmVkcm9jay1kb2N1bWVudC1wcm9jZXNzaW5nJztcbmltcG9ydCB7IExvY2FsU3RhY2tCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nIH0gZnJvbSAnLi4vbG9jYWxzdGFjay1iZWRyb2NrLWRvY3VtZW50LXByb2Nlc3NpbmcnO1xuXG5jbGFzcyBUZXN0YWJsZUxvY2FsU3RhY2tCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nIGV4dGVuZHMgTG9jYWxTdGFja0JlZHJvY2tEb2N1bWVudFByb2Nlc3Npbmcge1xuICBwdWJsaWMgcnVudGltZUVudHJ5UGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVCZWRyb2NrSW52b2tlRW50cnkoKTtcbiAgfVxufVxuXG5jbGFzcyBUZXN0YWJsZUJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcgZXh0ZW5kcyBCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nIHtcbiAgcHVibGljIHJ1bnRpbWVFbnRyeVBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlQmVkcm9ja0ludm9rZUVudHJ5KCk7XG4gIH1cbn1cblxuZGVzY3JpYmUoJ0xvY2FsU3RhY2tCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nJywgKCkgPT4ge1xuICB0ZXN0KCdpbmplY3RzIExvY2FsU3RhY2sgZW5kcG9pbnQgdmFyaWFibGVzIGludG8gY2xhc3NpZmljYXRpb24gTGFtYmRhJywgKCkgPT4ge1xuICAgIGNvbnN0IGFwcCA9IGNyZWF0ZVRlc3RBcHAoKTtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsICdMb2NhbFN0YWNrQmVkcm9ja1N0YWNrJyk7XG5cbiAgICBuZXcgTG9jYWxTdGFja0JlZHJvY2tEb2N1bWVudFByb2Nlc3Npbmcoc3RhY2ssICdMb2NhbFN0YWNrQmVkcm9jaycsIHtcbiAgICAgIGNsYXNzaWZpY2F0aW9uQmVkcm9ja01vZGVsOiB7XG4gICAgICAgIGN1c3RvbU1vZGVsSWQ6IERFRkFVTFRfTE9DQUxTVEFDS19PTExBTUFfTU9ERUxfSUQsXG4gICAgICAgIHVzZUNyb3NzUmVnaW9uSW5mZXJlbmNlOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHByb2Nlc3NpbmdCZWRyb2NrTW9kZWw6IHtcbiAgICAgICAgY3VzdG9tTW9kZWxJZDogREVGQVVMVF9MT0NBTFNUQUNLX09MTEFNQV9NT0RFTF9JRCxcbiAgICAgIH0sXG4gICAgICBsb2NhbFN0YWNrOiB7XG4gICAgICAgIGVuZHBvaW50VXJsOiBERUZBVUxUX0xPQ0FMU1RBQ0tfU0FOREJPWF9FTkRQT0lOVF9VUkwsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCB7XG4gICAgICBFbnZpcm9ubWVudDoge1xuICAgICAgICBWYXJpYWJsZXM6IE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgIElOVk9LRV9UWVBFOiAnY2xhc3NpZmljYXRpb24nLFxuICAgICAgICAgIE1PREVMX0lEOiBERUZBVUxUX0xPQ0FMU1RBQ0tfT0xMQU1BX01PREVMX0lELFxuICAgICAgICAgIExPQ0FMU1RBQ0tfRU5BQkxFRDogJ3RydWUnLFxuICAgICAgICAgIEFXU19FTkRQT0lOVF9VUkxfQkVEUk9DS19SVU5USU1FOiBERUZBVUxUX0xPQ0FMU1RBQ0tfU0FOREJPWF9FTkRQT0lOVF9VUkwsXG4gICAgICAgICAgQVdTX0VORFBPSU5UX1VSTF9TMzogREVGQVVMVF9MT0NBTFNUQUNLX1NBTkRCT1hfRU5EUE9JTlRfVVJMLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsIHtcbiAgICAgIEVudmlyb25tZW50OiB7XG4gICAgICAgIFZhcmlhYmxlczogTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgU1RBVEVfTUFDSElORV9BUk46IE1hdGNoLmFueVZhbHVlKCksXG4gICAgICAgICAgQVdTX0VORFBPSU5UX1VSTF9TVEVQRlVOQ1RJT05TOiBERUZBVUxUX0xPQ0FMU1RBQ0tfU0FOREJPWF9FTkRQT0lOVF9VUkwsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgnZG9lcyBub3QgY3JlYXRlIEFXUyBCZWRyb2NrIFZQQyBlbmRwb2ludHMgd2hlbiBuZXR3b3JrIGlzIGVuYWJsZWQnLCAoKSA9PiB7XG4gICAgY29uc3QgYXBwID0gY3JlYXRlVGVzdEFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgJ0xvY2FsU3RhY2tCZWRyb2NrTmV0d29ya1N0YWNrJyk7XG4gICAgY29uc3QgbmV0d29yayA9IG5ldyBOZXR3b3JrKHN0YWNrLCAnTmV0d29yaycpO1xuXG4gICAgbmV3IExvY2FsU3RhY2tCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nKHN0YWNrLCAnTG9jYWxTdGFja0JlZHJvY2tOZXR3b3JrJywge1xuICAgICAgbmV0d29yayxcbiAgICAgIGNsYXNzaWZpY2F0aW9uQmVkcm9ja01vZGVsOiB7XG4gICAgICAgIGN1c3RvbU1vZGVsSWQ6IERFRkFVTFRfTE9DQUxTVEFDS19PTExBTUFfTU9ERUxfSUQsXG4gICAgICB9LFxuICAgICAgcHJvY2Vzc2luZ0JlZHJvY2tNb2RlbDoge1xuICAgICAgICBjdXN0b21Nb2RlbElkOiBERUZBVUxUX0xPQ0FMU1RBQ0tfT0xMQU1BX01PREVMX0lELFxuICAgICAgfSxcbiAgICAgIGxvY2FsU3RhY2s6IHtcbiAgICAgICAgZW5kcG9pbnRVcmw6IERFRkFVTFRfTE9DQUxTVEFDS19TQU5EQk9YX0VORFBPSU5UX1VSTCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gICAgY29uc3QgdnBjRW5kcG9pbnRzID0gdGVtcGxhdGUuZmluZFJlc291cmNlcygnQVdTOjpFQzI6OlZQQ0VuZHBvaW50Jyk7XG5cbiAgICBleHBlY3QoT2JqZWN0LmtleXModnBjRW5kcG9pbnRzKSkudG9IYXZlTGVuZ3RoKDUpO1xuXG4gICAgY29uc3Qgc2VydmljZU5hbWVzID0gT2JqZWN0LnZhbHVlcyh2cGNFbmRwb2ludHMpXG4gICAgICAubWFwKChlbmRwb2ludDogYW55KSA9PiBKU09OLnN0cmluZ2lmeShlbmRwb2ludC5Qcm9wZXJ0aWVzPy5TZXJ2aWNlTmFtZSA/PyAnJykpXG4gICAgICAuam9pbignICcpO1xuXG4gICAgZXhwZWN0KHNlcnZpY2VOYW1lcykudG9Db250YWluKCdzdGF0ZXMnKTtcbiAgICBleHBlY3Qoc2VydmljZU5hbWVzKS50b0NvbnRhaW4oJ2V2ZW50cycpO1xuICAgIGV4cGVjdChzZXJ2aWNlTmFtZXMpLnRvQ29udGFpbignc3FzJyk7XG4gICAgZXhwZWN0KHNlcnZpY2VOYW1lcykudG9Db250YWluKCdzMycpO1xuICAgIGV4cGVjdChzZXJ2aWNlTmFtZXMpLm5vdC50b0NvbnRhaW4oJ2JlZHJvY2snKTtcbiAgICBleHBlY3Qoc2VydmljZU5hbWVzKS5ub3QudG9Db250YWluKCdiZWRyb2NrLXJ1bnRpbWUnKTtcbiAgfSk7XG5cbiAgdGVzdCgndXNlcyB0aGUgTG9jYWxTdGFjayBpbnZva2UgcnVudGltZSBlbnRyeScsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBjcmVhdGVUZXN0QXBwKCk7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnTG9jYWxTdGFja0JlZHJvY2tSdW50aW1lU3RhY2snKTtcblxuICAgIGNvbnN0IHByb2Nlc3NpbmcgPSBuZXcgVGVzdGFibGVMb2NhbFN0YWNrQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZyhzdGFjaywgJ0xvY2FsU3RhY2tCZWRyb2NrUnVudGltZScsIHtcbiAgICAgIGNsYXNzaWZpY2F0aW9uQmVkcm9ja01vZGVsOiB7XG4gICAgICAgIGN1c3RvbU1vZGVsSWQ6IERFRkFVTFRfTE9DQUxTVEFDS19PTExBTUFfTU9ERUxfSUQsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHByb2Nlc3NpbmcucnVudGltZUVudHJ5UGF0aCgpKS50b0NvbnRhaW4ocGF0aC5qb2luKCdyZXNvdXJjZXMnLCAnZGVmYXVsdC1sb2NhbHN0YWNrLWludm9rZScpKTtcbiAgfSk7XG5cbiAgdGVzdCgna2VlcHMgZXhpc3RpbmcgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZyBiZWhhdmlvciB1bmNoYW5nZWQnLCAoKSA9PiB7XG4gICAgY29uc3QgYXBwID0gY3JlYXRlVGVzdEFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgJ0F3c0JlZHJvY2tTdGFjaycpO1xuXG4gICAgbmV3IEJlZHJvY2tEb2N1bWVudFByb2Nlc3Npbmcoc3RhY2ssICdBd3NCZWRyb2NrJywge30pO1xuXG4gICAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICAgIGNvbnN0IGxhbWJkYXMgPSB0ZW1wbGF0ZS5maW5kUmVzb3VyY2VzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nKTtcblxuICAgIGZvciAoY29uc3QgbGFtYmRhIG9mIE9iamVjdC52YWx1ZXMobGFtYmRhcykpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IChsYW1iZGEgYXMgYW55KS5Qcm9wZXJ0aWVzPy5FbnZpcm9ubWVudD8uVmFyaWFibGVzIHx8IHt9O1xuICAgICAgZXhwZWN0KHZhcmlhYmxlcy5MT0NBTFNUQUNLX0VOQUJMRUQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh2YXJpYWJsZXMuQVdTX0VORFBPSU5UX1VSTCkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH1cbiAgfSk7XG5cbiAgdGVzdCgna2VlcHMgZGVmYXVsdCBBV1MgQmVkcm9jayBpbnZva2UgcnVudGltZSBlbnRyeScsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBjcmVhdGVUZXN0QXBwKCk7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnQXdzQmVkcm9ja1J1bnRpbWVTdGFjaycpO1xuXG4gICAgY29uc3QgcHJvY2Vzc2luZyA9IG5ldyBUZXN0YWJsZUJlZHJvY2tEb2N1bWVudFByb2Nlc3Npbmcoc3RhY2ssICdBd3NCZWRyb2NrUnVudGltZScsIHt9KTtcblxuICAgIGV4cGVjdChwcm9jZXNzaW5nLnJ1bnRpbWVFbnRyeVBhdGgoKSkudG9Db250YWluKHBhdGguam9pbigncmVzb3VyY2VzJywgJ2RlZmF1bHQtYmVkcm9jay1pbnZva2UnKSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -216,5 +216,5 @@ class BaseAgent extends constructs_1.Construct {
216
216
  }
217
217
  exports.BaseAgent = BaseAgent;
218
218
  _a = JSII_RTTI_SYMBOL_1;
219
- BaseAgent[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BaseAgent", version: "1.16.0" };
219
+ BaseAgent[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BaseAgent", version: "1.17.0" };
220
220
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9mcmFtZXdvcmsvYWdlbnRzL2Jhc2UtYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBRXRDLDZDQUFzRTtBQUN0RSxpREFBOEY7QUFDOUYsaURBQTBDO0FBQzFDLHVEQUE4RjtBQUU5RiwyQ0FBdUM7QUFDdkMsK0NBQWlLO0FBQ2pLLHdDQUFrRTtBQUVsRSwrQ0FBMkM7QUFJbEMsMkZBSkEsd0JBQVUsT0FJQTtBQXdKbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFzQixTQUFVLFNBQVEsc0JBQVM7SUFvQy9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLGFBQUcsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDOUUsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSwyQkFBYSxDQUFDLE9BQU87U0FDNUQsQ0FBQyxDQUFDO1FBR0gsTUFBTSxjQUFjLEdBQW1DLEVBQUUsQ0FBQztRQUUxRCxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsa0NBQWtDLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxrQ0FBa0MsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEksY0FBYyxDQUFDLGVBQWUsR0FBRyxJQUFJLHdCQUFjLENBQUM7Z0JBQ2xELFVBQVUsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLGtDQUFrQzthQUNyRSxDQUFDLENB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c0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBQcm9wZXJ0eUluamVjdG9ycywgUmVtb3ZhbFBvbGljeSwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBQb2xpY3lEb2N1bWVudCwgUG9saWN5U3RhdGVtZW50LCBSb2xlLCBTZXJ2aWNlUHJpbmNpcGFsIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IEFyY2hpdGVjdHVyZSwgSUZ1bmN0aW9uLCBJTGF5ZXJWZXJzaW9uLCBMYXllclZlcnNpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IEFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IExhbWJkYUlhbVV0aWxzLCBMYW1iZGFPYnNlcnZhYmlsaXR5UHJvcGVydHlJbmplY3RvciwgTG9nR3JvdXBEYXRhUHJvdGVjdGlvblByb3BzLCBMb2dHcm91cERhdGFQcm90ZWN0aW9uVXRpbHMsIE9ic2VydmFibGVQcm9wcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBCZWRyb2NrTW9kZWxQcm9wcywgQmVkcm9ja01vZGVsVXRpbHMgfSBmcm9tICcuLi9iZWRyb2NrJztcbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi9mb3VuZGF0aW9uJztcbmltcG9ydCB7IEludm9rZVR5cGUgfSBmcm9tICcuL2ludm9rZS10eXBlJztcbmltcG9ydCB7IElLbm93bGVkZ2VCYXNlLCBLbm93bGVkZ2VCYXNlUnVudGltZUNvbmZpZyB9IGZyb20gJy4va25vd2xlZGdlLWJhc2UnO1xuXG4vLyBSZS1leHBvcnQgSW52b2tlVHlwZSBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB7IEludm9rZVR5cGUgfTtcblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudFRvb2xzTG9jYXRpb25EZWZpbml0aW9uIHtcbiAgcmVhZG9ubHkgYnVja2V0TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgaXNGaWxlOiBib29sZWFuO1xuICByZWFkb25seSBpc1ppcEFyY2hpdmU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyB0aGF0IGluZmx1ZW5jZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBhZ2VudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50RGVmaW5pdGlvblByb3BzIHtcbiAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIEJlZHJvY2sgTW9kZWwgdG8gYmUgdXNlZFxuICAgICAqL1xuICByZWFkb25seSBiZWRyb2NrTW9kZWw6IEJlZHJvY2tNb2RlbFByb3BzO1xuXG4gIC8qKlxuICAgICAqIFRoZSBzeXN0ZW0gcHJvbXB0IG9mIHRoZSBhZ2VudFxuICAgICAqXG4gICAgICovXG4gIHJlYWRvbmx5IHN5c3RlbVByb21wdDogQXNzZXQ7XG5cbiAgLyoqXG4gICAgICogTGlzdCBvZiB0b29scyBkZWZpbmVkIGluIHB5dGhvbiBmaWxlcy4gVGhpcyB0b29scyB3b3VsZCBhdXRvbWF0aWNhbGx5XG4gICAgICogYmUgbG9hZGVkIGJ5IHRoZSBhZ2VudC4gWW91IGNhbiBhbHNvIHVzZSB0aGlzIHRvIGluY29ycG9yYXRlIG90aGVyIHNwZWNpYWxpemVkXG4gICAgICogYWdlbnRzIGFzIHRvb2xzLlxuICAgICAqL1xuICByZWFkb25seSB0b29scz86IEFzc2V0W107XG5cbiAgLyoqXG4gICAgICogQW55IGRlcGVuZGVuY2llcyBuZWVkZWQgYnkgdGhlIHByb3ZpZGVkIHRvb2xzXG4gICAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUxheWVycz86IExheWVyVmVyc2lvbltdO1xuXG4gIC8qKlxuICAgICAqIElmIHRvb2xzIG5lZWQgYWRkaXRpb25hbCBJQU0gcGVybWlzc2lvbnMsIHRoZXNlIHN0YXRlbWVudHNcbiAgICAgKiB3b3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgQWdlbnQncyBJQU0gcm9sZVxuICAgICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsUG9saWN5U3RhdGVtZW50c0ZvclRvb2xzPzogUG9saWN5U3RhdGVtZW50W107XG5cbiAgLyoqXG4gICAqIEtub3dsZWRnZSBiYXNlcyBhdmFpbGFibGUgdG8gdGhlIGFnZW50IGZvciBSZXRyaWV2YWwtQXVnbWVudGVkIEdlbmVyYXRpb24gKFJBRykuXG4gICAqXG4gICAqIFdoZW4gY29uZmlndXJlZCwgdGhlIGFnZW50IHdpbGwgaGF2ZSBhY2Nlc3MgdG8gYSBidWlsdC1pbiByZXRyaWV2YWwgdG9vbFxuICAgKiB0aGF0IGNhbiBxdWVyeSB0aGVzZSBrbm93bGVkZ2UgYmFzZXMuIFRoZSBhZ2VudCdzIHN5c3RlbSBwcm9tcHQgd2lsbCBiZVxuICAgKiBhdXRvbWF0aWNhbGx5IGF1Z21lbnRlZCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IGF2YWlsYWJsZSBrbm93bGVkZ2UgYmFzZXMuXG4gICAqXG4gICAqIEVhY2gga25vd2xlZGdlIGJhc2UgbXVzdCBpbXBsZW1lbnQgdGhlIElLbm93bGVkZ2VCYXNlIGludGVyZmFjZSwgd2hpY2hcbiAgICogaGFuZGxlcyBJQU0gcGVybWlzc2lvbiBnZW5lcmF0aW9uIGFuZCBydW50aW1lIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8ga25vd2xlZGdlIGJhc2VzIGNvbmZpZ3VyZWRcbiAgICovXG4gIHJlYWRvbmx5IGtub3dsZWRnZUJhc2VzPzogSUtub3dsZWRnZUJhc2VbXTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBJQU0gcG9saWN5IHN0YXRlbWVudHMgZm9yIGtub3dsZWRnZSBiYXNlIGFjY2Vzcy5cbiAgICpcbiAgICogVXNlIHRoaXMgd2hlbiBrbm93bGVkZ2UgYmFzZXMgcmVxdWlyZSBwZXJtaXNzaW9ucyBiZXlvbmQgd2hhdCBpc1xuICAgKiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSB0aGUgSUtub3dsZWRnZUJhc2UgaW1wbGVtZW50YXRpb25zLlxuICAgKiBUaGVzZSBzdGF0ZW1lbnRzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGFnZW50J3MgSUFNIHJvbGUgaW4gYWRkaXRpb25cbiAgICogdG8gdGhlIGF1dG8tZ2VuZXJhdGVkIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgYXV0by1nZW5lcmF0ZWQgcGVybWlzc2lvbnMgZnJvbSBrbm93bGVkZ2UgYmFzZXNcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yS25vd2xlZGdlQmFzZXM/OiBQb2xpY3lTdGF0ZW1lbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlQWdlbnRQcm9wcyBleHRlbmRzIE9ic2VydmFibGVQcm9wcyB7XG5cbiAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgYWdlbnRcbiAgICAgKi9cbiAgcmVhZG9ubHkgYWdlbnROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gc2VydmljZSBwcmluY2lwYWwgZm9yIHRoZSBhZ2VudCByb2xlJ3MgdHJ1c3QgcG9saWN5LlxuICAgKlxuICAgKiBUaGlzIGlzIHR5cGljYWxseSBzZXQgYnkgdGhlIGhvc3RpbmcgYWRhcHRlciAoZS5nLiwgYGxhbWJkYS5hbWF6b25hd3MuY29tYFxuICAgKiBmb3IgTGFtYmRhIGhvc3RpbmcsIGBiZWRyb2NrLWFnZW50Y29yZS5hbWF6b25hd3MuY29tYCBmb3IgQWdlbnRDb3JlKS5cbiAgICpcbiAgICogQGRlZmF1bHQgU2VydmljZVByaW5jaXBhbCgnbGFtYmRhLmFtYXpvbmF3cy5jb20nKVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZVByaW5jaXBhbD86IFNlcnZpY2VQcmluY2lwYWw7XG5cbiAgLyoqXG4gICAgICogQWdlbnQgcmVsYXRlZCBwYXJhbWV0ZXJzXG4gICAgICovXG4gIHJlYWRvbmx5IGFnZW50RGVmaW5pdGlvbjogQWdlbnREZWZpbml0aW9uUHJvcHM7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvYnNlcnZhYmlsaXR5IGZvciB0aGUgYWdlbnRcbiAgICpcbiAgICogV2hlbiBlbmFibGVkLCBjb25maWd1cmVzIGJvdGggTGFtYmRhIFBvd2VydG9vbHMgYW5kIEFXUyBCZWRyb2NrIEFnZW50Q29yZSBvYnNlcnZhYmlsaXR5OlxuICAgKiAtICoqTGFtYmRhIFBvd2VydG9vbHMqKjogUHJvdmlkZXMgZnVuY3Rpb24tbGV2ZWwgb2JzZXJ2YWJpbGl0eSBpbmNsdWRpbmcgc3RydWN0dXJlZCBsb2dnaW5nLFxuICAgKiAgIGRpc3RyaWJ1dGVkIHRyYWNpbmcgd2l0aCBYLVJheSwgYW5kIGN1c3RvbSBtZXRyaWNzXG4gICAqIC0gKipBZ2VudENvcmUgT2JzZXJ2YWJpbGl0eSoqOiBQcm92aWRlcyBhZ2VudC1zcGVjaWZpYyBvYnNlcnZhYmlsaXR5IGluY2x1ZGluZyBhZ2VudCBpbnZvY2F0aW9ucyxcbiAgICogICByZWFzb25pbmcgc3RlcHMsIHRvb2wgdXNhZ2UsIHRva2VuIGNvbnN1bXB0aW9uLCBhbmQgYWdlbnQgbGF0ZW5jeVxuICAgKlxuICAgKiBCb3RoIHN5c3RlbXMgcHVibGlzaCB0byBBbWF6b24gQ2xvdWRXYXRjaCBhbmQgdXNlIHRoZSBzYW1lIHNlcnZpY2UgbmFtZSBhbmQgbmFtZXNwYWNlXG4gICAqIGZvciBjb3JyZWxhdGlvbi4gVGhpcyBwcm92aWRlcyBjb21wbGV0ZSB2aXNpYmlsaXR5IGF0IGJvdGggZnVuY3Rpb24gYW5kIGFnZW50IGxldmVscy5cbiAgICpcbiAgICogKipFbnZpcm9ubWVudCBWYXJpYWJsZXMgU2V0KiogKEFnZW50Q29yZSk6XG4gICAqIC0gYEFHRU5UX09CU0VSVkFCSUxJVFlfRU5BQkxFRGA6IEVuYWJsZXMgQWdlbnRDb3JlIG9ic2VydmFiaWxpdHlcbiAgICogLSBgT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTYDogU2VydmljZSBpZGVudGlmaWNhdGlvbiBmb3IgT3BlblRlbGVtZXRyeVxuICAgKiAtIGBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19IRUFERVJTYDogQWdlbnQgaWRlbnRpZmljYXRpb24gaGVhZGVyc1xuICAgKiAtIGBBV1NfTEFNQkRBX0VYRUNfV1JBUFBFUmA6IEFET1Qgd3JhcHBlciBmb3IgYXV0b21hdGljIGluc3RydW1lbnRhdGlvblxuICAgKlxuICAgKiAqKklBTSBQZXJtaXNzaW9ucyBHcmFudGVkKiogKEFnZW50Q29yZSk6XG4gICAqIC0gQ2xvdWRXYXRjaCBMb2dzOiBgbG9nczpDcmVhdGVMb2dHcm91cGAsIGBsb2dzOkNyZWF0ZUxvZ1N0cmVhbWAsIGBsb2dzOlB1dExvZ0V2ZW50c2BcbiAgICogLSBYLVJheTogYHhyYXk6UHV0VHJhY2VTZWdtZW50c2AsIGB4cmF5OlB1dFRlbGVtZXRyeVJlY29yZHNgXG4gICAqXG4gICAqICoqQWRkaXRpb25hbCBSZXF1aXJlbWVudHMqKjpcbiAgICogLSBCYXRjaEFnZW50IGF1dG9tYXRpY2FsbHkgYWRkcyBBRE9UIChBV1MgRGlzdHJvIGZvciBPcGVuVGVsZW1ldHJ5KSBMYW1iZGEgTGF5ZXJcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL29ic2VydmFiaWxpdHktY29uZmlndXJlLmh0bWxcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZU9ic2VydmFiaWxpdHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgICAqIElmIHRoZSBBZ2VudCB3b3VsZCBiZSBydW5uaW5nIGluc2lkZSBhIFZQQ1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgQWdlbnQgd291bGQgbm90IGJlIGluIGEgVlBDXG4gICAgICovXG4gIHJlYWRvbmx5IG5ldHdvcms/OiBOZXR3b3JrO1xuXG4gIC8qKlxuICAgICAqIEVuY3J5cHRpb24ga2V5IHRvIGVuY3J5cHQgYWdlbnQgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBuZXcgS01TIEtleSB3b3VsZCBiZSBjcmVhdGVkXG4gICAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBLZXk7XG5cbiAgLyoqXG4gICAgICogUmVtb3ZhbCBwb2xpY3kgZm9yIHJlc291cmNlcyBjcmVhdGVkIGJ5IHRoaXNcbiAgICAgKiBjb25zdHJ1Y3RcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcblxuICAvKipcbiAgICogVGhlIGFyY2hpdGVjdHVyZSB1c2VkIGJ5IHRoZSBMYW1iZGEgZnVuY3Rpb24gd2hlcmUgdGhlXG4gICAqIGFnZW50IGlzIGhvc3RlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBBcmNoaXRlY3R1cmUuQVJNXzY0XG4gICAqL1xuICByZWFkb25seSBhZ2VudEFyY2hpdGVjdHVyZT86IEFyY2hpdGVjdHVyZTtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhbGwgYWdlbnQgdHlwZXMgaW4gdGhlIGZyYW1ld29ya1xuICpcbiAqIFByb3ZpZGVzIGNvbW1vbiBpbmZyYXN0cnVjdHVyZSBmb3IgQUkgYWdlbnRzIGluY2x1ZGluZzpcbiAqIC0gSUFNIHJvbGUgYW5kIHBlcm1pc3Npb25zIG1hbmFnZW1lbnRcbiAqIC0gRW5jcnlwdGlvbiBrZXkgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICogLSBUb29sIGludGVncmF0aW9uIGFuZCBTMyBhc3NldCBtYW5hZ2VtZW50XG4gKiAtIEtub3dsZWRnZSBiYXNlIGludGVncmF0aW9uIGZvciBSQUcgKFJldHJpZXZhbC1BdWdtZW50ZWQgR2VuZXJhdGlvbilcbiAqIC0gT2JzZXJ2YWJpbGl0eSBjb25maWd1cmF0aW9uIChMYW1iZGEgUG93ZXJ0b29scyArIEFnZW50Q29yZSlcbiAqXG4gKiBTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IHRoZSBhZ2VudC1zcGVjaWZpYyBMYW1iZGEgZnVuY3Rpb24gY3JlYXRpb24uXG4gKlxuICogKipPYnNlcnZhYmlsaXR5Kio6IFdoZW4gYGVuYWJsZU9ic2VydmFiaWxpdHk6IHRydWVgLCBCYXNlQWdlbnQgY29uZmlndXJlcyBib3RoXG4gKiBMYW1iZGEgUG93ZXJ0b29scyAoZnVuY3Rpb24tbGV2ZWwpIGFuZCBBV1MgQmVkcm9jayBBZ2VudENvcmUgKGFnZW50LWxldmVsKVxuICogb2JzZXJ2YWJpbGl0eS4gQm90aCBzeXN0ZW1zIHdvcmsgdG9nZXRoZXIgdG8gcHJvdmlkZSBjb21wbGV0ZSB2aXNpYmlsaXR5OlxuICogLSBMYW1iZGEgUG93ZXJ0b29scyBjYXB0dXJlcyBmdW5jdGlvbiBleGVjdXRpb24sIGxvZ3MsIGFuZCBjdXN0b20gbWV0cmljc1xuICogLSBBZ2VudENvcmUgY2FwdHVyZXMgYWdlbnQgcmVhc29uaW5nLCB0b29sIHVzYWdlLCBhbmQgdG9rZW4gY29uc3VtcHRpb25cbiAqIC0gQm90aCBwdWJsaXNoIHRvIENsb3VkV2F0Y2ggd2l0aCBjb3JyZWxhdGVkIHNlcnZpY2UgbmFtZXMgZm9yIHVuaWZpZWQgbW9uaXRvcmluZ1xuICpcbiAqIFRoZSBvYnNlcnZhYmlsaXR5IGludGVncmF0aW9uIGluY2x1ZGVzOlxuICogLSBBdXRvbWF0aWMgSUFNIHBlcm1pc3Npb24gZ3JhbnRzIGZvciBDbG91ZFdhdGNoIExvZ3MgYW5kIFgtUmF5XG4gKiAtIEVudmlyb25tZW50IHZhcmlhYmxlIGNvbmZpZ3VyYXRpb24gZm9yIE9wZW5UZWxlbWV0cnlcbiAqIC0gQURPVCBMYW1iZGEgTGF5ZXIgYXR0YWNobWVudCAoaGFuZGxlZCBieSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMpXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL29ic2VydmFiaWxpdHktY29uZmlndXJlLmh0bWxcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VBZ2VudCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIGZ1bmN0aW9uIGZvciB0aGUgYWdlbnQgKHdoZW4gdXNpbmcgTGFtYmRhIGhvc3RpbmcpLlxuICAgKiBNYXkgYmUgdW5kZWZpbmVkIGZvciBub24tTGFtYmRhIGhvc3RpbmcgYmFja2VuZHMgKGUuZy4gQWdlbnRDb3JlIFJ1bnRpbWUpLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFnZW50RnVuY3Rpb24/OiBJRnVuY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBiZWRyb2NrTW9kZWw/OiBCZWRyb2NrTW9kZWxQcm9wcztcbiAgcHVibGljIHJlYWRvbmx5IGFnZW50Um9sZTogUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk6IEtleTtcbiAgLyoqIGxvZyBncm91cCBkYXRhIHByb3RlY3Rpb24gY29uZmlndXJhdGlvbiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9nR3JvdXBEYXRhUHJvdGVjdGlvbjogTG9nR3JvdXBEYXRhUHJvdGVjdGlvblByb3BzO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWdlbnRUb29sc0xvY2F0aW9uRGVmaW5pdGlvbnM6IEFnZW50VG9vbHNMb2NhdGlvbkRlZmluaXRpb25bXTtcbiAgLyoqXG4gICAqIEtub3dsZWRnZSBiYXNlIGNvbmZpZ3VyYXRpb25zIGZvciBydW50aW1lIHVzZS5cbiAgICpcbiAgICogVGhpcyBhcnJheSBjb250YWlucyB0aGUgZXhwb3J0ZWQgY29uZmlndXJhdGlvbnMgZnJvbSBhbGwgY29uZmlndXJlZFxuICAgKiBrbm93bGVkZ2UgYmFzZXMuIFN1YmNsYXNzZXMgdXNlIHRoaXMgdG8gc2V0IHRoZSBLTk9XTEVER0VfQkFTRVNfQ09ORklHXG4gICAqIGVudmlyb25tZW50IHZhcmlhYmxlIG9uIHRoZSBhZ2VudCBMYW1iZGEgZnVuY3Rpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga25vd2xlZGdlQmFzZUNvbmZpZ3M6IEtub3dsZWRnZUJhc2VSdW50aW1lQ29uZmlnW107XG4gIC8qKlxuICAgKiBBc3NldCBjb250YWluaW5nIHRoZSBrbm93bGVkZ2UgYmFzZSByZXRyaWV2YWwgdG9vbC5cbiAgICpcbiAgICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBrbm93bGVkZ2UgYmFzZXMgYXJlIGNvbmZpZ3VyZWQuXG4gICAqIFRoZSBhc3NldCBpcyBhZGRlZCB0byB0aGUgYWdlbnQncyB0b29scyBhbmQgZ3JhbnRlZCByZWFkIGFjY2Vzcy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBrbm93bGVkZ2VCYXNlVG9vbEFzc2V0PzogQXNzZXQ7XG4gIC8qKlxuICAgKiBMYW1iZGEgbGF5ZXJzIHJlcXVpcmVkIGJ5IGtub3dsZWRnZSBiYXNlIHJldHJpZXZhbCB0b29scy5cbiAgICpcbiAgICogVGhpcyBhcnJheSBjb250YWlucyBMYW1iZGEgbGF5ZXJzIGZyb20gYWxsIGNvbmZpZ3VyZWQga25vd2xlZGdlIGJhc2VzLlxuICAgKiBTdWJjbGFzc2VzIHNob3VsZCBhZGQgdGhlc2UgbGF5ZXJzIHRvIHRoZSBhZ2VudCBMYW1iZGEgZnVuY3Rpb24gdG9cbiAgICogZW5zdXJlIHJldHJpZXZhbCB0b29scyBoYXZlIGFjY2VzcyB0byByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga25vd2xlZGdlQmFzZUxheWVyczogTGF5ZXJWZXJzaW9uW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJhc2VBZ2VudFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmJlZHJvY2tNb2RlbCA9IHByb3BzLmFnZW50RGVmaW5pdGlvbi5iZWRyb2NrTW9kZWw7XG4gICAgdGhpcy5lbmNyeXB0aW9uS2V5ID0gcHJvcHMuZW5jcnlwdGlvbktleSB8fCBuZXcgS2V5KHRoaXMsICdBZ2VudEVuY3J5cHRpb25LZXknLCB7XG4gICAgICBlbmFibGVLZXlSb3RhdGlvbjogdHJ1ZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH0pO1xuXG5cbiAgICBjb25zdCBpbmxpbmVQb2xpY2llczogUmVjb3JkPHN0cmluZywgUG9saWN5RG9jdW1lbnQ+ID0ge307XG5cbiAgICBpZiAocHJvcHMuYWdlbnREZWZpbml0aW9uLmFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yVG9vbHMgJiYgcHJvcHMuYWdlbnREZWZpbml0aW9uLmFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yVG9vbHMubGVuZ3RoID4gMCkge1xuICAgICAgaW5saW5lUG9saWNpZXMuVG9vbFBlcm1pc3Npb25zID0gbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgc3RhdGVtZW50czogcHJvcHMuYWdlbnREZWZpbml0aW9uLmFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yVG9vbHMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBHZW5lcmF0ZSBJQU0gcGVybWlzc2lvbnMgZnJvbSBrbm93bGVkZ2UgYmFzZXNcbiAgICBjb25zdCBrbm93bGVkZ2VCYXNlcyA9IHByb3BzLmFnZW50RGVmaW5pdGlvbi5rbm93bGVkZ2VCYXNlcyA/PyBbXTtcbiAgICBjb25zdCBrYlBvbGljeVN0YXRlbWVudHM6IFBvbGljeVN0YXRlbWVudFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGtiIG9mIGtub3dsZWRnZUJhc2VzKSB7XG4gICAgICBjb25zdCBwZXJtaXNzaW9ucyA9IGtiLmdlbmVyYXRlSWFtUGVybWlzc2lvbnMoKTtcbiAgICAgIGtiUG9saWN5U3RhdGVtZW50cy5wdXNoKC4uLnBlcm1pc3Npb25zKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgYWRkaXRpb25hbCBLQiBwb2xpY3kgc3RhdGVtZW50cyBpZiBwcm92aWRlZFxuICAgIGlmIChwcm9wcy5hZ2VudERlZmluaXRpb24uYWRkaXRpb25hbFBvbGljeVN0YXRlbWVudHNGb3JLbm93bGVkZ2VCYXNlcykge1xuICAgICAga2JQb2xpY3lTdGF0ZW1lbnRzLnB1c2goLi4ucHJvcHMuYWdlbnREZWZpbml0aW9uLmFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yS25vd2xlZGdlQmFzZXMpO1xuICAgIH1cblxuICAgIC8vIEFkZCBLQiBwZXJtaXNzaW9ucyBhcyBpbmxpbmUgcG9saWN5IGlmIGFueSBleGlzdFxuICAgIGlmIChrYlBvbGljeVN0YXRlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaW5saW5lUG9saWNpZXMuS25vd2xlZGdlQmFzZVBlcm1pc3Npb25zID0gbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgc3RhdGVtZW50czoga2JQb2xpY3lTdGF0ZW1lbnRzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5hZ2VudFJvbGUgPSBuZXcgUm9sZSh0aGlzLCBgQWdlbnQtJHtwcm9wcy5hZ2VudE5hbWV9LVJvbGVgLCB7XG4gICAgICBhc3N1bWVkQnk6IHByb3BzLnNlcnZpY2VQcmluY2lwYWwgfHwgbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgICBpbmxpbmVQb2xpY2llcyxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5uZXR3b3JrKSB7XG4gICAgICB0aGlzLmFnZW50Um9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShMYW1iZGFJYW1VdGlscy5nZW5lcmF0ZUxhbWJkYVZQQ1Blcm1pc3Npb25zKCkpO1xuICAgIH1cblxuICAgIHRoaXMuYWdlbnRUb29sc0xvY2F0aW9uRGVmaW5pdGlvbnMgPSBbXTtcblxuICAgIGlmIChwcm9wcy5hZ2VudERlZmluaXRpb24udG9vbHMpIHtcbiAgICAgIGZvciAoY29uc3QgdG9vbCBvZiBwcm9wcy5hZ2VudERlZmluaXRpb24udG9vbHMpIHtcbiAgICAgICAgdG9vbC5ncmFudFJlYWQodGhpcy5hZ2VudFJvbGUpO1xuXG4gICAgICAgIHRoaXMuYWdlbnRUb29sc0xvY2F0aW9uRGVmaW5pdGlvbnMucHVzaCh7XG4gICAgICAgICAgYnVja2V0TmFtZTogdG9vbC5zM0J1Y2tldE5hbWUsXG4gICAgICAgICAga2V5OiB0b29sLnMzT2JqZWN0S2V5LFxuICAgICAgICAgIGlzRmlsZTogdG9vbC5pc0ZpbGUsXG4gICAgICAgICAgaXNaaXBBcmNoaXZlOiB0b29sLmlzWmlwQXJjaGl2ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3RvcmUga25vd2xlZGdlIGJhc2UgY29uZmlndXJhdGlvbnMgZm9yIHN1YmNsYXNzIGFjY2Vzc1xuICAgIHRoaXMua25vd2xlZGdlQmFzZUNvbmZpZ3MgPSBrbm93bGVkZ2VCYXNlcy5tYXAoa2IgPT4ga2IuZXhwb3J0Q29uZmlndXJhdGlvbigpKTtcblxuICAgIC8vIEluaXRpYWxpemUga25vd2xlZGdlIGJhc2UgbGF5ZXJzIGFycmF5XG4gICAgdGhpcy5rbm93bGVkZ2VCYXNlTGF5ZXJzID0gW107XG5cbiAgICAvLyBHZXQgcmV0cmlldmFsIHRvb2wgYXNzZXRzIGZyb20ga25vd2xlZGdlIGJhc2VzXG4gICAgLy8gRWFjaCBLQiB0eXBlIHByb3ZpZGVzIGl0cyBvd24gcmV0cmlldmFsIHRvb2wgaW1wbGVtZW50YXRpb25cbiAgICBpZiAoa25vd2xlZGdlQmFzZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gQ29sbGVjdCB1bmlxdWUgcmV0cmlldmFsIHRvb2wgYXNzZXRzIGZyb20ga25vd2xlZGdlIGJhc2VzXG4gICAgICAvLyBVc2UgYSBNYXAgdG8gZGVkdXBsaWNhdGUgYnkgYXNzZXQgcGF0aCAoc2FtZSBLQiB0eXBlID0gc2FtZSB0b29sKVxuICAgICAgY29uc3QgdG9vbEFzc2V0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFzc2V0PigpO1xuXG4gICAgICBmb3IgKGNvbnN0IGtiIG9mIGtub3dsZWRnZUJhc2VzKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBLQiBwcm92aWRlcyBhIHJldHJpZXZhbCB0b29sXG4gICAgICAgIGlmIChrYi5yZXRyaWV2YWxUb29sQXNzZXQpIHtcbiAgICAgICAgICBjb25zdCB0b29sQXNzZXQgPSBrYi5yZXRyaWV2YWxUb29sQXNzZXQoKTtcbiAgICAgICAgICBpZiAodG9vbEFzc2V0KSB7XG4gICAgICAgICAgICAvLyBVc2UgdGhlIFMzIG9iamVjdCBrZXkgYXMgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgZGVkdXBsaWNhdGlvblxuICAgICAgICAgICAgY29uc3Qga2V5ID0gdG9vbEFzc2V0LnMzT2JqZWN0S2V5O1xuICAgICAgICAgICAgaWYgKCF0b29sQXNzZXRNYXAuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgdG9vbEFzc2V0TWFwLnNldChrZXksIHRvb2xBc3NldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29sbGVjdCBMYW1iZGEgbGF5ZXJzIGZyb20ga25vd2xlZGdlIGJhc2VzXG4gICAgICAgIGlmIChrYi5yZXRyaWV2YWxUb29sTGF5ZXJzKSB7XG4gICAgICAgICAgY29uc3QgbGF5ZXJzID0ga2IucmV0cmlldmFsVG9vbExheWVycygpO1xuICAgICAgICAgIGlmIChsYXllcnMgJiYgbGF5ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMua25vd2xlZGdlQmFzZUxheWVycy5wdXNoKC4uLmxheWVycyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBlYWNoIHVuaXF1ZSByZXRyaWV2YWwgdG9vbCB0byB0aGUgYWdlbnRcbiAgICAgIGZvciAoY29uc3QgYXNzZXQgb2YgdG9vbEFzc2V0TWFwLnZhbHVlcygpKSB7XG4gICAgICAgIC8vIFN0b3JlIHRoZSBmaXJzdCB0b29sIGFzc2V0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICAgIGlmICghdGhpcy5rbm93bGVkZ2VCYXNlVG9vbEFzc2V0KSB7XG4gICAgICAgICAgdGhpcy5rbm93bGVkZ2VCYXNlVG9vbEFzc2V0ID0gYXNzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byB0aGUgcmV0cmlldmFsIHRvb2wgYXNzZXRcbiAgICAgICAgYXNzZXQuZ3JhbnRSZWFkKHRoaXMuYWdlbnRSb2xlKTtcblxuICAgICAgICAvLyBBZGQgcmV0cmlldmFsIHRvb2wgdG8gYWdlbnQgdG9vbHMgbG9jYXRpb24gZGVmaW5pdGlvbnNcbiAgICAgICAgdGhpcy5hZ2VudFRvb2xzTG9jYXRpb25EZWZpbml0aW9ucy5wdXNoKHtcbiAgICAgICAgICBidWNrZXROYW1lOiBhc3NldC5zM0J1Y2tldE5hbWUsXG4gICAgICAgICAga2V5OiBhc3NldC5zM09iamVjdEtleSxcbiAgICAgICAgICBpc0ZpbGU6IGFzc2V0LmlzRmlsZSxcbiAgICAgICAgICBpc1ppcEFyY2hpdmU6IGFzc2V0LmlzWmlwQXJjaGl2ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hZ2VudFJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3koQmVkcm9ja01vZGVsVXRpbHMuZ2VuZXJhdGVNb2RlbElBTVBlcm1pc3Npb25zKHRoaXMsIHRoaXMuYmVkcm9ja01vZGVsKSk7XG4gICAgdGhpcy5sb2dHcm91cERhdGFQcm90ZWN0aW9uID0gTG9nR3JvdXBEYXRhUHJvdGVjdGlvblV0aWxzLmhhbmRsZURlZmF1bHQodGhpcywgcHJvcHMubG9nR3JvdXBEYXRhUHJvdGVjdGlvbiwgcHJvcHMucmVtb3ZhbFBvbGljeSk7XG5cbiAgICBpZiAocHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSkge1xuICAgICAgUHJvcGVydHlJbmplY3RvcnMub2YodGhpcykuYWRkKFxuICAgICAgICBuZXcgTGFtYmRhT2JzZXJ2YWJpbGl0eVByb3BlcnR5SW5qZWN0b3IodGhpcy5sb2dHcm91cERhdGFQcm90ZWN0aW9uKSxcbiAgICAgICk7XG5cbiAgICAgIC8vIEFkZCBJQU0gcGVybWlzc2lvbnMgZm9yIEFnZW50Q29yZSBvYnNlcnZhYmlsaXR5XG4gICAgICB0aGlzLmFnZW50Um9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdsb2dzOkNyZWF0ZUxvZ0dyb3VwJyxcbiAgICAgICAgICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAgICAgICAgICdsb2dzOlB1dExvZ0V2ZW50cycsXG4gICAgICAgICAgJ3hyYXk6UHV0VHJhY2VTZWdtZW50cycsXG4gICAgICAgICAgJ3hyYXk6UHV0VGVsZW1ldHJ5UmVjb3JkcycsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogWycqJ10sIC8vIENsb3VkV2F0Y2ggTG9ncyBhbmQgWC1SYXkgcmVxdWlyZSB3aWxkY2FyZCByZXNvdXJjZXNcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgQVdTIERpc3RybyBmb3IgT3BlblRlbGVtZXRyeSAoQURPVCkgTGFtYmRhIExheWVyLlxuICAgKlxuICAgKiBUaGUgQURPVCBsYXllciBwcm92aWRlcyBhdXRvbWF0aWMgaW5zdHJ1bWVudGF0aW9uIGZvciBvYnNlcnZhYmlsaXR5LlxuICAgKiBMYXllciB2ZXJzaW9ucyB2YXJ5IGJ5IHJlZ2lvbiAtIHNvbWUgcmVnaW9ucyBoYXZlIG5ld2VyIHZlcnNpb25zIHdpdGhcbiAgICogYmV0dGVyIFB5dGhvbiAzLjEzIHN1cHBvcnQuIElmIHlvdSBlbmNvdW50ZXIgY29tcGF0aWJpbGl0eSBpc3N1ZXMsXG4gICAqIHRoZSBsYXllciBBUk5zIGNhbiBiZSBmb3VuZCBhdDpcbiAgICogaHR0cHM6Ly9hd3Mtb3RlbC5naXRodWIuaW8vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvbGFtYmRhI2Fkb3QtbGFtYmRhLWxheWVyLWFybnNcbiAgICpcbiAgICogQHJldHVybnMgVGhlIEFET1QgTGFtYmRhIExheWVyIGZvciB0aGUgY3VycmVudCByZWdpb25cbiAgICogQHRocm93cyBFcnJvciBpZiB0aGUgcmVnaW9uIGlzIG5vdCBzdXBwb3J0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVBRE9UTGF5ZXIoKTogSUxheWVyVmVyc2lvbiB7XG4gICAgY29uc3QgeyByZWdpb24gfSA9IFN0YWNrLm9mKHRoaXMpO1xuXG4gICAgLy8gQVdTIERpc3RybyBmb3IgT3BlblRlbGVtZXRyeSAoQURPVCkgTGFtYmRhIExheWVyIEFSTnMgYnkgcmVnaW9uXG4gICAgLy8gU291cmNlOiBodHRwczovL2F3cy1vdGVsLmdpdGh1Yi5pby9kb2NzL2dldHRpbmctc3RhcnRlZC9sYW1iZGEjYWRvdC1sYW1iZGEtbGF5ZXItYXJuc1xuICAgIGNvbnN0IGFkb3RMYXllckFybk1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdhZi1zb3V0aC0xJzogJ2Fybjphd3M6bGFtYmRhOmFmLXNvdXRoLTE6OTA0MjMzMDk2NjE2OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTcnLFxuICAgICAgJ2FwLWVhc3QtMSc6ICdhcm46YXdzOmxhbWJkYTphcC1lYXN0LTE6ODg4NTc3MDIwNTk2OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTcnLFxuICAgICAgJ2FwLW5vcnRoZWFzdC0xJzogJ2Fybjphd3M6bGFtYmRhOmFwLW5vcnRoZWFzdC0xOjYxNTI5OTc1MTA3MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjIwJyxcbiAgICAgICdhcC1ub3J0aGVhc3QtMic6ICdhcm46YXdzOmxhbWJkYTphcC1ub3J0aGVhc3QtMjo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnYXAtbm9ydGhlYXN0LTMnOiAnYXJuOmF3czpsYW1iZGE6YXAtbm9ydGhlYXN0LTM6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTknLFxuICAgICAgJ2FwLXNvdXRoLTEnOiAnYXJuOmF3czpsYW1iZGE6YXAtc291dGgtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnYXAtc291dGgtMic6ICdhcm46YXdzOmxhbWJkYTphcC1zb3V0aC0yOjc5Njk3MzUwNTQ5MjpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjE3JyxcbiAgICAgICdhcC1zb3V0aGVhc3QtMSc6ICdhcm46YXdzOmxhbWJkYTphcC1zb3V0aGVhc3QtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxOScsXG4gICAgICAnYXAtc291dGhlYXN0LTInOiAnYXJuOmF3czpsYW1iZGE6YXAtc291dGhlYXN0LTI6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ2FwLXNvdXRoZWFzdC0zJzogJ2Fybjphd3M6bGFtYmRhOmFwLXNvdXRoZWFzdC0zOjAzOTYxMjg3NzE4MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjE3JyxcbiAgICAgICdhcC1zb3V0aGVhc3QtNCc6ICdhcm46YXdzOmxhbWJkYTphcC1zb3V0aGVhc3QtNDo3MTM4ODE4MDU3NzE6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnYXAtc291dGhlYXN0LTUnOiAnYXJuOmF3czpsYW1iZGE6YXAtc291dGhlYXN0LTU6MTUyMDM0NzgyMzU5OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246OCcsXG4gICAgICAnYXAtc291dGhlYXN0LTcnOiAnYXJuOmF3czpsYW1iZGE6YXAtc291dGhlYXN0LTc6OTgwNDE2MDMxMTg4OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246OCcsXG4gICAgICAnY2EtY2VudHJhbC0xJzogJ2Fybjphd3M6bGFtYmRhOmNhLWNlbnRyYWwtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnY2Etd2VzdC0xJzogJ2Fybjphd3M6bGFtYmRhOmNhLXdlc3QtMTo1OTU5NDQxMjcxNTI6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjo4JyxcbiAgICAgICdjbi1ub3J0aC0xJzogJ2Fybjphd3MtY246bGFtYmRhOmNuLW5vcnRoLTE6NDQwMTc5OTEyOTI0OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246OCcsXG4gICAgICAnY24tbm9ydGh3ZXN0LTEnOiAnYXJuOmF3cy1jbjpsYW1iZGE6Y24tbm9ydGh3ZXN0LTE6NDQwMTgwMDY3OTMxOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246OCcsXG4gICAgICAnZXUtY2VudHJhbC0xJzogJ2Fybjphd3M6bGFtYmRhOmV1LWNlbnRyYWwtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnZXUtY2VudHJhbC0yJzogJ2Fybjphd3M6bGFtYmRhOmV1LWNlbnRyYWwtMjoxNTYwNDE0MDc5NTY6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnZXUtbm9ydGgtMSc6ICdhcm46YXdzOmxhbWJkYTpldS1ub3J0aC0xOjYxNTI5OTc1MTA3MDpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjIwJyxcbiAgICAgICdldS1zb3V0aC0xJzogJ2Fybjphd3M6bGFtYmRhOmV1LXNvdXRoLTE6MjU3Mzk0NDcxMTk0OmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MTcnLFxuICAgICAgJ2V1LXNvdXRoLTInOiAnYXJuOmF3czpsYW1iZGE6ZXUtc291dGgtMjo0OTAwMDQ2NTM3ODY6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnZXUtd2VzdC0xJzogJ2Fybjphd3M6bGFtYmRhOmV1LXdlc3QtMTo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnZXUtd2VzdC0yJzogJ2Fybjphd3M6bGFtYmRhOmV1LXdlc3QtMjo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnZXUtd2VzdC0zJzogJ2Fybjphd3M6bGFtYmRhOmV1LXdlc3QtMzo2MTUyOTk3NTEwNzA6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoyMCcsXG4gICAgICAnaWwtY2VudHJhbC0xJzogJ2Fybjphd3M6bGFtYmRhOmlsLWNlbnRyYWwtMTo3NDY2NjkyMzkyMjY6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnbWUtY2VudHJhbC0xJzogJ2Fybjphd3M6bGFtYmRhOm1lLWNlbnRyYWwtMTo3MzkyNzU0NDExMzE6bGF5ZXI6QVdTT3BlblRlbGVtZXRyeURpc3Ryb1B5dGhvbjoxNycsXG4gICAgICAnbWUtc291dGgtMSc6ICdhcm46YXdzOmxhbWJkYTptZS1zb3V0aC0xOjk4MDkyMTc1MTc1ODpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjE3JyxcbiAgICAgICdteC1jZW50cmFsLTEnOiAnYXJuOmF3czpsYW1iZGE6bXgtY2VudHJhbC0xOjYxMDExODM3Mzg0NjpsYXllcjpBV1NPcGVuVGVsZW1ldHJ5RGlzdHJvUHl0aG9uOjgnLFxuICAgICAgJ3NhLWVhc3QtMSc6ICdhcm46YXdzOmxhbWJkYTpzYS1lYXN0LTE6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ3VzLWVhc3QtMSc6ICdhcm46YXdzOmxhbWJkYTp1cy1lYXN0LTE6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjMnLFxuICAgICAgJ3VzLWVhc3QtMic6ICdhcm46YXdzOmxhbWJkYTp1cy1lYXN0LTI6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjAnLFxuICAgICAgJ3VzLXdlc3QtMSc6ICdhcm46YXdzOmxhbWJkYTp1cy13ZXN0LTE6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjcnLFxuICAgICAgJ3VzLXdlc3QtMic6ICdhcm46YXdzOmxhbWJkYTp1cy13ZXN0LTI6NjE1Mjk5NzUxMDcwOmxheWVyOkFXU09wZW5UZWxlbWV0cnlEaXN0cm9QeXRob246MjcnLFxuICAgIH07XG5cbiAgICBjb25zdCBhZG90TGF5ZXJBcm4gPSBhZG90TGF5ZXJBcm5NYXBbcmVnaW9uXTtcblxuICAgIGlmICghYWRvdExheWVyQXJuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBRE9UIExhbWJkYSBMYXllciBub3QgYXZhaWxhYmxlIGluIHJlZ2lvbiAke3JlZ2lvbn0uIGAgK1xuICAgICAgICBgU3VwcG9ydGVkIHJlZ2lvbnM6ICR7T2JqZWN0LmtleXMoYWRvdExheWVyQXJuTWFwKS5qb2luKCcsICcpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBMYXllclZlcnNpb24uZnJvbUxheWVyVmVyc2lvbkFybih0aGlzLCAnQWRvdExheWVyJywgYWRvdExheWVyQXJuKTtcbiAgfVxufSJdfQ==
@@ -32,4 +32,5 @@ export declare function generateKnowledgeBaseSystemPromptAddition(knowledgeBaseC
32
32
  export declare class BatchAgent extends BaseAgent {
33
33
  readonly agentFunction?: IFunction;
34
34
  constructor(scope: Construct, id: string, props: BatchAgentProps);
35
+ protected resolveAgentRuntimeEntry(): string;
35
36
  }
@@ -12,11 +12,11 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
12
12
  const aws_iam_1 = require("aws-cdk-lib/aws-iam");
13
13
  const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
14
14
  const base_agent_1 = require("./base-agent");
15
+ const default_agent_config_1 = require("./default-agent-config");
15
16
  const invoke_type_1 = require("./invoke-type");
16
17
  const utilities_1 = require("../../utilities");
17
18
  const bedrock_1 = require("../bedrock");
18
19
  const custom_resource_1 = require("../custom-resource");
19
- const default_agent_config_1 = require("./default-agent-config");
20
20
  /**
21
21
  * Generates the knowledge base information to append to the system prompt.
22
22
  *
@@ -112,7 +112,7 @@ class BatchAgent extends base_agent_1.BaseAgent {
112
112
  this.agentFunction = new aws_lambda_python_alpha_1.PythonFunction(this, 'BatchAgentFunction', {
113
113
  functionName: agentLambdaLogPermissionsResult.uniqueFunctionName,
114
114
  architecture: lambdaArchitecture,
115
- entry: path.join(__dirname, 'resources/default-strands-agent'),
115
+ entry: this.resolveAgentRuntimeEntry(),
116
116
  role: this.agentRole,
117
117
  index: 'batch.py',
118
118
  runtime: custom_resource_1.DefaultRuntimes.PYTHON,
@@ -128,8 +128,11 @@ class BatchAgent extends base_agent_1.BaseAgent {
128
128
  this.agentRole.addToPrincipalPolicy(s);
129
129
  }
130
130
  }
131
+ resolveAgentRuntimeEntry() {
132
+ return path.join(__dirname, 'resources/default-strands-agent');
133
+ }
131
134
  }
132
135
  exports.BatchAgent = BatchAgent;
133
136
  _a = JSII_RTTI_SYMBOL_1;
134
- BatchAgent[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BatchAgent", version: "1.16.0" };
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2gtYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2FnZW50cy9iYXRjaC1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBNENBLDhGQTJCQzs7QUF2RUQscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUV0Qyw2QkFBNkI7QUFDN0IsOEVBQWtFO0FBQ2xFLDZDQUE4QztBQUM5QyxpREFBb0Q7QUFDcEQsdURBQWdGO0FBRWhGLDZDQUF5RDtBQUN6RCwrQ0FBMkM7QUFDM0MsK0NBQStGO0FBQy9GLHdDQUErQztBQUMvQyx3REFBcUQ7QUFDckQsaUVBQTREO0FBaUI1RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxTQUFnQix5Q0FBeUMsQ0FDdkQsb0JBQWtEO0lBRWxELElBQUksb0JBQW9CLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLG9CQUFvQjtTQUNoQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWQsT0FBTzs7Ozs7Ozs7Ozs7O0VBWVAsTUFBTTs7O0NBR1AsQ0FBQztBQUNGLENBQUM7QUFFRCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQUd2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLDhDQUE4QztRQUM5QyxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdELE1BQU0sT0FBTyxHQUFHLDJCQUFpQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6RSxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxJQUFJLHNDQUEwQixDQUFDLHdCQUF3QixDQUFDO1FBQ3JHLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLHlDQUFrQixDQUFDLHFDQUFxQyxDQUFDO1FBRTlHLHVFQUF1RTtRQUN2RSxNQUFNLHNCQUFzQixHQUFHLHlDQUF5QyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXBHLE1BQU0sR0FBRyxHQUEyQjtZQUNsQyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxZQUFZO1lBQzdFLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFdBQVc7WUFDcEUsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDO1lBQ2hFLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFdBQVcsRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLHdCQUFVLENBQUMsS0FBSztZQUNqRCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQyxHQUFHLDRCQUFnQixDQUFDLDJCQUEyQixDQUM3QyxLQUFLLENBQUMsbUJBQW1CLEVBQ3pCLGVBQWUsRUFDZixpQkFBaUIsQ0FDbEI7U0FDRixDQUFDO1FBRUYseURBQXlEO1FBQ3pELElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN2RSxHQUFHLENBQUMscUNBQXFDLEdBQUcsc0JBQXNCLENBQUM7UUFDckUsQ0FBQztRQUVELGlFQUFpRTtRQUNqRSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzlCLEdBQUcsQ0FBQywyQkFBMkIsR0FBRyxNQUFNLENBQUM7WUFDekMsR0FBRyxDQUFDLHdCQUF3QixHQUFHLGdCQUFnQixpQkFBaUIsd0RBQXdELEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxSSxHQUFHLENBQUMsK0JBQStCLEdBQUcsbURBQW1ELEtBQUssQ0FBQyxTQUFTLHlFQUF5RSxDQUFDO1lBQ2xMLEdBQUcsQ0FBQyx1QkFBdUIsR0FBRyxzQkFBc0IsQ0FBQztZQUNyRCxHQUFHLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxDQUFDO1lBQ3RDLEdBQUcsQ0FBQyx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FBQztZQUNsRCxHQUFHLENBQUMsMkJBQTJCLEdBQUcsZUFBZSxDQUFDO1lBQ2xELEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUM7WUFFbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBYSxDQUFDLHdCQUF3QixDQUFDLHVEQUF1RCxDQUFDLENBQUMsQ0FBQztRQUNuSSxDQUFDO1FBRUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxNQUFNLCtCQUErQixHQUFHLDBCQUFjLENBQUMscUJBQXFCLENBQUM7WUFDM0UsT0FBTztZQUNQLE1BQU07WUFDTixLQUFLLEVBQUUsSUFBSTtZQUNYLFlBQVksRUFBRSxLQUFLLENBQUMsU0FBUztZQUM3QixtQkFBbUIsRUFBRSxLQUFLLENBQUMsbUJBQW1CO1NBQy9DLENBQUMsQ0FBQztRQUVILCtGQUErRjtRQUMvRixNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSx5QkFBWSxDQUFDLE1BQU0sQ0FBQztRQUUxRSxtRUFBbUU7UUFDbkUsTUFBTSxNQUFNLEdBQW9CO1lBQzlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDN0MsR0FBRyxJQUFJLENBQUMsbUJBQW1CO1NBQzVCLENBQUM7UUFFRixJQUFJLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSx3Q0FBYyxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUNsRSxZQUFZLEVBQUUsK0JBQStCLENBQUMsa0JBQWtCO1lBQ2hFLFlBQVksRUFBRSxrQkFBa0I7WUFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGlDQUFpQyxDQUFDO1lBQzlELElBQUksRUFBRSxJQUFJLENBQUMsU0FBUztZQUNwQixLQUFLLEVBQUUsVUFBVTtZQUNqQixPQUFPLEVBQUUsaUNBQWUsQ0FBQyxNQUFNO1lBQy9CLE1BQU07WUFDTixPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzdCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxHQUFHO1lBQ2hCLHFCQUFxQixFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ3pDLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNsRCxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ25GLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxDQUFDLElBQUksK0JBQStCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDOztBQTVGSCxnQ0E2RkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBQeXRob25GdW5jdGlvbiB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEtcHl0aG9uLWFscGhhJztcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IE1hbmFnZWRQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IEFyY2hpdGVjdHVyZSwgSUZ1bmN0aW9uLCBJTGF5ZXJWZXJzaW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJhc2VBZ2VudCwgQmFzZUFnZW50UHJvcHMgfSBmcm9tICcuL2Jhc2UtYWdlbnQnO1xuaW1wb3J0IHsgSW52b2tlVHlwZSB9IGZyb20gJy4vaW52b2tlLXR5cGUnO1xuaW1wb3J0IHsgRGVmYXVsdE9ic2VydmFiaWxpdHlDb25maWcsIExhbWJkYUlhbVV0aWxzLCBQb3dlcnRvb2xzQ29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzJztcbmltcG9ydCB7IEJlZHJvY2tNb2RlbFV0aWxzIH0gZnJvbSAnLi4vYmVkcm9jayc7XG5pbXBvcnQgeyBEZWZhdWx0UnVudGltZXMgfSBmcm9tICcuLi9jdXN0b20tcmVzb3VyY2UnO1xuaW1wb3J0IHsgRGVmYXVsdEFnZW50Q29uZmlnIH0gZnJvbSAnLi9kZWZhdWx0LWFnZW50LWNvbmZpZyc7XG5pbXBvcnQgeyBLbm93bGVkZ2VCYXNlUnVudGltZUNvbmZpZyB9IGZyb20gJy4va25vd2xlZGdlLWJhc2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhdGNoQWdlbnRQcm9wcyBleHRlbmRzIEJhc2VBZ2VudFByb3BzIHtcbiAgcmVhZG9ubHkgcHJvbXB0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV4cGVjdEpzb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZ2VudCBpbnZvY2F0aW9uIHR5cGUuXG4gICAqXG4gICAqIERlZmluZXMgaG93IHRoZSBhZ2VudCBpcyBpbnZva2VkIGFuZCB3aGF0IHByb2Nlc3NpbmcgbW9kZSB0byB1c2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IEludm9rZVR5cGUuQkFUQ0hcbiAgICovXG4gIHJlYWRvbmx5IGludm9rZVR5cGU/OiBJbnZva2VUeXBlO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUga25vd2xlZGdlIGJhc2UgaW5mb3JtYXRpb24gdG8gYXBwZW5kIHRvIHRoZSBzeXN0ZW0gcHJvbXB0LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIGZvcm1hdHRlZCBzdHJpbmcgY29udGFpbmluZzpcbiAqIC0gRGVzY3JpcHRpb24gb2YgdGhlIHJldHJpZXZhbCB0b29sIGFuZCBob3cgdG8gdXNlIGl0XG4gKiAtIExpc3Qgb2YgYXZhaWxhYmxlIGtub3dsZWRnZSBiYXNlcyB3aXRoIHRoZWlyIG5hbWVzIGFuZCBkZXNjcmlwdGlvbnNcbiAqXG4gKiBUaGUgZ2VuZXJhdGVkIHRleHQgaGVscHMgdGhlIGFnZW50IHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IHRvIHVzZVxuICogdGhlIGtub3dsZWRnZSBiYXNlIHJldHJpZXZhbCBjYXBhYmlsaXR5LlxuICpcbiAqIEBwYXJhbSBrbm93bGVkZ2VCYXNlQ29uZmlncyAtIEFycmF5IG9mIGtub3dsZWRnZSBiYXNlIHJ1bnRpbWUgY29uZmlndXJhdGlvbnNcbiAqIEByZXR1cm5zIEZvcm1hdHRlZCBzdHJpbmcgdG8gYXBwZW5kIHRvIHN5c3RlbSBwcm9tcHQsIG9yIGVtcHR5IHN0cmluZyBpZiBubyBLQnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlS25vd2xlZGdlQmFzZVN5c3RlbVByb21wdEFkZGl0aW9uKFxuICBrbm93bGVkZ2VCYXNlQ29uZmlnczogS25vd2xlZGdlQmFzZVJ1bnRpbWVDb25maWdbXSxcbik6IHN0cmluZyB7XG4gIGlmIChrbm93bGVkZ2VCYXNlQ29uZmlncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBrYkxpc3QgPSBrbm93bGVkZ2VCYXNlQ29uZmlnc1xuICAgIC5tYXAoKGtiKSA9PiBgLSAqKiR7a2IubmFtZX0qKjogJHtrYi5kZXNjcmlwdGlvbn1gKVxuICAgIC5qb2luKCdcXG4nKTtcblxuICByZXR1cm4gYFxuXG4jIyBLbm93bGVkZ2UgQmFzZSBSZXRyaWV2YWxcblxuWW91IGhhdmUgYWNjZXNzIHRvIGEga25vd2xlZGdlIGJhc2UgcmV0cmlldmFsIHRvb2wgY2FsbGVkIFxcYHJldHJpZXZlX2Zyb21fa25vd2xlZGdlX2Jhc2VcXGAuIFVzZSB0aGlzIHRvb2wgdG8gc2VhcmNoIGZvciByZWxldmFudCBpbmZvcm1hdGlvbiB3aGVuIGFuc3dlcmluZyBxdWVzdGlvbnMuXG5cbiMjIyBIb3cgdG8gdXNlIHRoZSByZXRyaWV2YWwgdG9vbDpcbi0gQ2FsbCB0aGUgdG9vbCB3aXRoIGEgc2VhcmNoIHF1ZXJ5IHRvIGZpbmQgcmVsZXZhbnQgaW5mb3JtYXRpb25cbi0gWW91IGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYSBrbm93bGVkZ2VfYmFzZV9pZCB0byBzZWFyY2ggYSBzcGVjaWZpYyBrbm93bGVkZ2UgYmFzZVxuLSBJZiBubyBrbm93bGVkZ2VfYmFzZV9pZCBpcyBwcm92aWRlZCwgYWxsIGtub3dsZWRnZSBiYXNlcyB3aWxsIGJlIHNlYXJjaGVkXG5cbiMjIyBBdmFpbGFibGUgS25vd2xlZGdlIEJhc2VzOlxuJHtrYkxpc3R9XG5cbldoZW4gYSB1c2VyIGFza3MgYSBxdWVzdGlvbiB0aGF0IG1pZ2h0IGJlIGFuc3dlcmVkIGJ5IGluZm9ybWF0aW9uIGluIHRoZXNlIGtub3dsZWRnZSBiYXNlcywgdXNlIHRoZSByZXRyaWV2YWwgdG9vbCB0byBmaW5kIHJlbGV2YW50IGNvbnRleHQgYmVmb3JlIHJlc3BvbmRpbmcuXG5gO1xufVxuXG5leHBvcnQgY2xhc3MgQmF0Y2hBZ2VudCBleHRlbmRzIEJhc2VBZ2VudCB7XG4gIHB1YmxpYyByZWFkb25seSBhZ2VudEZ1bmN0aW9uPzogSUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBCYXRjaEFnZW50UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIEdyYW50IHJlYWQgYWNjZXNzIHRvIHN5c3RlbSBwcm9tcHQgUzMgYXNzZXRcbiAgICBwcm9wcy5hZ2VudERlZmluaXRpb24uc3lzdGVtUHJvbXB0LmdyYW50UmVhZCh0aGlzLmFnZW50Um9sZSk7XG5cbiAgICBjb25zdCBtb2RlbElkID0gQmVkcm9ja01vZGVsVXRpbHMuZGVyaXZlQWN0dWFsTW9kZWxJZCh0aGlzLmJlZHJvY2tNb2RlbCk7XG4gICAgY29uc3QgbWV0cmljTmFtZXNwYWNlID0gcHJvcHMubWV0cmljTmFtZXNwYWNlIHx8IERlZmF1bHRPYnNlcnZhYmlsaXR5Q29uZmlnLkRFRkFVTFRfTUVUUklDX05BTUVTUEFDRTtcbiAgICBjb25zdCBtZXRyaWNTZXJ2aWNlTmFtZSA9IHByb3BzLm1ldHJpY1NlcnZpY2VOYW1lIHx8IERlZmF1bHRBZ2VudENvbmZpZy5ERUZBVUxUX09CU0VSVkFCSUxJVFlfTUVUUklDX1NWQ19OQU1FO1xuXG4gICAgLy8gR2VuZXJhdGUga25vd2xlZGdlIGJhc2Ugc3lzdGVtIHByb21wdCBhZGRpdGlvbiBpZiBLQnMgYXJlIGNvbmZpZ3VyZWRcbiAgICBjb25zdCBrYlN5c3RlbVByb21wdEFkZGl0aW9uID0gZ2VuZXJhdGVLbm93bGVkZ2VCYXNlU3lzdGVtUHJvbXB0QWRkaXRpb24odGhpcy5rbm93bGVkZ2VCYXNlQ29uZmlncyk7XG5cbiAgICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBTWVNURU1fUFJPTVBUX1MzX0JVQ0tFVF9OQU1FOiBwcm9wcy5hZ2VudERlZmluaXRpb24uc3lzdGVtUHJvbXB0LnMzQnVja2V0TmFtZSxcbiAgICAgIFNZU1RFTV9QUk9NUFRfUzNfS0VZOiBwcm9wcy5hZ2VudERlZmluaXRpb24uc3lzdGVtUHJvbXB0LnMzT2JqZWN0S2V5LFxuICAgICAgVE9PTFNfQ09ORklHOiBKU09OLnN0cmluZ2lmeSh0aGlzLmFnZW50VG9vbHNMb2NhdGlvbkRlZmluaXRpb25zKSxcbiAgICAgIE1PREVMX0lEOiBtb2RlbElkLFxuICAgICAgSU5WT0tFX1RZUEU6IHByb3BzLmludm9rZVR5cGUgfHwgSW52b2tlVHlwZS5CQVRDSCxcbiAgICAgIFBST01QVDogcHJvcHMucHJvbXB0LFxuICAgICAgRVhQRUNUX0pTT046IHByb3BzLmV4cGVjdEpzb24gPyAnVHJ1ZScgOiAnJyxcbiAgICAgIC4uLlBvd2VydG9vbHNDb25maWcuZ2VuZXJhdGVEZWZhdWx0TGFtYmRhQ29uZmlnKFxuICAgICAgICBwcm9wcy5lbmFibGVPYnNlcnZhYmlsaXR5LFxuICAgICAgICBtZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgIG1ldHJpY1NlcnZpY2VOYW1lLFxuICAgICAgKSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIGtub3dsZWRnZSBiYXNlIGNvbmZpZ3VyYXRpb24gaWYgS0JzIGFyZSBjb25maWd1cmVkXG4gICAgaWYgKHRoaXMua25vd2xlZGdlQmFzZUNvbmZpZ3MubGVuZ3RoID4gMCkge1xuICAgICAgZW52LktOT1dMRURHRV9CQVNFU19DT05GSUcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmtub3dsZWRnZUJhc2VDb25maWdzKTtcbiAgICAgIGVudi5LTk9XTEVER0VfQkFTRV9TWVNURU1fUFJPTVBUX0FERElUSU9OID0ga2JTeXN0ZW1Qcm9tcHRBZGRpdGlvbjtcbiAgICB9XG5cbiAgICAvLyBBZGQgQWdlbnRDb3JlIG9ic2VydmFiaWxpdHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoZW4gZW5hYmxlZFxuICAgIGlmIChwcm9wcy5lbmFibGVPYnNlcnZhYmlsaXR5KSB7XG4gICAgICBlbnYuQUdFTlRfT0JTRVJWQUJJTElUWV9FTkFCTEVEID0gJ3RydWUnO1xuICAgICAgZW52Lk9URUxfUkVTT1VSQ0VfQVRUUklCVVRFUyA9IGBzZXJ2aWNlLm5hbWU9JHttZXRyaWNTZXJ2aWNlTmFtZX0sYXdzLmxvZy5ncm91cC5uYW1lcz0vYXdzL2JlZHJvY2stYWdlbnRjb3JlL3J1bnRpbWVzLyR7cHJvcHMuYWdlbnROYW1lfWA7XG4gICAgICBlbnYuT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfSEVBREVSUyA9IGB4LWF3cy1sb2ctZ3JvdXA9L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy8ke3Byb3BzLmFnZW50TmFtZX0seC1hd3MtbG9nLXN0cmVhbT1ydW50aW1lLWxvZ3MseC1hd3MtbWV0cmljLW5hbWVzcGFjZT1iZWRyb2NrLWFnZW50Y29yZWA7XG4gICAgICBlbnYuQVdTX0xBTUJEQV9FWEVDX1dSQVBQRVIgPSAnL29wdC9vdGVsLWluc3RydW1lbnQnO1xuICAgICAgZW52Lk9URUxfUFlUSE9OX0RJU1RSTyA9ICdhd3NfZGlzdHJvJztcbiAgICAgIGVudi5PVEVMX1BZVEhPTl9DT05GSUdVUkFUT1IgPSAnYXdzX2NvbmZpZ3VyYXRvcic7XG4gICAgICBlbnYuT1RFTF9FWFBPUlRFUl9PVExQX1BST1RPQ09MID0gJ2h0dHAvcHJvdG9idWYnO1xuICAgICAgZW52Lk9URUxfVFJBQ0VTX0VYUE9SVEVSID0gJ290bHAnO1xuXG4gICAgICB0aGlzLmFnZW50Um9sZS5hZGRNYW5hZ2VkUG9saWN5KE1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdDbG91ZFdhdGNoTGFtYmRhQXBwbGljYXRpb25TaWduYWxzRXhlY3V0aW9uUm9sZVBvbGljeScpKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGFjY291bnQsIHJlZ2lvbiB9ID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgYWdlbnRMYW1iZGFMb2dQZXJtaXNzaW9uc1Jlc3VsdCA9IExhbWJkYUlhbVV0aWxzLmNyZWF0ZUxvZ3NQZXJtaXNzaW9ucyh7XG4gICAgICBhY2NvdW50LFxuICAgICAgcmVnaW9uLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICBmdW5jdGlvbk5hbWU6IHByb3BzLmFnZW50TmFtZSxcbiAgICAgIGVuYWJsZU9ic2VydmFiaWxpdHk6IHByb3BzLmVuYWJsZU9ic2VydmFiaWxpdHksXG4gICAgfSk7XG5cbiAgICAvLyBEZWZpbmUgTGFtYmRhIGFyY2hpdGVjdHVyZSAoY3VycmVudGx5IGhhcmRjb2RlZCwgYnV0IGNlbnRyYWxpemVkIGZvciBmdXR1cmUgY29uZmlndXJhYmlsaXR5KVxuICAgIGNvbnN0IGxhbWJkYUFyY2hpdGVjdHVyZSA9IHByb3BzLmFnZW50QXJjaGl0ZWN0dXJlIHx8IEFyY2hpdGVjdHVyZS5BUk1fNjQ7XG5cbiAgICAvLyBCdWlsZCBsYXllcnMgYXJyYXkgd2l0aCBBRE9UIGxheWVyIHdoZW4gb2JzZXJ2YWJpbGl0eSBpcyBlbmFibGVkXG4gICAgY29uc3QgbGF5ZXJzOiBJTGF5ZXJWZXJzaW9uW10gPSBbXG4gICAgICAuLi4ocHJvcHMuYWdlbnREZWZpbml0aW9uLmxhbWJkYUxheWVycyB8fCBbXSksXG4gICAgICAuLi50aGlzLmtub3dsZWRnZUJhc2VMYXllcnMsXG4gICAgXTtcblxuICAgIGlmIChwcm9wcy5lbmFibGVPYnNlcnZhYmlsaXR5KSB7XG4gICAgICBsYXllcnMucHVzaCh0aGlzLmNyZWF0ZUFET1RMYXllcigpKTtcbiAgICB9XG5cbiAgICB0aGlzLmFnZW50RnVuY3Rpb24gPSBuZXcgUHl0aG9uRnVuY3Rpb24odGhpcywgJ0JhdGNoQWdlbnRGdW5jdGlvbicsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogYWdlbnRMYW1iZGFMb2dQZXJtaXNzaW9uc1Jlc3VsdC51bmlxdWVGdW5jdGlvbk5hbWUsXG4gICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYUFyY2hpdGVjdHVyZSxcbiAgICAgIGVudHJ5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncmVzb3VyY2VzL2RlZmF1bHQtc3RyYW5kcy1hZ2VudCcpLFxuICAgICAgcm9sZTogdGhpcy5hZ2VudFJvbGUsXG4gICAgICBpbmRleDogJ2JhdGNoLnB5JyxcbiAgICAgIHJ1bnRpbWU6IERlZmF1bHRSdW50aW1lcy5QWVRIT04sXG4gICAgICBsYXllcnMsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDEwKSxcbiAgICAgIG1lbW9yeVNpemU6IDEwMjQsXG4gICAgICBlbnZpcm9ubWVudDogZW52LFxuICAgICAgZW52aXJvbm1lbnRFbmNyeXB0aW9uOiB0aGlzLmVuY3J5cHRpb25LZXksXG4gICAgICB2cGM6IHByb3BzLm5ldHdvcmsgPyBwcm9wcy5uZXR3b3JrLnZwYyA6IHVuZGVmaW5lZCxcbiAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLm5ldHdvcmsgPyBwcm9wcy5uZXR3b3JrLmFwcGxpY2F0aW9uU3VibmV0U2VsZWN0aW9uKCkgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IHMgb2YgYWdlbnRMYW1iZGFMb2dQZXJtaXNzaW9uc1Jlc3VsdC5wb2xpY3lTdGF0ZW1lbnRzKSB7XG4gICAgICB0aGlzLmFnZW50Um9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShzKTtcbiAgICB9XG4gIH1cbn0iXX0=
137
+ BatchAgent[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BatchAgent", version: "1.17.0" };
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2gtYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2FnZW50cy9iYXRjaC1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBNENBLDhGQTJCQzs7QUF2RUQscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUV0Qyw2QkFBNkI7QUFDN0IsOEVBQWtFO0FBQ2xFLDZDQUE4QztBQUM5QyxpREFBb0Q7QUFDcEQsdURBQWdGO0FBRWhGLDZDQUF5RDtBQUN6RCxpRUFBNEQ7QUFDNUQsK0NBQTJDO0FBRTNDLCtDQUErRjtBQUMvRix3Q0FBK0M7QUFDL0Msd0RBQXFEO0FBZ0JyRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxTQUFnQix5Q0FBeUMsQ0FDdkQsb0JBQWtEO0lBRWxELElBQUksb0JBQW9CLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLG9CQUFvQjtTQUNoQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWQsT0FBTzs7Ozs7Ozs7Ozs7O0VBWVAsTUFBTTs7O0NBR1AsQ0FBQztBQUNGLENBQUM7QUFFRCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQUd2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLDhDQUE4QztRQUM5QyxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdELE1BQU0sT0FBTyxHQUFHLDJCQUFpQixDQUFDLG1CQUFt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QUFJLENBQUMsU0FBUyxFQUFFLGlDQUFpQyxDQUFDLENBQUM7SUFDakUsQ0FBQzs7QUFoR0gsZ0NBaUdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUHl0aG9uRnVuY3Rpb24gfSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhLXB5dGhvbi1hbHBoYSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBBcmNoaXRlY3R1cmUsIElGdW5jdGlvbiwgSUxheWVyVmVyc2lvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCYXNlQWdlbnQsIEJhc2VBZ2VudFByb3BzIH0gZnJvbSAnLi9iYXNlLWFnZW50JztcbmltcG9ydCB7IERlZmF1bHRBZ2VudENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1hZ2VudC1jb25maWcnO1xuaW1wb3J0IHsgSW52b2tlVHlwZSB9IGZyb20gJy4vaW52b2tlLXR5cGUnO1xuaW1wb3J0IHsgS25vd2xlZGdlQmFzZVJ1bnRpbWVDb25maWcgfSBmcm9tICcuL2tub3dsZWRnZS1iYXNlJztcbmltcG9ydCB7IERlZmF1bHRPYnNlcnZhYmlsaXR5Q29uZmlnLCBMYW1iZGFJYW1VdGlscywgUG93ZXJ0b29sc0NvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBCZWRyb2NrTW9kZWxVdGlscyB9IGZyb20gJy4uL2JlZHJvY2snO1xuaW1wb3J0IHsgRGVmYXVsdFJ1bnRpbWVzIH0gZnJvbSAnLi4vY3VzdG9tLXJlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXRjaEFnZW50UHJvcHMgZXh0ZW5kcyBCYXNlQWdlbnRQcm9wcyB7XG4gIHJlYWRvbmx5IHByb21wdDogc3RyaW5nO1xuICByZWFkb25seSBleHBlY3RKc29uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWdlbnQgaW52b2NhdGlvbiB0eXBlLlxuICAgKlxuICAgKiBEZWZpbmVzIGhvdyB0aGUgYWdlbnQgaXMgaW52b2tlZCBhbmQgd2hhdCBwcm9jZXNzaW5nIG1vZGUgdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBJbnZva2VUeXBlLkJBVENIXG4gICAqL1xuICByZWFkb25seSBpbnZva2VUeXBlPzogSW52b2tlVHlwZTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIGtub3dsZWRnZSBiYXNlIGluZm9ybWF0aW9uIHRvIGFwcGVuZCB0byB0aGUgc3lzdGVtIHByb21wdC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBmb3JtYXR0ZWQgc3RyaW5nIGNvbnRhaW5pbmc6XG4gKiAtIERlc2NyaXB0aW9uIG9mIHRoZSByZXRyaWV2YWwgdG9vbCBhbmQgaG93IHRvIHVzZSBpdFxuICogLSBMaXN0IG9mIGF2YWlsYWJsZSBrbm93bGVkZ2UgYmFzZXMgd2l0aCB0aGVpciBuYW1lcyBhbmQgZGVzY3JpcHRpb25zXG4gKlxuICogVGhlIGdlbmVyYXRlZCB0ZXh0IGhlbHBzIHRoZSBhZ2VudCB1bmRlcnN0YW5kIHdoZW4gYW5kIGhvdyB0byB1c2VcbiAqIHRoZSBrbm93bGVkZ2UgYmFzZSByZXRyaWV2YWwgY2FwYWJpbGl0eS5cbiAqXG4gKiBAcGFyYW0ga25vd2xlZGdlQmFzZUNvbmZpZ3MgLSBBcnJheSBvZiBrbm93bGVkZ2UgYmFzZSBydW50aW1lIGNvbmZpZ3VyYXRpb25zXG4gKiBAcmV0dXJucyBGb3JtYXR0ZWQgc3RyaW5nIHRvIGFwcGVuZCB0byBzeXN0ZW0gcHJvbXB0LCBvciBlbXB0eSBzdHJpbmcgaWYgbm8gS0JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUtub3dsZWRnZUJhc2VTeXN0ZW1Qcm9tcHRBZGRpdGlvbihcbiAga25vd2xlZGdlQmFzZUNvbmZpZ3M6IEtub3dsZWRnZUJhc2VSdW50aW1lQ29uZmlnW10sXG4pOiBzdHJpbmcge1xuICBpZiAoa25vd2xlZGdlQmFzZUNvbmZpZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3Qga2JMaXN0ID0ga25vd2xlZGdlQmFzZUNvbmZpZ3NcbiAgICAubWFwKChrYikgPT4gYC0gKioke2tiLm5hbWV9Kio6ICR7a2IuZGVzY3JpcHRpb259YClcbiAgICAuam9pbignXFxuJyk7XG5cbiAgcmV0dXJuIGBcblxuIyMgS25vd2xlZGdlIEJhc2UgUmV0cmlldmFsXG5cbllvdSBoYXZlIGFjY2VzcyB0byBhIGtub3dsZWRnZSBiYXNlIHJldHJpZXZhbCB0b29sIGNhbGxlZCBcXGByZXRyaWV2ZV9mcm9tX2tub3dsZWRnZV9iYXNlXFxgLiBVc2UgdGhpcyB0b29sIHRvIHNlYXJjaCBmb3IgcmVsZXZhbnQgaW5mb3JtYXRpb24gd2hlbiBhbnN3ZXJpbmcgcXVlc3Rpb25zLlxuXG4jIyMgSG93IHRvIHVzZSB0aGUgcmV0cmlldmFsIHRvb2w6XG4tIENhbGwgdGhlIHRvb2wgd2l0aCBhIHNlYXJjaCBxdWVyeSB0byBmaW5kIHJlbGV2YW50IGluZm9ybWF0aW9uXG4tIFlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEga25vd2xlZGdlX2Jhc2VfaWQgdG8gc2VhcmNoIGEgc3BlY2lmaWMga25vd2xlZGdlIGJhc2Vcbi0gSWYgbm8ga25vd2xlZGdlX2Jhc2VfaWQgaXMgcHJvdmlkZWQsIGFsbCBrbm93bGVkZ2UgYmFzZXMgd2lsbCBiZSBzZWFyY2hlZFxuXG4jIyMgQXZhaWxhYmxlIEtub3dsZWRnZSBCYXNlczpcbiR7a2JMaXN0fVxuXG5XaGVuIGEgdXNlciBhc2tzIGEgcXVlc3Rpb24gdGhhdCBtaWdodCBiZSBhbnN3ZXJlZCBieSBpbmZvcm1hdGlvbiBpbiB0aGVzZSBrbm93bGVkZ2UgYmFzZXMsIHVzZSB0aGUgcmV0cmlldmFsIHRvb2wgdG8gZmluZCByZWxldmFudCBjb250ZXh0IGJlZm9yZSByZXNwb25kaW5nLlxuYDtcbn1cblxuZXhwb3J0IGNsYXNzIEJhdGNoQWdlbnQgZXh0ZW5kcyBCYXNlQWdlbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRGdW5jdGlvbj86IElGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQmF0Y2hBZ2VudFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byBzeXN0ZW0gcHJvbXB0IFMzIGFzc2V0XG4gICAgcHJvcHMuYWdlbnREZWZpbml0aW9uLnN5c3RlbVByb21wdC5ncmFudFJlYWQodGhpcy5hZ2VudFJvbGUpO1xuXG4gICAgY29uc3QgbW9kZWxJZCA9IEJlZHJvY2tNb2RlbFV0aWxzLmRlcml2ZUFjdHVhbE1vZGVsSWQodGhpcy5iZWRyb2NrTW9kZWwpO1xuICAgIGNvbnN0IG1ldHJpY05hbWVzcGFjZSA9IHByb3BzLm1ldHJpY05hbWVzcGFjZSB8fCBEZWZhdWx0T2JzZXJ2YWJpbGl0eUNvbmZpZy5ERUZBVUxUX01FVFJJQ19OQU1FU1BBQ0U7XG4gICAgY29uc3QgbWV0cmljU2VydmljZU5hbWUgPSBwcm9wcy5tZXRyaWNTZXJ2aWNlTmFtZSB8fCBEZWZhdWx0QWdlbnRDb25maWcuREVGQVVMVF9PQlNFUlZBQklMSVRZX01FVFJJQ19TVkNfTkFNRTtcblxuICAgIC8vIEdlbmVyYXRlIGtub3dsZWRnZSBiYXNlIHN5c3RlbSBwcm9tcHQgYWRkaXRpb24gaWYgS0JzIGFyZSBjb25maWd1cmVkXG4gICAgY29uc3Qga2JTeXN0ZW1Qcm9tcHRBZGRpdGlvbiA9IGdlbmVyYXRlS25vd2xlZGdlQmFzZVN5c3RlbVByb21wdEFkZGl0aW9uKHRoaXMua25vd2xlZGdlQmFzZUNvbmZpZ3MpO1xuXG4gICAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgU1lTVEVNX1BST01QVF9TM19CVUNLRVRfTkFNRTogcHJvcHMuYWdlbnREZWZpbml0aW9uLnN5c3RlbVByb21wdC5zM0J1Y2tldE5hbWUsXG4gICAgICBTWVNURU1fUFJPTVBUX1MzX0tFWTogcHJvcHMuYWdlbnREZWZpbml0aW9uLnN5c3RlbVByb21wdC5zM09iamVjdEtleSxcbiAgICAgIFRPT0xTX0NPTkZJRzogSlNPTi5zdHJpbmdpZnkodGhpcy5hZ2VudFRvb2xzTG9jYXRpb25EZWZpbml0aW9ucyksXG4gICAgICBNT0RFTF9JRDogbW9kZWxJZCxcbiAgICAgIElOVk9LRV9UWVBFOiBwcm9wcy5pbnZva2VUeXBlIHx8IEludm9rZVR5cGUuQkFUQ0gsXG4gICAgICBQUk9NUFQ6IHByb3BzLnByb21wdCxcbiAgICAgIEVYUEVDVF9KU09OOiBwcm9wcy5leHBlY3RKc29uID8gJ1RydWUnIDogJycsXG4gICAgICAuLi5Qb3dlcnRvb2xzQ29uZmlnLmdlbmVyYXRlRGVmYXVsdExhbWJkYUNvbmZpZyhcbiAgICAgICAgcHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSxcbiAgICAgICAgbWV0cmljTmFtZXNwYWNlLFxuICAgICAgICBtZXRyaWNTZXJ2aWNlTmFtZSxcbiAgICAgICksXG4gICAgfTtcblxuICAgIC8vIEFkZCBrbm93bGVkZ2UgYmFzZSBjb25maWd1cmF0aW9uIGlmIEtCcyBhcmUgY29uZmlndXJlZFxuICAgIGlmICh0aGlzLmtub3dsZWRnZUJhc2VDb25maWdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGVudi5LTk9XTEVER0VfQkFTRVNfQ09ORklHID0gSlNPTi5zdHJpbmdpZnkodGhpcy5rbm93bGVkZ2VCYXNlQ29uZmlncyk7XG4gICAgICBlbnYuS05PV0xFREdFX0JBU0VfU1lTVEVNX1BST01QVF9BRERJVElPTiA9IGtiU3lzdGVtUHJvbXB0QWRkaXRpb247XG4gICAgfVxuXG4gICAgLy8gQWRkIEFnZW50Q29yZSBvYnNlcnZhYmlsaXR5IGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGVuIGVuYWJsZWRcbiAgICBpZiAocHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSkge1xuICAgICAgZW52LkFHRU5UX09CU0VSVkFCSUxJVFlfRU5BQkxFRCA9ICd0cnVlJztcbiAgICAgIGVudi5PVEVMX1JFU09VUkNFX0FUVFJJQlVURVMgPSBgc2VydmljZS5uYW1lPSR7bWV0cmljU2VydmljZU5hbWV9LGF3cy5sb2cuZ3JvdXAubmFtZXM9L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy8ke3Byb3BzLmFnZW50TmFtZX1gO1xuICAgICAgZW52Lk9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0hFQURFUlMgPSBgeC1hd3MtbG9nLWdyb3VwPS9hd3MvYmVkcm9jay1hZ2VudGNvcmUvcnVudGltZXMvJHtwcm9wcy5hZ2VudE5hbWV9LHgtYXdzLWxvZy1zdHJlYW09cnVudGltZS1sb2dzLHgtYXdzLW1ldHJpYy1uYW1lc3BhY2U9YmVkcm9jay1hZ2VudGNvcmVgO1xuICAgICAgZW52LkFXU19MQU1CREFfRVhFQ19XUkFQUEVSID0gJy9vcHQvb3RlbC1pbnN0cnVtZW50JztcbiAgICAgIGVudi5PVEVMX1BZVEhPTl9ESVNUUk8gPSAnYXdzX2Rpc3Rybyc7XG4gICAgICBlbnYuT1RFTF9QWVRIT05fQ09ORklHVVJBVE9SID0gJ2F3c19jb25maWd1cmF0b3InO1xuICAgICAgZW52Lk9URUxfRVhQT1JURVJfT1RMUF9QUk9UT0NPTCA9ICdodHRwL3Byb3RvYnVmJztcbiAgICAgIGVudi5PVEVMX1RSQUNFU19FWFBPUlRFUiA9ICdvdGxwJztcblxuICAgICAgdGhpcy5hZ2VudFJvbGUuYWRkTWFuYWdlZFBvbGljeShNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQ2xvdWRXYXRjaExhbWJkYUFwcGxpY2F0aW9uU2lnbmFsc0V4ZWN1dGlvblJvbGVQb2xpY3knKSk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBhY2NvdW50LCByZWdpb24gfSA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGNvbnN0IGFnZW50TGFtYmRhTG9nUGVybWlzc2lvbnNSZXN1bHQgPSBMYW1iZGFJYW1VdGlscy5jcmVhdGVMb2dzUGVybWlzc2lvbnMoe1xuICAgICAgYWNjb3VudCxcbiAgICAgIHJlZ2lvbixcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgZnVuY3Rpb25OYW1lOiBwcm9wcy5hZ2VudE5hbWUsXG4gICAgICBlbmFibGVPYnNlcnZhYmlsaXR5OiBwcm9wcy5lbmFibGVPYnNlcnZhYmlsaXR5LFxuICAgIH0pO1xuXG4gICAgLy8gRGVmaW5lIExhbWJkYSBhcmNoaXRlY3R1cmUgKGN1cnJlbnRseSBoYXJkY29kZWQsIGJ1dCBjZW50cmFsaXplZCBmb3IgZnV0dXJlIGNvbmZpZ3VyYWJpbGl0eSlcbiAgICBjb25zdCBsYW1iZGFBcmNoaXRlY3R1cmUgPSBwcm9wcy5hZ2VudEFyY2hpdGVjdHVyZSB8fCBBcmNoaXRlY3R1cmUuQVJNXzY0O1xuXG4gICAgLy8gQnVpbGQgbGF5ZXJzIGFycmF5IHdpdGggQURPVCBsYXllciB3aGVuIG9ic2VydmFiaWxpdHkgaXMgZW5hYmxlZFxuICAgIGNvbnN0IGxheWVyczogSUxheWVyVmVyc2lvbltdID0gW1xuICAgICAgLi4uKHByb3BzLmFnZW50RGVmaW5pdGlvbi5sYW1iZGFMYXllcnMgfHwgW10pLFxuICAgICAgLi4udGhpcy5rbm93bGVkZ2VCYXNlTGF5ZXJzLFxuICAgIF07XG5cbiAgICBpZiAocHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSkge1xuICAgICAgbGF5ZXJzLnB1c2godGhpcy5jcmVhdGVBRE9UTGF5ZXIoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5hZ2VudEZ1bmN0aW9uID0gbmV3IFB5dGhvbkZ1bmN0aW9uKHRoaXMsICdCYXRjaEFnZW50RnVuY3Rpb24nLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGFnZW50TGFtYmRhTG9nUGVybWlzc2lvbnNSZXN1bHQudW5pcXVlRnVuY3Rpb25OYW1lLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGFBcmNoaXRlY3R1cmUsXG4gICAgICBlbnRyeTogdGhpcy5yZXNvbHZlQWdlbnRSdW50aW1lRW50cnkoKSxcbiAgICAgIHJvbGU6IHRoaXMuYWdlbnRSb2xlLFxuICAgICAgaW5kZXg6ICdiYXRjaC5weScsXG4gICAgICBydW50aW1lOiBEZWZhdWx0UnVudGltZXMuUFlUSE9OLFxuICAgICAgbGF5ZXJzLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxMCksXG4gICAgICBtZW1vcnlTaXplOiAxMDI0LFxuICAgICAgZW52aXJvbm1lbnQ6IGVudixcbiAgICAgIGVudmlyb25tZW50RW5jcnlwdGlvbjogdGhpcy5lbmNyeXB0aW9uS2V5LFxuICAgICAgdnBjOiBwcm9wcy5uZXR3b3JrID8gcHJvcHMubmV0d29yay52cGMgOiB1bmRlZmluZWQsXG4gICAgICB2cGNTdWJuZXRzOiBwcm9wcy5uZXR3b3JrID8gcHJvcHMubmV0d29yay5hcHBsaWNhdGlvblN1Ym5ldFNlbGVjdGlvbigpIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBzIG9mIGFnZW50TGFtYmRhTG9nUGVybWlzc2lvbnNSZXN1bHQucG9saWN5U3RhdGVtZW50cykge1xuICAgICAgdGhpcy5hZ2VudFJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3kocyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVBZ2VudFJ1bnRpbWVFbnRyeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncmVzb3VyY2VzL2RlZmF1bHQtc3RyYW5kcy1hZ2VudCcpO1xuICB9XG59XG4iXX0=
@@ -7,6 +7,6 @@ class DefaultAgentConfig {
7
7
  }
8
8
  exports.DefaultAgentConfig = DefaultAgentConfig;
9
9
  _a = JSII_RTTI_SYMBOL_1;
10
- DefaultAgentConfig[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DefaultAgentConfig", version: "1.16.0" };
10
+ DefaultAgentConfig[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DefaultAgentConfig", version: "1.17.0" };
11
11
  DefaultAgentConfig.DEFAULT_OBSERVABILITY_METRIC_SVC_NAME = 'agent';
12
12
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1hZ2VudC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2FnZW50cy9kZWZhdWx0LWFnZW50LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE1BQWEsa0JBQWtCOztBQUEvQixnREFFQzs7O0FBRHdCLHdEQUFxQyxHQUFHLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBEZWZhdWx0QWdlbnRDb25maWcge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfT0JTRVJWQUJJTElUWV9NRVRSSUNfU1ZDX05BTUUgPSAnYWdlbnQnO1xufSJdfQ==
@@ -2,5 +2,6 @@ export * from './invoke-type';
2
2
  export * from './base-agent';
3
3
  export * from './batch-agent';
4
4
  export * from './interactive-agent';
5
+ export * from './localstack-batch-agent';
5
6
  export * from './default-agent-config';
6
7
  export * from './knowledge-base';
@@ -18,6 +18,7 @@ __exportStar(require("./invoke-type"), exports);
18
18
  __exportStar(require("./base-agent"), exports);
19
19
  __exportStar(require("./batch-agent"), exports);
20
20
  __exportStar(require("./interactive-agent"), exports);
21
+ __exportStar(require("./localstack-batch-agent"), exports);
21
22
  __exportStar(require("./default-agent-config"), exports);
22
23
  __exportStar(require("./knowledge-base"), exports);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2FnZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQThCO0FBQzlCLCtDQUE2QjtBQUM3QixnREFBOEI7QUFDOUIsc0RBQW9DO0FBQ3BDLHlEQUF1QztBQUN2QyxtREFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ludm9rZS10eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1hZ2VudCc7XG5leHBvcnQgKiBmcm9tICcuL2JhdGNoLWFnZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJhY3RpdmUtYWdlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0LWFnZW50LWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2tub3dsZWRnZS1iYXNlJzsiXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2FnZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQThCO0FBQzlCLCtDQUE2QjtBQUM3QixnREFBOEI7QUFDOUIsc0RBQW9DO0FBQ3BDLDJEQUF5QztBQUN6Qyx5REFBdUM7QUFDdkMsbURBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbnZva2UtdHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtYWdlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXRjaC1hZ2VudCc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyYWN0aXZlLWFnZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxzdGFjay1iYXRjaC1hZ2VudCc7XG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtYWdlbnQtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4va25vd2xlZGdlLWJhc2UnO1xuIl19