@powersync/service-sync-rules 0.0.0-dev-20250820110726 → 0.0.0-dev-20250825132649

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 (52) hide show
  1. package/dist/BaseSqlDataQuery.d.ts +8 -1
  2. package/dist/BaseSqlDataQuery.js +42 -0
  3. package/dist/BaseSqlDataQuery.js.map +1 -1
  4. package/dist/SqlBucketDescriptor.js +2 -10
  5. package/dist/SqlBucketDescriptor.js.map +1 -1
  6. package/dist/SqlDataQuery.js +7 -28
  7. package/dist/SqlDataQuery.js.map +1 -1
  8. package/dist/SqlSyncRules.js +33 -2
  9. package/dist/SqlSyncRules.js.map +1 -1
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.js +3 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/json_schema.js +31 -1
  14. package/dist/json_schema.js.map +1 -1
  15. package/dist/request_functions.d.ts +24 -4
  16. package/dist/request_functions.js +68 -17
  17. package/dist/request_functions.js.map +1 -1
  18. package/dist/sql_filters.d.ts +17 -1
  19. package/dist/sql_filters.js +216 -116
  20. package/dist/sql_filters.js.map +1 -1
  21. package/dist/sql_functions.d.ts +3 -0
  22. package/dist/sql_functions.js +36 -9
  23. package/dist/sql_functions.js.map +1 -1
  24. package/dist/sql_support.d.ts +20 -0
  25. package/dist/sql_support.js +67 -14
  26. package/dist/sql_support.js.map +1 -1
  27. package/dist/streams/filter.d.ts +148 -0
  28. package/dist/streams/filter.js +426 -0
  29. package/dist/streams/filter.js.map +1 -0
  30. package/dist/streams/from_sql.d.ts +4 -0
  31. package/dist/streams/from_sql.js +369 -0
  32. package/dist/streams/from_sql.js.map +1 -0
  33. package/dist/streams/functions.d.ts +2 -0
  34. package/dist/streams/functions.js +38 -0
  35. package/dist/streams/functions.js.map +1 -0
  36. package/dist/streams/parameter.d.ts +67 -0
  37. package/dist/streams/parameter.js +2 -0
  38. package/dist/streams/parameter.js.map +1 -0
  39. package/dist/streams/stream.d.ts +40 -0
  40. package/dist/streams/stream.js +136 -0
  41. package/dist/streams/stream.js.map +1 -0
  42. package/dist/streams/utils.d.ts +1 -0
  43. package/dist/streams/utils.js +13 -0
  44. package/dist/streams/utils.js.map +1 -0
  45. package/dist/streams/variant.d.ts +121 -0
  46. package/dist/streams/variant.js +265 -0
  47. package/dist/streams/variant.js.map +1 -0
  48. package/dist/types.d.ts +12 -1
  49. package/dist/types.js +17 -1
  50. package/dist/types.js.map +1 -1
  51. package/package.json +2 -2
  52. package/schema/sync_rules.json +55 -2
