@cdklabs/cdk-appmod-catalog-blueprints 1.5.0 → 1.6.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 +2537 -204
- package/lib/document-processing/adapter/adapter.d.ts +4 -2
- package/lib/document-processing/adapter/adapter.js +1 -1
- package/lib/document-processing/adapter/queued-s3-adapter.d.ts +9 -2
- package/lib/document-processing/adapter/queued-s3-adapter.js +29 -15
- package/lib/document-processing/agentic-document-processing.d.ts +4 -0
- package/lib/document-processing/agentic-document-processing.js +20 -10
- package/lib/document-processing/base-document-processing.d.ts +54 -2
- package/lib/document-processing/base-document-processing.js +136 -82
- package/lib/document-processing/bedrock-document-processing.d.ts +202 -2
- package/lib/document-processing/bedrock-document-processing.js +717 -77
- package/lib/document-processing/chunking-config.d.ts +614 -0
- package/lib/document-processing/chunking-config.js +5 -0
- package/lib/document-processing/default-document-processing-config.js +1 -1
- package/lib/document-processing/index.d.ts +1 -0
- package/lib/document-processing/index.js +2 -1
- package/lib/document-processing/resources/aggregation/handler.py +567 -0
- package/lib/document-processing/resources/aggregation/requirements.txt +7 -0
- package/lib/document-processing/resources/aggregation/test_handler.py +362 -0
- package/lib/document-processing/resources/cleanup/handler.py +276 -0
- package/lib/document-processing/resources/cleanup/requirements.txt +5 -0
- package/lib/document-processing/resources/cleanup/test_handler.py +436 -0
- package/lib/document-processing/resources/default-bedrock-invoke/index.py +85 -3
- package/lib/document-processing/resources/default-bedrock-invoke/test_index.py +622 -0
- package/lib/document-processing/resources/pdf-chunking/README.md +313 -0
- package/lib/document-processing/resources/pdf-chunking/chunking_strategies.py +460 -0
- package/lib/document-processing/resources/pdf-chunking/error_handling.py +491 -0
- package/lib/document-processing/resources/pdf-chunking/handler.py +958 -0
- package/lib/document-processing/resources/pdf-chunking/metrics.py +435 -0
- package/lib/document-processing/resources/pdf-chunking/requirements.txt +3 -0
- package/lib/document-processing/resources/pdf-chunking/strategy_selection.py +420 -0
- package/lib/document-processing/resources/pdf-chunking/structured_logging.py +457 -0
- package/lib/document-processing/resources/pdf-chunking/test_chunking_strategies.py +353 -0
- package/lib/document-processing/resources/pdf-chunking/test_error_handling.py +487 -0
- package/lib/document-processing/resources/pdf-chunking/test_handler.py +609 -0
- package/lib/document-processing/resources/pdf-chunking/test_integration.py +694 -0
- package/lib/document-processing/resources/pdf-chunking/test_metrics.py +532 -0
- package/lib/document-processing/resources/pdf-chunking/test_strategy_selection.py +471 -0
- package/lib/document-processing/resources/pdf-chunking/test_structured_logging.py +449 -0
- package/lib/document-processing/resources/pdf-chunking/test_token_estimation.py +374 -0
- package/lib/document-processing/resources/pdf-chunking/token_estimation.py +189 -0
- package/lib/document-processing/tests/agentic-document-processing-nag.test.js +4 -3
- package/lib/document-processing/tests/agentic-document-processing.test.js +488 -4
- package/lib/document-processing/tests/base-document-processing-nag.test.js +9 -2
- package/lib/document-processing/tests/base-document-processing-schema.test.d.ts +1 -0
- package/lib/document-processing/tests/base-document-processing-schema.test.js +337 -0
- package/lib/document-processing/tests/base-document-processing.test.js +114 -8
- package/lib/document-processing/tests/bedrock-document-processing-chunking-nag.test.d.ts +1 -0
- package/lib/document-processing/tests/bedrock-document-processing-chunking-nag.test.js +382 -0
- package/lib/document-processing/tests/bedrock-document-processing-nag.test.js +4 -3
- package/lib/document-processing/tests/bedrock-document-processing-security.test.d.ts +1 -0
- package/lib/document-processing/tests/bedrock-document-processing-security.test.js +389 -0
- package/lib/document-processing/tests/bedrock-document-processing.test.js +808 -8
- package/lib/document-processing/tests/chunking-config.test.d.ts +1 -0
- package/lib/document-processing/tests/chunking-config.test.js +238 -0
- package/lib/document-processing/tests/queued-s3-adapter-nag.test.js +9 -2
- package/lib/document-processing/tests/queued-s3-adapter.test.js +17 -6
- package/lib/framework/agents/base-agent.js +1 -1
- package/lib/framework/agents/batch-agent.js +1 -1
- package/lib/framework/agents/default-agent-config.js +1 -1
- package/lib/framework/bedrock/bedrock.js +1 -1
- package/lib/framework/custom-resource/default-runtimes.js +1 -1
- package/lib/framework/foundation/access-log.js +1 -1
- package/lib/framework/foundation/eventbridge-broker.js +1 -1
- package/lib/framework/foundation/network.js +1 -1
- package/lib/framework/tests/access-log.test.js +5 -2
- package/lib/framework/tests/batch-agent.test.js +5 -2
- package/lib/framework/tests/bedrock.test.js +5 -2
- package/lib/framework/tests/eventbridge-broker.test.js +5 -2
- package/lib/framework/tests/framework-nag.test.js +16 -8
- package/lib/framework/tests/network.test.js +9 -4
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/utilities/data-loader.js +1 -1
- package/lib/utilities/lambda-iam-utils.js +1 -1
- package/lib/utilities/observability/cloudfront-distribution-observability-property-injector.js +1 -1
- package/lib/utilities/observability/default-observability-config.js +1 -1
- package/lib/utilities/observability/lambda-observability-property-injector.js +1 -1
- package/lib/utilities/observability/log-group-data-protection-utils.js +1 -1
- package/lib/utilities/observability/powertools-config.d.ts +10 -1
- package/lib/utilities/observability/powertools-config.js +19 -3
- package/lib/utilities/observability/state-machine-observability-property-injector.js +1 -1
- package/lib/utilities/test-utils.d.ts +43 -0
- package/lib/utilities/test-utils.js +56 -0
- package/lib/utilities/tests/data-loader-nag.test.js +3 -2
- package/lib/utilities/tests/data-loader.test.js +3 -2
- package/lib/webapp/frontend-construct.js +1 -1
- package/lib/webapp/tests/frontend-construct-nag.test.js +3 -2
- package/lib/webapp/tests/frontend-construct.test.js +3 -2
- package/package.json +6 -5
- package/lib/document-processing/resources/default-error-handler/index.js +0 -46
- package/lib/document-processing/resources/default-pdf-processor/index.js +0 -46
- package/lib/document-processing/resources/default-pdf-validator/index.js +0 -36
|
@@ -0,0 +1,614 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chunking strategy options for PDF document processing.
|
|
3
|
+
*
|
|
4
|
+
* Choose the strategy based on your document characteristics:
|
|
5
|
+
*
|
|
6
|
+
* - **fixed-pages**: Legacy approach, splits by fixed page count.
|
|
7
|
+
* - Pros: Fast, simple, predictable chunk sizes
|
|
8
|
+
* - Cons: May exceed token limits for dense documents
|
|
9
|
+
* - Best for: Uniform density documents, simple text
|
|
10
|
+
*
|
|
11
|
+
* - **token-based**: Splits based on token count to respect model limits.
|
|
12
|
+
* - Pros: Respects model token limits, handles variable density
|
|
13
|
+
* - Cons: Slower analysis, variable chunk sizes
|
|
14
|
+
* - Best for: Variable density documents, technical content
|
|
15
|
+
*
|
|
16
|
+
* - **hybrid**: RECOMMENDED - Balances token count and page limits.
|
|
17
|
+
* - Pros: Best of both worlds, reliable, flexible
|
|
18
|
+
* - Cons: Slightly more complex configuration
|
|
19
|
+
* - Best for: Most documents, general-purpose processing
|
|
20
|
+
*/
|
|
21
|
+
export type ChunkingStrategy = 'fixed-pages' | 'token-based' | 'hybrid';
|
|
22
|
+
/**
|
|
23
|
+
* Processing mode for chunked documents.
|
|
24
|
+
*
|
|
25
|
+
* - **sequential**: Process chunks one at a time (cost-optimized)
|
|
26
|
+
* - **parallel**: Process multiple chunks simultaneously (speed-optimized)
|
|
27
|
+
*/
|
|
28
|
+
export type ProcessingMode = 'sequential' | 'parallel';
|
|
29
|
+
/**
|
|
30
|
+
* Aggregation strategy for combining chunk results.
|
|
31
|
+
*
|
|
32
|
+
* - **majority-vote**: Select most frequent classification across chunks
|
|
33
|
+
* - **weighted-vote**: Weight early chunks higher than later chunks
|
|
34
|
+
* - **first-chunk**: Use classification from first chunk only
|
|
35
|
+
*/
|
|
36
|
+
export type AggregationStrategy = 'majority-vote' | 'weighted-vote' | 'first-chunk';
|
|
37
|
+
/**
|
|
38
|
+
* Configuration for fixed-pages chunking strategy.
|
|
39
|
+
* Splits documents by fixed page count (legacy approach).
|
|
40
|
+
*/
|
|
41
|
+
export interface FixedPagesConfig {
|
|
42
|
+
/**
|
|
43
|
+
* Threshold for triggering chunking based on page count.
|
|
44
|
+
* Documents with pages > threshold will be chunked.
|
|
45
|
+
* @default 100
|
|
46
|
+
*/
|
|
47
|
+
readonly pageThreshold?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Number of pages per chunk.
|
|
50
|
+
* @default 50
|
|
51
|
+
*/
|
|
52
|
+
readonly chunkSize?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Number of overlapping pages between consecutive chunks.
|
|
55
|
+
* Must be less than chunkSize.
|
|
56
|
+
* @default 5
|
|
57
|
+
*/
|
|
58
|
+
readonly overlapPages?: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Configuration for token-based chunking strategy.
|
|
62
|
+
* Splits documents based on estimated token count to respect model limits.
|
|
63
|
+
*/
|
|
64
|
+
export interface TokenBasedConfig {
|
|
65
|
+
/**
|
|
66
|
+
* Threshold for triggering chunking based on token count.
|
|
67
|
+
* Documents with tokens > threshold will be chunked.
|
|
68
|
+
* @default 150000
|
|
69
|
+
*/
|
|
70
|
+
readonly tokenThreshold?: number;
|
|
71
|
+
/**
|
|
72
|
+
* Maximum tokens per chunk.
|
|
73
|
+
* Ensures no chunk exceeds model token limits.
|
|
74
|
+
* @default 100000
|
|
75
|
+
*/
|
|
76
|
+
readonly maxTokensPerChunk?: number;
|
|
77
|
+
/**
|
|
78
|
+
* Number of overlapping tokens between consecutive chunks.
|
|
79
|
+
* Provides context continuity across chunks.
|
|
80
|
+
* @default 5000
|
|
81
|
+
*/
|
|
82
|
+
readonly overlapTokens?: number;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Configuration for hybrid chunking strategy (RECOMMENDED).
|
|
86
|
+
* Balances token count and page limits for optimal chunking.
|
|
87
|
+
*/
|
|
88
|
+
export interface HybridConfig {
|
|
89
|
+
/**
|
|
90
|
+
* Hard limit on pages per chunk.
|
|
91
|
+
* Prevents very large chunks even if token count is low.
|
|
92
|
+
* Note: Bedrock has a hard limit of 100 pages per PDF, so we default to 99
|
|
93
|
+
* to provide a safety margin.
|
|
94
|
+
* @default 99
|
|
95
|
+
*/
|
|
96
|
+
readonly maxPagesPerChunk?: number;
|
|
97
|
+
/**
|
|
98
|
+
* Soft target for tokens per chunk.
|
|
99
|
+
* Chunks aim for this token count but respect maxPagesPerChunk.
|
|
100
|
+
* @default 80000
|
|
101
|
+
*/
|
|
102
|
+
readonly targetTokensPerChunk?: number;
|
|
103
|
+
/**
|
|
104
|
+
* Threshold for triggering chunking based on page count.
|
|
105
|
+
* Documents with pages > threshold will be chunked.
|
|
106
|
+
* @default 100
|
|
107
|
+
*/
|
|
108
|
+
readonly pageThreshold?: number;
|
|
109
|
+
/**
|
|
110
|
+
* Threshold for triggering chunking based on token count.
|
|
111
|
+
* Documents with tokens > threshold will be chunked.
|
|
112
|
+
* @default 150000
|
|
113
|
+
*/
|
|
114
|
+
readonly tokenThreshold?: number;
|
|
115
|
+
/**
|
|
116
|
+
* Number of overlapping tokens between consecutive chunks.
|
|
117
|
+
* Provides context continuity across chunks.
|
|
118
|
+
* @default 5000
|
|
119
|
+
*/
|
|
120
|
+
readonly overlapTokens?: number;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Comprehensive configuration for PDF chunking behavior.
|
|
124
|
+
*
|
|
125
|
+
* This interface provides fine-grained control over how large PDF documents are
|
|
126
|
+
* split into manageable chunks for processing. The chunking system supports three
|
|
127
|
+
* strategies, each optimized for different document types and use cases.
|
|
128
|
+
*
|
|
129
|
+
* ## Chunking Strategies
|
|
130
|
+
*
|
|
131
|
+
* ### 1. Hybrid Strategy (RECOMMENDED)
|
|
132
|
+
* Balances both token count and page limits for optimal chunking. Best for most
|
|
133
|
+
* documents as it respects model token limits while preventing excessively large chunks.
|
|
134
|
+
*
|
|
135
|
+
* ### 2. Token-Based Strategy
|
|
136
|
+
* Splits documents based on estimated token count. Best for documents with variable
|
|
137
|
+
* content density (e.g., mixed text and images, tables, charts).
|
|
138
|
+
*
|
|
139
|
+
* ### 3. Fixed-Pages Strategy (Legacy)
|
|
140
|
+
* Simple page-based splitting. Fast but may exceed token limits for dense documents.
|
|
141
|
+
* Use only for documents with uniform content density.
|
|
142
|
+
*
|
|
143
|
+
* ## Processing Modes
|
|
144
|
+
*
|
|
145
|
+
* - **parallel**: Process multiple chunks simultaneously (faster, higher cost)
|
|
146
|
+
* - **sequential**: Process chunks one at a time (slower, lower cost)
|
|
147
|
+
*
|
|
148
|
+
* ## Aggregation Strategies
|
|
149
|
+
*
|
|
150
|
+
* - **majority-vote**: Most frequent classification wins (recommended)
|
|
151
|
+
* - **weighted-vote**: Early chunks weighted higher
|
|
152
|
+
* - **first-chunk**: Use first chunk's classification only
|
|
153
|
+
*
|
|
154
|
+
* ## Default Values
|
|
155
|
+
*
|
|
156
|
+
* | Parameter | Default | Description |
|
|
157
|
+
* |-----------|---------|-------------|
|
|
158
|
+
* | strategy | 'hybrid' | Chunking strategy |
|
|
159
|
+
* | pageThreshold | 100 | Pages to trigger chunking |
|
|
160
|
+
* | tokenThreshold | 150000 | Tokens to trigger chunking |
|
|
161
|
+
* | chunkSize | 50 | Pages per chunk (fixed-pages) |
|
|
162
|
+
* | overlapPages | 5 | Overlap pages (fixed-pages) |
|
|
163
|
+
* | maxTokensPerChunk | 100000 | Max tokens per chunk (token-based) |
|
|
164
|
+
* | overlapTokens | 5000 | Overlap tokens (token-based, hybrid) |
|
|
165
|
+
* | targetTokensPerChunk | 80000 | Target tokens per chunk (hybrid) |
|
|
166
|
+
* | maxPagesPerChunk | 99 | Max pages per chunk (hybrid) |
|
|
167
|
+
* | processingMode | 'parallel' | Processing mode |
|
|
168
|
+
* | maxConcurrency | 10 | Max parallel chunks |
|
|
169
|
+
* | aggregationStrategy | 'majority-vote' | Result aggregation |
|
|
170
|
+
* | minSuccessThreshold | 0.5 | Min success rate for valid result |
|
|
171
|
+
*/
|
|
172
|
+
export interface ChunkingConfig {
|
|
173
|
+
/**
|
|
174
|
+
* Chunking strategy to use.
|
|
175
|
+
*
|
|
176
|
+
* - **hybrid** (RECOMMENDED): Balances token count and page limits
|
|
177
|
+
* - **token-based**: Respects model token limits, good for variable density
|
|
178
|
+
* - **fixed-pages**: Simple page-based splitting (legacy, not recommended)
|
|
179
|
+
*
|
|
180
|
+
* @default 'hybrid'
|
|
181
|
+
*/
|
|
182
|
+
readonly strategy?: ChunkingStrategy;
|
|
183
|
+
/**
|
|
184
|
+
* Threshold for triggering chunking based on page count (fixed-pages strategy).
|
|
185
|
+
* @default 100
|
|
186
|
+
*/
|
|
187
|
+
readonly pageThreshold?: number;
|
|
188
|
+
/**
|
|
189
|
+
* Number of pages per chunk (fixed-pages strategy).
|
|
190
|
+
* @default 50
|
|
191
|
+
*/
|
|
192
|
+
readonly chunkSize?: number;
|
|
193
|
+
/**
|
|
194
|
+
* Number of overlapping pages between chunks (fixed-pages strategy).
|
|
195
|
+
* @default 5
|
|
196
|
+
*/
|
|
197
|
+
readonly overlapPages?: number;
|
|
198
|
+
/**
|
|
199
|
+
* Threshold for triggering chunking based on token count (token-based strategy).
|
|
200
|
+
* @default 150000
|
|
201
|
+
*/
|
|
202
|
+
readonly tokenThreshold?: number;
|
|
203
|
+
/**
|
|
204
|
+
* Maximum tokens per chunk (token-based strategy).
|
|
205
|
+
* @default 100000
|
|
206
|
+
*/
|
|
207
|
+
readonly maxTokensPerChunk?: number;
|
|
208
|
+
/**
|
|
209
|
+
* Number of overlapping tokens between chunks (token-based and hybrid strategies).
|
|
210
|
+
* @default 5000
|
|
211
|
+
*/
|
|
212
|
+
readonly overlapTokens?: number;
|
|
213
|
+
/**
|
|
214
|
+
* Hard limit on pages per chunk (hybrid strategy).
|
|
215
|
+
* Note: Bedrock has a hard limit of 100 pages per PDF, so we default to 99
|
|
216
|
+
* to provide a safety margin.
|
|
217
|
+
* @default 99
|
|
218
|
+
*/
|
|
219
|
+
readonly maxPagesPerChunk?: number;
|
|
220
|
+
/**
|
|
221
|
+
* Soft target for tokens per chunk (hybrid strategy).
|
|
222
|
+
* @default 80000
|
|
223
|
+
*/
|
|
224
|
+
readonly targetTokensPerChunk?: number;
|
|
225
|
+
/**
|
|
226
|
+
* Processing mode for chunks.
|
|
227
|
+
*
|
|
228
|
+
* - **parallel**: Process multiple chunks simultaneously (faster, higher cost)
|
|
229
|
+
* - **sequential**: Process chunks one at a time (slower, lower cost)
|
|
230
|
+
*
|
|
231
|
+
* @default 'parallel'
|
|
232
|
+
*/
|
|
233
|
+
readonly processingMode?: ProcessingMode;
|
|
234
|
+
/**
|
|
235
|
+
* Maximum number of chunks to process concurrently (parallel mode only).
|
|
236
|
+
* Higher values increase speed but also cost.
|
|
237
|
+
*
|
|
238
|
+
* @default 10
|
|
239
|
+
*/
|
|
240
|
+
readonly maxConcurrency?: number;
|
|
241
|
+
/**
|
|
242
|
+
* Strategy for aggregating results from multiple chunks.
|
|
243
|
+
*
|
|
244
|
+
* - **majority-vote**: Most frequent classification wins
|
|
245
|
+
* - **weighted-vote**: Early chunks weighted higher
|
|
246
|
+
* - **first-chunk**: Use first chunk's classification
|
|
247
|
+
*
|
|
248
|
+
* @default 'majority-vote'
|
|
249
|
+
*/
|
|
250
|
+
readonly aggregationStrategy?: AggregationStrategy;
|
|
251
|
+
/**
|
|
252
|
+
* Minimum percentage of chunks that must succeed for aggregation.
|
|
253
|
+
* If fewer chunks succeed, the result is marked as partial failure.
|
|
254
|
+
*
|
|
255
|
+
* @default 0.5 (50%)
|
|
256
|
+
*/
|
|
257
|
+
readonly minSuccessThreshold?: number;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Metadata about a single chunk of a document.
|
|
261
|
+
* Contains information about the chunk's position, size, and S3 location.
|
|
262
|
+
*/
|
|
263
|
+
export interface ChunkMetadata {
|
|
264
|
+
/**
|
|
265
|
+
* Unique identifier for this chunk.
|
|
266
|
+
* Format: {documentId}_chunk_{index}
|
|
267
|
+
*/
|
|
268
|
+
readonly chunkId: string;
|
|
269
|
+
/**
|
|
270
|
+
* Zero-based index of this chunk in the document.
|
|
271
|
+
*/
|
|
272
|
+
readonly chunkIndex: number;
|
|
273
|
+
/**
|
|
274
|
+
* Total number of chunks in the document.
|
|
275
|
+
*/
|
|
276
|
+
readonly totalChunks: number;
|
|
277
|
+
/**
|
|
278
|
+
* Starting page number (zero-based) of this chunk.
|
|
279
|
+
*/
|
|
280
|
+
readonly startPage: number;
|
|
281
|
+
/**
|
|
282
|
+
* Ending page number (zero-based, inclusive) of this chunk.
|
|
283
|
+
*/
|
|
284
|
+
readonly endPage: number;
|
|
285
|
+
/**
|
|
286
|
+
* Number of pages in this chunk.
|
|
287
|
+
*/
|
|
288
|
+
readonly pageCount: number;
|
|
289
|
+
/**
|
|
290
|
+
* Estimated token count for this chunk.
|
|
291
|
+
* Based on word-count heuristic (1.3 tokens per word).
|
|
292
|
+
*/
|
|
293
|
+
readonly estimatedTokens: number;
|
|
294
|
+
/**
|
|
295
|
+
* S3 bucket containing the chunk file.
|
|
296
|
+
*/
|
|
297
|
+
readonly bucket: string;
|
|
298
|
+
/**
|
|
299
|
+
* S3 key for the chunk file.
|
|
300
|
+
* Typically in chunks/ prefix.
|
|
301
|
+
*/
|
|
302
|
+
readonly key: string;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Document content location information.
|
|
306
|
+
*/
|
|
307
|
+
export interface DocumentContent {
|
|
308
|
+
/**
|
|
309
|
+
* Storage location type (e.g., 's3').
|
|
310
|
+
*/
|
|
311
|
+
readonly location: string;
|
|
312
|
+
/**
|
|
313
|
+
* S3 bucket containing the document.
|
|
314
|
+
*/
|
|
315
|
+
readonly bucket: string;
|
|
316
|
+
/**
|
|
317
|
+
* S3 key for the document.
|
|
318
|
+
*/
|
|
319
|
+
readonly key: string;
|
|
320
|
+
/**
|
|
321
|
+
* Original filename of the document.
|
|
322
|
+
*/
|
|
323
|
+
readonly filename: string;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Request payload for PDF analysis and chunking Lambda.
|
|
327
|
+
* Contains document information and chunking configuration.
|
|
328
|
+
*/
|
|
329
|
+
export interface ChunkingRequest {
|
|
330
|
+
/**
|
|
331
|
+
* Unique identifier for the document.
|
|
332
|
+
*/
|
|
333
|
+
readonly documentId: string;
|
|
334
|
+
/**
|
|
335
|
+
* Content type of the document.
|
|
336
|
+
* Typically 'file' for S3-based documents.
|
|
337
|
+
*/
|
|
338
|
+
readonly contentType: string;
|
|
339
|
+
/**
|
|
340
|
+
* Document content location information.
|
|
341
|
+
*/
|
|
342
|
+
readonly content: DocumentContent;
|
|
343
|
+
/**
|
|
344
|
+
* Optional chunking configuration.
|
|
345
|
+
* If not provided, uses default configuration.
|
|
346
|
+
*/
|
|
347
|
+
readonly config?: ChunkingConfig;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Token analysis results from PDF analysis.
|
|
351
|
+
* Provides information about document size and token distribution.
|
|
352
|
+
*/
|
|
353
|
+
export interface TokenAnalysis {
|
|
354
|
+
/**
|
|
355
|
+
* Total estimated tokens in the document.
|
|
356
|
+
*/
|
|
357
|
+
readonly totalTokens: number;
|
|
358
|
+
/**
|
|
359
|
+
* Total number of pages in the document.
|
|
360
|
+
*/
|
|
361
|
+
readonly totalPages: number;
|
|
362
|
+
/**
|
|
363
|
+
* Average tokens per page across the document.
|
|
364
|
+
*/
|
|
365
|
+
readonly avgTokensPerPage: number;
|
|
366
|
+
/**
|
|
367
|
+
* Optional detailed token count for each page.
|
|
368
|
+
* Used for token-based and hybrid chunking strategies.
|
|
369
|
+
*/
|
|
370
|
+
readonly tokensPerPage?: number[];
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Response when chunking is NOT required.
|
|
374
|
+
* Document is below thresholds and will be processed without chunking.
|
|
375
|
+
*/
|
|
376
|
+
export interface NoChunkingResponse {
|
|
377
|
+
/**
|
|
378
|
+
* Document identifier.
|
|
379
|
+
*/
|
|
380
|
+
readonly documentId: string;
|
|
381
|
+
/**
|
|
382
|
+
* Indicates chunking is not required.
|
|
383
|
+
*/
|
|
384
|
+
readonly requiresChunking: false;
|
|
385
|
+
/**
|
|
386
|
+
* Token analysis results.
|
|
387
|
+
*/
|
|
388
|
+
readonly tokenAnalysis: TokenAnalysis;
|
|
389
|
+
/**
|
|
390
|
+
* Human-readable reason why chunking was not applied.
|
|
391
|
+
* Example: "Document has 50 pages, below threshold of 100"
|
|
392
|
+
*/
|
|
393
|
+
readonly reason: string;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Chunking configuration used for processing.
|
|
397
|
+
* Includes both user-provided and default values.
|
|
398
|
+
*/
|
|
399
|
+
export interface ChunkingConfigUsed {
|
|
400
|
+
readonly strategy: ChunkingStrategy;
|
|
401
|
+
readonly totalPages: number;
|
|
402
|
+
readonly totalTokens: number;
|
|
403
|
+
readonly chunkSize?: number;
|
|
404
|
+
readonly overlapPages?: number;
|
|
405
|
+
readonly maxTokensPerChunk?: number;
|
|
406
|
+
readonly overlapTokens?: number;
|
|
407
|
+
readonly targetTokensPerChunk?: number;
|
|
408
|
+
readonly maxPagesPerChunk?: number;
|
|
409
|
+
readonly processingMode?: string;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Response when chunking IS required.
|
|
413
|
+
* Document exceeds thresholds and has been split into chunks.
|
|
414
|
+
*/
|
|
415
|
+
export interface ChunkingResponse {
|
|
416
|
+
/**
|
|
417
|
+
* Document identifier.
|
|
418
|
+
*/
|
|
419
|
+
readonly documentId: string;
|
|
420
|
+
/**
|
|
421
|
+
* Indicates chunking is required.
|
|
422
|
+
*/
|
|
423
|
+
readonly requiresChunking: true;
|
|
424
|
+
/**
|
|
425
|
+
* Token analysis results with detailed per-page information.
|
|
426
|
+
*/
|
|
427
|
+
readonly tokenAnalysis: TokenAnalysis;
|
|
428
|
+
/**
|
|
429
|
+
* Strategy used for chunking.
|
|
430
|
+
*/
|
|
431
|
+
readonly strategy: ChunkingStrategy;
|
|
432
|
+
/**
|
|
433
|
+
* Array of chunk metadata for all created chunks.
|
|
434
|
+
*/
|
|
435
|
+
readonly chunks: ChunkMetadata[];
|
|
436
|
+
/**
|
|
437
|
+
* Configuration used for chunking.
|
|
438
|
+
* Includes both user-provided and default values.
|
|
439
|
+
*/
|
|
440
|
+
readonly config: ChunkingConfigUsed;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Union type for chunking Lambda response.
|
|
444
|
+
* Either chunking is required or not.
|
|
445
|
+
*/
|
|
446
|
+
export type ChunkingLambdaResponse = NoChunkingResponse | ChunkingResponse;
|
|
447
|
+
/**
|
|
448
|
+
* Classification result for a chunk.
|
|
449
|
+
*/
|
|
450
|
+
export interface ChunkClassificationResult {
|
|
451
|
+
readonly documentClassification: string;
|
|
452
|
+
readonly confidence?: number;
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Processing result for a chunk.
|
|
456
|
+
*/
|
|
457
|
+
export interface ChunkProcessingResult {
|
|
458
|
+
readonly entities: Entity[];
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Result from processing a single chunk.
|
|
462
|
+
* Contains classification and extraction results, or error information.
|
|
463
|
+
*/
|
|
464
|
+
export interface ChunkResult {
|
|
465
|
+
/**
|
|
466
|
+
* Chunk identifier.
|
|
467
|
+
*/
|
|
468
|
+
readonly chunkId: string;
|
|
469
|
+
/**
|
|
470
|
+
* Zero-based chunk index.
|
|
471
|
+
*/
|
|
472
|
+
readonly chunkIndex: number;
|
|
473
|
+
/**
|
|
474
|
+
* Optional classification result for this chunk.
|
|
475
|
+
*/
|
|
476
|
+
readonly classificationResult?: ChunkClassificationResult;
|
|
477
|
+
/**
|
|
478
|
+
* Optional extraction result for this chunk.
|
|
479
|
+
*/
|
|
480
|
+
readonly processingResult?: ChunkProcessingResult;
|
|
481
|
+
/**
|
|
482
|
+
* Error message if chunk processing failed.
|
|
483
|
+
*/
|
|
484
|
+
readonly error?: string;
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Extracted entity from document processing.
|
|
488
|
+
*/
|
|
489
|
+
export interface Entity {
|
|
490
|
+
/**
|
|
491
|
+
* Type of entity (e.g., 'NAME', 'DATE', 'AMOUNT', 'ADDRESS').
|
|
492
|
+
*/
|
|
493
|
+
readonly type: string;
|
|
494
|
+
/**
|
|
495
|
+
* Value of the entity.
|
|
496
|
+
*/
|
|
497
|
+
readonly value: string;
|
|
498
|
+
/**
|
|
499
|
+
* Optional page number where entity was found.
|
|
500
|
+
* Entities with page numbers are preserved even if duplicated.
|
|
501
|
+
*/
|
|
502
|
+
readonly page?: number;
|
|
503
|
+
/**
|
|
504
|
+
* Optional chunk index where entity was found.
|
|
505
|
+
*/
|
|
506
|
+
readonly chunkIndex?: number;
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Request payload for aggregation Lambda.
|
|
510
|
+
* Contains results from all processed chunks.
|
|
511
|
+
*/
|
|
512
|
+
export interface AggregationRequest {
|
|
513
|
+
/**
|
|
514
|
+
* Document identifier.
|
|
515
|
+
*/
|
|
516
|
+
readonly documentId: string;
|
|
517
|
+
/**
|
|
518
|
+
* Results from all processed chunks.
|
|
519
|
+
*/
|
|
520
|
+
readonly chunkResults: ChunkResult[];
|
|
521
|
+
/**
|
|
522
|
+
* Strategy to use for aggregation.
|
|
523
|
+
* @default 'majority-vote'
|
|
524
|
+
*/
|
|
525
|
+
readonly aggregationStrategy?: AggregationStrategy;
|
|
526
|
+
}
|
|
527
|
+
/**
|
|
528
|
+
* Summary of chunk processing results.
|
|
529
|
+
*/
|
|
530
|
+
export interface ChunksSummary {
|
|
531
|
+
/**
|
|
532
|
+
* Total number of chunks created.
|
|
533
|
+
*/
|
|
534
|
+
readonly totalChunks: number;
|
|
535
|
+
/**
|
|
536
|
+
* Number of chunks that processed successfully.
|
|
537
|
+
*/
|
|
538
|
+
readonly successfulChunks: number;
|
|
539
|
+
/**
|
|
540
|
+
* Number of chunks that failed processing.
|
|
541
|
+
*/
|
|
542
|
+
readonly failedChunks: number;
|
|
543
|
+
/**
|
|
544
|
+
* Optional total tokens processed across all chunks.
|
|
545
|
+
*/
|
|
546
|
+
readonly totalTokensProcessed?: number;
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Aggregated result from processing all chunks.
|
|
550
|
+
* Combines classification and extraction results into final output.
|
|
551
|
+
*/
|
|
552
|
+
export interface AggregatedResult {
|
|
553
|
+
/**
|
|
554
|
+
* Document identifier.
|
|
555
|
+
*/
|
|
556
|
+
readonly documentId: string;
|
|
557
|
+
/**
|
|
558
|
+
* Final document classification (from majority vote or other strategy).
|
|
559
|
+
*/
|
|
560
|
+
readonly classification: string;
|
|
561
|
+
/**
|
|
562
|
+
* Confidence score for the classification (0-1).
|
|
563
|
+
* For majority vote: (count of majority / total chunks)
|
|
564
|
+
*/
|
|
565
|
+
readonly classificationConfidence: number;
|
|
566
|
+
/**
|
|
567
|
+
* Deduplicated entities from all chunks.
|
|
568
|
+
* Entities without page numbers are deduplicated by (type, value).
|
|
569
|
+
* Entities with page numbers are preserved even if duplicated.
|
|
570
|
+
*/
|
|
571
|
+
readonly entities: Entity[];
|
|
572
|
+
/**
|
|
573
|
+
* Summary of chunk processing results.
|
|
574
|
+
*/
|
|
575
|
+
readonly chunksSummary: ChunksSummary;
|
|
576
|
+
/**
|
|
577
|
+
* Indicates if result is partial due to chunk failures.
|
|
578
|
+
* True if fewer than minSuccessThreshold chunks succeeded.
|
|
579
|
+
*/
|
|
580
|
+
readonly partialResult: boolean;
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Request payload for cleanup Lambda.
|
|
584
|
+
* Contains information about chunks to delete.
|
|
585
|
+
*/
|
|
586
|
+
export interface CleanupRequest {
|
|
587
|
+
/**
|
|
588
|
+
* Document identifier.
|
|
589
|
+
*/
|
|
590
|
+
readonly documentId: string;
|
|
591
|
+
/**
|
|
592
|
+
* Array of chunk metadata for chunks to delete.
|
|
593
|
+
*/
|
|
594
|
+
readonly chunks: ChunkMetadata[];
|
|
595
|
+
}
|
|
596
|
+
/**
|
|
597
|
+
* Response from cleanup Lambda.
|
|
598
|
+
* Reports success and any errors encountered.
|
|
599
|
+
*/
|
|
600
|
+
export interface CleanupResponse {
|
|
601
|
+
/**
|
|
602
|
+
* Document identifier.
|
|
603
|
+
*/
|
|
604
|
+
readonly documentId: string;
|
|
605
|
+
/**
|
|
606
|
+
* Number of chunks successfully deleted.
|
|
607
|
+
*/
|
|
608
|
+
readonly deletedChunks: number;
|
|
609
|
+
/**
|
|
610
|
+
* Array of error messages for failed deletions.
|
|
611
|
+
* Empty if all deletions succeeded.
|
|
612
|
+
*/
|
|
613
|
+
readonly errors: string[];
|
|
614
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmtpbmctY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdXNlLWNhc2VzL2RvY3VtZW50LXByb2Nlc3NpbmcvY2h1bmtpbmctY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIENodW5raW5nIHN0cmF0ZWd5IG9wdGlvbnMgZm9yIFBERiBkb2N1bWVudCBwcm9jZXNzaW5nLlxuICpcbiAqIENob29zZSB0aGUgc3RyYXRlZ3kgYmFzZWQgb24geW91ciBkb2N1bWVudCBjaGFyYWN0ZXJpc3RpY3M6XG4gKlxuICogLSAqKmZpeGVkLXBhZ2VzKio6IExlZ2FjeSBhcHByb2FjaCwgc3BsaXRzIGJ5IGZpeGVkIHBhZ2UgY291bnQuXG4gKiAgIC0gUHJvczogRmFzdCwgc2ltcGxlLCBwcmVkaWN0YWJsZSBjaHVuayBzaXplc1xuICogICAtIENvbnM6IE1heSBleGNlZWQgdG9rZW4gbGltaXRzIGZvciBkZW5zZSBkb2N1bWVudHNcbiAqICAgLSBCZXN0IGZvcjogVW5pZm9ybSBkZW5zaXR5IGRvY3VtZW50cywgc2ltcGxlIHRleHRcbiAqXG4gKiAtICoqdG9rZW4tYmFzZWQqKjogU3BsaXRzIGJhc2VkIG9uIHRva2VuIGNvdW50IHRvIHJlc3BlY3QgbW9kZWwgbGltaXRzLlxuICogICAtIFByb3M6IFJlc3BlY3RzIG1vZGVsIHRva2VuIGxpbWl0cywgaGFuZGxlcyB2YXJpYWJsZSBkZW5zaXR5XG4gKiAgIC0gQ29uczogU2xvd2VyIGFuYWx5c2lzLCB2YXJpYWJsZSBjaHVuayBzaXplc1xuICogICAtIEJlc3QgZm9yOiBWYXJpYWJsZSBkZW5zaXR5IGRvY3VtZW50cywgdGVjaG5pY2FsIGNvbnRlbnRcbiAqXG4gKiAtICoqaHlicmlkKio6IFJFQ09NTUVOREVEIC0gQmFsYW5jZXMgdG9rZW4gY291bnQgYW5kIHBhZ2UgbGltaXRzLlxuICogICAtIFByb3M6IEJlc3Qgb2YgYm90aCB3b3JsZHMsIHJlbGlhYmxlLCBmbGV4aWJsZVxuICogICAtIENvbnM6IFNsaWdodGx5IG1vcmUgY29tcGxleCBjb25maWd1cmF0aW9uXG4gKiAgIC0gQmVzdCBmb3I6IE1vc3QgZG9jdW1lbnRzLCBnZW5lcmFsLXB1cnBvc2UgcHJvY2Vzc2luZ1xuICovXG5leHBvcnQgdHlwZSBDaHVua2luZ1N0cmF0ZWd5ID0gJ2ZpeGVkLXBhZ2VzJyB8ICd0b2tlbi1iYXNlZCcgfCAnaHlicmlkJztcblxuLyoqXG4gKiBQcm9jZXNzaW5nIG1vZGUgZm9yIGNodW5rZWQgZG9jdW1lbnRzLlxuICpcbiAqIC0gKipzZXF1ZW50aWFsKio6IFByb2Nlc3MgY2h1bmtzIG9uZSBhdCBhIHRpbWUgKGNvc3Qtb3B0aW1pemVkKVxuICogLSAqKnBhcmFsbGVsKio6IFByb2Nlc3MgbXVsdGlwbGUgY2h1bmtzIHNpbXVsdGFuZW91c2x5IChzcGVlZC1vcHRpbWl6ZWQpXG4gKi9cbmV4cG9ydCB0eXBlIFByb2Nlc3NpbmdNb2RlID0gJ3NlcXVlbnRpYWwnIHwgJ3BhcmFsbGVsJztcblxuLyoqXG4gKiBBZ2dyZWdhdGlvbiBzdHJhdGVneSBmb3IgY29tYmluaW5nIGNodW5rIHJlc3VsdHMuXG4gKlxuICogLSAqKm1ham9yaXR5LXZvdGUqKjogU2VsZWN0IG1vc3QgZnJlcXVlbnQgY2xhc3NpZmljYXRpb24gYWNyb3NzIGNodW5rc1xuICogLSAqKndlaWdodGVkLXZvdGUqKjogV2VpZ2h0IGVhcmx5IGNodW5rcyBoaWdoZXIgdGhhbiBsYXRlciBjaHVua3NcbiAqIC0gKipmaXJzdC1jaHVuayoqOiBVc2UgY2xhc3NpZmljYXRpb24gZnJvbSBmaXJzdCBjaHVuayBvbmx5XG4gKi9cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uU3RyYXRlZ3kgPSAnbWFqb3JpdHktdm90ZScgfCAnd2VpZ2h0ZWQtdm90ZScgfCAnZmlyc3QtY2h1bmsnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGZpeGVkLXBhZ2VzIGNodW5raW5nIHN0cmF0ZWd5LlxuICogU3BsaXRzIGRvY3VtZW50cyBieSBmaXhlZCBwYWdlIGNvdW50IChsZWdhY3kgYXBwcm9hY2gpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpeGVkUGFnZXNDb25maWcge1xuICAvKipcbiAgICogVGhyZXNob2xkIGZvciB0cmlnZ2VyaW5nIGNodW5raW5nIGJhc2VkIG9uIHBhZ2UgY291bnQuXG4gICAqIERvY3VtZW50cyB3aXRoIHBhZ2VzID4gdGhyZXNob2xkIHdpbGwgYmUgY2h1bmtlZC5cbiAgICogQGRlZmF1bHQgMTAwXG4gICAqL1xuICByZWFkb25seSBwYWdlVGhyZXNob2xkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcGFnZXMgcGVyIGNodW5rLlxuICAgKiBAZGVmYXVsdCA1MFxuICAgKi9cbiAgcmVhZG9ubHkgY2h1bmtTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygb3ZlcmxhcHBpbmcgcGFnZXMgYmV0d2VlbiBjb25zZWN1dGl2ZSBjaHVua3MuXG4gICAqIE11c3QgYmUgbGVzcyB0aGFuIGNodW5rU2l6ZS5cbiAgICogQGRlZmF1bHQgNVxuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcmxhcFBhZ2VzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRva2VuLWJhc2VkIGNodW5raW5nIHN0cmF0ZWd5LlxuICogU3BsaXRzIGRvY3VtZW50cyBiYXNlZCBvbiBlc3RpbWF0ZWQgdG9rZW4gY291bnQgdG8gcmVzcGVjdCBtb2RlbCBsaW1pdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5CYXNlZENvbmZpZyB7XG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgZm9yIHRyaWdnZXJpbmcgY2h1bmtpbmcgYmFzZWQgb24gdG9rZW4gY291bnQuXG4gICAqIERvY3VtZW50cyB3aXRoIHRva2VucyA+IHRocmVzaG9sZCB3aWxsIGJlIGNodW5rZWQuXG4gICAqIEBkZWZhdWx0IDE1MDAwMFxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5UaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gdG9rZW5zIHBlciBjaHVuay5cbiAgICogRW5zdXJlcyBubyBjaHVuayBleGNlZWRzIG1vZGVsIHRva2VuIGxpbWl0cy5cbiAgICogQGRlZmF1bHQgMTAwMDAwXG4gICAqL1xuICByZWFkb25seSBtYXhUb2tlbnNQZXJDaHVuaz86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG92ZXJsYXBwaW5nIHRva2VucyBiZXR3ZWVuIGNvbnNlY3V0aXZlIGNodW5rcy5cbiAgICogUHJvdmlkZXMgY29udGV4dCBjb250aW51aXR5IGFjcm9zcyBjaHVua3MuXG4gICAqIEBkZWZhdWx0IDUwMDBcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJsYXBUb2tlbnM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgaHlicmlkIGNodW5raW5nIHN0cmF0ZWd5IChSRUNPTU1FTkRFRCkuXG4gKiBCYWxhbmNlcyB0b2tlbiBjb3VudCBhbmQgcGFnZSBsaW1pdHMgZm9yIG9wdGltYWwgY2h1bmtpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHlicmlkQ29uZmlnIHtcbiAgLyoqXG4gICAqIEhhcmQgbGltaXQgb24gcGFnZXMgcGVyIGNodW5rLlxuICAgKiBQcmV2ZW50cyB2ZXJ5IGxhcmdlIGNodW5rcyBldmVuIGlmIHRva2VuIGNvdW50IGlzIGxvdy5cbiAgICogTm90ZTogQmVkcm9jayBoYXMgYSBoYXJkIGxpbWl0IG9mIDEwMCBwYWdlcyBwZXIgUERGLCBzbyB3ZSBkZWZhdWx0IHRvIDk5XG4gICAqIHRvIHByb3ZpZGUgYSBzYWZldHkgbWFyZ2luLlxuICAgKiBAZGVmYXVsdCA5OVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UGFnZXNQZXJDaHVuaz86IG51bWJlcjtcblxuICAvKipcbiAgICogU29mdCB0YXJnZXQgZm9yIHRva2VucyBwZXIgY2h1bmsuXG4gICAqIENodW5rcyBhaW0gZm9yIHRoaXMgdG9rZW4gY291bnQgYnV0IHJlc3BlY3QgbWF4UGFnZXNQZXJDaHVuay5cbiAgICogQGRlZmF1bHQgODAwMDBcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFRva2Vuc1BlckNodW5rPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgZm9yIHRyaWdnZXJpbmcgY2h1bmtpbmcgYmFzZWQgb24gcGFnZSBjb3VudC5cbiAgICogRG9jdW1lbnRzIHdpdGggcGFnZXMgPiB0aHJlc2hvbGQgd2lsbCBiZSBjaHVua2VkLlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VUaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRocmVzaG9sZCBmb3IgdHJpZ2dlcmluZyBjaHVua2luZyBiYXNlZCBvbiB0b2tlbiBjb3VudC5cbiAgICogRG9jdW1lbnRzIHdpdGggdG9rZW5zID4gdGhyZXNob2xkIHdpbGwgYmUgY2h1bmtlZC5cbiAgICogQGRlZmF1bHQgMTUwMDAwXG4gICAqL1xuICByZWFkb25seSB0b2tlblRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG92ZXJsYXBwaW5nIHRva2VucyBiZXR3ZWVuIGNvbnNlY3V0aXZlIGNodW5rcy5cbiAgICogUHJvdmlkZXMgY29udGV4dCBjb250aW51aXR5IGFjcm9zcyBjaHVua3MuXG4gICAqIEBkZWZhdWx0IDUwMDBcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJsYXBUb2tlbnM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29tcHJlaGVuc2l2ZSBjb25maWd1cmF0aW9uIGZvciBQREYgY2h1bmtpbmcgYmVoYXZpb3IuXG4gKlxuICogVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciBob3cgbGFyZ2UgUERGIGRvY3VtZW50cyBhcmVcbiAqIHNwbGl0IGludG8gbWFuYWdlYWJsZSBjaHVua3MgZm9yIHByb2Nlc3NpbmcuIFRoZSBjaHVua2luZyBzeXN0ZW0gc3VwcG9ydHMgdGhyZWVcbiAqIHN0cmF0ZWdpZXMsIGVhY2ggb3B0aW1pemVkIGZvciBkaWZmZXJlbnQgZG9jdW1lbnQgdHlwZXMgYW5kIHVzZSBjYXNlcy5cbiAqXG4gKiAjIyBDaHVua2luZyBTdHJhdGVnaWVzXG4gKlxuICogIyMjIDEuIEh5YnJpZCBTdHJhdGVneSAoUkVDT01NRU5ERUQpXG4gKiBCYWxhbmNlcyBib3RoIHRva2VuIGNvdW50IGFuZCBwYWdlIGxpbWl0cyBmb3Igb3B0aW1hbCBjaHVua2luZy4gQmVzdCBmb3IgbW9zdFxuICogZG9jdW1lbnRzIGFzIGl0IHJlc3BlY3RzIG1vZGVsIHRva2VuIGxpbWl0cyB3aGlsZSBwcmV2ZW50aW5nIGV4Y2Vzc2l2ZWx5IGxhcmdlIGNodW5rcy5cbiAqXG4gKiAjIyMgMi4gVG9rZW4tQmFzZWQgU3RyYXRlZ3lcbiAqIFNwbGl0cyBkb2N1bWVudHMgYmFzZWQgb24gZXN0aW1hdGVkIHRva2VuIGNvdW50LiBCZXN0IGZvciBkb2N1bWVudHMgd2l0aCB2YXJpYWJsZVxuICogY29udGVudCBkZW5zaXR5IChlLmcuLCBtaXhlZCB0ZXh0IGFuZCBpbWFnZXMsIHRhYmxlcywgY2hhcnRzKS5cbiAqXG4gKiAjIyMgMy4gRml4ZWQtUGFnZXMgU3RyYXRlZ3kgKExlZ2FjeSlcbiAqIFNpbXBsZSBwYWdlLWJhc2VkIHNwbGl0dGluZy4gRmFzdCBidXQgbWF5IGV4Y2VlZCB0b2tlbiBsaW1pdHMgZm9yIGRlbnNlIGRvY3VtZW50cy5cbiAqIFVzZSBvbmx5IGZvciBkb2N1bWVudHMgd2l0aCB1bmlmb3JtIGNvbnRlbnQgZGVuc2l0eS5cbiAqXG4gKiAjIyBQcm9jZXNzaW5nIE1vZGVzXG4gKlxuICogLSAqKnBhcmFsbGVsKio6IFByb2Nlc3MgbXVsdGlwbGUgY2h1bmtzIHNpbXVsdGFuZW91c2x5IChmYXN0ZXIsIGhpZ2hlciBjb3N0KVxuICogLSAqKnNlcXVlbnRpYWwqKjogUHJvY2VzcyBjaHVua3Mgb25lIGF0IGEgdGltZSAoc2xvd2VyLCBsb3dlciBjb3N0KVxuICpcbiAqICMjIEFnZ3JlZ2F0aW9uIFN0cmF0ZWdpZXNcbiAqXG4gKiAtICoqbWFqb3JpdHktdm90ZSoqOiBNb3N0IGZyZXF1ZW50IGNsYXNzaWZpY2F0aW9uIHdpbnMgKHJlY29tbWVuZGVkKVxuICogLSAqKndlaWdodGVkLXZvdGUqKjogRWFybHkgY2h1bmtzIHdlaWdodGVkIGhpZ2hlclxuICogLSAqKmZpcnN0LWNodW5rKio6IFVzZSBmaXJzdCBjaHVuaydzIGNsYXNzaWZpY2F0aW9uIG9ubHlcbiAqXG4gKiAjIyBEZWZhdWx0IFZhbHVlc1xuICpcbiAqIHwgUGFyYW1ldGVyIHwgRGVmYXVsdCB8IERlc2NyaXB0aW9uIHxcbiAqIHwtLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLXxcbiAqIHwgc3RyYXRlZ3kgfCAnaHlicmlkJyB8IENodW5raW5nIHN0cmF0ZWd5IHxcbiAqIHwgcGFnZVRocmVzaG9sZCB8IDEwMCB8IFBhZ2VzIHRvIHRyaWdnZXIgY2h1bmtpbmcgfFxuICogfCB0b2tlblRocmVzaG9sZCB8IDE1MDAwMCB8IFRva2VucyB0byB0cmlnZ2VyIGNodW5raW5nIHxcbiAqIHwgY2h1bmtTaXplIHwgNTAgfCBQYWdlcyBwZXIgY2h1bmsgKGZpeGVkLXBhZ2VzKSB8XG4gKiB8IG92ZXJsYXBQYWdlcyB8IDUgfCBPdmVybGFwIHBhZ2VzIChmaXhlZC1wYWdlcykgfFxuICogfCBtYXhUb2tlbnNQZXJDaHVuayB8IDEwMDAwMCB8IE1heCB0b2tlbnMgcGVyIGNodW5rICh0b2tlbi1iYXNlZCkgfFxuICogfCBvdmVybGFwVG9rZW5zIHwgNTAwMCB8IE92ZXJsYXAgdG9rZW5zICh0b2tlbi1iYXNlZCwgaHlicmlkKSB8XG4gKiB8IHRhcmdldFRva2Vuc1BlckNodW5rIHwgODAwMDAgfCBUYXJnZXQgdG9rZW5zIHBlciBjaHVuayAoaHlicmlkKSB8XG4gKiB8IG1heFBhZ2VzUGVyQ2h1bmsgfCA5OSB8IE1heCBwYWdlcyBwZXIgY2h1bmsgKGh5YnJpZCkgfFxuICogfCBwcm9jZXNzaW5nTW9kZSB8ICdwYXJhbGxlbCcgfCBQcm9jZXNzaW5nIG1vZGUgfFxuICogfCBtYXhDb25jdXJyZW5jeSB8IDEwIHwgTWF4IHBhcmFsbGVsIGNodW5rcyB8XG4gKiB8IGFnZ3JlZ2F0aW9uU3RyYXRlZ3kgfCAnbWFqb3JpdHktdm90ZScgfCBSZXN1bHQgYWdncmVnYXRpb24gfFxuICogfCBtaW5TdWNjZXNzVGhyZXNob2xkIHwgMC41IHwgTWluIHN1Y2Nlc3MgcmF0ZSBmb3IgdmFsaWQgcmVzdWx0IHxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaHVua2luZ0NvbmZpZyB7XG4gIC8qKlxuICAgKiBDaHVua2luZyBzdHJhdGVneSB0byB1c2UuXG4gICAqXG4gICAqIC0gKipoeWJyaWQqKiAoUkVDT01NRU5ERUQpOiBCYWxhbmNlcyB0b2tlbiBjb3VudCBhbmQgcGFnZSBsaW1pdHNcbiAgICogLSAqKnRva2VuLWJhc2VkKio6IFJlc3BlY3RzIG1vZGVsIHRva2VuIGxpbWl0cywgZ29vZCBmb3IgdmFyaWFibGUgZGVuc2l0eVxuICAgKiAtICoqZml4ZWQtcGFnZXMqKjogU2ltcGxlIHBhZ2UtYmFzZWQgc3BsaXR0aW5nIChsZWdhY3ksIG5vdCByZWNvbW1lbmRlZClcbiAgICpcbiAgICogQGRlZmF1bHQgJ2h5YnJpZCdcbiAgICovXG4gIHJlYWRvbmx5IHN0cmF0ZWd5PzogQ2h1bmtpbmdTdHJhdGVneTtcblxuICAvLyBGaXhlZC1wYWdlcyBzdHJhdGVneSBjb25maWd1cmF0aW9uXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgZm9yIHRyaWdnZXJpbmcgY2h1bmtpbmcgYmFzZWQgb24gcGFnZSBjb3VudCAoZml4ZWQtcGFnZXMgc3RyYXRlZ3kpLlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VUaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBwYWdlcyBwZXIgY2h1bmsgKGZpeGVkLXBhZ2VzIHN0cmF0ZWd5KS5cbiAgICogQGRlZmF1bHQgNTBcbiAgICovXG4gIHJlYWRvbmx5IGNodW5rU2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG92ZXJsYXBwaW5nIHBhZ2VzIGJldHdlZW4gY2h1bmtzIChmaXhlZC1wYWdlcyBzdHJhdGVneSkuXG4gICAqIEBkZWZhdWx0IDVcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJsYXBQYWdlcz86IG51bWJlcjtcblxuICAvLyBUb2tlbi1iYXNlZCBzdHJhdGVneSBjb25maWd1cmF0aW9uXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgZm9yIHRyaWdnZXJpbmcgY2h1bmtpbmcgYmFzZWQgb24gdG9rZW4gY291bnQgKHRva2VuLWJhc2VkIHN0cmF0ZWd5KS5cbiAgICogQGRlZmF1bHQgMTUwMDAwXG4gICAqL1xuICByZWFkb25seSB0b2tlblRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4aW11bSB0b2tlbnMgcGVyIGNodW5rICh0b2tlbi1iYXNlZCBzdHJhdGVneSkuXG4gICAqIEBkZWZhdWx0IDEwMDAwMFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4VG9rZW5zUGVyQ2h1bms/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBvdmVybGFwcGluZyB0b2tlbnMgYmV0d2VlbiBjaHVua3MgKHRva2VuLWJhc2VkIGFuZCBoeWJyaWQgc3RyYXRlZ2llcykuXG4gICAqIEBkZWZhdWx0IDUwMDBcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJsYXBUb2tlbnM/OiBudW1iZXI7XG5cbiAgLy8gSHlicmlkIHN0cmF0ZWd5IGNvbmZpZ3VyYXRpb25cbiAgLyoqXG4gICAqIEhhcmQgbGltaXQgb24gcGFnZXMgcGVyIGNodW5rIChoeWJyaWQgc3RyYXRlZ3kpLlxuICAgKiBOb3RlOiBCZWRyb2NrIGhhcyBhIGhhcmQgbGltaXQgb2YgMTAwIHBhZ2VzIHBlciBQREYsIHNvIHdlIGRlZmF1bHQgdG8gOTlcbiAgICogdG8gcHJvdmlkZSBhIHNhZmV0eSBtYXJnaW4uXG4gICAqIEBkZWZhdWx0IDk5XG4gICAqL1xuICByZWFkb25seSBtYXhQYWdlc1BlckNodW5rPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTb2Z0IHRhcmdldCBmb3IgdG9rZW5zIHBlciBjaHVuayAoaHlicmlkIHN0cmF0ZWd5KS5cbiAgICogQGRlZmF1bHQgODAwMDBcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFRva2Vuc1BlckNodW5rPzogbnVtYmVyO1xuXG4gIC8vIENvbW1vbiBzZXR0aW5nc1xuICAvKipcbiAgICogUHJvY2Vzc2luZyBtb2RlIGZvciBjaHVua3MuXG4gICAqXG4gICAqIC0gKipwYXJhbGxlbCoqOiBQcm9jZXNzIG11bHRpcGxlIGNodW5rcyBzaW11bHRhbmVvdXNseSAoZmFzdGVyLCBoaWdoZXIgY29zdClcbiAgICogLSAqKnNlcXVlbnRpYWwqKjogUHJvY2VzcyBjaHVua3Mgb25lIGF0IGEgdGltZSAoc2xvd2VyLCBsb3dlciBjb3N0KVxuICAgKlxuICAgKiBAZGVmYXVsdCAncGFyYWxsZWwnXG4gICAqL1xuICByZWFkb25seSBwcm9jZXNzaW5nTW9kZT86IFByb2Nlc3NpbmdNb2RlO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBvZiBjaHVua3MgdG8gcHJvY2VzcyBjb25jdXJyZW50bHkgKHBhcmFsbGVsIG1vZGUgb25seSkuXG4gICAqIEhpZ2hlciB2YWx1ZXMgaW5jcmVhc2Ugc3BlZWQgYnV0IGFsc28gY29zdC5cbiAgICpcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHJlYWRvbmx5IG1heENvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTdHJhdGVneSBmb3IgYWdncmVnYXRpbmcgcmVzdWx0cyBmcm9tIG11bHRpcGxlIGNodW5rcy5cbiAgICpcbiAgICogLSAqKm1ham9yaXR5LXZvdGUqKjogTW9zdCBmcmVxdWVudCBjbGFzc2lmaWNhdGlvbiB3aW5zXG4gICAqIC0gKip3ZWlnaHRlZC12b3RlKio6IEVhcmx5IGNodW5rcyB3ZWlnaHRlZCBoaWdoZXJcbiAgICogLSAqKmZpcnN0LWNodW5rKio6IFVzZSBmaXJzdCBjaHVuaydzIGNsYXNzaWZpY2F0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdtYWpvcml0eS12b3RlJ1xuICAgKi9cbiAgcmVhZG9ubHkgYWdncmVnYXRpb25TdHJhdGVneT86IEFnZ3JlZ2F0aW9uU3RyYXRlZ3k7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gcGVyY2VudGFnZSBvZiBjaHVua3MgdGhhdCBtdXN0IHN1Y2NlZWQgZm9yIGFnZ3JlZ2F0aW9uLlxuICAgKiBJZiBmZXdlciBjaHVua3Mgc3VjY2VlZCwgdGhlIHJlc3VsdCBpcyBtYXJrZWQgYXMgcGFydGlhbCBmYWlsdXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwLjUgKDUwJSlcbiAgICovXG4gIHJlYWRvbmx5IG1pblN1Y2Nlc3NUaHJlc2hvbGQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTWV0YWRhdGEgYWJvdXQgYSBzaW5nbGUgY2h1bmsgb2YgYSBkb2N1bWVudC5cbiAqIENvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaHVuaydzIHBvc2l0aW9uLCBzaXplLCBhbmQgUzMgbG9jYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2h1bmtNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBjaHVuay5cbiAgICogRm9ybWF0OiB7ZG9jdW1lbnRJZH1fY2h1bmtfe2luZGV4fVxuICAgKi9cbiAgcmVhZG9ubHkgY2h1bmtJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBaZXJvLWJhc2VkIGluZGV4IG9mIHRoaXMgY2h1bmsgaW4gdGhlIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgY2h1bmtJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUb3RhbCBudW1iZXIgb2YgY2h1bmtzIGluIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsQ2h1bmtzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFN0YXJ0aW5nIHBhZ2UgbnVtYmVyICh6ZXJvLWJhc2VkKSBvZiB0aGlzIGNodW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRQYWdlOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVuZGluZyBwYWdlIG51bWJlciAoemVyby1iYXNlZCwgaW5jbHVzaXZlKSBvZiB0aGlzIGNodW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kUGFnZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcGFnZXMgaW4gdGhpcyBjaHVuay5cbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VDb3VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFc3RpbWF0ZWQgdG9rZW4gY291bnQgZm9yIHRoaXMgY2h1bmsuXG4gICAqIEJhc2VkIG9uIHdvcmQtY291bnQgaGV1cmlzdGljICgxLjMgdG9rZW5zIHBlciB3b3JkKS5cbiAgICovXG4gIHJlYWRvbmx5IGVzdGltYXRlZFRva2VuczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTMyBidWNrZXQgY29udGFpbmluZyB0aGUgY2h1bmsgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTMyBrZXkgZm9yIHRoZSBjaHVuayBmaWxlLlxuICAgKiBUeXBpY2FsbHkgaW4gY2h1bmtzLyBwcmVmaXguXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEb2N1bWVudCBjb250ZW50IGxvY2F0aW9uIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50Q29udGVudCB7XG4gIC8qKlxuICAgKiBTdG9yYWdlIGxvY2F0aW9uIHR5cGUgKGUuZy4sICdzMycpLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogUzMgYnVja2V0IGNvbnRhaW5pbmcgdGhlIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIGtleSBmb3IgdGhlIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9yaWdpbmFsIGZpbGVuYW1lIG9mIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXlsb2FkIGZvciBQREYgYW5hbHlzaXMgYW5kIGNodW5raW5nIExhbWJkYS5cbiAqIENvbnRhaW5zIGRvY3VtZW50IGluZm9ybWF0aW9uIGFuZCBjaHVua2luZyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENodW5raW5nUmVxdWVzdCB7XG4gIC8qKlxuICAgKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250ZW50IHR5cGUgb2YgdGhlIGRvY3VtZW50LlxuICAgKiBUeXBpY2FsbHkgJ2ZpbGUnIGZvciBTMy1iYXNlZCBkb2N1bWVudHMuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50VHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudCBjb250ZW50IGxvY2F0aW9uIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogRG9jdW1lbnRDb250ZW50O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjaHVua2luZyBjb25maWd1cmF0aW9uLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHVzZXMgZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnPzogQ2h1bmtpbmdDb25maWc7XG59XG5cbi8qKlxuICogVG9rZW4gYW5hbHlzaXMgcmVzdWx0cyBmcm9tIFBERiBhbmFseXNpcy5cbiAqIFByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IGRvY3VtZW50IHNpemUgYW5kIHRva2VuIGRpc3RyaWJ1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb2tlbkFuYWx5c2lzIHtcbiAgLyoqXG4gICAqIFRvdGFsIGVzdGltYXRlZCB0b2tlbnMgaW4gdGhlIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdG90YWxUb2tlbnM6IG51bWJlcjtcblxuICAvKipcbiAgICogVG90YWwgbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsUGFnZXM6IG51bWJlcjtcblxuICAvKipcbiAgICogQXZlcmFnZSB0b2tlbnMgcGVyIHBhZ2UgYWNyb3NzIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF2Z1Rva2Vuc1BlclBhZ2U6IG51bWJlcjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGV0YWlsZWQgdG9rZW4gY291bnQgZm9yIGVhY2ggcGFnZS5cbiAgICogVXNlZCBmb3IgdG9rZW4tYmFzZWQgYW5kIGh5YnJpZCBjaHVua2luZyBzdHJhdGVnaWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5zUGVyUGFnZT86IG51bWJlcltdO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIHdoZW4gY2h1bmtpbmcgaXMgTk9UIHJlcXVpcmVkLlxuICogRG9jdW1lbnQgaXMgYmVsb3cgdGhyZXNob2xkcyBhbmQgd2lsbCBiZSBwcm9jZXNzZWQgd2l0aG91dCBjaHVua2luZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb0NodW5raW5nUmVzcG9uc2Uge1xuICAvKipcbiAgICogRG9jdW1lbnQgaWRlbnRpZmllci5cbiAgICovXG4gIHJlYWRvbmx5IGRvY3VtZW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGNodW5raW5nIGlzIG5vdCByZXF1aXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQ2h1bmtpbmc6IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUb2tlbiBhbmFseXNpcyByZXN1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5BbmFseXNpczogVG9rZW5BbmFseXNpcztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgcmVhc29uIHdoeSBjaHVua2luZyB3YXMgbm90IGFwcGxpZWQuXG4gICAqIEV4YW1wbGU6IFwiRG9jdW1lbnQgaGFzIDUwIHBhZ2VzLCBiZWxvdyB0aHJlc2hvbGQgb2YgMTAwXCJcbiAgICovXG4gIHJlYWRvbmx5IHJlYXNvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIENodW5raW5nIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgcHJvY2Vzc2luZy5cbiAqIEluY2x1ZGVzIGJvdGggdXNlci1wcm92aWRlZCBhbmQgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2h1bmtpbmdDb25maWdVc2VkIHtcbiAgcmVhZG9ubHkgc3RyYXRlZ3k6IENodW5raW5nU3RyYXRlZ3k7XG4gIHJlYWRvbmx5IHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgdG90YWxUb2tlbnM6IG51bWJlcjtcbiAgcmVhZG9ubHkgY2h1bmtTaXplPzogbnVtYmVyO1xuICByZWFkb25seSBvdmVybGFwUGFnZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1heFRva2Vuc1BlckNodW5rPzogbnVtYmVyO1xuICByZWFkb25seSBvdmVybGFwVG9rZW5zPzogbnVtYmVyO1xuICByZWFkb25seSB0YXJnZXRUb2tlbnNQZXJDaHVuaz86IG51bWJlcjtcbiAgcmVhZG9ubHkgbWF4UGFnZXNQZXJDaHVuaz86IG51bWJlcjtcbiAgcmVhZG9ubHkgcHJvY2Vzc2luZ01vZGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2Ugd2hlbiBjaHVua2luZyBJUyByZXF1aXJlZC5cbiAqIERvY3VtZW50IGV4Y2VlZHMgdGhyZXNob2xkcyBhbmQgaGFzIGJlZW4gc3BsaXQgaW50byBjaHVua3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2h1bmtpbmdSZXNwb25zZSB7XG4gIC8qKlxuICAgKiBEb2N1bWVudCBpZGVudGlmaWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgY2h1bmtpbmcgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlc0NodW5raW5nOiB0cnVlO1xuXG4gIC8qKlxuICAgKiBUb2tlbiBhbmFseXNpcyByZXN1bHRzIHdpdGggZGV0YWlsZWQgcGVyLXBhZ2UgaW5mb3JtYXRpb24uXG4gICAqL1xuICByZWFkb25seSB0b2tlbkFuYWx5c2lzOiBUb2tlbkFuYWx5c2lzO1xuXG4gIC8qKlxuICAgKiBTdHJhdGVneSB1c2VkIGZvciBjaHVua2luZy5cbiAgICovXG4gIHJlYWRvbmx5IHN0cmF0ZWd5OiBDaHVua2luZ1N0cmF0ZWd5O1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBjaHVuayBtZXRhZGF0YSBmb3IgYWxsIGNyZWF0ZWQgY2h1bmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2h1bmtzOiBDaHVua01ldGFkYXRhW107XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gdXNlZCBmb3IgY2h1bmtpbmcuXG4gICAqIEluY2x1ZGVzIGJvdGggdXNlci1wcm92aWRlZCBhbmQgZGVmYXVsdCB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSBjb25maWc6IENodW5raW5nQ29uZmlnVXNlZDtcbn1cblxuLyoqXG4gKiBVbmlvbiB0eXBlIGZvciBjaHVua2luZyBMYW1iZGEgcmVzcG9uc2UuXG4gKiBFaXRoZXIgY2h1bmtpbmcgaXMgcmVxdWlyZWQgb3Igbm90LlxuICovXG5leHBvcnQgdHlwZSBDaHVua2luZ0xhbWJkYVJlc3BvbnNlID0gTm9DaHVua2luZ1Jlc3BvbnNlIHwgQ2h1bmtpbmdSZXNwb25zZTtcblxuLyoqXG4gKiBDbGFzc2lmaWNhdGlvbiByZXN1bHQgZm9yIGEgY2h1bmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2h1bmtDbGFzc2lmaWNhdGlvblJlc3VsdCB7XG4gIHJlYWRvbmx5IGRvY3VtZW50Q2xhc3NpZmljYXRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgY29uZmlkZW5jZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcm9jZXNzaW5nIHJlc3VsdCBmb3IgYSBjaHVuay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaHVua1Byb2Nlc3NpbmdSZXN1bHQge1xuICByZWFkb25seSBlbnRpdGllczogRW50aXR5W107XG59XG5cbi8qKlxuICogUmVzdWx0IGZyb20gcHJvY2Vzc2luZyBhIHNpbmdsZSBjaHVuay5cbiAqIENvbnRhaW5zIGNsYXNzaWZpY2F0aW9uIGFuZCBleHRyYWN0aW9uIHJlc3VsdHMsIG9yIGVycm9yIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENodW5rUmVzdWx0IHtcbiAgLyoqXG4gICAqIENodW5rIGlkZW50aWZpZXIuXG4gICAqL1xuICByZWFkb25seSBjaHVua0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFplcm8tYmFzZWQgY2h1bmsgaW5kZXguXG4gICAqL1xuICByZWFkb25seSBjaHVua0luZGV4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNsYXNzaWZpY2F0aW9uIHJlc3VsdCBmb3IgdGhpcyBjaHVuay5cbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzaWZpY2F0aW9uUmVzdWx0PzogQ2h1bmtDbGFzc2lmaWNhdGlvblJlc3VsdDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZXh0cmFjdGlvbiByZXN1bHQgZm9yIHRoaXMgY2h1bmsuXG4gICAqL1xuICByZWFkb25seSBwcm9jZXNzaW5nUmVzdWx0PzogQ2h1bmtQcm9jZXNzaW5nUmVzdWx0O1xuXG4gIC8qKlxuICAgKiBFcnJvciBtZXNzYWdlIGlmIGNodW5rIHByb2Nlc3NpbmcgZmFpbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3I/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXh0cmFjdGVkIGVudGl0eSBmcm9tIGRvY3VtZW50IHByb2Nlc3NpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5IHtcbiAgLyoqXG4gICAqIFR5cGUgb2YgZW50aXR5IChlLmcuLCAnTkFNRScsICdEQVRFJywgJ0FNT1VOVCcsICdBRERSRVNTJykuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBlbnRpdHkuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBwYWdlIG51bWJlciB3aGVyZSBlbnRpdHkgd2FzIGZvdW5kLlxuICAgKiBFbnRpdGllcyB3aXRoIHBhZ2UgbnVtYmVycyBhcmUgcHJlc2VydmVkIGV2ZW4gaWYgZHVwbGljYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNodW5rIGluZGV4IHdoZXJlIGVudGl0eSB3YXMgZm91bmQuXG4gICAqL1xuICByZWFkb25seSBjaHVua0luZGV4PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGF5bG9hZCBmb3IgYWdncmVnYXRpb24gTGFtYmRhLlxuICogQ29udGFpbnMgcmVzdWx0cyBmcm9tIGFsbCBwcm9jZXNzZWQgY2h1bmtzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZ3JlZ2F0aW9uUmVxdWVzdCB7XG4gIC8qKlxuICAgKiBEb2N1bWVudCBpZGVudGlmaWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXN1bHRzIGZyb20gYWxsIHByb2Nlc3NlZCBjaHVua3MuXG4gICAqL1xuICByZWFkb25seSBjaHVua1Jlc3VsdHM6IENodW5rUmVzdWx0W107XG5cbiAgLyoqXG4gICAqIFN0cmF0ZWd5IHRvIHVzZSBmb3IgYWdncmVnYXRpb24uXG4gICAqIEBkZWZhdWx0ICdtYWpvcml0eS12b3RlJ1xuICAgKi9cbiAgcmVhZG9ubHkgYWdncmVnYXRpb25TdHJhdGVneT86IEFnZ3JlZ2F0aW9uU3RyYXRlZ3k7XG59XG5cbi8qKlxuICogU3VtbWFyeSBvZiBjaHVuayBwcm9jZXNzaW5nIHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2h1bmtzU3VtbWFyeSB7XG4gIC8qKlxuICAgKiBUb3RhbCBudW1iZXIgb2YgY2h1bmtzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSB0b3RhbENodW5rczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgY2h1bmtzIHRoYXQgcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseS5cbiAgICovXG4gIHJlYWRvbmx5IHN1Y2Nlc3NmdWxDaHVua3M6IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGNodW5rcyB0aGF0IGZhaWxlZCBwcm9jZXNzaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbGVkQ2h1bmtzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRvdGFsIHRva2VucyBwcm9jZXNzZWQgYWNyb3NzIGFsbCBjaHVua3MuXG4gICAqL1xuICByZWFkb25seSB0b3RhbFRva2Vuc1Byb2Nlc3NlZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBZ2dyZWdhdGVkIHJlc3VsdCBmcm9tIHByb2Nlc3NpbmcgYWxsIGNodW5rcy5cbiAqIENvbWJpbmVzIGNsYXNzaWZpY2F0aW9uIGFuZCBleHRyYWN0aW9uIHJlc3VsdHMgaW50byBmaW5hbCBvdXRwdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdncmVnYXRlZFJlc3VsdCB7XG4gIC8qKlxuICAgKiBEb2N1bWVudCBpZGVudGlmaWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaW5hbCBkb2N1bWVudCBjbGFzc2lmaWNhdGlvbiAoZnJvbSBtYWpvcml0eSB2b3RlIG9yIG90aGVyIHN0cmF0ZWd5KS5cbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzaWZpY2F0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbmZpZGVuY2Ugc2NvcmUgZm9yIHRoZSBjbGFzc2lmaWNhdGlvbiAoMC0xKS5cbiAgICogRm9yIG1ham9yaXR5IHZvdGU6IChjb3VudCBvZiBtYWpvcml0eSAvIHRvdGFsIGNodW5rcylcbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzaWZpY2F0aW9uQ29uZmlkZW5jZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZWR1cGxpY2F0ZWQgZW50aXRpZXMgZnJvbSBhbGwgY2h1bmtzLlxuICAgKiBFbnRpdGllcyB3aXRob3V0IHBhZ2UgbnVtYmVycyBhcmUgZGVkdXBsaWNhdGVkIGJ5ICh0eXBlLCB2YWx1ZSkuXG4gICAqIEVudGl0aWVzIHdpdGggcGFnZSBudW1iZXJzIGFyZSBwcmVzZXJ2ZWQgZXZlbiBpZiBkdXBsaWNhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50aXRpZXM6IEVudGl0eVtdO1xuXG4gIC8qKlxuICAgKiBTdW1tYXJ5IG9mIGNodW5rIHByb2Nlc3NpbmcgcmVzdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGNodW5rc1N1bW1hcnk6IENodW5rc1N1bW1hcnk7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiByZXN1bHQgaXMgcGFydGlhbCBkdWUgdG8gY2h1bmsgZmFpbHVyZXMuXG4gICAqIFRydWUgaWYgZmV3ZXIgdGhhbiBtaW5TdWNjZXNzVGhyZXNob2xkIGNodW5rcyBzdWNjZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBwYXJ0aWFsUmVzdWx0OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGF5bG9hZCBmb3IgY2xlYW51cCBMYW1iZGEuXG4gKiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBjaHVua3MgdG8gZGVsZXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsZWFudXBSZXF1ZXN0IHtcbiAgLyoqXG4gICAqIERvY3VtZW50IGlkZW50aWZpZXIuXG4gICAqL1xuICByZWFkb25seSBkb2N1bWVudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIGNodW5rIG1ldGFkYXRhIGZvciBjaHVua3MgdG8gZGVsZXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2h1bmtzOiBDaHVua01ldGFkYXRhW107XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZnJvbSBjbGVhbnVwIExhbWJkYS5cbiAqIFJlcG9ydHMgc3VjY2VzcyBhbmQgYW55IGVycm9ycyBlbmNvdW50ZXJlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbGVhbnVwUmVzcG9uc2Uge1xuICAvKipcbiAgICogRG9jdW1lbnQgaWRlbnRpZmllci5cbiAgICovXG4gIHJlYWRvbmx5IGRvY3VtZW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGNodW5rcyBzdWNjZXNzZnVsbHkgZGVsZXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZWRDaHVua3M6IG51bWJlcjtcblxuICAvKipcbiAgICogQXJyYXkgb2YgZXJyb3IgbWVzc2FnZXMgZm9yIGZhaWxlZCBkZWxldGlvbnMuXG4gICAqIEVtcHR5IGlmIGFsbCBkZWxldGlvbnMgc3VjY2VlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3JzOiBzdHJpbmdbXTtcbn1cbiJdfQ==
|
|
@@ -9,6 +9,6 @@ class DefaultDocumentProcessingConfig {
|
|
|
9
9
|
}
|
|
10
10
|
exports.DefaultDocumentProcessingConfig = DefaultDocumentProcessingConfig;
|
|
11
11
|
_a = JSII_RTTI_SYMBOL_1;
|
|
12
|
-
DefaultDocumentProcessingConfig[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DefaultDocumentProcessingConfig", version: "1.
|
|
12
|
+
DefaultDocumentProcessingConfig[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DefaultDocumentProcessingConfig", version: "1.6.0" };
|
|
13
13
|
DefaultDocumentProcessingConfig.DEFAULT_OBSERVABILITY_METRIC_SVC_NAME = 'document-processing';
|
|
14
14
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1kb2N1bWVudC1wcm9jZXNzaW5nLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3VzZS1jYXNlcy9kb2N1bWVudC1wcm9jZXNzaW5nL2RlZmF1bHQtZG9jdW1lbnQtcHJvY2Vzc2luZy1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBRXRDLE1BQWEsK0JBQStCOztBQUE1QywwRUFFQzs7O0FBRHdCLHFFQUFxQyxHQUFHLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdERvY3VtZW50UHJvY2Vzc2luZ0NvbmZpZyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9PQlNFUlZBQklMSVRZX01FVFJJQ19TVkNfTkFNRSA9ICdkb2N1bWVudC1wcm9jZXNzaW5nJztcbn0iXX0=
|