@allurereport/aql 3.1.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.
@@ -0,0 +1,165 @@
1
+ /* eslint-disable max-len */
2
+ /**
3
+ * AQL error types and classes
4
+ */
5
+ export var AqlErrorCode;
6
+ (function (AqlErrorCode) {
7
+ /** Tokenizer errors */
8
+ AqlErrorCode["UNEXPECTED_CHARACTER"] = "UNEXPECTED_CHARACTER";
9
+ AqlErrorCode["UNTERMINATED_STRING"] = "UNTERMINATED_STRING";
10
+ AqlErrorCode["INVALID_UNICODE_ESCAPE"] = "INVALID_UNICODE_ESCAPE";
11
+ /** Parser errors */
12
+ AqlErrorCode["EXPECTED_TOKEN"] = "EXPECTED_TOKEN";
13
+ AqlErrorCode["EXPECTED_OPERATION"] = "EXPECTED_OPERATION";
14
+ AqlErrorCode["EXPECTED_VALUE"] = "EXPECTED_VALUE";
15
+ AqlErrorCode["EXPECTED_ACCESSOR"] = "EXPECTED_ACCESSOR";
16
+ AqlErrorCode["INVALID_SYNTAX"] = "INVALID_SYNTAX";
17
+ AqlErrorCode["INVALID_INPUT"] = "INVALID_INPUT";
18
+ AqlErrorCode["INVALID_IDENTIFIER"] = "INVALID_IDENTIFIER";
19
+ /** Configuration errors */
20
+ AqlErrorCode["FORBIDDEN_LOGICAL_OPERATOR"] = "FORBIDDEN_LOGICAL_OPERATOR";
21
+ AqlErrorCode["FORBIDDEN_OPERATION"] = "FORBIDDEN_OPERATION";
22
+ AqlErrorCode["FORBIDDEN_ARRAY_OPERATION"] = "FORBIDDEN_ARRAY_OPERATION";
23
+ AqlErrorCode["FORBIDDEN_IDENTIFIER"] = "FORBIDDEN_IDENTIFIER";
24
+ AqlErrorCode["FORBIDDEN_VALUE_TYPE"] = "FORBIDDEN_VALUE_TYPE";
25
+ AqlErrorCode["FORBIDDEN_PARENTHESES"] = "FORBIDDEN_PARENTHESES";
26
+ AqlErrorCode["FORBIDDEN_BRACKET_ACCESS"] = "FORBIDDEN_BRACKET_ACCESS";
27
+ })(AqlErrorCode || (AqlErrorCode = {}));
28
+ /**
29
+ * Base error class for AQL errors
30
+ */
31
+ export class AqlError extends Error {
32
+ constructor(code, message, details = {}) {
33
+ super(message);
34
+ this.name = "AqlError";
35
+ this.code = code;
36
+ this.details = details;
37
+ /**
38
+ * Maintains proper stack trace for where our error was thrown (only available on V8)
39
+ */
40
+ if (Error.captureStackTrace) {
41
+ Error.captureStackTrace(this, this.constructor);
42
+ }
43
+ }
44
+ /**
45
+ * Gets error details for translation/localization
46
+ * Includes error code and all context information
47
+ */
48
+ get fullDetails() {
49
+ return { ...this.details, code: this.code };
50
+ }
51
+ /**
52
+ * Gets error code for translation key generation
53
+ */
54
+ get translationKey() {
55
+ return `aql.errors.${this.code}`;
56
+ }
57
+ }
58
+ /**
59
+ * Tokenizer error
60
+ */
61
+ export class AqlTokenizerError extends AqlError {
62
+ constructor(code, message, details = {}) {
63
+ super(code, message, details);
64
+ this.name = "AqlTokenizerError";
65
+ }
66
+ }
67
+ /**
68
+ * Parser error
69
+ */
70
+ export class AqlParserError extends AqlError {
71
+ constructor(code, message, details = {}) {
72
+ super(code, message, details);
73
+ this.name = "AqlParserError";
74
+ }
75
+ }
76
+ /**
77
+ * Helper functions to create specific errors
78
+ */
79
+ export const AqlErrors = {
80
+ unexpectedCharacter: (character, position) => {
81
+ return new AqlTokenizerError(AqlErrorCode.UNEXPECTED_CHARACTER, `Unexpected character: ${character} at position ${position}`, { character, position });
82
+ },
83
+ unterminatedString: (position) => {
84
+ return new AqlTokenizerError(AqlErrorCode.UNTERMINATED_STRING, `Unterminated string at position ${position}`, {
85
+ position,
86
+ });
87
+ },
88
+ invalidUnicodeEscape: (position) => {
89
+ return new AqlTokenizerError(AqlErrorCode.INVALID_UNICODE_ESCAPE, `Invalid Unicode escape sequence at position ${position}`, { position });
90
+ },
91
+ expectedToken: (expected, got, position, context) => {
92
+ const message = context
93
+ ? `Expected ${expected}, got ${got} at position ${position}. Context: ${context}`
94
+ : `Expected ${expected}, got ${got} at position ${position}`;
95
+ return new AqlParserError(AqlErrorCode.EXPECTED_TOKEN, message, {
96
+ expected,
97
+ got,
98
+ position,
99
+ context,
100
+ });
101
+ },
102
+ expectedOperation: (position) => {
103
+ return new AqlParserError(AqlErrorCode.EXPECTED_OPERATION, `Expected operation at position ${position}`, {
104
+ position,
105
+ });
106
+ },
107
+ expectedValue: (position) => {
108
+ return new AqlParserError(AqlErrorCode.EXPECTED_VALUE, `Expected value at position ${position}`, { position });
109
+ },
110
+ expectedAccessor: (position, expected) => {
111
+ const message = expected
112
+ ? `Expected ${expected} in accessor at position ${position}`
113
+ : `Expected STRING or NUMBER in accessor at position ${position}`;
114
+ return new AqlParserError(AqlErrorCode.EXPECTED_ACCESSOR, message, {
115
+ position,
116
+ expected,
117
+ });
118
+ },
119
+ invalidInput: (reason) => {
120
+ return new AqlParserError(AqlErrorCode.INVALID_INPUT, reason, { reason });
121
+ },
122
+ invalidIdentifier: (identifier, position) => {
123
+ return new AqlParserError(AqlErrorCode.INVALID_IDENTIFIER, `Invalid identifier '${identifier}' at position ${position}. Identifier must contain only Latin letters (a-z, A-Z) and underscores (_)`, { identifier, position });
124
+ },
125
+ forbiddenLogicalOperator: (operator, position) => {
126
+ return new AqlParserError(AqlErrorCode.FORBIDDEN_LOGICAL_OPERATOR, `Logical operator '${operator}' is not allowed at position ${position}`, { operator, position });
127
+ },
128
+ forbiddenOperation: (operation, position) => {
129
+ return new AqlParserError(AqlErrorCode.FORBIDDEN_OPERATION, `Operation '${operation}' is not allowed at position ${position}`, { operation, position });
130
+ },
131
+ forbiddenArrayOperation: (operation, position) => {
132
+ return new AqlParserError(AqlErrorCode.FORBIDDEN_ARRAY_OPERATION, `Array operation '${operation}' is not allowed at position ${position}`, { operation, position });
133
+ },
134
+ forbiddenIdentifier: (identifier, position) => {
135
+ return new AqlParserError(AqlErrorCode.FORBIDDEN_IDENTIFIER, `Identifier '${identifier}' is not allowed at position ${position}`, { identifier, position });
136
+ },
137
+ forbiddenValueType: (valueType, position) => {
138
+ return new AqlParserError(AqlErrorCode.FORBIDDEN_VALUE_TYPE, `Value type '${valueType}' is not allowed at position ${position}`, { valueType, position });
139
+ },
140
+ forbiddenParentheses: (position) => {
141
+ return new AqlParserError(AqlErrorCode.FORBIDDEN_PARENTHESES, `Parentheses are not allowed at position ${position}`, { position });
142
+ },
143
+ forbiddenBracketAccess: (position) => {
144
+ return new AqlParserError(AqlErrorCode.FORBIDDEN_BRACKET_ACCESS, `Bracket access is not allowed at position ${position}`, { position });
145
+ },
146
+ };
147
+ /**
148
+ * Type guard to check if error is AqlError
149
+ */
150
+ export function isAqlError(error) {
151
+ return error instanceof AqlError;
152
+ }
153
+ /**
154
+ * Type guard to check if error is AqlTokenizerError
155
+ */
156
+ export function isAqlTokenizerError(error) {
157
+ return error instanceof AqlTokenizerError;
158
+ }
159
+ /**
160
+ * Type guard to check if error is AqlParserError
161
+ */
162
+ export function isAqlParserError(error) {
163
+ return error instanceof AqlParserError;
164
+ }
165
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { AqlExpression, AqlParserConfig } from "../model.js";
2
+ type FilterContext = Map<string, any> | Record<string, any>;
3
+ /**
4
+ * Filters an array of objects based on an AQL expression string.
5
+ *
6
+ * @param items - Array of objects to filter
7
+ * @param aql - AQL string expression
8
+ * @param context - Optional context map or object for function values
9
+ * @param config - Optional parser configuration to restrict available features
10
+ * @returns Filtered array of objects
11
+ * @throws {AqlParserError} If the AQL string is invalid or uses forbidden features
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const items = [{ status: "passed" }, { status: "failed" }];
16
+ * const filtered = filterByAql(items, 'status = "passed"');
17
+ * // Returns [{ status: "passed" }]
18
+ * ```
19
+ */
20
+ export declare function filterByAql<T extends Record<string, any>>(items: T[], aql: string, context?: FilterContext, config?: AqlParserConfig): T[];
21
+ /**
22
+ * Filters an array of objects based on a parsed AQL expression.
23
+ *
24
+ * @param items - Array of objects to filter
25
+ * @param expression - Pre-parsed AQL expression
26
+ * @returns Filtered array of objects
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const expr = parseAql('status = "passed"').expression;
31
+ * const filtered = filterByAql(items, expr);
32
+ * ```
33
+ */
34
+ export declare function filterByAql<T extends Record<string, any>>(items: T[], expression: AqlExpression): T[];
35
+ /**
36
+ * Creates a predicate function from an AQL expression.
37
+ *
38
+ * @param expression - The AQL expression to convert to a predicate
39
+ * @returns A predicate function that takes an item and returns a boolean
40
+ * @private
41
+ */
42
+ export declare function createAqlPredicate(expression: AqlExpression): (item: any) => boolean;
43
+ export {};
@@ -0,0 +1,335 @@
1
+ /**
2
+ * AQL filter implementation for filtering objects
3
+ */
4
+ import { AqlLogicalOperator, AqlOperation, AqlOperationAliases } from "../model.js";
5
+ import { parseAql } from "../parser/index.js";
6
+ export function filterByAql(items, aqlOrExpression, context, config) {
7
+ let expression = null;
8
+ if (typeof aqlOrExpression === "string") {
9
+ const aql = aqlOrExpression;
10
+ if (!aql || aql.trim() === "") {
11
+ return items;
12
+ }
13
+ const parseResult = parseAql(aql, context, config);
14
+ if (!parseResult.expression) {
15
+ return items;
16
+ }
17
+ expression = parseResult.expression;
18
+ }
19
+ else {
20
+ expression = aqlOrExpression;
21
+ }
22
+ if (!expression) {
23
+ return items;
24
+ }
25
+ const predicate = createAqlPredicate(expression);
26
+ return items.filter(predicate);
27
+ }
28
+ const alwaysTruePredicate = () => true;
29
+ /**
30
+ * Creates a predicate function from an AQL expression.
31
+ *
32
+ * @param expression - The AQL expression to convert to a predicate
33
+ * @returns A predicate function that takes an item and returns a boolean
34
+ * @private
35
+ */
36
+ export function createAqlPredicate(expression) {
37
+ switch (expression.type) {
38
+ case "condition":
39
+ return createConditionPredicate(expression);
40
+ case "arrayCondition":
41
+ return createArrayConditionPredicate(expression);
42
+ case "binary":
43
+ return createBinaryPredicate(expression);
44
+ case "not":
45
+ return createNotPredicate(expression);
46
+ case "paren":
47
+ return createParenPredicate(expression);
48
+ case "boolean":
49
+ return createBooleanPredicate(expression);
50
+ default:
51
+ return alwaysTruePredicate;
52
+ }
53
+ }
54
+ /**
55
+ * Creates a predicate for a condition expression.
56
+ *
57
+ * @param expression - The condition expression
58
+ * @returns A predicate function that evaluates the condition
59
+ * @private
60
+ */
61
+ function createConditionPredicate(expression) {
62
+ const { left, operator, right } = expression;
63
+ return (item) => {
64
+ const leftValue = getAccessorValue(item, left);
65
+ const rightValue = getValue(right);
66
+ return compareValues(leftValue, operator, rightValue);
67
+ };
68
+ }
69
+ /**
70
+ * Creates a predicate for an array condition expression (e.g., IN).
71
+ *
72
+ * @param expression - The array condition expression
73
+ * @returns A predicate function that evaluates the array condition
74
+ * @private
75
+ */
76
+ function createArrayConditionPredicate(expression) {
77
+ const { left, operator, right } = expression;
78
+ if (operator === AqlOperation.IN) {
79
+ return (item) => {
80
+ const leftValue = getAccessorValue(item, left);
81
+ const rightValues = right.map(getValue);
82
+ if (leftValue === null || leftValue === undefined) {
83
+ return false;
84
+ }
85
+ return rightValues.some((rightValue) => {
86
+ if (rightValue === null || rightValue === undefined) {
87
+ return leftValue === null || leftValue === undefined;
88
+ }
89
+ return equals(leftValue, rightValue);
90
+ });
91
+ };
92
+ }
93
+ return () => false;
94
+ }
95
+ /**
96
+ * Creates a predicate for a binary expression (AND, OR).
97
+ *
98
+ * @param expression - The binary expression
99
+ * @returns A predicate function that evaluates the binary expression
100
+ * @private
101
+ */
102
+ function createBinaryPredicate(expression) {
103
+ const leftPredicate = createAqlPredicate(expression.left);
104
+ const rightPredicate = createAqlPredicate(expression.right);
105
+ if (expression.operator === AqlLogicalOperator.AND) {
106
+ return (item) => leftPredicate(item) && rightPredicate(item);
107
+ }
108
+ if (expression.operator === AqlLogicalOperator.OR) {
109
+ return (item) => leftPredicate(item) || rightPredicate(item);
110
+ }
111
+ return () => false;
112
+ }
113
+ /**
114
+ * Creates a predicate for a NOT expression.
115
+ *
116
+ * @param expression - The NOT expression
117
+ * @returns A predicate function that negates the inner expression
118
+ * @private
119
+ */
120
+ function createNotPredicate(expression) {
121
+ const predicate = createAqlPredicate(expression.expression);
122
+ return (item) => !predicate(item);
123
+ }
124
+ /**
125
+ * Creates a predicate for a parenthesized expression.
126
+ *
127
+ * @param expression - The parenthesized expression
128
+ * @returns A predicate function that evaluates the inner expression
129
+ * @private
130
+ */
131
+ function createParenPredicate(expression) {
132
+ return createAqlPredicate(expression.expression);
133
+ }
134
+ /**
135
+ * Creates a predicate for a boolean expression.
136
+ *
137
+ * @param expression - The boolean expression
138
+ * @returns A predicate function that always returns the boolean value
139
+ * @private
140
+ */
141
+ function createBooleanPredicate(expression) {
142
+ return () => expression.value;
143
+ }
144
+ /**
145
+ * Gets a value from an object using an accessor.
146
+ * Supports nested access via bracket notation (e.g., `identifier[key]`).
147
+ *
148
+ * @param item - The object to access
149
+ * @param accessor - The accessor specifying the identifier and optional index/key
150
+ * @returns The accessed value or undefined if not found
151
+ * @private
152
+ */
153
+ function getAccessorValue(item, accessor) {
154
+ let value = item[accessor.identifier];
155
+ if (accessor.param) {
156
+ if (Array.isArray(value) || (typeof value === "object" && value !== null)) {
157
+ value = value[accessor.param.value];
158
+ }
159
+ else {
160
+ return undefined;
161
+ }
162
+ }
163
+ return value;
164
+ }
165
+ /**
166
+ * Converts an AqlValue to its JavaScript representation.
167
+ *
168
+ * @param aqlValue - The AQL value to convert
169
+ * @returns The JavaScript value (null, boolean, number, or string)
170
+ * @private
171
+ */
172
+ function getValue(aqlValue) {
173
+ switch (aqlValue.type) {
174
+ case "NULL":
175
+ return null;
176
+ case "BOOLEAN":
177
+ return aqlValue.value.toLowerCase() === "true";
178
+ case "NUMBER": {
179
+ const num = parseFloat(aqlValue.value);
180
+ /**
181
+ * Check for invalid numbers
182
+ */
183
+ if (Number.isNaN(num)) {
184
+ return 0;
185
+ }
186
+ /**
187
+ * Return integer if it's a whole number, otherwise return float
188
+ */
189
+ return Number.isInteger(num) ? parseInt(aqlValue.value, 10) : num;
190
+ }
191
+ case "STRING":
192
+ return aqlValue.value;
193
+ default:
194
+ return aqlValue.value;
195
+ }
196
+ }
197
+ /**
198
+ * Compares two values based on an operator.
199
+ *
200
+ * @param left - The left operand value
201
+ * @param operator - The comparison operator (GT, GE, LT, LE, EQ, NEQ, CONTAINS or their string aliases: =, !=, >, >=, <, <=, ~=)
202
+ * @param right - The right operand value
203
+ * @returns `true` if the comparison is true, `false` otherwise
204
+ * @private
205
+ */
206
+ function compareValues(left, operator, right) {
207
+ /**
208
+ * Handle null comparisons
209
+ */
210
+ if (right === null || right === undefined) {
211
+ if (operator === AqlOperation.EQ || operator === AqlOperationAliases.EQ) {
212
+ return left === null || left === undefined;
213
+ }
214
+ if (operator === AqlOperation.NEQ || operator === AqlOperationAliases.NEQ) {
215
+ return left !== null && left !== undefined;
216
+ }
217
+ return false;
218
+ }
219
+ if (left === null || left === undefined) {
220
+ return false;
221
+ }
222
+ switch (operator) {
223
+ case AqlOperation.EQ:
224
+ case AqlOperationAliases.EQ:
225
+ return equals(left, right);
226
+ case AqlOperation.NEQ:
227
+ case AqlOperationAliases.NEQ:
228
+ return !equals(left, right);
229
+ case AqlOperation.GT:
230
+ case AqlOperationAliases.GT:
231
+ return compareNumbers(left, right) > 0;
232
+ case AqlOperation.GE:
233
+ case AqlOperationAliases.GE:
234
+ return compareNumbers(left, right) >= 0;
235
+ case AqlOperation.LT:
236
+ case AqlOperationAliases.LT:
237
+ return compareNumbers(left, right) < 0;
238
+ case AqlOperation.LE:
239
+ case AqlOperationAliases.LE:
240
+ return compareNumbers(left, right) <= 0;
241
+ case AqlOperation.CONTAINS:
242
+ case AqlOperationAliases.CONTAINS:
243
+ return contains(left, right);
244
+ default:
245
+ return false;
246
+ }
247
+ }
248
+ /**
249
+ * Checks if two values are equal.
250
+ * Performs case-insensitive comparison for strings.
251
+ *
252
+ * @param left - The left value to compare
253
+ * @param right - The right value to compare
254
+ * @returns `true` if values are equal, `false` otherwise
255
+ * @private
256
+ */
257
+ function equals(left, right) {
258
+ if (left === right) {
259
+ return true;
260
+ }
261
+ /**
262
+ * String comparison (case-insensitive for strings)
263
+ */
264
+ if (typeof left === "string" && typeof right === "string") {
265
+ return left.toLocaleLowerCase() === right.toLocaleLowerCase();
266
+ }
267
+ /**
268
+ * Number comparison
269
+ */
270
+ if (typeof left === "number" && typeof right === "number") {
271
+ return left === right;
272
+ }
273
+ /**
274
+ * Boolean comparison
275
+ */
276
+ if (typeof left === "boolean" && typeof right === "boolean") {
277
+ return left === right;
278
+ }
279
+ /**
280
+ * Array comparison
281
+ */
282
+ if (Array.isArray(left) && Array.isArray(right)) {
283
+ if (left.length !== right.length) {
284
+ return false;
285
+ }
286
+ return left.every((item, index) => equals(item, right[index]));
287
+ }
288
+ return false;
289
+ }
290
+ /**
291
+ * Compares two values as numbers.
292
+ * Converts values to numbers if needed. null/undefined is considered less than any number.
293
+ *
294
+ * @param left - The left value to compare
295
+ * @param right - The right value to compare
296
+ * @returns Negative number if left < right, positive if left > right, 0 if equal
297
+ * @private
298
+ */
299
+ function compareNumbers(left, right) {
300
+ /**
301
+ * Handle null/undefined
302
+ */
303
+ if (left === null || left === undefined) {
304
+ return -1; // null/undefined is considered less than any number
305
+ }
306
+ /**
307
+ * Optimize: avoid parsing if both are already numbers
308
+ */
309
+ const leftNum = typeof left === "number" ? left : typeof left === "string" ? parseFloat(left) : Number(left);
310
+ const rightNum = typeof right === "number" ? right : typeof right === "string" ? parseFloat(right) : Number(right);
311
+ if (Number.isNaN(leftNum) || Number.isNaN(rightNum)) {
312
+ return 0;
313
+ }
314
+ return leftNum - rightNum;
315
+ }
316
+ /**
317
+ * Checks if left value contains right value (case-insensitive string comparison).
318
+ *
319
+ * @param left - The value to search in
320
+ * @param right - The value to search for
321
+ * @returns `true` if left contains right, `false` otherwise
322
+ * @private
323
+ */
324
+ function contains(left, right) {
325
+ if (left === null || left === undefined) {
326
+ return false;
327
+ }
328
+ if (left === right) {
329
+ return true;
330
+ }
331
+ const leftStr = String(left).toLocaleLowerCase();
332
+ const rightStr = String(right).toLocaleLowerCase();
333
+ return leftStr.includes(rightStr);
334
+ }
335
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filter/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { parseAql, AqlParser } from "./parser/index.js";
2
+ export { filterByAql, createAqlPredicate } from "./filter/index.js";
3
+ export { includesAll, aqlExpression, aqlConditionExpression, aqlArrayConditionExpression, aqlBinaryExpression, aqlNotExpression, aqlParenExpression, aqlParserConfig, } from "./utils/index.js";
4
+ export { isAqlError, AqlError, AqlErrors } from "./errors/index.js";
5
+ export type { AqlParseResult, AqlExpression, AqlNotExpression, AqlParenExpression, AqlBinaryExpression, AqlBooleanExpression, AqlConditionExpression, AqlArrayConditionExpression, } from "./model.js";
6
+ export { AqlLogicalOperator, AqlOperation, AqlOperationAliases } from "./model.js";
7
+ export type { AqlParserConfig } from "./model.js";
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { parseAql, AqlParser } from "./parser/index.js";
2
+ export { filterByAql, createAqlPredicate } from "./filter/index.js";
3
+ export { includesAll, aqlExpression, aqlConditionExpression, aqlArrayConditionExpression, aqlBinaryExpression, aqlNotExpression, aqlParenExpression, aqlParserConfig, } from "./utils/index.js";
4
+ export { isAqlError, AqlError, AqlErrors } from "./errors/index.js";
5
+ export { AqlLogicalOperator, AqlOperation, AqlOperationAliases } from "./model.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EACL,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAWpE,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}