@@ -2,8 +2,9 @@ import { Expr, ExprRef, Name, NodeLocation, QName, QNameAliased, SelectedColumn
2
2
  import { nil } from 'pgsql-ast-parser/src/utils.js';
3
3
  import { BucketPriority } from './BucketDescription.js';
4
4
  import { SqlRuleError } from './errors.js';
5
+ import { SqlParameterFunction } from './request_functions.js';
5
6
  import { SqlFunction } from './sql_functions.js';
6
- import { ClauseError, CompiledClause, ParameterMatchClause, ParameterValueClause, QuerySchema, RowValueClause, StaticValueClause, TrueIfParametersMatch } from './types.js';
7
+ import { ClauseError, CompiledClause, InputParameter, ParameterMatchClause, ParameterValueClause, QueryParameters, QuerySchema, RowValueClause, StaticValueClause, TrueIfParametersMatch } from './types.js';
7
8
  export declare const MATCH_CONST_FALSE: TrueIfParametersMatch;
8
9
  export declare const MATCH_CONST_TRUE: TrueIfParametersMatch;
9
10
  export interface SqlToolsOptions {
@@ -41,6 +42,10 @@ export interface SqlToolsOptions {
41
42
  * true if expressions on parameters are supported, e.g. upper(token_parameters.user_id)
42
43
  */
43
44
  supportsParameterExpressions?: boolean;
45
+ /**
46
+ * For each schema, all available parameter functions.
47
+ */
48
+ parameterFunctions?: Record<string, Record<string, SqlParameterFunction>>;
44
49
  /**
45
50
  * Schema for validations.
46
51
  */
@@ -58,6 +63,7 @@ export declare class SqlTools {
58
63
  readonly errors: SqlRuleError[];
59
64
  readonly supportsExpandingParameters: boolean;
60
65
  readonly supportsParameterExpressions: boolean;
66
+ readonly parameterFunctions: Record<string, Record<string, SqlParameterFunction>>;
61
67
  schema?: QuerySchema;
62
68
  constructor(options: SqlToolsOptions);
63
69
  error(message: string, expr: NodeLocation | Expr | undefined): ClauseError;
@@ -75,6 +81,16 @@ export declare class SqlTools {
75
81
  * Given an expression, return a compiled clause.
76
82
  */
77
83
  compileClause(expr: Expr | nil): CompiledClause;
84
+ compileInClause(left: Expr, leftFilter: CompiledClause, right: Expr, rightFilter: CompiledClause): CompiledClause;
85
+ compileOverlapClause(left: Expr, leftFilter: CompiledClause, right: Expr, rightFilter: CompiledClause): CompiledClause;
86
+ parameterMatchClause(staticFilter: RowValueClause, otherFilter: ParameterValueClause): {
87
+ error: false;
88
+ inputParameters: InputParameter[];
89
+ unbounded: false;
90
+ filterRow(tables: QueryParameters): TrueIfParametersMatch;
91
+ usesAuthenticatedRequestParameters: boolean;
92
+ usesUnauthenticatedRequestParameters: boolean;
93
+ };
78
94
  /**
79
95
  * "some_column" => "some_column"
80
96
  * "table.some_column" => "some_column".
@@ -3,7 +3,7 @@ import { isValidPriority } from './BucketDescription.js';
3
3
  import { ExpressionType } from './ExpressionType.js';
4
4
  import { SqlRuleError } from './errors.js';
5
5
  import { REQUEST_FUNCTIONS } from './request_functions.js';
6
- import { BASIC_OPERATORS, OPERATOR_IN, OPERATOR_IS_NOT_NULL, OPERATOR_IS_NULL, OPERATOR_JSON_EXTRACT_JSON, OPERATOR_JSON_EXTRACT_SQL, OPERATOR_NOT, SQL_FUNCTIONS, castOperator, getOperatorFunction, sqliteTypeOf } from './sql_functions.js';
6
+ import { BASIC_OPERATORS, OPERATOR_IN, OPERATOR_IS_NOT_NULL, OPERATOR_IS_NULL, OPERATOR_JSON_EXTRACT_JSON, OPERATOR_JSON_EXTRACT_SQL, OPERATOR_NOT, OPERATOR_OVERLAP, SQL_FUNCTIONS, castOperator, getOperatorFunction, sqliteTypeOf } from './sql_functions.js';
7
7
  import { SQLITE_FALSE, SQLITE_TRUE, andFilters, compileStaticOperator, isClauseError, isParameterMatchClause, isParameterValueClause, isRowValueClause, isStaticValueClause, orFilters, toBooleanParameterSetClause } from './sql_support.js';
8
8
  import { isJsonValue } from './utils.js';
9
9
  export const MATCH_CONST_FALSE = [];
@@ -22,6 +22,7 @@ export class SqlTools {
22
22
  errors = [];
23
23
  supportsExpandingParameters;
24
24
  supportsParameterExpressions;
25
+ parameterFunctions;
25
26
  schema;
26
27
  constructor(options) {
27
28
  this.defaultTable = options.table;
@@ -39,6 +40,7 @@ export class SqlTools {
39
40
  this.sql = options.sql;
40
41
  this.supportsExpandingParameters = options.supportsExpandingParameters ?? false;
41
42
  this.supportsParameterExpressions = options.supportsParameterExpressions ?? false;
43
+ this.parameterFunctions = options.parameterFunctions ?? { request: REQUEST_FUNCTIONS };
42
44
  }
43
45
  error(message, expr) {
44
46
  this.errors.push(new SqlRuleError(message, this.sql, expr));
@@ -175,28 +177,7 @@ export class SqlTools {
175
177
  return compileStaticOperator(op, leftFilter, rightFilter);
176
178
  }
177
179
  else if (isParameterValueClause(otherFilter)) {
178
- // 2. row value = parameter value
179
- const inputParam = basicInputParameter(otherFilter);
180
- return {
181
- error: false,
182
- inputParameters: [inputParam],
183
- unbounded: false,
184
- filterRow(tables) {
185
- const value = staticFilter.evaluate(tables);
186
- if (value == null) {
187
- // null never matches on =
188
- // Should technically return null, but "false" is sufficient here
189
- return MATCH_CONST_FALSE;
190
- }
191
- if (!isJsonValue(value)) {
192
- // Cannot persist this, e.g. BLOB
193
- return MATCH_CONST_FALSE;
194
- }
195
- return [{ [inputParam.key]: value }];
196
- },
197
- usesAuthenticatedRequestParameters: otherFilter.usesAuthenticatedRequestParameters,
198
- usesUnauthenticatedRequestParameters: otherFilter.usesUnauthenticatedRequestParameters
199
- };
180
+ return this.parameterMatchClause(staticFilter, otherFilter);
200
181
  }
201
182
  else if (isParameterMatchClause(otherFilter)) {
202
183
  // 3. row value = parameterMatch
@@ -209,81 +190,7 @@ export class SqlTools {
209
190
  }
210
191
  }
211
192
  else if (op == 'IN') {
212
- // Special cases:
213
- // parameterValue IN rowValue
214
- // rowValue IN parameterValue
215
- // All others are handled by standard function composition
216
- const composeType = this.getComposeType(OPERATOR_IN, [leftFilter, rightFilter], [left, right]);
217
- if (composeType.errorClause != null) {
218
- return composeType.errorClause;
219
- }
220
- else if (composeType.argsType != null) {
221
- // This is a standard supported configuration, takes precedence over
222
- // the special cases below.
223
- return this.composeFunction(OPERATOR_IN, [leftFilter, rightFilter], [left, right]);
224
- }
225
- else if (isParameterValueClause(leftFilter) && isRowValueClause(rightFilter)) {
226
- // token_parameters.value IN table.some_array
227
- // bucket.param IN table.some_array
228
- const inputParam = basicInputParameter(leftFilter);
229
- return {
230
- error: false,
231
- inputParameters: [inputParam],
232
- unbounded: true,
233
- filterRow(tables) {
234
- const aValue = rightFilter.evaluate(tables);
235
- if (aValue == null) {
236
- return MATCH_CONST_FALSE;
237
- }
238
- const values = JSON.parse(aValue);
239
- if (!Array.isArray(values)) {
240
- throw new Error('Not an array');
241
- }
242
- return values.map((value) => {
243
- return { [inputParam.key]: value };
244
- });
245
- },
246
- usesAuthenticatedRequestParameters: leftFilter.usesAuthenticatedRequestParameters,
247
- usesUnauthenticatedRequestParameters: leftFilter.usesUnauthenticatedRequestParameters
248
- };
249
- }
250
- else if (this.supportsExpandingParameters &&
251
- isRowValueClause(leftFilter) &&
252
- isParameterValueClause(rightFilter)) {
253
- // table.some_value IN token_parameters.some_array
254
- // This expands into "table_some_value = <value>" for each value of the array.
255
- // We only support one such filter per query
256
- const key = `${rightFilter.key}[*]`;
257
- const inputParam = {
258
- key: key,
259
- expands: true,
260
- filteredRowToLookupValue: (filterParameters) => {
261
- return filterParameters[key];
262
- },
263
- parametersToLookupValue: (parameters) => {
264
- return rightFilter.lookupParameterValue(parameters);
265
- }
266
- };
267
- return {
268
- error: false,
269
- inputParameters: [inputParam],
270
- unbounded: false,
271
- filterRow(tables) {
272
- const value = leftFilter.evaluate(tables);
273
- if (!isJsonValue(value)) {
274
- // Cannot persist, e.g. BLOB
275
- return MATCH_CONST_FALSE;
276
- }
277
- return [{ [inputParam.key]: value }];
278
- },
279
- usesAuthenticatedRequestParameters: rightFilter.usesAuthenticatedRequestParameters,
280
- usesUnauthenticatedRequestParameters: rightFilter.usesUnauthenticatedRequestParameters
281
- };
282
- }
283
- else {
284
- // Not supported, return the error previously computed
285
- return this.error(composeType.error, composeType.errorExpr);
286
- }
193
+ return this.compileInClause(left, leftFilter, right, rightFilter);
287
194
  }
288
195
  else if (BASIC_OPERATORS.has(op)) {
289
196
  const fnImpl = getOperatorFunction(op);
@@ -323,33 +230,43 @@ export class SqlTools {
323
230
  const composed = this.composeFunction(fnImpl, argClauses, expr.args);
324
231
  return composed;
325
232
  }
326
- else if (schema == 'request') {
327
- // Special function
233
+ else if (schema in this.parameterFunctions) {
328
234
  if (!this.supportsParameterExpressions) {
329
235
  return this.error(`${schema} schema is not available in data queries`, expr);
330
236
  }
331
- if (expr.args.length > 0) {
332
- return this.error(`Function '${schema}.${fn}' does not take arguments`, expr);
333
- }
334
- if (fn in REQUEST_FUNCTIONS) {
335
- const fnImpl = REQUEST_FUNCTIONS[fn];
237
+ const impl = this.parameterFunctions[schema][fn];
238
+ if (impl) {
239
+ if (expr.args.length != impl.parameterCount) {
240
+ return this.error(`Function '${schema}.${fn}' takes ${impl.parameterCount} arguments.`, expr);
241
+ }
242
+ const compiledArguments = expr.args.map(this.compileClause);
243
+ let hasInvalidArgument = false;
244
+ for (let i = 0; i < expr.args.length; i++) {
245
+ const argument = compiledArguments[i];
246
+ if (!isParameterValueClause(argument)) {
247
+ hasInvalidArgument = true;
248
+ if (!isClauseError(argument)) {
249
+ this.error('Must only depend on data derived from request.', expr.args[i]);
250
+ }
251
+ }
252
+ }
253
+ if (hasInvalidArgument) {
254
+ return { error: true };
255
+ }
256
+ const parameterArguments = compiledArguments;
336
257
  return {
337
- key: 'request.parameters()',
258
+ key: `${schema}.${fn}(${parameterArguments.map((p) => p.key).join(',')})`,
338
259
  lookupParameterValue(parameters) {
339
- return fnImpl.call(parameters);
260
+ const evaluatedArgs = parameterArguments.map((p) => p.lookupParameterValue(parameters));
261
+ return impl.call(parameters, ...evaluatedArgs);
340
262
  },
341
- usesAuthenticatedRequestParameters: fnImpl.usesAuthenticatedRequestParameters,
342
- usesUnauthenticatedRequestParameters: fnImpl.usesUnauthenticatedRequestParameters
263
+ usesAuthenticatedRequestParameters: impl.usesAuthenticatedRequestParameters,
264
+ usesUnauthenticatedRequestParameters: impl.usesUnauthenticatedRequestParameters
343
265
  };
344
266
  }
345
- else {
346
- return this.error(`Function '${schema}.${fn}' is not defined`, expr);
347
- }
348
- }
349
- else {
350
- // Unknown function with schema
351
- return this.error(`Function '${schema}.${fn}' is not defined`, expr);
352
267
  }
268
+ // Unknown function with schema
269
+ return this.error(`Function '${schema}.${fn}' is not defined`, expr);
353
270
  }
354
271
  else if (expr.type == 'member') {
355
272
  const operand = this.compileClause(expr.operand);
@@ -378,6 +295,189 @@ export class SqlTools {
378
295
  return this.error(`${expr.type} not supported here`, expr);
379
296
  }
380
297
  }
298
+ compileInClause(left, leftFilter, right, rightFilter) {
299
+ // Special cases:
300
+ // parameterValue IN rowValue
301
+ // rowValue IN parameterValue
302
+ // All others are handled by standard function composition
303
+ const composeType = this.getComposeType(OPERATOR_IN, [leftFilter, rightFilter], [left, right]);
304
+ if (composeType.errorClause != null) {
305
+ return composeType.errorClause;
306
+ }
307
+ else if (composeType.argsType != null) {
308
+ // This is a standard supported configuration, takes precedence over
309
+ // the special cases below.
310
+ return this.composeFunction(OPERATOR_IN, [leftFilter, rightFilter], [left, right]);
311
+ }
312
+ else if (isParameterValueClause(leftFilter) && isRowValueClause(rightFilter)) {
313
+ // token_parameters.value IN table.some_array
314
+ // bucket.param IN table.some_array
315
+ const inputParam = basicInputParameter(leftFilter);
316
+ return {
317
+ error: false,
318
+ inputParameters: [inputParam],
319
+ unbounded: true,
320
+ filterRow(tables) {
321
+ const aValue = rightFilter.evaluate(tables);
322
+ if (aValue == null) {
323
+ return MATCH_CONST_FALSE;
324
+ }
325
+ const values = JSON.parse(aValue);
326
+ if (!Array.isArray(values)) {
327
+ throw new Error('Not an array');
328
+ }
329
+ return values.map((value) => {
330
+ return { [inputParam.key]: value };
331
+ });
332
+ },
333
+ usesAuthenticatedRequestParameters: leftFilter.usesAuthenticatedRequestParameters,
334
+ usesUnauthenticatedRequestParameters: leftFilter.usesUnauthenticatedRequestParameters
335
+ };
336
+ }
337
+ else if (this.supportsExpandingParameters &&
338
+ isRowValueClause(leftFilter) &&
339
+ isParameterValueClause(rightFilter)) {
340
+ // table.some_value IN token_parameters.some_array
341
+ // This expands into "table_some_value = <value>" for each value of the array.
342
+ // We only support one such filter per query
343
+ const key = `${rightFilter.key}[*]`;
344
+ const inputParam = {
345
+ key: key,
346
+ expands: true,
347
+ filteredRowToLookupValue: (filterParameters) => {
348
+ return filterParameters[key];
349
+ },
350
+ parametersToLookupValue: (parameters) => {
351
+ return rightFilter.lookupParameterValue(parameters);
352
+ }
353
+ };
354
+ return {
355
+ error: false,
356
+ inputParameters: [inputParam],
357
+ unbounded: false,
358
+ filterRow(tables) {
359
+ const value = leftFilter.evaluate(tables);
360
+ if (!isJsonValue(value)) {
361
+ // Cannot persist, e.g. BLOB
362
+ return MATCH_CONST_FALSE;
363
+ }
364
+ return [{ [inputParam.key]: value }];
365
+ },
366
+ usesAuthenticatedRequestParameters: rightFilter.usesAuthenticatedRequestParameters,
367
+ usesUnauthenticatedRequestParameters: rightFilter.usesUnauthenticatedRequestParameters
368
+ };
369
+ }
370
+ else {
371
+ // Not supported, return the error previously computed
372
+ return this.error(composeType.error, composeType.errorExpr);
373
+ }
374
+ }
375
+ compileOverlapClause(left, leftFilter, right, rightFilter) {
376
+ // Special cases:
377
+ // parameterValue IN rowValue
378
+ // rowValue IN parameterValue
379
+ // All others are handled by standard function composition
380
+ const composeType = this.getComposeType(OPERATOR_OVERLAP, [leftFilter, rightFilter], [left, right]);
381
+ if (composeType.errorClause != null) {
382
+ return composeType.errorClause;
383
+ }
384
+ else if (composeType.argsType != null) {
385
+ // This is a standard supported configuration, takes precedence over
386
+ // the special cases below.
387
+ return this.composeFunction(OPERATOR_OVERLAP, [leftFilter, rightFilter], [left, right]);
388
+ }
389
+ else if (isParameterValueClause(leftFilter) && isRowValueClause(rightFilter)) {
390
+ // token_parameters.value IN table.some_array
391
+ // bucket.param IN table.some_array
392
+ const inputParam = basicInputParameter(leftFilter);
393
+ return {
394
+ error: false,
395
+ inputParameters: [inputParam],
396
+ unbounded: true,
397
+ filterRow(tables) {
398
+ const aValue = rightFilter.evaluate(tables);
399
+ if (aValue == null) {
400
+ return MATCH_CONST_FALSE;
401
+ }
402
+ const values = JSON.parse(aValue);
403
+ if (!Array.isArray(values)) {
404
+ throw new Error('Not an array');
405
+ }
406
+ return values.map((value) => {
407
+ return { [inputParam.key]: value };
408
+ });
409
+ },
410
+ usesAuthenticatedRequestParameters: leftFilter.usesAuthenticatedRequestParameters,
411
+ usesUnauthenticatedRequestParameters: leftFilter.usesUnauthenticatedRequestParameters
412
+ };
413
+ }
414
+ else if (this.supportsExpandingParameters &&
415
+ isRowValueClause(leftFilter) &&
416
+ isParameterValueClause(rightFilter)) {
417
+ // table.some_value && token_parameters.some_array
418
+ // This expands into "OR(table_some_value = <value>)" for each value of both arrays.
419
+ // We only support one such filter per query
420
+ const key = `${rightFilter.key}[*]`;
421
+ const inputParam = {
422
+ key: key,
423
+ expands: true,
424
+ filteredRowToLookupValue: (filterParameters) => {
425
+ return filterParameters[key];
426
+ },
427
+ parametersToLookupValue: (parameters) => {
428
+ return rightFilter.lookupParameterValue(parameters);
429
+ }
430
+ };
431
+ return {
432
+ error: false,
433
+ inputParameters: [inputParam],
434
+ unbounded: false,
435
+ filterRow(tables) {
436
+ const value = leftFilter.evaluate(tables);
437
+ if (!isJsonValue(value)) {
438
+ // Cannot persist, e.g. BLOB
439
+ return MATCH_CONST_FALSE;
440
+ }
441
+ const values = JSON.parse(value);
442
+ if (!Array.isArray(values)) {
443
+ throw new Error('Not an array');
444
+ }
445
+ return values.map((value) => {
446
+ return { [inputParam.key]: value };
447
+ });
448
+ },
449
+ usesAuthenticatedRequestParameters: rightFilter.usesAuthenticatedRequestParameters,
450
+ usesUnauthenticatedRequestParameters: rightFilter.usesUnauthenticatedRequestParameters
451
+ };
452
+ }
453
+ else {
454
+ // Not supported, return the error previously computed
455
+ return this.error(composeType.error, composeType.errorExpr);
456
+ }
457
+ }
458
+ parameterMatchClause(staticFilter, otherFilter) {
459
+ const inputParam = basicInputParameter(otherFilter);
460
+ return {
461
+ error: false,
462
+ inputParameters: [inputParam],
463
+ unbounded: false,
464
+ filterRow(tables) {
465
+ const value = staticFilter.evaluate(tables);
466
+ if (value == null) {
467
+ // null never matches on =
468
+ // Should technically return null, but "false" is sufficient here
469
+ return MATCH_CONST_FALSE;
470
+ }
471
+ if (!isJsonValue(value)) {
472
+ // Cannot persist this, e.g. BLOB
473
+ return MATCH_CONST_FALSE;
474
+ }
475
+ return [{ [inputParam.key]: value }];
476
+ },
477
+ usesAuthenticatedRequestParameters: otherFilter.usesAuthenticatedRequestParameters,
478
+ usesUnauthenticatedRequestParameters: otherFilter.usesUnauthenticatedRequestParameters
479
+ };
480
+ }
381
481
  /**
382
482
  * "some_column" => "some_column"
383
483
  * "table.some_column" => "some_column".
@@ -1 +1 @@
1
- {"version":3,"file":"sql_filters.js","sourceRoot":"","sources":["../src/sql_filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,OAAO,EAAkB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,yBAAyB,EACzB,YAAY,EACZ,aAAa,EAEb,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,2BAA2B,EAC5B,MAAM,kBAAkB,CAAC;AAc1B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,iBAAiB,GAA0B,EAAE,CAAC;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAA0B,CAAC,EAAE,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAiDjC,MAAM,OAAO,QAAQ;IACV,YAAY,CAAU;IACtB,WAAW,CAAW;IAC/B;;;OAGG;IACM,eAAe,CAAW;IAC1B,GAAG,CAAS;IACZ,MAAM,GAAmB,EAAE,CAAC;IAE5B,2BAA2B,CAAU;IACrC,4BAA4B,CAAU;IAE/C,MAAM,CAAe;IAErB,YAAY,OAAwB;QAClC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE7B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,IAAI,KAAK,CAAC;QAChF,IAAI,CAAC,4BAA4B,GAAG,OAAO,CAAC,4BAA4B,IAAI,KAAK,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAqC;QAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAqC;QACzD,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,KAAiB;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,wBAAwB,CAAC,IAAgB;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC,KAAK,CAAC,gDAAgD,EAAE,IAAI,IAAI,SAAS,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8BAA8B,CAAC,IAAgB;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3F,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,gDAAgD,EAAE,IAAI,IAAI,SAAS,CAAC,CAAC;IACzF,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,IAAgB;QAC5B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,OAAO,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YACzB,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,8CAA8C,EAAE,IAAI,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC3B,OAAO;oBACL,QAAQ,CAAC,MAAuB;wBAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;oBACjC,CAAC;oBACD,mBAAmB,CAAC,MAAM;wBACxB,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBACzC,CAAC;iBACuB,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,CAAE,IAAgB,CAAC,KAAK,EAAE,MAAM,EAAG,IAAgB,CAAC,KAAK,EAAE,IAAI,EAAG,IAAgB,CAAC,IAAI,CAAC;qBACjG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;qBACxB,IAAI,CAAC,GAAG,CAAC,CAAC;gBACb,OAAO,IAAI,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YACjC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAwB,CAAC;YAC/C,CAAC;YAED,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,OAAO,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBAC7C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;iBAAM,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACH,OAAO,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBAC5C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;iBAAM,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,WAAW;gBACX,2BAA2B;gBAC3B,iCAAiC;gBACjC,sDAAsD;gBACtD,uCAAuC;gBAEvC,IAAI,aAA6B,CAAC;gBAClC,IAAI,YAA4B,CAAC;gBAEjC,IACE,IAAI,CAAC,4BAA4B;oBACjC,sBAAsB,CAAC,UAAU,CAAC;oBAClC,sBAAsB,CAAC,WAAW,CAAC,EACnC,CAAC;oBACD,oCAAoC;oBACpC,gDAAgD;oBAChD,+DAA+D;oBAC/D,0DAA0D;oBAC1D,yDAAyD;oBACzD,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;oBACxC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChF,CAAC;gBAED,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;oBACpE,OAAO,IAAI,CAAC,KAAK,CAAC,2DAA2D,EAAE,IAAI,CAAC,CAAC;gBACvF,CAAC;qBAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;oBACxC,aAAa,GAAG,UAAU,CAAC;oBAC3B,YAAY,GAAG,WAAW,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,aAAa,GAAG,WAA6B,CAAC;oBAC9C,YAAY,GAAG,UAAU,CAAC;gBAC5B,CAAC;gBACD,MAAM,YAAY,GAAG,aAAa,CAAC;gBACnC,MAAM,WAAW,GAAG,YAAY,CAAC;gBAEjC,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;oBAClC,2BAA2B;oBAC3B,OAAO,qBAAqB,CAAC,EAAE,EAAE,UAA4B,EAAE,WAA6B,CAAC,CAAC;gBAChG,CAAC;qBAAM,IAAI,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/C,iCAAiC;oBACjC,MAAM,UAAU,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;oBAEpD,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,eAAe,EAAE,CAAC,UAAU,CAAC;wBAC7B,SAAS,EAAE,KAAK;wBAChB,SAAS,CAAC,MAAuB;4BAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;4BAC5C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gCAClB,0BAA0B;gCAC1B,iEAAiE;gCACjE,OAAO,iBAAiB,CAAC;4BAC3B,CAAC;4BACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gCACxB,iCAAiC;gCACjC,OAAO,iBAAiB,CAAC;4BAC3B,CAAC;4BAED,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;wBACvC,CAAC;wBACD,kCAAkC,EAAE,WAAW,CAAC,kCAAkC;wBAClF,oCAAoC,EAAE,WAAW,CAAC,oCAAoC;qBACxD,CAAC;gBACnC,CAAC;qBAAM,IAAI,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/C,gCAAgC;oBAChC,6CAA6C;oBAC7C,+EAA+E;oBAC/E,OAAO,IAAI,CAAC,KAAK,CAAC,6CAA6C,EAAE,IAAI,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;iBAAM,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACtB,iBAAiB;gBACjB,8BAA8B;gBAC9B,8BAA8B;gBAC9B,0DAA0D;gBAE1D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC/F,IAAI,WAAW,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;oBACpC,OAAO,WAAW,CAAC,WAAW,CAAC;gBACjC,CAAC;qBAAM,IAAI,WAAW,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;oBACxC,oEAAoE;oBACpE,2BAA2B;oBAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACrF,CAAC;qBAAM,IAAI,sBAAsB,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/E,6CAA6C;oBAC7C,mCAAmC;oBACnC,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBAEnD,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,eAAe,EAAE,CAAC,UAAU,CAAC;wBAC7B,SAAS,EAAE,IAAI;wBACf,SAAS,CAAC,MAAuB;4BAC/B,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;4BAC5C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gCACnB,OAAO,iBAAiB,CAAC;4BAC3B,CAAC;4BACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAgB,CAAC,CAAC;4BAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gCAC3B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;4BAClC,CAAC;4BACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gCAC1B,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;4BACrC,CAAC,CAAC,CAAC;wBACL,CAAC;wBACD,kCAAkC,EAAE,UAAU,CAAC,kCAAkC;wBACjF,oCAAoC,EAAE,UAAU,CAAC,oCAAoC;qBACvD,CAAC;gBACnC,CAAC;qBAAM,IACL,IAAI,CAAC,2BAA2B;oBAChC,gBAAgB,CAAC,UAAU,CAAC;oBAC5B,sBAAsB,CAAC,WAAW,CAAC,EACnC,CAAC;oBACD,kDAAkD;oBAClD,8EAA8E;oBAC9E,4CAA4C;oBAC5C,MAAM,GAAG,GAAG,GAAG,WAAW,CAAC,GAAG,KAAK,CAAC;oBAEpC,MAAM,UAAU,GAAmB;wBACjC,GAAG,EAAE,GAAG;wBACR,OAAO,EAAE,IAAI;wBACb,wBAAwB,EAAE,CAAC,gBAAgB,EAAE,EAAE;4BAC7C,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;wBAC/B,CAAC;wBACD,uBAAuB,EAAE,CAAC,UAAU,EAAE,EAAE;4BACtC,OAAO,WAAW,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;wBACtD,CAAC;qBACF,CAAC;oBAEF,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,eAAe,EAAE,CAAC,UAAU,CAAC;wBAC7B,SAAS,EAAE,KAAK;wBAChB,SAAS,CAAC,MAAuB;4BAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;4BAC1C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gCACxB,4BAA4B;gCAC5B,OAAO,iBAAiB,CAAC;4BAC3B,CAAC;4BACD,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;wBACvC,CAAC;wBACD,kCAAkC,EAAE,WAAW,CAAC,kCAAkC;wBAClF,oCAAoC,EAAE,WAAW,CAAC,oCAAoC;qBACxD,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,sDAAsD;oBACtD,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAM,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;iBAAM,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBACvC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChD,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACtE,CAAC;iBAAM,IAAI,IAAI,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChD,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1E,CAAC;iBAAM,IAAI,IAAI,CAAC,EAAE,IAAI,aAAa,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChD,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,oBAAoB;YACzD,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC9B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,YAAY;gBACZ,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;gBACjC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACnB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;gBAC7D,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrE,OAAO,QAAQ,CAAC;YAClB,CAAC;iBAAM,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;gBAC/B,mBAAmB;gBACnB,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC;oBACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,0CAA0C,EAAE,IAAI,CAAC,CAAC;gBAC/E,CAAC;gBAED,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,MAAM,IAAI,EAAE,2BAA2B,EAAE,IAAI,CAAC,CAAC;gBAChF,CAAC;gBAED,IAAI,EAAE,IAAI,iBAAiB,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;oBACrC,OAAO;wBACL,GAAG,EAAE,sBAAsB;wBAC3B,oBAAoB,CAAC,UAAU;4BAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACjC,CAAC;wBACD,kCAAkC,EAAE,MAAM,CAAC,kCAAkC;wBAC7E,oCAAoC,EAAE,MAAM,CAAC,oCAAoC;qBACnD,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,MAAM,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,+BAA+B;gBAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,MAAM,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjD,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC/E,OAAO,IAAI,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,SAAS,GAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAqB,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC,eAAe,CAAC,0BAA0B,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,eAAe,CAAC,yBAAyB,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,EAAE,GAAI,IAAI,CAAC,EAAU,EAAE,IAAI,EAAE,WAAW,EAAwB,CAAC;YACvE,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,qBAAqB,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,MAAsB;QAClC,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;QAC/B,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,qBAAqB,CAAC,MAAsB;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,YAAY,CAAC,gDAAgD,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAAU;QACvB,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC;QACxD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,IAAU;QACnB,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEM,YAAY,CAAC,GAAY;QAC9B,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAEO,mBAAmB,CAAC,IAAa;QACvC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACzC,yCAAyC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;QAC5C,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,gDAAgD;YAChD,0CAA0C;YAC1C,QAAQ,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjE,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,MAAM,EAAE,CAAC;YACnC,uDAAuD;YACvD,IAAI,CAAC,IAAI,CAAC,0DAA0D,MAAM,YAAY,EAAE,QAAQ,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAED;;OAEG;IACI,qBAAqB,CAAC,IAAiC;QAC5D,IAAK,IAAqB,CAAC,KAAK,IAAI,IAAI,IAAK,IAAc,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YAC3E,wEAAwE;YACxE,uEAAuE;YACvE,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACzC,2DAA2D;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,MAAM,EAAE,CAAC;YACnC,2BAA2B;YAC3B,IAAI,CAAC,IAAI,CAAC,0DAA0D,MAAM,YAAY,EAAE,QAAQ,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,KAAa,EAAE,GAAY;QAC1C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,IAAa;QACjC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,YAAY,CAAE,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,OAAO;YACL,GAAG,EAAE,GAAG,KAAK,IAAI,MAAM,EAAE;YACzB,oBAAoB,EAAE,CAAC,UAAU,EAAE,EAAE;gBACnC,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC1C,CAAC;YACD,kCAAkC,EAAE,KAAK,IAAI,kBAAkB;YAC/D,oCAAoC,EAAE,KAAK,IAAI,iBAAiB;SAClC,CAAC;IACnC,CAAC;IAED,YAAY,CAAC,GAAY;QACvB,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,GAAY;QACvB,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,YAAY,CAAC,yDAAyD,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC;QACvD,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;YAC/C,OAAO,SAAU,CAAC;QACpB,CAAC;aAAM,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,YAAY,CAAC,mBAAmB,SAAS,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,eAAe,CAAC,MAAmB,EAAE,UAA4B,EAAE,mBAA2B;QAC5F,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,WAAW,CAAC;QAC5B,CAAC;aAAM,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAS,CAAC;QAElC,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAuB,CAAC,KAAK,CAAC,CAAC;YACnE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YACvC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,OAAO;gBACL,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;oBACnB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3E,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC9B,CAAC;gBACD,mBAAmB,CAAC,MAAM;oBACxB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAE,CAAoB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,cAAc,CAAC,IAAI,CACtF,CAAC;oBACF,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvE,CAAC;aACuB,CAAC;QAC7B,CAAC;aAAM,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAA0B,CAAC,GAAG,CAAC,CAAC;YAC1E,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAC5D,MAAM,kCAAkC,GACtC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,kCAAkC,CAAC;gBACxG,IAAI,CAAC;YACP,MAAM,oCAAoC,GACxC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,oCAAoC,CAAC;gBAC1G,IAAI,CAAC;YACP,OAAO;gBACL,GAAG,EAAE,IAAI;gBACT,oBAAoB,EAAE,CAAC,UAAU,EAAE,EAAE;oBACnC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBAChC,IAAI,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC9B,OAAO,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;wBAC5C,CAAC;6BAAM,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;4BAClC,OAAO,CAAC,CAAC,KAAK,CAAC;wBACjB,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;wBAC3C,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC9B,CAAC;gBACD,kCAAkC;gBAClC,oCAAoC;aACN,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,cAAc,CACZ,MAAmB,EACnB,UAA4B,EAC5B,mBAA2B;QAE3B,IAAI,QAAQ,GAA+B,QAAQ,CAAC;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,8BAA8B;gBAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;YACjC,CAAC;iBAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,qBAAqB;YACvB,CAAC;iBAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC;oBACvC,IAAI,MAAM,CAAC,SAAS,IAAI,YAAY,EAAE,CAAC;wBACrC,oDAAoD;wBACpD,OAAO,EAAE,KAAK,EAAE,gEAAgE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;oBAC1G,CAAC;oBACD,OAAO,EAAE,KAAK,EAAE,6CAA6C,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;gBACvF,CAAC;gBACD,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;oBAChD,QAAQ,GAAG,OAAO,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,KAAK,EAAE,4DAA4D,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;gBACtG,CAAC;YACH,CAAC;iBAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;oBAC9C,QAAQ,GAAG,KAAK,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,KAAK,EAAE,4DAA4D,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;gBACtG,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,KAAK,EAAE,6CAA6C,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YACvF,CAAC;QACH,CAAC;QAED,OAAO;YACL,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,yBAAyB,CAAC,IAAY;QACpC,OAAO,IAAI,IAAI,WAAW,CAAC;IAC7B,CAAC;IAED,qBAAqB,CAAC,IAAU;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,2CAA2C,EAAE,IAAI,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,kEAAkE,EAAE,IAAI,CAAC,CAAC;YACrF,OAAO;QACT,CAAC;QAED,OAAO,KAAuB,CAAC;IACjC,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,IAAU;IAC1B,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,WAAW,CAAC,IAAU;IAC7B,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IACjD,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,CAAC;QACN,OAAQ,IAAY,CAAC,KAAK,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAkB;IAC3C,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,+BAA+B;QAC/B,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;QACrB,mBAAmB;YACjB,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACvD,CAAC;QACJ,CAAC;QACD,oCAAoC;QACpC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QAC7B,oBAAoB,CAAC,WAAW;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,kCAAkC,EAAE,KAAK;QACzC,oCAAoC,EAAE,KAAK;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA4B;IACvD,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,KAAK;QACd,wBAAwB,EAAE,CAAC,gBAAgB,EAAE,EAAE;YAC7C,OAAO,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,uBAAuB,EAAE,CAAC,UAAU,EAAE,EAAE;YACtC,OAAO,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sql_filters.js","sourceRoot":"","sources":["../src/sql_filters.ts"],"names":[],"mappings":"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"}
@@ -50,14 +50,17 @@ export declare function cast(value: SqliteValue, to: string): string | number |
50
50
  export declare function sqliteTypeOf(arg: SqliteValue): "null" | "integer" | "blob" | "text" | "real";
51
51
  export declare function parseGeometry(value?: SqliteValue): wkx.Geometry | null;
52
52
  export declare function evaluateOperator(op: string, a: SqliteValue, b: SqliteValue): SqliteValue;
53
+ export declare function checkJsonArray(value: SqliteValue, errorMessage: string): any[];
53
54
  export declare function getOperatorReturnType(op: string, left: ExpressionType, right: ExpressionType): ExpressionType;
54
55
  export declare function jsonExtract(sourceValue: SqliteValue, path: SqliteValue, operator: string): SqliteValue;
56
+ export declare function jsonExtractFromRecord(value: any, path: SqliteValue, operator: string): SqliteValue;
55
57
  export declare const OPERATOR_JSON_EXTRACT_JSON: SqlFunction;
56
58
  export declare const OPERATOR_JSON_EXTRACT_SQL: SqlFunction;
57
59
  export declare const OPERATOR_IS_NULL: SqlFunction;
58
60
  export declare const OPERATOR_IS_NOT_NULL: SqlFunction;
59
61
  export declare const OPERATOR_NOT: SqlFunction;
60
62
  export declare const OPERATOR_IN: SqlFunction;
63
+ export declare const OPERATOR_OVERLAP: SqlFunction;
61
64
  export declare function castOperator(castTo: string | undefined): SqlFunction | null;
62
65
  export interface ParseDateFlags {
63
66
  /**
@@ -724,22 +724,41 @@ export function evaluateOperator(op, a, b) {
724
724
  return sqliteBool(sqliteBool(a) && sqliteBool(b));
725
725
  case 'OR':
726
726
  return sqliteBool(sqliteBool(a) || sqliteBool(b));
727
- case 'IN':
727
+ case 'IN': {
728
728
  if (a == null || b == null) {
729
729
  return null;
730
730
  }
731
- if (typeof b != 'string') {
732
- throw new Error('IN is only supported on JSON arrays');
731
+ const bParsed = checkJsonArray(b, 'IN is only supported on JSON arrays');
732
+ return sqliteBool(bParsed.includes(a));
733
+ }
734
+ case '&&': {
735
+ // a && b evaluates to true iff they're both arrays and have a non-empty intersection.
736
+ if (a == null || b == null) {
737
+ return null;
733
738
  }
734
- const bParsed = JSON.parse(b);
735
- if (!Array.isArray(bParsed)) {
736
- throw new Error('IN is only supported on JSON arrays');
739
+ const aParsed = checkJsonArray(a, '&& is only supported on JSON arrays');
740
+ const bParsed = checkJsonArray(a, '&& is only supported on JSON arrays');
741
+ for (const elementInA in aParsed) {
742
+ if (bParsed.includes(elementInA)) {
743
+ return sqliteBool(true);
744
+ }
737
745
  }
738
- return sqliteBool(bParsed.includes(a));
746
+ return sqliteBool(false);
747
+ }
739
748
  default:
740
749
  throw new Error(`Operator not supported: ${op}`);
741
750
  }
742
751
  }
752
+ export function checkJsonArray(value, errorMessage) {
753
+ if (typeof value != 'string') {
754
+ throw new Error(errorMessage);
755
+ }
756
+ const parsed = JSON.parse(value);
757
+ if (!Array.isArray(parsed)) {
758
+ throw new Error(value);
759
+ }
760
+ return parsed;
761
+ }
743
762
  export function getOperatorReturnType(op, left, right) {
744
763
  switch (op) {
745
764
  case '=':
@@ -781,6 +800,7 @@ export function getOperatorReturnType(op, left, right) {
781
800
  case 'OR':
782
801
  return ExpressionType.INTEGER;
783
802
  case 'IN':
803
+ case '&&':
784
804
  return ExpressionType.INTEGER;
785
805
  default:
786
806
  return ExpressionType.NONE;
@@ -823,8 +843,15 @@ function concat(a, b) {
823
843
  }
824
844
  export function jsonExtract(sourceValue, path, operator) {
825
845
  const valueText = castAsText(sourceValue);
846
+ if (valueText == null || path == null) {
847
+ return null;
848
+ }
849
+ let value = JSONBig.parse(valueText);
850
+ return jsonExtractFromRecord(value, path, operator);
851
+ }
852
+ export function jsonExtractFromRecord(value, path, operator) {
826
853
  const pathText = castAsText(path);
827
- if (valueText == null || pathText == null) {
854
+ if (value == null || pathText == null) {
828
855
  return null;
829
856
  }
830
857
  const components = pathText.split('.');
@@ -834,7 +861,6 @@ export function jsonExtract(sourceValue, path, operator) {
834
861
  else if (operator == 'json_extract') {
835
862
  throw new Error(`JSON path must start with $.`);
836
863
  }
837
- let value = JSONBig.parse(valueText);
838
864
  for (let c of components) {
839
865
  if (value == null) {
840
866
  break;
@@ -899,6 +925,7 @@ export const OPERATOR_NOT = {
899
925
  }
900
926
  };
901
927
  export const OPERATOR_IN = getOperatorFunction('IN');
928
+ export const OPERATOR_OVERLAP = getOperatorFunction('&&');
902
929
  export function castOperator(castTo) {
903
930
  if (castTo == null || !CAST_TYPES.has(castTo)) {
904
931
  return null;