@prisma-next/sql-builder 0.11.0 → 0.12.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.
@@ -15,6 +15,7 @@ import {
15
15
  type TableSource,
16
16
  } from '@prisma-next/sql-relational-core/ast';
17
17
  import { codecRefForStorageColumn } from '@prisma-next/sql-relational-core/codec-descriptor-registry';
18
+ import type { RawCodecInferer } from '@prisma-next/sql-relational-core/expression';
18
19
  import type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';
19
20
  import type {
20
21
  AppliedMutationDefault,
@@ -95,6 +96,10 @@ export interface BuilderContext {
95
96
  readonly applyMutationDefaults: (
96
97
  options: MutationDefaultsOptions,
97
98
  ) => ReadonlyArray<AppliedMutationDefault>;
99
+ /**
100
+ * Codec inferer used inside `createBuiltinFunctions` to construct the raw-SQL tag — `fns.raw` dispatches through `inferCodec(value)` for bare-literal interpolations.
101
+ */
102
+ readonly rawCodecInferer: RawCodecInferer;
98
103
  }
99
104
 
100
105
  /**
@@ -294,7 +299,7 @@ export function resolveSelectArgs(
294
299
  f: FieldProxy<Scope>,
295
300
  fns: AggregateFunctions<QueryContext>,
296
301
  ) => Expression<ScopeField>;
297
- const fns = createAggregateFunctions(ctx.queryOperationTypes);
302
+ const fns = createAggregateFunctions(ctx.queryOperationTypes, ctx.rawCodecInferer);
298
303
  const result = exprFn(createFieldProxy(scope), fns);
299
304
  const field = result.returnType;
300
305
  projections.push(ProjectionItem.of(alias, result.buildAst(), field.codec));
@@ -307,7 +312,7 @@ export function resolveSelectArgs(
307
312
  f: FieldProxy<Scope>,
308
313
  fns: AggregateFunctions<QueryContext>,
309
314
  ) => Record<string, Expression<ScopeField>>;
310
- const fns = createAggregateFunctions(ctx.queryOperationTypes);
315
+ const fns = createAggregateFunctions(ctx.queryOperationTypes, ctx.rawCodecInferer);
311
316
  const record = callbackFn(createFieldProxy(scope), fns);
312
317
  for (const [key, expr] of Object.entries(record)) {
313
318
  const field = expr.returnType;
@@ -341,8 +346,8 @@ export function resolveOrderBy(
341
346
  if (typeof arg === 'function') {
342
347
  const combined = orderByScopeOf(scope, rowFields);
343
348
  const fns = useAggregateFns
344
- ? createAggregateFunctions(ctx.queryOperationTypes)
345
- : createFunctions(ctx.queryOperationTypes);
349
+ ? createAggregateFunctions(ctx.queryOperationTypes, ctx.rawCodecInferer)
350
+ : createFunctions(ctx.queryOperationTypes, ctx.rawCodecInferer);
346
351
  const result = (arg as ExprCallback)(createFieldProxy(combined), fns);
347
352
  return dir === 'asc' ? OrderByItem.asc(result.buildAst()) : OrderByItem.desc(result.buildAst());
348
353
  }
@@ -367,7 +372,7 @@ export function resolveGroupBy(
367
372
 
368
373
  if (typeof args[0] === 'function') {
369
374
  const combined = orderByScopeOf(scope, rowFields);
370
- const fns = createFunctions(ctx.queryOperationTypes);
375
+ const fns = createFunctions(ctx.queryOperationTypes, ctx.rawCodecInferer);
371
376
  const result = (args[0] as ExprCallback)(createFieldProxy(combined), fns);
372
377
  return [result.buildAst()];
373
378
  }
@@ -383,7 +388,7 @@ export function resolveDistinctOn(
383
388
  ): AstExpression[] {
384
389
  if (args.length === 1 && typeof args[0] === 'function') {
385
390
  const combined = orderByScopeOf(scope, rowFields);
386
- const fns = createFunctions(ctx.queryOperationTypes);
391
+ const fns = createFunctions(ctx.queryOperationTypes, ctx.rawCodecInferer);
387
392
  const result = (args[0] as ExprCallback)(createFieldProxy(combined), fns);
388
393
  return [result.buildAst()];
389
394
  }
@@ -13,7 +13,8 @@ import {
13
13
  OrExpr,
14
14
  SubqueryExpr,
15
15
  } from '@prisma-next/sql-relational-core/ast';
16
- import { codecOf, toExpr } from '@prisma-next/sql-relational-core/expression';
16
+ import type { RawCodecInferer } from '@prisma-next/sql-relational-core/expression';
17
+ import { codecOf, createRawSql, toExpr } from '@prisma-next/sql-relational-core/expression';
17
18
  import type {
18
19
  AggregateFunctions,
19
20
  AggregateOnlyFunctions,
@@ -134,7 +135,7 @@ function numericAgg(
134
135
  });
135
136
  }
136
137
 
137
- function createBuiltinFunctions() {
138
+ function createBuiltinFunctions(rawCodecInferer: RawCodecInferer) {
138
139
  return {
139
140
  eq: (a: ExprOrVal, b: ExprOrVal) => eq(a, b),
140
141
  ne: (a: ExprOrVal, b: ExprOrVal) => ne(a, b),
@@ -158,6 +159,7 @@ function createBuiltinFunctions() {
158
159
  expr: Expression<ScopeField>,
159
160
  valuesOrSubquery: Subquery<Record<string, ScopeField>> | ExprOrVal[],
160
161
  ) => inOrNotIn(expr, valuesOrSubquery, 'notIn'),
162
+ raw: createRawSql(rawCodecInferer),
161
163
  } satisfies BuiltinFunctions<CodecTypes>;
162
164
  }
163
165
 
@@ -179,13 +181,15 @@ function createAggregateOnlyFunctions() {
179
181
 
180
182
  export function createFunctions<QC extends QueryContext>(
181
183
  operations: Readonly<Record<string, SqlOperationEntry>>,
184
+ rawCodecInferer: RawCodecInferer,
182
185
  ): Functions<QC> {
183
- const builtins = createBuiltinFunctions();
186
+ const builtins = createBuiltinFunctions(rawCodecInferer);
184
187
 
185
188
  return new Proxy({} as Functions<QC>, {
186
189
  get(_target, prop: string) {
187
- const builtin = (builtins as Record<string, unknown>)[prop];
188
- if (builtin) return builtin;
190
+ if (Object.hasOwn(builtins, prop)) {
191
+ return (builtins as Record<string, unknown>)[prop];
192
+ }
189
193
 
190
194
  const op = operations[prop];
191
195
  if (op) return op.impl;
@@ -196,8 +200,9 @@ export function createFunctions<QC extends QueryContext>(
196
200
 
197
201
  export function createAggregateFunctions<QC extends QueryContext>(
198
202
  operations: Readonly<Record<string, SqlOperationEntry>>,
203
+ rawCodecInferer: RawCodecInferer,
199
204
  ): AggregateFunctions<QC> {
200
- const baseFns = createFunctions<QC>(operations);
205
+ const baseFns = createFunctions<QC>(operations, rawCodecInferer);
201
206
  const aggregates = createAggregateOnlyFunctions();
202
207
 
203
208
  return new Proxy({} as AggregateFunctions<QC>, {
@@ -177,7 +177,7 @@ export class JoinedTablesImpl<QC extends QueryContext, AvailableScope extends Sc
177
177
  other.getJoinOuterScope() as Other[typeof JoinOuterScope],
178
178
  ),
179
179
  ) as FieldProxy<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>>;
180
- const fns = createFunctions<QC>(this.ctx.queryOperationTypes);
180
+ const fns = createFunctions<QC>(this.ctx.queryOperationTypes, this.ctx.rawCodecInferer);
181
181
  const onResult = onExpr(fieldProxy, fns);
182
182
  const joinAst = new JoinAst(joinType, other.buildAst(), onResult.buildAst());
183
183
 
@@ -101,9 +101,10 @@ function evaluateWhere(
101
101
  whereCallback: WhereCallback,
102
102
  scope: Scope,
103
103
  queryOperationTypes: BuilderContext['queryOperationTypes'],
104
+ rawCodecInferer: BuilderContext['rawCodecInferer'],
104
105
  ): AstExpression {
105
106
  const fieldProxy = createFieldProxy(scope);
106
- const fns = createFunctions(queryOperationTypes);
107
+ const fns = createFunctions(queryOperationTypes, rawCodecInferer);
107
108
  const result = whereCallback(fieldProxy, fns as never);
108
109
  return result.buildAst();
109
110
  }
@@ -112,9 +113,10 @@ export function evaluateUpdateCallback(
112
113
  callback: UpdateSetCallback,
113
114
  scope: Scope,
114
115
  queryOperationTypes: BuilderContext['queryOperationTypes'],
116
+ rawCodecInferer: BuilderContext['rawCodecInferer'],
115
117
  ): Record<string, AstExpression> {
116
118
  const fieldProxy = createFieldProxy(scope);
117
- const fns = createFunctions(queryOperationTypes);
119
+ const fns = createFunctions(queryOperationTypes, rawCodecInferer);
118
120
  const result = callback(fieldProxy, fns as never);
119
121
  const set: Record<string, AstExpression> = {};
120
122
  for (const [col, expr] of Object.entries(result)) {
@@ -290,7 +292,7 @@ export class UpdateQueryImpl<
290
292
 
291
293
  where(expr: ExpressionBuilder<AvailableScope, QC>): UpdateQuery<QC, AvailableScope, RowType> {
292
294
  const fieldProxy = createFieldProxy(this.#scope);
293
- const fns = createFunctions(this.ctx.queryOperationTypes);
295
+ const fns = createFunctions(this.ctx.queryOperationTypes, this.ctx.rawCodecInferer);
294
296
  const result = (expr as ExpressionBuilder<Scope, QueryContext>)(fieldProxy, fns as never);
295
297
  return new UpdateQueryImpl(
296
298
  this.#tableName,
@@ -460,7 +462,7 @@ export class DeleteQueryImpl<
460
462
  build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {
461
463
  const whereExpr = combineWhereExprs(
462
464
  this.#whereCallbacks.map((cb) =>
463
- evaluateWhere(cb, this.#scope, this.ctx.queryOperationTypes),
465
+ evaluateWhere(cb, this.#scope, this.ctx.queryOperationTypes, this.ctx.rawCodecInferer),
464
466
  ),
465
467
  );
466
468
 
@@ -211,7 +211,7 @@ export class SelectQueryImpl<
211
211
 
212
212
  where(expr: ExpressionBuilder<AvailableScope, QC>): SelectQuery<QC, AvailableScope, RowType> {
213
213
  const fieldProxy = createFieldProxy(this.state.scope);
214
- const fns = createFunctions<QC>(this.ctx.queryOperationTypes);
214
+ const fns = createFunctions<QC>(this.ctx.queryOperationTypes, this.ctx.rawCodecInferer);
215
215
  const result = (expr as ExpressionBuilder<Scope, QueryContext>)(fieldProxy, fns as never);
216
216
  return new SelectQueryImpl(
217
217
  cloneState(this.state, {
@@ -269,7 +269,10 @@ export class GroupedQueryImpl<
269
269
  this.state.scope as AvailableScope,
270
270
  this.state.rowFields as RowType,
271
271
  );
272
- const fns = createAggregateFunctions(this.ctx.queryOperationTypes);
272
+ const fns = createAggregateFunctions<QC>(
273
+ this.ctx.queryOperationTypes,
274
+ this.ctx.rawCodecInferer,
275
+ );
273
276
  const result = expr(createFieldProxy(combined), fns);
274
277
  return new GroupedQueryImpl(cloneState(this.state, { having: result.buildAst() }), this.ctx);
275
278
  }
@@ -1,5 +1,6 @@
1
1
  import type { Contract } from '@prisma-next/contract/types';
2
2
  import type { SqlStorage, StorageTable } from '@prisma-next/sql-contract/types';
3
+ import type { RawCodecInferer } from '@prisma-next/sql-relational-core/expression';
3
4
  import type { ExecutionContext } from '@prisma-next/sql-relational-core/query-lane-context';
4
5
  import type { Db, TableProxyContract } from '../types/db';
5
6
  import type { BuilderContext } from './builder-base';
@@ -7,6 +8,7 @@ import { TableProxyImpl } from './table-proxy-impl';
7
8
 
8
9
  export interface SqlOptions<C extends Contract<SqlStorage> & TableProxyContract> {
9
10
  readonly context: ExecutionContext<C>;
11
+ readonly rawCodecInferer: RawCodecInferer;
10
12
  }
11
13
 
12
14
  // Find a table by name across every declared namespace. Mirrors the
@@ -27,7 +29,7 @@ function findTableAcrossNamespaces(storage: SqlStorage, name: string): StorageTa
27
29
  export function sql<C extends Contract<SqlStorage> & TableProxyContract>(
28
30
  options: SqlOptions<C>,
29
31
  ): Db<C> {
30
- const { context } = options;
32
+ const { context, rawCodecInferer } = options;
31
33
  const ctx: BuilderContext = {
32
34
  capabilities: context.contract.capabilities,
33
35
  queryOperationTypes: context.queryOperations.entries(),
@@ -35,6 +37,7 @@ export function sql<C extends Contract<SqlStorage> & TableProxyContract>(
35
37
  storageHash: context.contract.storage.storageHash ?? 'unknown',
36
38
  storage: context.contract.storage,
37
39
  applyMutationDefaults: (options) => context.applyMutationDefaults(options),
40
+ rawCodecInferer,
38
41
  };
39
42
 
40
43
  return new Proxy({} as Db<C>, {
@@ -113,7 +113,7 @@ export class TableProxyImpl<
113
113
 
114
114
  as<NewAlias extends string>(
115
115
  newAlias: NewAlias,
116
- ): TableProxy<C, Name, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>> {
116
+ ): TableProxy<C, Name, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>, QC> {
117
117
  return new TableProxyImpl(this.#tableName, this.#table, newAlias, this.ctx);
118
118
  }
119
119
 
@@ -181,6 +181,7 @@ export class TableProxyImpl<
181
181
  setOrCallback as UpdateSetCallback,
182
182
  this.#scope,
183
183
  this.ctx.queryOperationTypes,
184
+ this.ctx.rawCodecInferer,
184
185
  );
185
186
  const setExpressions = buildSetExpressions(
186
187
  callbackExprs,
@@ -1,3 +1,4 @@
1
+ import type { Contract, ContractModelsMap } from '@prisma-next/contract/types';
1
2
  import type {
2
3
  ExtractCodecTypes,
3
4
  ExtractFieldInputTypes,
@@ -19,30 +20,26 @@ import type { TableProxyContract, UnboundTables } from './db';
19
20
  import type { DeleteQuery, InsertQuery, InsertValues, UpdateQuery } from './mutation-query';
20
21
  import type { WithJoin, WithSelect } from './shared';
21
22
 
22
- type FindModelForTable<C, TableName extends string> = C extends {
23
- readonly models: infer Models extends Record<
24
- string,
25
- { readonly storage: { readonly table: string } }
26
- >;
27
- }
23
+ type FindModelForTable<C, TableName extends string> = C extends Contract
28
24
  ? {
29
- [M in keyof Models & string]: Models[M]['storage']['table'] extends TableName ? M : never;
30
- }[keyof Models & string]
25
+ [M in keyof ContractModelsMap<C> & string]: ContractModelsMap<C>[M] extends {
26
+ readonly storage: { readonly table: TableName };
27
+ }
28
+ ? M
29
+ : never;
30
+ }[keyof ContractModelsMap<C> & string]
31
31
  : never;
32
32
 
33
- type FindFieldForColumn<C, ModelName extends string, ColumnName extends string> = C extends {
34
- readonly models: infer Models extends Record<
35
- string,
36
- { readonly storage: { readonly fields: Record<string, { readonly column: string }> } }
37
- >;
38
- }
39
- ? ModelName extends keyof Models
33
+ type FindFieldForColumn<C, ModelName extends string, ColumnName extends string> = C extends Contract
34
+ ? ModelName extends keyof ContractModelsMap<C>
40
35
  ? {
41
- [F in keyof Models[ModelName]['storage']['fields'] &
42
- string]: Models[ModelName]['storage']['fields'][F]['column'] extends ColumnName
36
+ [F in keyof ContractModelsMap<C>[ModelName]['storage']['fields'] &
37
+ string]: ContractModelsMap<C>[ModelName]['storage']['fields'][F] extends {
38
+ readonly column: ColumnName;
39
+ }
43
40
  ? F
44
41
  : never;
45
- }[keyof Models[ModelName]['storage']['fields'] & string]
42
+ }[keyof ContractModelsMap<C>[ModelName]['storage']['fields'] & string]
46
43
  : never
47
44
  : never;
48
45
 
@@ -119,7 +116,7 @@ type ResolvedUpdateExpressions<Table extends StorageTable> = {
119
116
  }>;
120
117
  };
121
118
 
122
- type ContractToQC<C extends TableProxyContract, Name extends string = string> = {
119
+ export type ContractToQC<C extends TableProxyContract, Name extends string = string> = {
123
120
  readonly codecTypes: ExtractCodecTypes<C>;
124
121
  readonly capabilities: C['capabilities'];
125
122
  readonly queryOperationTypes: ExtractQueryOperationTypes<C>;
@@ -137,7 +134,7 @@ export interface TableProxy<
137
134
  WithJoin<QC, AvailableScope, C['capabilities']> {
138
135
  as<NewAlias extends string>(
139
136
  newAlias: NewAlias,
140
- ): TableProxy<C, Name, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>>;
137
+ ): TableProxy<C, Name, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>, QC>;
141
138
 
142
139
  insert(
143
140
  rows: ReadonlyArray<
@@ -1 +0,0 @@
1
- {"version":3,"file":"db-Tp8O0y-a.d.mts","names":[],"sources":["../src/scope.ts","../src/expression.ts","../src/resolve.ts","../src/types/mutation-query.ts","../src/types/joined-tables.ts","../src/types/grouped-query.ts","../src/types/select-query.ts","../src/types/shared.ts","../src/types/table-proxy.ts","../src/types/db.ts"],"mappings":";;;;;;;KASY,WAAA,mCAA8C,YAAA,SAAqB,QAAA,GAC3E,MAAA;AAAA,cAGiB,cAAA;AAAA,cACA,cAAA;AAAA,KAET,MAAA,oBAA0B,CAAA,GAAI,CAAA,CAAE,CAAA;AAAA,KAChC,QAAA,GAAW,MAAA,QAAc,UAAA;AAAA,KAEzB,UAAA,GAAa,MAAA,SAAe,UAAA;AAAA,KAE5B,KAAA;EACV,QAAA,EAAU,UAAA;EACV,UAAA,EAAY,MAAA,SAAe,UAAA;AAAA;AAAA,KAGjB,UAAA,aAAuB,UAAA;EAAA,UACvB,cAAA;IACR,QAAA,EAAU,GAAA;IACV,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,GAAA;EAAA;EAG5B,iBAAA,IAAqB,KAAA;EACrB,QAAA,IAAY,aAAA;AAAA;AAAA,KAGF,YAAA,oCAAgD,cAAA;EAC1D,QAAA,EAAU,wBAAA,CAAyB,KAAA;EACnC,UAAA,UACQ,IAAA,GAAO,wBAAA,CAAyB,KAAA;AAAA;AAAA,KAI9B,wBAAA,WAAmC,cAAA,kBACjC,CAAA;EACV,OAAA,EAAS,CAAA,YAAa,CAAA;EACtB,QAAA,EAAU,CAAA,YAAa,CAAA;AAAA;AAAA,KAIf,WAAA,WAAsB,KAAA,YAAiB,KAAA;EACjD,QAAA,EAAU,MAAA,CACR,IAAA,CAAK,CAAA,oBAAqB,CAAA,gBAAiB,IAAA,CAAK,CAAA,oBAAqB,CAAA;EAEvE,UAAA,EAAY,MAAA,CAAO,CAAA,iBAAkB,CAAA;AAAA;AAAA,KAG3B,WAAA,WAAsB,KAAA;EAChC,QAAA,EAAU,CAAA;EACV,UAAA,EAAY,MAAA,CAAO,IAAA,CAAK,CAAA,gBAAiB,MAAA,IAAU,MAAA,CAAO,MAAA,EAAQ,CAAA,eAAgB,MAAA;AAAA;AAAA,KAGxE,kBAAA,WAA6B,UAAA,kBAC3B,CAAA;EAAM,OAAA,EAAS,CAAA,CAAE,CAAA;EAAe,QAAA;AAAA;AAAA,KAGlC,aAAA,WAAwB,KAAA;EAClC,QAAA,EAAU,kBAAA,CAAmB,CAAA;EAC7B,UAAA,wBACsB,CAAA,iBAAkB,kBAAA,CAAmB,CAAA,eAAgB,SAAA;AAAA;AAAA,KAIjE,QAAA,iBAAyB,MAAA,SAAe,UAAA;EAAA,CACjD,cAAA,GAAiB,OAAA;EAClB,QAAA,IAAY,SAAA;EACZ,YAAA,IAAgB,MAAA,SAAe,UAAA;AAAA;AAAA,KAGrB,YAAA;EAAA,SACD,UAAA,EAAY,cAAA;EAAA,SACZ,YAAA,EAAc,MAAA,SAAe,MAAA;EAAA,SAC7B,mBAAA,EAAqB,uBAAA;EAAA,SACrB,yBAAA,EAA2B,MAAA;AAAA;;;KCzE1B,gBAAA;EAAqB,OAAA;EAAsB,QAAA;AAAA;AAAA,KAE3C,SAAA,uBAAgC,UAAA,0BAAoC,MAAA,CAC9E,MAAA,WAAiB,KAAA,GAAQ,KAAA;AAAA,KAGf,UAAA,2BAEQ,UAAA,kCACc,SAAA,OAC9B,MAAA,CAAO,MAAA,GAAS,IAAA,CAAK,SAAA,EAAW,OAAA;AAAA,KAExB,kBAAA,WAA6B,MAAA,SAAe,YAAA,CAAW,UAAA,oBACrD,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,YAAA,iBAA2B,UAAA,IAAc,CAAA;AAAA,KAG5D,UAAA,wBAAkC,KAAA,kBAChC,cAAA,eAA6B,YAAA,CAAW,cAAA,aAA2B,CAAA,6BAE3D,cAAA,+BACN,cAAA,eAA6B,SAAA,IAAa,YAAA,CACpD,cAAA,eAA6B,SAAA,EAAW,CAAA;AAAA,KAKlC,iBAAA,wBAAyC,KAAA,aAAkB,YAAA,KACrE,MAAA,EAAQ,UAAA,CAAW,cAAA,GACnB,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,gBAAA;AAAA,KAEJ,gBAAA;AAAA,KACA,YAAA;AAAA,KAEA,cAAA;EACV,SAAA,GAAY,gBAAA;EACZ,KAAA,GAAQ,YAAA;AAAA;AAAA,KAGE,YAAA,wBACa,KAAA,kBACP,MAAA,SAAe,UAAA;EAE/B,QAAA,EAAU,MAAA,CAAO,cAAA,eAA6B,OAAA;EAC9C,UAAA,EAAY,cAAA;AAAA;AAAA,KAGT,kBAAA,YAA8B,uBAAA,kBACrB,EAAA,GAAK,EAAA,CAAG,CAAA;AAAA,KAGV,gBAAA,YAA4B,MAAA;EAAA,SAA0B,KAAA;AAAA;EAChE,EAAA,2BACE,CAAA,EAAG,eAAA,CAAgB,OAAA,WAAkB,EAAA,UACrC,CAAA,EAAG,eAAA,CAAgB,OAAA,WAAkB,EAAA,aAClC,YAAA,CAAW,gBAAA;EAChB,EAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,UAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,aAC5B,YAAA,CAAW,gBAAA;EAChB,EAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,GAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,EAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,GAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,GAAA,MAAS,IAAA,EAAM,eAAA,uBAAsC,EAAA,QAAU,YAAA,CAAW,gBAAA;EAC1E,EAAA,MAAQ,GAAA,EAAK,eAAA,uBAAsC,EAAA,QAAU,YAAA,CAAW,gBAAA;EAExE,MAAA,GAAS,QAAA,EAAU,QAAA,CAAS,MAAA,SAAe,UAAA,OAAiB,YAAA,CAAW,gBAAA;EACvE,SAAA,GAAY,QAAA,EAAU,QAAA,CAAS,MAAA,SAAe,UAAA,OAAiB,YAAA,CAAW,gBAAA;EAE1E,EAAA;IAAA,yBAEI,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,QAAA,EAAU,QAAA,CAAS,MAAA;MAAiB,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,MACrD,YAAA,CAAW,gBAAA;IAAA,yBAEZ,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,MAAA,EAAQ,KAAA,CAAM,eAAA,CAAgB,OAAA,WAAkB,EAAA,KAC/C,YAAA,CAAW,gBAAA;EAAA;EAGhB,KAAA;IAAA,yBAEI,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,QAAA,EAAU,QAAA,CAAS,MAAA;MAAiB,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,MACrD,YAAA,CAAW,gBAAA;IAAA,yBAEZ,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,MAAA,EAAQ,KAAA,CAAM,eAAA,CAAgB,OAAA,WAAkB,EAAA,KAC/C,YAAA,CAAW,gBAAA;EAAA;AAAA;AAAA,KAIN,SAAA,YAAqB,YAAA,IAAgB,gBAAA,CAAiB,EAAA,kBAChE,kBAAA,CAAmB,EAAA;AAAA,KAET,UAAA;EAAe,OAAA;EAAsB,QAAA;AAAA;AAAA,KAErC,sBAAA;EACV,KAAA,GAAQ,IAAA,GAAO,YAAA,CAAW,UAAA,MAAgB,YAAA,CAAW,UAAA;EACrD,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;EACzC,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;EACzC,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;EACzC,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;AAAA;AAAA,KAG/B,kBAAA,YAA8B,YAAA,IAAgB,SAAA,CAAU,EAAA,IAAM,sBAAA;;;KCtIrE,YAAA,WACO,UAAA,qBACS,MAAA;EAAA,SAA0B,MAAA;AAAA,MAC3C,CAAA,0BAA2B,UAAA,GAC3B,CAAA,4BACE,UAAA,CAAW,CAAA,gCACX,UAAA,CAAW,CAAA;AAAA,KAGZ,aAAA,cAA2B,UAAA,IAAc,CAAA,4BAA6B,CAAA,UAAW,CAAA;AAAA,KAE1E,UAAA,aACE,MAAA,SAAe,UAAA,sBACR,MAAA;EAAA,SAA0B,MAAA;AAAA,wBACzB,MAAA,oBAA0B,MAAA,mBAC5C,MAAA,yBACoB,GAAA,wBAA2B,WAAA,GAC7C,YAAA,CAAa,GAAA,CAAI,CAAA,GAAI,UAAA,IACrB,CAAA,eAAgB,WAAA,GACd,aAAA,CAAc,WAAA,CAAY,WAAA,CAAY,CAAA,SAAU,WAAA,IAAe,GAAA,CAAI,CAAA,KACnE,YAAA,CAAa,GAAA,CAAI,CAAA,GAAI,UAAA;;;KCXjB,mBAAA;EAAwB,GAAA;IAAO,SAAA;EAAA;AAAA;AAAA,KAG/B,YAAA,eACI,YAAA,aACH,MAAA;EAAA,SAA0B,KAAA;AAAA,oBAEzB,KAAA,eAAoB,KAAA,YAAiB,CAAA,2BAA4B,EAAA,GACzE,EAAA,CAAG,KAAA,YAAiB,CAAA;AAAA,UAaT,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA;EHzBvB;AAGV;;;;;AACA;;EG+BE,QAAA,qBAA6B,eAAA,UAAyB,aAAA,QACjD,WAAA,EAAa,EAAA,GAAK,gBAAA,UAA0B,EAAA,IAC9C,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EACnC,SAAA,EAAW,WAAA,CACT,EAAA,kBACA,mBAAA,0BACwB,cAAA,6BACnB,OAAA,EAAS,OAAA,KACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,QAAA,EAAU,cAAA,cAA4B,OAAA;EAExF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;AAAA,UAG7C,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA;EH7Cf;;;;EGmDhB,QAAA,qBAA6B,eAAA,UAAyB,aAAA,QACjD,WAAA,EAAa,EAAA,GAAK,gBAAA,UAA0B,EAAA,IAC9C,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EACnC,KAAA,CAAM,IAAA,EAAM,iBAAA,CAAkB,cAAA,EAAgB,EAAA,IAAM,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EACpF,SAAA,EAAW,WAAA,CACT,EAAA,kBACA,mBAAA,0BACwB,cAAA,6BACnB,OAAA,EAAS,OAAA,KACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,QAAA,EAAU,cAAA,cAA4B,OAAA;EAExF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;AAAA,UAG7C,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA;EHpEW;;;AAC5C;EGyEE,QAAA,qBAA6B,eAAA,UAAyB,aAAA,QACjD,WAAA,EAAa,EAAA,GAAK,gBAAA,UAA0B,EAAA,IAC9C,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EACnC,KAAA,CAAM,IAAA,EAAM,iBAAA,CAAkB,cAAA,EAAgB,EAAA,IAAM,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EACpF,SAAA,EAAW,WAAA,CACT,EAAA,kBACA,mBAAA,0BACwB,cAAA,6BACnB,OAAA,EAAS,OAAA,KACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,QAAA,EAAU,cAAA,cAA4B,OAAA;EAExF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;;;UClG7C,YAAA,YAAwB,YAAA,yBAAqC,KAAA,UACpE,UAAA,CAAW,EAAA,EAAI,cAAA,EAAgB,QAAA,GACrC,QAAA,CAAS,EAAA,EAAI,cAAA,EAAgB,EAAA;;;UCYhB,YAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA,WACvB,QAAA,CAAS,OAAA,GACf,cAAA,CAAe,EAAA,GACf,YAAA,EACA,SAAA,CAAU,OAAA,GACV,SAAA,CAAU,EAAA,EAAI,OAAA;;;ALhBlB;;;;;;EKyBE,QAAA,qBAA6B,eAAA,UAAyB,aAAA,QACjD,WAAA,EAAa,EAAA,GAAK,gBAAA,SAAyB,EAAA,IAC7C,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,IACK,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,MAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,kBAAA,CAAmB,EAAA,MACrB,YAAA,CAAW,gBAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,KAAA,SAAc,OAAA,SAAgB,cAAA,wBAC9B,OAAA,GAAU,cAAA,GACT,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,kBAAA,CAAmB,EAAA,MACrB,YAAA,CAAW,UAAA,GAChB,OAAA,GAAU,cAAA,GACT,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,UAAA,EAAY,WAAA,CACV,EAAA;IACE,QAAA;MAAY,UAAA;IAAA;EAAA;IAAA,IAGP,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;IAAA,CAElC,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAAA;AAAA;;;UChEzB,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA,WACvB,QAAA,CAAS,OAAA,GACf,UAAA,CAAW,EAAA,EAAI,cAAA,EAAgB,OAAA,GAC/B,cAAA,CAAe,EAAA,GACf,YAAA,EACA,SAAA,CAAU,OAAA,GACV,SAAA,CAAU,EAAA,EAAI,OAAA;;ANjBlB;;;;;;;EM0BE,QAAA,qBAA6B,eAAA,UAAyB,aAAA,QACjD,WAAA,EAAa,EAAA,GAAK,gBAAA,SAAyB,EAAA,IAC7C,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEnC,KAAA,CAAM,IAAA,EAAM,iBAAA,CAAkB,cAAA,EAAgB,EAAA,IAAM,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpF,OAAA,CACE,KAAA,SAAc,OAAA,SAAgB,cAAA,wBAC9B,OAAA,GAAU,cAAA,GACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEnC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,GAChB,OAAA,GAAU,cAAA,GACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEnC,OAAA,IACK,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,UAAA,EAAY,WAAA,CACV,EAAA;IACE,QAAA;MAAY,UAAA;IAAA;EAAA;IAAA,IAGP,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;IAAA,CAEjC,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAAA;AAAA;;;UChDxB,cAAA,YAA0B,YAAA,sBAAkC,KAAA;EAC3E,IAAA,eAAmB,UAAA,CAAW,UAAA,mBAC5B,KAAA,EAAO,KAAA,GACN,WAAA,CAAY,EAAA,EAAI,WAAA,CAAY,WAAA,EAAa,KAAA,QAAa,cAAA,IAAkB,QAAA;AAAA;AAAA,UAG5D,UAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA,IAAc,QAAA;EAE7C,MAAA,wBAA8B,cAAA,6BACzB,OAAA,EAAS,OAAA,GACX,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,OAAA,EAAS,cAAA,cAA4B,OAAA;EAEnF,MAAA,qCAA2C,UAAA,EACzC,KAAA,EAAO,KAAA,EACP,IAAA,GAAO,MAAA,EAAQ,UAAA,CAAW,cAAA,GAAiB,GAAA,EAAK,kBAAA,CAAmB,EAAA,MAAQ,YAAA,CAAW,KAAA,IACrF,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,SAAA,CAAU,OAAA,EAAS,KAAA,EAAO,KAAA;EAE7D,MAAA,gBAAsB,MAAA,SAAe,YAAA,CAAW,UAAA,IAC9C,QAAA,GAAW,MAAA,EAAQ,UAAA,CAAW,cAAA,GAAiB,GAAA,EAAK,kBAAA,CAAmB,EAAA,MAAQ,MAAA,GAC9E,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,MAAA,CAAO,OAAA,GAAU,kBAAA,CAAmB,MAAA;AAAA;AAAA,UAGxD,QAAA,YAAoB,YAAA,yBAAqC,KAAA;EACxE,SAAA,eAAwB,UAAA,CAAW,UAAA,mBACjC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CAAa,EAAA,EAAI,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA;EAE7D,aAAA,eAA4B,UAAA,CAAW,UAAA,mBACrC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CAAa,EAAA,EAAI,WAAA,CAAY,cAAA,EAAgB,aAAA,CAAc,KAAA,QAAa,cAAA;EAE3E,cAAA,eAA6B,UAAA,CAAW,UAAA,mBACtC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CAAa,EAAA,EAAI,WAAA,CAAY,aAAA,CAAc,cAAA,GAAiB,KAAA,QAAa,cAAA;EAE5E,aAAA,eAA4B,UAAA,CAAW,UAAA,mBACrC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CACD,EAAA,EACA,WAAA,CAAY,aAAA,CAAc,cAAA,GAAiB,aAAA,CAAc,KAAA,QAAa,cAAA;EAGxE,WAAA,EAAa,WAAA,CACX,YAAA;IACE,GAAA;MAAO,OAAA;IAAA;EAAA,6CACiC,MAAA,SAAe,UAAA,GACvD,KAAA,EAAO,KAAA,EACP,OAAA,GAAU,OAAA,EAAS,cAAA,CAAe,EAAA,EAAI,cAAA,MAAoB,QAAA,CAAS,UAAA,MAChE,YAAA,CACH,EAAA,EACA,WAAA,CAAY,cAAA;IAAkB,QAAA,EAAU,UAAA;IAAY,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,UAAA;EAAA;EAIlF,gBAAA,EAAkB,WAAA,CAChB,YAAA;IACE,GAAA;MAAO,OAAA;IAAA;EAAA,6CACiC,MAAA,SAAe,UAAA,GACvD,KAAA,EAAO,KAAA,EACP,OAAA,GAAU,OAAA,EAAS,cAAA,CAAe,EAAA,EAAI,cAAA,MAAoB,QAAA,CAAS,UAAA,MAChE,YAAA,CACH,EAAA,EACA,WAAA,CACE,cAAA,EACA,aAAA;IAAgB,QAAA,EAAU,UAAA;IAAY,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,UAAA;EAAA;AAAA;AAAA,KAM5D,eAAA,YAA2B,YAAA,aAEnC,eAAA,8BAA6C,EAAA;AAAA,UAEhC,cAAA,YAA0B,YAAA;EACzC,KAAA,CAAM,KAAA,EAAO,eAAA,CAAgB,EAAA;EAC7B,MAAA,CAAO,KAAA,EAAO,eAAA,CAAgB,EAAA;AAAA;AAAA,UAGf,YAAA;EACf,QAAA;AAAA;AAAA,UAGe,SAAA,iBAA0B,MAAA,SAAe,UAAA;EACxD,EAAA,uBAAyB,QAAA,EAAU,KAAA,GAAQ,UAAA,CAAW,OAAA,EAAS,KAAA;AAAA;AAAA,UAGhD,SAAA,YAAqB,YAAA,kBAA8B,MAAA,SAAe,UAAA;EACjF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;;;KCvGzD,iBAAA,gCAAiD,CAAA;EAAA,SAC3C,MAAA,uBAA6B,MAAA;IAAA,SAEzB,OAAA;MAAA,SAAoB,KAAA;IAAA;EAAA;AAAA,kBAIjB,MAAA,YAAkB,MAAA,CAAO,CAAA,8BAA+B,SAAA,GAAY,CAAA,iBAC1E,MAAA;AAAA,KAGP,kBAAA,2DAA6E,CAAA;EAAA,SACvE,MAAA,uBAA6B,MAAA;IAAA,SAEzB,OAAA;MAAA,SAAoB,MAAA,EAAQ,MAAA;QAAA,SAA0B,MAAA;MAAA;IAAA;EAAA;AAAA,IAGjE,SAAA,eAAwB,MAAA,iBAER,MAAA,CAAO,SAAA,kCACR,MAAA,CAAO,SAAA,uBAAgC,CAAA,oBAAqB,UAAA,GACnE,CAAA,iBAEE,MAAA,CAAO,SAAA;AAAA,KAIhB,mBAAA,iDAGgB,MAAA,SAAe,MAAA,2CACX,UAAA,GACrB,MAAA,kBACA,iBAAA,CAAkB,CAAA,EAAG,SAAA,2CACnB,SAAA,eAAwB,UAAA,GACtB,CAAA,SAAU,kBAAA,GACR,aAAA,CAAc,CAAA,+BAAgC,MAAA,SAAe,YAAA,IAC3D,SAAA,eAAwB,MAAA,uBAEF,MAAA,CAAO,SAAA,wBAAiC,kBAAA,CACxD,CAAA,EACA,SAAA,EACA,OAAA,2CAEE,SAAA,eAAwB,UAAA,CAAW,SAAA,IACjC,UAAA,CAAW,SAAA,EAAW,SAAA,0BAI9B,MAAA,kBACF,MAAA,kBACF,MAAA,kBACF,MAAA,kBACF,MAAA;AAAA,KAED,oBAAA,kBAEW,YAAA,uCAEH,MAAA;EAAA,SAA0B,KAAA;AAAA,wBACjB,MAAA,SAAe,MAAA,2CACZ,WAAA,GACrB,YAAA,CAAa,KAAA,EAAO,EAAA,IACpB,iBAAA,CAAkB,CAAA,EAAG,SAAA,2CACnB,SAAA,eAAwB,WAAA,iBAER,KAAA,eAAoB,kBAAA,CAC9B,CAAA,EACA,SAAA,EACA,CAAA,oDAEE,SAAA,eAAwB,WAAA,CAAY,SAAA,IAClC,KAAA,YAAiB,CAAA,6BACf,WAAA,CAAY,WAAA,CAAY,SAAA,EAAW,SAAA,YACnC,WAAA,CAAY,WAAA,CAAY,SAAA,EAAW,SAAA,KACrC,KAAA,YAAiB,CAAA,2BAA4B,EAAA,GAC3C,EAAA,CAAG,KAAA,YAAiB,CAAA,mCAExB,KAAA,YAAiB,CAAA,2BAA4B,EAAA,GAC3C,EAAA,CAAG,KAAA,YAAiB,CAAA,qCAG5B,YAAA,CAAa,KAAA,EAAO,EAAA,IACtB,YAAA,CAAa,KAAA,EAAO,EAAA;AAAA,KAErB,oBAAA,kBAEW,YAAA,uCAEH,MAAA;EAAA,SAA0B,KAAA;AAAA,wBACjB,MAAA,SAAe,MAAA,sBACjC,oBAAA,CAAqB,CAAA,EAAG,KAAA,EAAO,SAAA,EAAW,EAAA,EAAI,WAAA;AAAA,KAE7C,yBAAA,eAAwC,YAAA,kBAC/B,KAAA,eAAoB,YAAA;EAC9B,OAAA,EAAS,KAAA,YAAiB,CAAA;EAC1B,QAAA;AAAA;AAAA,KAIC,YAAA,WAAuB,kBAAA;EAAA,SACjB,UAAA,EAAY,iBAAA,CAAkB,CAAA;EAAA,SAC9B,YAAA,EAAc,CAAA;EAAA,SACd,mBAAA,EAAqB,0BAAA,CAA2B,CAAA;EAAA,SAChD,yBAAA,EAA2B,mBAAA,CAAoB,CAAA,EAAG,IAAA,EAAM,uBAAA,CAAwB,CAAA;AAAA;AAAA,UAG1E,UAAA,WACL,kBAAA,8BACkB,aAAA,CAAc,CAAA,0BACnB,IAAA,yBACA,KAAA,GAAQ,YAAA,CAAa,IAAA,EAAM,aAAA,CAAc,CAAA,EAAG,IAAA,eACxD,YAAA,GAAe,YAAA,CAAa,CAAA,EAAG,IAAA,WAClC,UAAA,CAAW,wBAAA,CAAyB,aAAA,CAAc,CAAA,EAAG,IAAA,IAAQ,KAAA,GACnE,UAAA,CAAW,EAAA,EAAI,cAAA,EAAgB,QAAA,GAC/B,QAAA,CAAS,EAAA,EAAI,cAAA,EAAgB,CAAA;EAC/B,EAAA,0BACE,QAAA,EAAU,QAAA,GACT,UAAA,CAAW,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,WAAA,CAAY,cAAA,EAAgB,KAAA,EAAO,QAAA;EAEpE,MAAA,CACE,IAAA,EAAM,aAAA,CACJ,oBAAA,CACE,CAAA,EACA,aAAA,CAAc,CAAA,EAAG,IAAA,GACjB,IAAA,EACA,EAAA,gBACA,sBAAA,CAAuB,CAAA,MAG1B,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,QAAA;EAEnC,MAAA,CACE,GAAA,EAAK,oBAAA,CACH,CAAA,EACA,aAAA,CAAc,CAAA,EAAG,IAAA,GACjB,IAAA,EACA,EAAA,gBACA,sBAAA,CAAuB,CAAA,KAExB,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,QAAA;EAEnC,MAAA,CACE,QAAA,GACE,MAAA,EAAQ,UAAA,CAAW,cAAA,GACnB,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,yBAAA,CAA0B,aAAA,CAAc,CAAA,EAAG,IAAA,KAC/C,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,QAAA;EAEnC,MAAA,IAAU,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,QAAA;AAAA;;;KCvKhC,gBAAA,GAAmB,MAAA,SAAe,MAAA;AAAA,KAQlC,kBAAA;EAAA,SACD,OAAA;IAAA,SACE,UAAA,EAAY,QAAA,CACnB,MAAA;MAAA,SAA0B,MAAA,EAAQ,QAAA,CAAS,MAAA,SAAe,YAAA;IAAA;EAAA;EAAA,SAGrD,YAAA,EAAc,gBAAA;AAAA;AAAA,KAKb,aAAA,WAAwB,kBAAA,wBAChB,0BAAA,CAA2B,CAAA,IAAK,mBAAA,CAAoB,CAAA,EAAG,IAAA;AAAA,KAGtE,0BAAA,WAAqC,kBAAA,qBACzB,CAAA,kCAAmC,CAAA,0BAA2B,IAAA,6BAEvE,CAAA;AAAA,KAEH,mBAAA,WAA8B,kBAAA,0CAClB,CAAA,4BAA6B,IAAA,eAAmB,CAAA,0BAA2B,IAAA,cACtF,CAAA,0BAA2B,IAAA,YAAgB,IAAA,kBAEzC,CAAA;AAAA,KAEI,EAAA,WAAa,kBAAA,eACd,0BAAA,CAA2B,CAAA,IAAK,UAAA,CAAW,CAAA,EAAG,IAAA"}