@syncular/server-dialect-sqlite 0.0.1-72 → 0.0.1-83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -13,10 +13,11 @@
13
13
  * - REPEATABLE READ → no-op (SQLite uses serializable by default)
14
14
  */
15
15
  import type { ScopeValues, StoredScopes, SyncOp } from '@syncular/core';
16
- import type { DbExecutor, ServerSyncDialect } from '@syncular/server';
17
- import type { SyncChangeRow, SyncCommitRow, SyncCoreDb } from '@syncular/server/schema';
18
- import type { Kysely, Transaction } from 'kysely';
19
- export declare class SqliteServerSyncDialect implements ServerSyncDialect {
16
+ import type { DbExecutor } from '@syncular/server';
17
+ import { BaseServerSyncDialect } from '@syncular/server';
18
+ import type { SyncChangeRow, SyncCoreDb } from '@syncular/server/schema';
19
+ import type { Kysely, RawBuilder } from 'kysely';
20
+ export declare class SqliteServerSyncDialect extends BaseServerSyncDialect {
20
21
  readonly name: "sqlite";
21
22
  readonly supportsForUpdate = false;
22
23
  readonly supportsSavepoints: boolean;
@@ -24,31 +25,18 @@ export declare class SqliteServerSyncDialect implements ServerSyncDialect {
24
25
  constructor(options?: {
25
26
  supportsTransactions?: boolean;
26
27
  });
28
+ protected buildNumberListFilter(values: number[]): RawBuilder<unknown>;
29
+ protected buildStringListFilter(values: string[]): RawBuilder<unknown>;
27
30
  ensureSyncSchema<DB extends SyncCoreDb>(db: Kysely<DB>): Promise<void>;
28
31
  executeInTransaction<DB extends SyncCoreDb, T>(db: Kysely<DB>, fn: (executor: DbExecutor<DB>) => Promise<T>): Promise<T>;
29
32
  setRepeatableRead<DB extends SyncCoreDb>(_trx: DbExecutor<DB>): Promise<void>;
30
- readMaxCommitSeq<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, options?: {
31
- partitionId?: string;
32
- }): Promise<number>;
33
- readMinCommitSeq<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, options?: {
34
- partitionId?: string;
35
- }): Promise<number>;
36
- readCommitSeqsForPull<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, args: {
37
- cursor: number;
38
- limitCommits: number;
39
- tables: string[];
40
- partitionId?: string;
41
- }): Promise<number[]>;
42
- readCommits<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, commitSeqs: number[], options?: {
43
- partitionId?: string;
44
- }): Promise<SyncCommitRow[]>;
45
- readChangesForCommits<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, args: {
33
+ readChangesForCommits<DB extends SyncCoreDb>(db: DbExecutor<DB>, args: {
46
34
  commitSeqs: number[];
47
35
  table: string;
48
36
  scopes: ScopeValues;
49
37
  partitionId?: string;
50
38
  }): Promise<SyncChangeRow[]>;
51
- readIncrementalPullRows<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, args: {
39
+ readIncrementalPullRows<DB extends SyncCoreDb>(db: DbExecutor<DB>, args: {
52
40
  table: string;
53
41
  scopes: ScopeValues;
54
42
  cursor: number;
@@ -70,7 +58,7 @@ export declare class SqliteServerSyncDialect implements ServerSyncDialect {
70
58
  * Streaming version of incremental pull for large result sets.
71
59
  * Yields changes one at a time instead of loading all into memory.
72
60
  */
73
- streamIncrementalPullRows<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, args: {
61
+ streamIncrementalPullRows<DB extends SyncCoreDb>(db: DbExecutor<DB>, args: {
74
62
  table: string;
75
63
  scopes: ScopeValues;
76
64
  cursor: number;
@@ -88,23 +76,12 @@ export declare class SqliteServerSyncDialect implements ServerSyncDialect {
88
76
  row_version: number | null;
89
77
  scopes: StoredScopes;
90
78
  }>;
91
- compactChanges<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, args: {
79
+ compactChanges<DB extends SyncCoreDb>(db: DbExecutor<DB>, args: {
92
80
  fullHistoryHours: number;
93
81
  }): Promise<number>;
94
- recordClientCursor<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, args: {
95
- partitionId?: string;
96
- clientId: string;
97
- actorId: string;
98
- cursor: number;
99
- effectiveScopes: ScopeValues;
100
- }): Promise<void>;
101
82
  scopesToDb(scopes: StoredScopes): string;
102
- dbToScopes(value: unknown): StoredScopes;
103
83
  dbToArray(value: unknown): string[];
104
84
  arrayToDb(values: string[]): string;
105
- readAffectedTablesFromChanges<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, commitSeq: number, options?: {
106
- partitionId?: string;
107
- }): Promise<string[]>;
108
85
  ensureConsoleSchema<DB extends SyncCoreDb>(db: Kysely<DB>): Promise<void>;
109
86
  }
110
87
  export declare function createSqliteServerDialect(options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -12,27 +12,8 @@
12
12
  * - No GIN index → regular index + manual filtering
13
13
  * - REPEATABLE READ → no-op (SQLite uses serializable by default)
14
14
  */
15
+ import { BaseServerSyncDialect, coerceIsoString, coerceNumber, parseScopes, } from '@syncular/server';
15
16
  import { sql } from 'kysely';
16
- function coerceNumber(value) {
17
- if (value === null || value === undefined)
18
- return null;
19
- if (typeof value === 'number')
20
- return Number.isFinite(value) ? value : null;
21
- if (typeof value === 'bigint')
22
- return Number.isFinite(Number(value)) ? Number(value) : null;
23
- if (typeof value === 'string') {
24
- const n = Number(value);
25
- return Number.isFinite(n) ? n : null;
26
- }
27
- return null;
28
- }
29
- function coerceIsoString(value) {
30
- if (typeof value === 'string')
31
- return value;
32
- if (value instanceof Date)
33
- return value.toISOString();
34
- return String(value);
35
- }
36
17
  function parseJsonValue(value) {
37
18
  if (value === null || value === undefined)
38
19
  return null;
@@ -48,39 +29,6 @@ function parseJsonValue(value) {
48
29
  }
49
30
  return value;
50
31
  }
51
- function parseScopes(value) {
52
- if (value === null || value === undefined)
53
- return {};
54
- if (typeof value === 'object' && !Array.isArray(value)) {
55
- const result = {};
56
- for (const [k, v] of Object.entries(value)) {
57
- if (typeof v === 'string') {
58
- result[k] = v;
59
- }
60
- }
61
- return result;
62
- }
63
- if (typeof value === 'string') {
64
- try {
65
- const parsed = JSON.parse(value);
66
- if (typeof parsed === 'object' &&
67
- parsed !== null &&
68
- !Array.isArray(parsed)) {
69
- const result = {};
70
- for (const [k, v] of Object.entries(parsed)) {
71
- if (typeof v === 'string') {
72
- result[k] = v;
73
- }
74
- }
75
- return result;
76
- }
77
- }
78
- catch {
79
- // ignore
80
- }
81
- }
82
- return {};
83
- }
84
32
  function toStringArray(value) {
85
33
  if (Array.isArray(value)) {
86
34
  return value.filter((k) => typeof k === 'string');
@@ -128,16 +76,38 @@ async function ensurePartitionColumn(db, table) {
128
76
  // Ignore when column already exists (or table is immutable in the current backend).
129
77
  }
130
78
  }
131
- export class SqliteServerSyncDialect {
79
+ async function ensureTransportPathColumn(db) {
80
+ try {
81
+ await sql
82
+ .raw("ALTER TABLE sync_request_events ADD COLUMN transport_path TEXT NOT NULL DEFAULT 'direct'")
83
+ .execute(db);
84
+ }
85
+ catch {
86
+ // Ignore when column already exists (or table is immutable in the current backend).
87
+ }
88
+ }
89
+ export class SqliteServerSyncDialect extends BaseServerSyncDialect {
132
90
  name = 'sqlite';
133
91
  supportsForUpdate = false;
134
92
  supportsSavepoints;
135
93
  _supportsTransactions;
136
94
  constructor(options) {
95
+ super();
137
96
  this._supportsTransactions = options?.supportsTransactions ?? true;
138
97
  this.supportsSavepoints = this._supportsTransactions;
139
98
  }
140
99
  // ===========================================================================
100
+ // SQL Fragment Hooks
101
+ // ===========================================================================
102
+ buildNumberListFilter(values) {
103
+ const list = sql.join(values.map((v) => sql `${v}`), sql `, `);
104
+ return sql `IN (${list})`;
105
+ }
106
+ buildStringListFilter(values) {
107
+ const list = sql.join(values.map((v) => sql `${v}`), sql `, `);
108
+ return sql `IN (${list})`;
109
+ }
110
+ // ===========================================================================
141
111
  // Schema Setup
142
112
  // ===========================================================================
143
113
  async ensureSyncSchema(db) {
@@ -271,63 +241,8 @@ export class SqliteServerSyncDialect {
271
241
  // SQLite uses serializable isolation by default in WAL mode.
272
242
  }
273
243
  // ===========================================================================
274
- // Commit/Change Log Queries
244
+ // Commit/Change Log Queries (dialect-specific)
275
245
  // ===========================================================================
276
- async readMaxCommitSeq(db, options) {
277
- const partitionId = options?.partitionId ?? 'default';
278
- const res = await sql `
279
- SELECT max(commit_seq) as max_seq
280
- FROM sync_commits
281
- WHERE partition_id = ${partitionId}
282
- `.execute(db);
283
- return coerceNumber(res.rows[0]?.max_seq) ?? 0;
284
- }
285
- async readMinCommitSeq(db, options) {
286
- const partitionId = options?.partitionId ?? 'default';
287
- const res = await sql `
288
- SELECT min(commit_seq) as min_seq
289
- FROM sync_commits
290
- WHERE partition_id = ${partitionId}
291
- `.execute(db);
292
- return coerceNumber(res.rows[0]?.min_seq) ?? 0;
293
- }
294
- async readCommitSeqsForPull(db, args) {
295
- const partitionId = args.partitionId ?? 'default';
296
- if (args.tables.length === 0)
297
- return [];
298
- const tablesIn = sql.join(args.tables.map((t) => sql `${t}`), sql `, `);
299
- const res = await sql `
300
- SELECT DISTINCT commit_seq
301
- FROM sync_table_commits
302
- WHERE partition_id = ${partitionId}
303
- AND "table" IN (${tablesIn})
304
- AND commit_seq > ${args.cursor}
305
- ORDER BY commit_seq ASC
306
- LIMIT ${args.limitCommits}
307
- `.execute(db);
308
- return res.rows
309
- .map((r) => coerceNumber(r.commit_seq))
310
- .filter((n) => typeof n === 'number' && Number.isFinite(n) && n > args.cursor);
311
- }
312
- async readCommits(db, commitSeqs, options) {
313
- const partitionId = options?.partitionId ?? 'default';
314
- if (commitSeqs.length === 0)
315
- return [];
316
- const commitSeqsIn = sql.join(commitSeqs.map((seq) => sql `${seq}`), sql `, `);
317
- const res = await sql `
318
- SELECT commit_seq, actor_id, created_at, result_json
319
- FROM sync_commits
320
- WHERE commit_seq IN (${commitSeqsIn})
321
- AND partition_id = ${partitionId}
322
- ORDER BY commit_seq ASC
323
- `.execute(db);
324
- return res.rows.map((row) => ({
325
- commit_seq: coerceNumber(row.commit_seq) ?? 0,
326
- actor_id: row.actor_id,
327
- created_at: coerceIsoString(row.created_at),
328
- result_json: row.result_json ?? null,
329
- }));
330
- }
331
246
  async readChangesForCommits(db, args) {
332
247
  const partitionId = args.partitionId ?? 'default';
333
248
  if (args.commitSeqs.length === 0)
@@ -535,10 +450,10 @@ export class SqliteServerSyncDialect {
535
450
  if (toDelete.length === 0)
536
451
  return 0;
537
452
  // Delete in batches
538
- const batchSize = 500;
453
+ const deleteBatchSize = 500;
539
454
  let deleted = 0;
540
- for (let i = 0; i < toDelete.length; i += batchSize) {
541
- const batch = toDelete.slice(i, i + batchSize);
455
+ for (let i = 0; i < toDelete.length; i += deleteBatchSize) {
456
+ const batch = toDelete.slice(i, i + deleteBatchSize);
542
457
  const batchIn = sql.join(batch.map((id) => sql `${id}`), sql `, `);
543
458
  const res = await sql `
544
459
  DELETE FROM sync_changes
@@ -566,49 +481,17 @@ export class SqliteServerSyncDialect {
566
481
  return deleted;
567
482
  }
568
483
  // ===========================================================================
569
- // Client Cursor Recording
570
- // ===========================================================================
571
- async recordClientCursor(db, args) {
572
- const partitionId = args.partitionId ?? 'default';
573
- const now = new Date().toISOString();
574
- const scopesJson = JSON.stringify(args.effectiveScopes);
575
- await sql `
576
- INSERT INTO sync_client_cursors (partition_id, client_id, actor_id, cursor, effective_scopes, updated_at)
577
- VALUES (${partitionId}, ${args.clientId}, ${args.actorId}, ${args.cursor}, ${scopesJson}, ${now})
578
- ON CONFLICT(partition_id, client_id) DO UPDATE SET
579
- actor_id = ${args.actorId},
580
- cursor = ${args.cursor},
581
- effective_scopes = ${scopesJson},
582
- updated_at = ${now}
583
- `.execute(db);
584
- }
585
- // ===========================================================================
586
484
  // Scope Conversion Helpers
587
485
  // ===========================================================================
588
486
  scopesToDb(scopes) {
589
487
  return JSON.stringify(scopes);
590
488
  }
591
- dbToScopes(value) {
592
- return parseScopes(value);
593
- }
594
489
  dbToArray(value) {
595
490
  return toStringArray(value);
596
491
  }
597
492
  arrayToDb(values) {
598
493
  return JSON.stringify(values.filter((v) => v.length > 0));
599
494
  }
600
- async readAffectedTablesFromChanges(db, commitSeq, options) {
601
- const partitionId = options?.partitionId ?? 'default';
602
- const res = await sql `
603
- SELECT DISTINCT "table"
604
- FROM sync_changes
605
- WHERE commit_seq = ${commitSeq}
606
- AND partition_id = ${partitionId}
607
- `.execute(db);
608
- return res.rows
609
- .map((r) => r.table)
610
- .filter((t) => typeof t === 'string' && t.length > 0);
611
- }
612
495
  // ===========================================================================
613
496
  // Console Schema (Request Events)
614
497
  // ===========================================================================
@@ -629,8 +512,10 @@ export class SqliteServerSyncDialect {
629
512
  .addColumn('row_count', 'integer')
630
513
  .addColumn('tables', 'text', (col) => col.notNull().defaultTo('[]'))
631
514
  .addColumn('error_message', 'text')
515
+ .addColumn('transport_path', 'text', (col) => col.notNull().defaultTo('direct'))
632
516
  .addColumn('created_at', 'text', (col) => col.notNull().defaultTo(nowIso))
633
517
  .execute();
518
+ await ensureTransportPathColumn(db);
634
519
  await sql `CREATE INDEX IF NOT EXISTS idx_sync_request_events_created_at
635
520
  ON sync_request_events(created_at DESC)`.execute(db);
636
521
  await sql `CREATE INDEX IF NOT EXISTS idx_sync_request_events_event_type
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,SAAS,YAAY,CAAC,KAAc,EAAiB;IACnD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,SAAS,eAAe,CAAC,KAAc,EAAU;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IACtD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AAAA,CACtB;AAED,SAAS,cAAc,CAAC,KAAc,EAAW;IAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACd;AAED,SAAS,WAAW,CAAC,KAAc,EAAgB;IACjD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YACtE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,IACE,OAAO,MAAM,KAAK,QAAQ;gBAC1B,MAAM,KAAK,IAAI;gBACf,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EACtB,CAAC;gBACD,MAAM,MAAM,GAAiB,EAAE,CAAC;gBAChC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CACjC,MAAiC,CAClC,EAAE,CAAC;oBACF,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AAAA,CACX;AAED,SAAS,aAAa,CAAC,KAAc,EAAY;IAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CACnD,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AAAA,CACX;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,MAAoB,EAAE,SAAsB,EAAW;IAC1E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,OAAO,KAAK,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,WAAW,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,KAAK,UAAU,qBAAqB,CAClC,EAAc,EACd,KAAa,EACE;IACf,IAAI,CAAC;QACH,MAAM,GAAG;aACN,GAAG,CACF,eAAe,KAAK,0DAA0D,CAC/E;aACA,OAAO,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,oFAAoF;IACtF,CAAC;AAAA,CACF;AAED,MAAM,OAAO,uBAAuB;IACzB,IAAI,GAAG,QAAiB,CAAC;IACzB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,kBAAkB,CAAU;IACpB,qBAAqB,CAAU;IAEhD,YAAY,OAA4C,EAAE;QACxD,IAAI,CAAC,qBAAqB,GAAG,OAAO,EAAE,oBAAoB,IAAI,IAAI,CAAC;QACnE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC;IAAA,CACtD;IAED,8EAA8E;IAC9E,eAAe;IACf,8EAA8E;IAE9E,KAAK,CAAC,gBAAgB,CAAwB,EAAc,EAAiB;QAC3E,MAAM,GAAG,CAAA,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,GAAG,CAAA,wCAAwC,CAAC;QAE3D,qBAAqB;QACrB,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,cAAc,CAAC;aAC3B,WAAW,EAAE;aACb,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CACjC;aACA,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CACnC;aACA,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACtD,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC7D,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;aACzB,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;aAChC,SAAS,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aACzE,SAAS,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAC5C,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAC9B;aACA,OAAO,EAAE,CAAC;QACb,MAAM,qBAAqB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAEhD,MAAM,GAAG,CAAA,qDAAqD,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3E,MAAM,GAAG,CAAA;iEACoD,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1E,wEAAwE;QACxE,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,oBAAoB,CAAC;aACjC,WAAW,EAAE;aACb,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CACnC;aACA,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAClD,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CACxE;aACA,uBAAuB,CAAC,uBAAuB,EAAE;YAChD,cAAc;YACd,OAAO;YACP,YAAY;SACb,CAAC;aACD,OAAO,EAAE,CAAC;QACb,MAAM,qBAAqB,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAEtD,4DAA4D;QAC5D,gFAAgF;QAChF,MAAM,GAAG,CAAA;+DACkD,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAExE,MAAM,GAAG,CAAA;sDACyC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE/D,4CAA4C;QAC5C,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,cAAc,CAAC;aAC3B,WAAW,EAAE;aACb,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CACjC;aACA,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CACnC;aACA,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CACxE;aACA,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAClD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACnD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC/C,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;aAC7B,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC;aACnC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACnD,OAAO,EAAE,CAAC;QACb,MAAM,qBAAqB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAEhD,MAAM,GAAG,CAAA;gDACmC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEzD,MAAM,GAAG,CAAA;6CACgC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEtD,4BAA4B;QAC5B,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,qBAAqB,CAAC;aAClC,WAAW,EAAE;aACb,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CACnC;aACA,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACtD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aACnE,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAC7C,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAC9B;aACA,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzE,uBAAuB,CAAC,wBAAwB,EAAE;YACjD,cAAc;YACd,WAAW;SACZ,CAAC;aACD,OAAO,EAAE,CAAC;QACb,MAAM,qBAAqB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAEvD,uEAAuE;QACvE,wEAAwE;QACxE,MAAM,GAAG,CAAA;sDACyC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE/D,MAAM,GAAG,CAAA;yCAC4B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAElD,6BAA6B;QAC7B,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,sBAAsB,CAAC;aACnC,WAAW,EAAE;aACb,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;aACxD,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CACnC;aACA,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACtD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAClD,SAAS,CAAC,kBAAkB,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAChE,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;aACrE,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACzD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACxD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACnD,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC3D,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;aACpE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,+BAA+B;aACzD,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzE,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACvD,OAAO,EAAE,CAAC;QACb,MAAM,qBAAqB,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAExD,MAAM,GAAG,CAAA;0CAC6B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEnD,MAAM,GAAG,CAAA;8HACiH,CAAC,OAAO,CAChI,EAAE,CACH,CAAC;QAEF,wBAAwB;QACxB,MAAM,GAAG,CAAA;;;KAGR,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACd,MAAM,GAAG,CAAA;;;KAGR,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAAA,CACf;IAED,8EAA8E;IAC9E,sBAAsB;IACtB,8EAA8E;IAE9E,KAAK,CAAC,oBAAoB,CACxB,EAAc,EACd,EAA4C,EAChC;QACZ,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAAA,CACf;IAED,KAAK,CAAC,iBAAiB,CACrB,IAAoB,EACL;QACf,6DAA6D;IAD7C,CAEjB;IAED,8EAA8E;IAC9E,4BAA4B;IAC5B,8EAA8E;IAE9E,KAAK,CAAC,gBAAgB,CACpB,EAAgC,EAChC,OAAkC,EACjB;QACjB,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAsB;;;6BAGlB,WAAW;KACnC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAAA,CAChD;IAED,KAAK,CAAC,gBAAgB,CACpB,EAAgC,EAChC,OAAkC,EACjB;QACjB,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAsB;;;6BAGlB,WAAW;KACnC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAAA,CAChD;IAED,KAAK,CAAC,qBAAqB,CACzB,EAAgC,EAChC,IAKC,EACkB;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAClD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAExC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,CAAC,EAAE,CAAC,EACjC,GAAG,CAAA,IAAI,CACR,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,GAAG,CAAyB;;;6BAGrB,WAAW;0BACd,QAAQ;2BACP,IAAI,CAAC,MAAM;;cAExB,IAAI,CAAC,YAAY;KAC1B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,OAAO,GAAG,CAAC,IAAI;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACtC,MAAM,CACL,CAAC,CAAC,EAAe,EAAE,CACjB,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CACjE,CAAC;IAAA,CACL;IAED,KAAK,CAAC,WAAW,CACf,EAAgC,EAChC,UAAoB,EACpB,OAAkC,EACR;QAC1B,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC;QACtD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEvC,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAC3B,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,GAAG,EAAE,CAAC,EACpC,GAAG,CAAA,IAAI,CACR,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,GAAG,CAKnB;;;6BAGuB,YAAY;6BACZ,WAAW;;KAEnC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5B,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAC7C,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;YAC3C,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;SACrC,CAAC,CAAC,CAAC;IAAA,CACL;IAED,KAAK,CAAC,qBAAqB,CACzB,EAAgC,EAChC,IAKC,EACyB;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAClD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE5C,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,GAAG,EAAE,CAAC,EACzC,GAAG,CAAA,IAAI,CACR,CAAC;QAEF,uDAAuD;QACvD,MAAM,GAAG,GAAG,MAAM,GAAG,CAQnB;;;6BAGuB,YAAY;6BACZ,WAAW;wBAChB,IAAI,CAAC,KAAK;;KAE7B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,qEAAqE;QACrE,OAAO,GAAG,CAAC,IAAI;aACZ,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAAA,CAC/C,CAAC;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAC7C,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;YACtC,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;YAC1C,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;SAChC,CAAC,CAAC,CAAC;IAAA,CACP;IAED,KAAK,CAAC,uBAAuB,CAC3B,EAAgC,EAChC,IAMC,EAcD;QACA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAEnE,iCAAiC;QACjC,MAAM,aAAa,GAAG,MAAM,GAAG,CAAyB;;;6BAG/B,WAAW;wBAChB,IAAI,CAAC,KAAK;2BACP,IAAI,CAAC,MAAM;;;;;oCAKF,WAAW;;;cAGjC,YAAY;KACrB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACtC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAE1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEvC,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAC3B,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,GAAG,EAAE,CAAC,EACpC,GAAG,CAAA,IAAI,CACR,CAAC;QAEF,gDAAgD;QAChD,MAAM,UAAU,GAAG,MAAM,GAAG,CAW1B;;;;;;;;;;;;;;gCAc0B,YAAY;gCACZ,WAAW;+BACZ,WAAW;0BAChB,IAAI,CAAC,KAAK;;KAE/B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,iCAAiC;QACjC,OAAO,UAAU,CAAC,IAAI;aACnB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAAA,CAC/C,CAAC;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAC7C,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;YAC3C,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;YAC3C,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;YACtC,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;YAC1C,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;SAChC,CAAC,CAAC,CAAC;IAAA,CACP;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,yBAAyB,CAC9B,EAAgC,EAChC,IAMC,EAYA;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAEnE,iCAAiC;QACjC,MAAM,aAAa,GAAG,MAAM,GAAG,CAAyB;;;6BAG/B,WAAW;wBAChB,IAAI,CAAC,KAAK;2BACP,IAAI,CAAC,MAAM;;;;;oCAKF,WAAW;;;cAGjC,YAAY;KACrB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACtC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAE1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEpC,oDAAoD;QACpD,MAAM,SAAS,GAAG,GAAG,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,GAAG,EAAE,CAAC,EAC/B,GAAG,CAAA,IAAI,CACR,CAAC;YAEF,MAAM,UAAU,GAAG,MAAM,GAAG,CAW1B;;;;;;;;;;;;;;kCAc0B,YAAY;kCACZ,WAAW;iCACZ,WAAW;4BAChB,IAAI,CAAC,KAAK;;OAE/B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAEd,4BAA4B;YAC5B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC7C,IAAI,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3C,MAAM;wBACJ,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC7C,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;wBAC3C,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;wBAC3C,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,EAAE,EAAE,GAAG,CAAC,EAAY;wBACpB,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;wBACtC,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;wBAC1C,MAAM,EAAE,YAAY;qBACrB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IAAA,CACF;IAED,KAAK,CAAC,cAAc,CAClB,EAAgC,EAChC,IAAkC,EACjB;QACjB,MAAM,SAAS,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CACpD,CAAC,WAAW,EAAE,CAAC;QAEhB,uBAAuB;QACvB,MAAM,UAAU,GAAG,MAAM,GAAG,CAO1B;;;;8BAIwB,SAAS;KAClC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,iDAAiD;QACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAGnB,CAAC;QAEJ,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACtB,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC;gBACpB,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC3C,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;QAED,sEAAsE;QACtE,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAElC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrB,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;oBAAE,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;gBACtE,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;YAAA,CAClC,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAEpC,oBAAoB;QACpB,MAAM,SAAS,GAAG,GAAG,CAAC;QACtB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CACtB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,EAAE,EAAE,CAAC,EAC7B,GAAG,CAAA,IAAI,CACR,CAAC;YAEF,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;;8BAEG,OAAO;OAC9B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAEd,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,yEAAyE;QACzE,MAAM,GAAG,CAAA;;;;;6BAKgB,SAAS;;;;;;;;;;KAUjC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,OAAO,OAAO,CAAC;IAAA,CAChB;IAED,8EAA8E;IAC9E,0BAA0B;IAC1B,8EAA8E;IAE9E,KAAK,CAAC,kBAAkB,CACtB,EAAgC,EAChC,IAMC,EACc;QACf,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAExD,MAAM,GAAG,CAAA;;gBAEG,WAAW,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,KAAK,UAAU,KAAK,GAAG;;qBAEhF,IAAI,CAAC,OAAO;mBACd,IAAI,CAAC,MAAM;6BACD,UAAU;uBAChB,GAAG;KACrB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAAA,CACf;IAED,8EAA8E;IAC9E,2BAA2B;IAC3B,8EAA8E;IAE9E,UAAU,CAAC,MAAoB,EAAU;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAAA,CAC/B;IAED,UAAU,CAAC,KAAc,EAAgB;QACvC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAAA,CAC3B;IAED,SAAS,CAAC,KAAc,EAAY;QAClC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAAA,CAC7B;IAED,SAAS,CAAC,MAAgB,EAAU;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAAA,CAC3D;IAED,KAAK,CAAC,6BAA6B,CACjC,EAAgC,EAChC,SAAiB,EACjB,OAAkC,EACf;QACnB,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAmB;;;2BAGjB,SAAS;6BACP,WAAW;KACnC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,OAAO,GAAG,CAAC,IAAI;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAAA,CACtE;IAED,8EAA8E;IAC9E,kCAAkC;IAClC,8EAA8E;IAE9E,KAAK,CAAC,mBAAmB,CACvB,EAAc,EACC;QACf,MAAM,MAAM,GAAG,GAAG,CAAA,wCAAwC,CAAC;QAE3D,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,qBAAqB,CAAC;aAClC,WAAW,EAAE;aACb,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACxC,GAAG,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CACjC;aACA,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACvD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACtD,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC3D,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACpD,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC3D,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC;aAClC,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;aACvC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC;aACjC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACnE,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;aAClC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzE,OAAO,EAAE,CAAC;QAEb,MAAM,GAAG,CAAA;8CACiC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,GAAG,CAAA;yCAC4B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,GAAG,CAAA;wCAC2B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEjD,iBAAiB;QACjB,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,eAAe,CAAC;aAC5B,WAAW,EAAE;aACb,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;aACtD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACvD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACjD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC7D,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;aAC7B,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzE,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;aAC/B,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;aACjC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;aAC/B,OAAO,EAAE,CAAC;QAEb,MAAM,GAAG,CAAA;iCACoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAA;iCACoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAAA,CAC3C;CACF;AAED,MAAM,UAAU,yBAAyB,CAAC,OAEzC,EAA2B;IAC1B,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAAA,CAC7C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,SAAS,cAAc,CAAC,KAAc,EAAW;IAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACd;AAED,SAAS,aAAa,CAAC,KAAc,EAAY;IAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CACnD,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AAAA,CACX;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,MAAoB,EAAE,SAAsB,EAAW;IAC1E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,OAAO,KAAK,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,WAAW,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,KAAK,UAAU,qBAAqB,CAClC,EAAc,EACd,KAAa,EACE;IACf,IAAI,CAAC;QACH,MAAM,GAAG;aACN,GAAG,CACF,eAAe,KAAK,0DAA0D,CAC/E;aACA,OAAO,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,oFAAoF;IACtF,CAAC;AAAA,CACF;AAED,KAAK,UAAU,yBAAyB,CACtC,EAAc,EACC;IACf,IAAI,CAAC;QACH,MAAM,GAAG;aACN,GAAG,CACF,0FAA0F,CAC3F;aACA,OAAO,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,oFAAoF;IACtF,CAAC;AAAA,CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,qBAAqB;IACvD,IAAI,GAAG,QAAiB,CAAC;IACzB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,kBAAkB,CAAU;IACpB,qBAAqB,CAAU;IAEhD,YAAY,OAA4C,EAAE;QACxD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,qBAAqB,GAAG,OAAO,EAAE,oBAAoB,IAAI,IAAI,CAAC;QACnE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC;IAAA,CACtD;IAED,8EAA8E;IAC9E,qBAAqB;IACrB,8EAA8E;IAEpE,qBAAqB,CAAC,MAAgB,EAAuB;QACrE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CACnB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,CAAC,EAAE,CAAC,EAC5B,GAAG,CAAA,IAAI,CACR,CAAC;QACF,OAAO,GAAG,CAAA,OAAO,IAAI,GAAG,CAAC;IAAA,CAC1B;IAES,qBAAqB,CAAC,MAAgB,EAAuB;QACrE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CACnB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,CAAC,EAAE,CAAC,EAC5B,GAAG,CAAA,IAAI,CACR,CAAC;QACF,OAAO,GAAG,CAAA,OAAO,IAAI,GAAG,CAAC;IAAA,CAC1B;IAED,8EAA8E;IAC9E,eAAe;IACf,8EAA8E;IAE9E,KAAK,CAAC,gBAAgB,CAAwB,EAAc,EAAiB;QAC3E,MAAM,GAAG,CAAA,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,GAAG,CAAA,wCAAwC,CAAC;QAE3D,qBAAqB;QACrB,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,cAAc,CAAC;aAC3B,WAAW,EAAE;aACb,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CACjC;aACA,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CACnC;aACA,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACtD,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC7D,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;aACzB,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;aAChC,SAAS,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aACzE,SAAS,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAC5C,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAC9B;aACA,OAAO,EAAE,CAAC;QACb,MAAM,qBAAqB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAEhD,MAAM,GAAG,CAAA,qDAAqD,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3E,MAAM,GAAG,CAAA;iEACoD,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1E,wEAAwE;QACxE,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,oBAAoB,CAAC;aACjC,WAAW,EAAE;aACb,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CACnC;aACA,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAClD,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CACxE;aACA,uBAAuB,CAAC,uBAAuB,EAAE;YAChD,cAAc;YACd,OAAO;YACP,YAAY;SACb,CAAC;aACD,OAAO,EAAE,CAAC;QACb,MAAM,qBAAqB,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAEtD,4DAA4D;QAC5D,gFAAgF;QAChF,MAAM,GAAG,CAAA;+DACkD,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAExE,MAAM,GAAG,CAAA;sDACyC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE/D,4CAA4C;QAC5C,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,cAAc,CAAC;aAC3B,WAAW,EAAE;aACb,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CACjC;aACA,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CACnC;aACA,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CACxE;aACA,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAClD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACnD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC/C,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;aAC7B,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC;aACnC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACnD,OAAO,EAAE,CAAC;QACb,MAAM,qBAAqB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAEhD,MAAM,GAAG,CAAA;gDACmC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEzD,MAAM,GAAG,CAAA;6CACgC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEtD,4BAA4B;QAC5B,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,qBAAqB,CAAC;aAClC,WAAW,EAAE;aACb,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CACnC;aACA,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACtD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aACnE,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAC7C,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAC9B;aACA,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzE,uBAAuB,CAAC,wBAAwB,EAAE;YACjD,cAAc;YACd,WAAW;SACZ,CAAC;aACD,OAAO,EAAE,CAAC;QACb,MAAM,qBAAqB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAEvD,uEAAuE;QACvE,wEAAwE;QACxE,MAAM,GAAG,CAAA;sDACyC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE/D,MAAM,GAAG,CAAA;yCAC4B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAElD,6BAA6B;QAC7B,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,sBAAsB,CAAC;aACnC,WAAW,EAAE;aACb,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;aACxD,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CACnC;aACA,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACtD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAClD,SAAS,CAAC,kBAAkB,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAChE,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;aACrE,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACzD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACxD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACnD,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC3D,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;aACpE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,+BAA+B;aACzD,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzE,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACvD,OAAO,EAAE,CAAC;QACb,MAAM,qBAAqB,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAExD,MAAM,GAAG,CAAA;0CAC6B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEnD,MAAM,GAAG,CAAA;8HACiH,CAAC,OAAO,CAChI,EAAE,CACH,CAAC;QAEF,wBAAwB;QACxB,MAAM,GAAG,CAAA;;;KAGR,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACd,MAAM,GAAG,CAAA;;;KAGR,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAAA,CACf;IAED,8EAA8E;IAC9E,sBAAsB;IACtB,8EAA8E;IAE9E,KAAK,CAAC,oBAAoB,CACxB,EAAc,EACd,EAA4C,EAChC;QACZ,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAAA,CACf;IAED,KAAK,CAAC,iBAAiB,CACrB,IAAoB,EACL;QACf,6DAA6D;IAD7C,CAEjB;IAED,8EAA8E;IAC9E,+CAA+C;IAC/C,8EAA8E;IAE9E,KAAK,CAAC,qBAAqB,CACzB,EAAkB,EAClB,IAKC,EACyB;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAClD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE5C,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,GAAG,EAAE,CAAC,EACzC,GAAG,CAAA,IAAI,CACR,CAAC;QAEF,uDAAuD;QACvD,MAAM,GAAG,GAAG,MAAM,GAAG,CAQnB;;;6BAGuB,YAAY;6BACZ,WAAW;wBAChB,IAAI,CAAC,KAAK;;KAE7B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,qEAAqE;QACrE,OAAO,GAAG,CAAC,IAAI;aACZ,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAAA,CAC/C,CAAC;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAC7C,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;YACtC,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;YAC1C,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;SAChC,CAAC,CAAC,CAAC;IAAA,CACP;IAED,KAAK,CAAC,uBAAuB,CAC3B,EAAkB,EAClB,IAMC,EAcD;QACA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAEnE,iCAAiC;QACjC,MAAM,aAAa,GAAG,MAAM,GAAG,CAAyB;;;6BAG/B,WAAW;wBAChB,IAAI,CAAC,KAAK;2BACP,IAAI,CAAC,MAAM;;;;;oCAKF,WAAW;;;cAGjC,YAAY;KACrB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACtC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAE1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEvC,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAC3B,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,GAAG,EAAE,CAAC,EACpC,GAAG,CAAA,IAAI,CACR,CAAC;QAEF,gDAAgD;QAChD,MAAM,UAAU,GAAG,MAAM,GAAG,CAW1B;;;;;;;;;;;;;;gCAc0B,YAAY;gCACZ,WAAW;+BACZ,WAAW;0BAChB,IAAI,CAAC,KAAK;;KAE/B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,iCAAiC;QACjC,OAAO,UAAU,CAAC,IAAI;aACnB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAAA,CAC/C,CAAC;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAC7C,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;YAC3C,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;YAC3C,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;YACtC,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;YAC1C,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;SAChC,CAAC,CAAC,CAAC;IAAA,CACP;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,yBAAyB,CAC9B,EAAkB,EAClB,IAMC,EAYA;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAEnE,iCAAiC;QACjC,MAAM,aAAa,GAAG,MAAM,GAAG,CAAyB;;;6BAG/B,WAAW;wBAChB,IAAI,CAAC,KAAK;2BACP,IAAI,CAAC,MAAM;;;;;oCAKF,WAAW;;;cAGjC,YAAY;KACrB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACtC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAE1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEpC,oDAAoD;QACpD,MAAM,SAAS,GAAG,GAAG,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,GAAG,EAAE,CAAC,EAC/B,GAAG,CAAA,IAAI,CACR,CAAC;YAEF,MAAM,UAAU,GAAG,MAAM,GAAG,CAW1B;;;;;;;;;;;;;;kCAc0B,YAAY;kCACZ,WAAW;iCACZ,WAAW;4BAChB,IAAI,CAAC,KAAK;;OAE/B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAEd,4BAA4B;YAC5B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC7C,IAAI,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3C,MAAM;wBACJ,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC7C,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;wBAC3C,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;wBAC3C,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,EAAE,EAAE,GAAG,CAAC,EAAY;wBACpB,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;wBACtC,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;wBAC1C,MAAM,EAAE,YAAY;qBACrB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IAAA,CACF;IAED,KAAK,CAAC,cAAc,CAClB,EAAkB,EAClB,IAAkC,EACjB;QACjB,MAAM,SAAS,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CACpD,CAAC,WAAW,EAAE,CAAC;QAEhB,uBAAuB;QACvB,MAAM,UAAU,GAAG,MAAM,GAAG,CAO1B;;;;8BAIwB,SAAS;KAClC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,iDAAiD;QACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAGnB,CAAC;QAEJ,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACtB,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC;gBACpB,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC3C,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;QAED,sEAAsE;QACtE,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAElC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrB,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;oBAAE,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;gBACtE,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;YAAA,CAClC,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAEpC,oBAAoB;QACpB,MAAM,eAAe,GAAG,GAAG,CAAC;QAC5B,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CACtB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,EAAE,EAAE,CAAC,EAC7B,GAAG,CAAA,IAAI,CACR,CAAC;YAEF,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;;8BAEG,OAAO;OAC9B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAEd,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,yEAAyE;QACzE,MAAM,GAAG,CAAA;;;;;6BAKgB,SAAS;;;;;;;;;;KAUjC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEd,OAAO,OAAO,CAAC;IAAA,CAChB;IAED,8EAA8E;IAC9E,2BAA2B;IAC3B,8EAA8E;IAE9E,UAAU,CAAC,MAAoB,EAAU;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAAA,CAC/B;IAED,SAAS,CAAC,KAAc,EAAY;QAClC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAAA,CAC7B;IAED,SAAS,CAAC,MAAgB,EAAU;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAAA,CAC3D;IAED,8EAA8E;IAC9E,kCAAkC;IAClC,8EAA8E;IAE9E,KAAK,CAAC,mBAAmB,CACvB,EAAc,EACC;QACf,MAAM,MAAM,GAAG,GAAG,CAAA,wCAAwC,CAAC;QAE3D,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,qBAAqB,CAAC;aAClC,WAAW,EAAE;aACb,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACxC,GAAG,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CACjC;aACA,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACvD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACtD,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC3D,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACpD,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC3D,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC;aAClC,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;aACvC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC;aACjC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACnE,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;aAClC,SAAS,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAC3C,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAClC;aACA,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzE,OAAO,EAAE,CAAC;QACb,MAAM,yBAAyB,CAAC,EAAE,CAAC,CAAC;QAEpC,MAAM,GAAG,CAAA;8CACiC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,GAAG,CAAA;yCAC4B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,GAAG,CAAA;wCAC2B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEjD,iBAAiB;QACjB,MAAM,EAAE,CAAC,MAAM;aACZ,WAAW,CAAC,eAAe,CAAC;aAC5B,WAAW,EAAE;aACb,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;aACtD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACvD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACjD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACrD,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC7D,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;aAC7B,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzE,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;aAC/B,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;aACjC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;aAC/B,OAAO,EAAE,CAAC;QAEb,MAAM,GAAG,CAAA;iCACoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAA;iCACoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAAA,CAC3C;CACF;AAED,MAAM,UAAU,yBAAyB,CAAC,OAEzC,EAA2B;IAC1B,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAAA,CAC7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syncular/server-dialect-sqlite",
3
- "version": "0.0.1-72",
3
+ "version": "0.0.1-83",
4
4
  "description": "SQLite dialect for the Syncular server",
5
5
  "license": "MIT",
6
6
  "author": "Benjamin Kniffler",
@@ -0,0 +1,149 @@
1
+ import Database from 'bun:sqlite';
2
+ import { afterEach, describe, expect, it } from 'bun:test';
3
+ import type { SyncCoreDb } from '@syncular/server/schema';
4
+ import type { Dialect, QueryResult } from 'kysely';
5
+ import {
6
+ Kysely,
7
+ SqliteAdapter,
8
+ SqliteIntrospector,
9
+ SqliteQueryCompiler,
10
+ sql,
11
+ } from 'kysely';
12
+ import { createSqliteServerDialect } from './index';
13
+
14
+ describe('SqliteServerSyncDialect.ensureConsoleSchema', () => {
15
+ let db: Kysely<SyncCoreDb>;
16
+
17
+ function createTestDb(): Kysely<SyncCoreDb> {
18
+ const sqlite = new Database(':memory:');
19
+ const dialect: Dialect = {
20
+ createAdapter: () => new SqliteAdapter(),
21
+ createDriver: () => ({
22
+ init: async () => {},
23
+ acquireConnection: async () => ({
24
+ executeQuery: async <R>(compiledQuery: {
25
+ sql: string;
26
+ parameters: readonly unknown[];
27
+ }): Promise<QueryResult<R>> => {
28
+ const normalizedSql = compiledQuery.sql.trimStart().toLowerCase();
29
+ if (
30
+ normalizedSql.startsWith('select') ||
31
+ normalizedSql.startsWith('with') ||
32
+ normalizedSql.startsWith('pragma')
33
+ ) {
34
+ const rows = sqlite
35
+ .prepare(compiledQuery.sql)
36
+ .all(...(compiledQuery.parameters ?? [])) as R[];
37
+ return { rows };
38
+ }
39
+ const result = sqlite
40
+ .prepare(compiledQuery.sql)
41
+ .run(...(compiledQuery.parameters ?? []));
42
+ return {
43
+ rows: [] as R[],
44
+ numAffectedRows: BigInt(result.changes),
45
+ insertId:
46
+ result.lastInsertRowid != null
47
+ ? BigInt(result.lastInsertRowid)
48
+ : undefined,
49
+ };
50
+ },
51
+ streamQuery: <R>(): AsyncIterableIterator<QueryResult<R>> => {
52
+ throw new Error('Not implemented in test driver');
53
+ },
54
+ }),
55
+ beginTransaction: async () => {},
56
+ commitTransaction: async () => {},
57
+ rollbackTransaction: async () => {},
58
+ releaseConnection: async () => {},
59
+ destroy: async () => {
60
+ sqlite.close();
61
+ },
62
+ }),
63
+ createIntrospector: (innerDb) => new SqliteIntrospector(innerDb),
64
+ createQueryCompiler: () => new SqliteQueryCompiler(),
65
+ };
66
+
67
+ return new Kysely<SyncCoreDb>({ dialect });
68
+ }
69
+
70
+ afterEach(async () => {
71
+ if (db) {
72
+ await db.destroy();
73
+ }
74
+ });
75
+
76
+ it('creates sync_request_events with transport_path on new databases', async () => {
77
+ db = createTestDb();
78
+ const dialect = createSqliteServerDialect();
79
+
80
+ await dialect.ensureConsoleSchema(db);
81
+
82
+ const columns = await sql<{ name: string }>`
83
+ PRAGMA table_info(sync_request_events)
84
+ `.execute(db);
85
+
86
+ expect(columns.rows.map((row) => row.name)).toContain('transport_path');
87
+ });
88
+
89
+ it('adds transport_path when upgrading an existing sync_request_events table', async () => {
90
+ db = createTestDb();
91
+ const dialect = createSqliteServerDialect();
92
+
93
+ await db.schema
94
+ .createTable('sync_request_events')
95
+ .addColumn('event_id', 'integer', (col) => col.primaryKey())
96
+ .addColumn('event_type', 'text', (col) => col.notNull())
97
+ .addColumn('actor_id', 'text', (col) => col.notNull())
98
+ .addColumn('client_id', 'text', (col) => col.notNull())
99
+ .addColumn('status_code', 'integer', (col) => col.notNull())
100
+ .addColumn('outcome', 'text', (col) => col.notNull())
101
+ .addColumn('duration_ms', 'integer', (col) => col.notNull())
102
+ .addColumn('commit_seq', 'integer')
103
+ .addColumn('operation_count', 'integer')
104
+ .addColumn('row_count', 'integer')
105
+ .addColumn('tables', 'text', (col) => col.notNull().defaultTo('[]'))
106
+ .addColumn('error_message', 'text')
107
+ .addColumn('created_at', 'text', (col) => col.notNull())
108
+ .execute();
109
+
110
+ await dialect.ensureConsoleSchema(db);
111
+
112
+ const columns = await sql<{ name: string }>`
113
+ PRAGMA table_info(sync_request_events)
114
+ `.execute(db);
115
+ expect(columns.rows.map((row) => row.name)).toContain('transport_path');
116
+
117
+ await sql`
118
+ INSERT INTO sync_request_events (
119
+ event_type,
120
+ actor_id,
121
+ client_id,
122
+ status_code,
123
+ outcome,
124
+ duration_ms,
125
+ tables,
126
+ transport_path,
127
+ created_at
128
+ ) VALUES (
129
+ ${'pull'},
130
+ ${'actor-1'},
131
+ ${'client-1'},
132
+ ${200},
133
+ ${'ok'},
134
+ ${12},
135
+ ${'[]'},
136
+ ${'direct'},
137
+ ${'2026-02-12T00:00:00.000Z'}
138
+ )
139
+ `.execute(db);
140
+
141
+ const inserted = await sql<{ count: number }>`
142
+ SELECT COUNT(*) as count
143
+ FROM sync_request_events
144
+ WHERE transport_path = ${'direct'}
145
+ `.execute(db);
146
+
147
+ expect(inserted.rows[0]?.count ?? 0).toBe(1);
148
+ });
149
+ });
package/src/index.ts CHANGED
@@ -14,33 +14,17 @@
14
14
  */
15
15
 
16
16
  import type { ScopeValues, StoredScopes, SyncOp } from '@syncular/core';
17
- import type { DbExecutor, ServerSyncDialect } from '@syncular/server';
18
- import type {
19
- SyncChangeRow,
20
- SyncCommitRow,
21
- SyncCoreDb,
22
- } from '@syncular/server/schema';
23
- import type { Kysely, Transaction } from 'kysely';
17
+ import type { DbExecutor } from '@syncular/server';
18
+ import {
19
+ BaseServerSyncDialect,
20
+ coerceIsoString,
21
+ coerceNumber,
22
+ parseScopes,
23
+ } from '@syncular/server';
24
+ import type { SyncChangeRow, SyncCoreDb } from '@syncular/server/schema';
25
+ import type { Kysely, RawBuilder } from 'kysely';
24
26
  import { sql } from 'kysely';
25
27
 
26
- function coerceNumber(value: unknown): number | null {
27
- if (value === null || value === undefined) return null;
28
- if (typeof value === 'number') return Number.isFinite(value) ? value : null;
29
- if (typeof value === 'bigint')
30
- return Number.isFinite(Number(value)) ? Number(value) : null;
31
- if (typeof value === 'string') {
32
- const n = Number(value);
33
- return Number.isFinite(n) ? n : null;
34
- }
35
- return null;
36
- }
37
-
38
- function coerceIsoString(value: unknown): string {
39
- if (typeof value === 'string') return value;
40
- if (value instanceof Date) return value.toISOString();
41
- return String(value);
42
- }
43
-
44
28
  function parseJsonValue(value: unknown): unknown {
45
29
  if (value === null || value === undefined) return null;
46
30
  if (typeof value === 'object') return value;
@@ -54,42 +38,6 @@ function parseJsonValue(value: unknown): unknown {
54
38
  return value;
55
39
  }
56
40
 
57
- function parseScopes(value: unknown): StoredScopes {
58
- if (value === null || value === undefined) return {};
59
- if (typeof value === 'object' && !Array.isArray(value)) {
60
- const result: StoredScopes = {};
61
- for (const [k, v] of Object.entries(value as Record<string, unknown>)) {
62
- if (typeof v === 'string') {
63
- result[k] = v;
64
- }
65
- }
66
- return result;
67
- }
68
- if (typeof value === 'string') {
69
- try {
70
- const parsed = JSON.parse(value);
71
- if (
72
- typeof parsed === 'object' &&
73
- parsed !== null &&
74
- !Array.isArray(parsed)
75
- ) {
76
- const result: StoredScopes = {};
77
- for (const [k, v] of Object.entries(
78
- parsed as Record<string, unknown>
79
- )) {
80
- if (typeof v === 'string') {
81
- result[k] = v;
82
- }
83
- }
84
- return result;
85
- }
86
- } catch {
87
- // ignore
88
- }
89
- }
90
- return {};
91
- }
92
-
93
41
  function toStringArray(value: unknown): string[] {
94
42
  if (Array.isArray(value)) {
95
43
  return value.filter((k: unknown): k is string => typeof k === 'string');
@@ -141,17 +89,52 @@ async function ensurePartitionColumn<DB extends SyncCoreDb>(
141
89
  }
142
90
  }
143
91
 
144
- export class SqliteServerSyncDialect implements ServerSyncDialect {
92
+ async function ensureTransportPathColumn<DB extends SyncCoreDb>(
93
+ db: Kysely<DB>
94
+ ): Promise<void> {
95
+ try {
96
+ await sql
97
+ .raw(
98
+ "ALTER TABLE sync_request_events ADD COLUMN transport_path TEXT NOT NULL DEFAULT 'direct'"
99
+ )
100
+ .execute(db);
101
+ } catch {
102
+ // Ignore when column already exists (or table is immutable in the current backend).
103
+ }
104
+ }
105
+
106
+ export class SqliteServerSyncDialect extends BaseServerSyncDialect {
145
107
  readonly name = 'sqlite' as const;
146
108
  readonly supportsForUpdate = false;
147
109
  readonly supportsSavepoints: boolean;
148
110
  private readonly _supportsTransactions: boolean;
149
111
 
150
112
  constructor(options?: { supportsTransactions?: boolean }) {
113
+ super();
151
114
  this._supportsTransactions = options?.supportsTransactions ?? true;
152
115
  this.supportsSavepoints = this._supportsTransactions;
153
116
  }
154
117
 
118
+ // ===========================================================================
119
+ // SQL Fragment Hooks
120
+ // ===========================================================================
121
+
122
+ protected buildNumberListFilter(values: number[]): RawBuilder<unknown> {
123
+ const list = sql.join(
124
+ values.map((v) => sql`${v}`),
125
+ sql`, `
126
+ );
127
+ return sql`IN (${list})`;
128
+ }
129
+
130
+ protected buildStringListFilter(values: string[]): RawBuilder<unknown> {
131
+ const list = sql.join(
132
+ values.map((v) => sql`${v}`),
133
+ sql`, `
134
+ );
135
+ return sql`IN (${list})`;
136
+ }
137
+
155
138
  // ===========================================================================
156
139
  // Schema Setup
157
140
  // ===========================================================================
@@ -336,108 +319,11 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
336
319
  }
337
320
 
338
321
  // ===========================================================================
339
- // Commit/Change Log Queries
322
+ // Commit/Change Log Queries (dialect-specific)
340
323
  // ===========================================================================
341
324
 
342
- async readMaxCommitSeq<DB extends SyncCoreDb>(
343
- db: Kysely<DB> | Transaction<DB>,
344
- options?: { partitionId?: string }
345
- ): Promise<number> {
346
- const partitionId = options?.partitionId ?? 'default';
347
- const res = await sql<{ max_seq: unknown }>`
348
- SELECT max(commit_seq) as max_seq
349
- FROM sync_commits
350
- WHERE partition_id = ${partitionId}
351
- `.execute(db);
352
-
353
- return coerceNumber(res.rows[0]?.max_seq) ?? 0;
354
- }
355
-
356
- async readMinCommitSeq<DB extends SyncCoreDb>(
357
- db: Kysely<DB> | Transaction<DB>,
358
- options?: { partitionId?: string }
359
- ): Promise<number> {
360
- const partitionId = options?.partitionId ?? 'default';
361
- const res = await sql<{ min_seq: unknown }>`
362
- SELECT min(commit_seq) as min_seq
363
- FROM sync_commits
364
- WHERE partition_id = ${partitionId}
365
- `.execute(db);
366
-
367
- return coerceNumber(res.rows[0]?.min_seq) ?? 0;
368
- }
369
-
370
- async readCommitSeqsForPull<DB extends SyncCoreDb>(
371
- db: Kysely<DB> | Transaction<DB>,
372
- args: {
373
- cursor: number;
374
- limitCommits: number;
375
- tables: string[];
376
- partitionId?: string;
377
- }
378
- ): Promise<number[]> {
379
- const partitionId = args.partitionId ?? 'default';
380
- if (args.tables.length === 0) return [];
381
-
382
- const tablesIn = sql.join(
383
- args.tables.map((t) => sql`${t}`),
384
- sql`, `
385
- );
386
-
387
- const res = await sql<{ commit_seq: unknown }>`
388
- SELECT DISTINCT commit_seq
389
- FROM sync_table_commits
390
- WHERE partition_id = ${partitionId}
391
- AND "table" IN (${tablesIn})
392
- AND commit_seq > ${args.cursor}
393
- ORDER BY commit_seq ASC
394
- LIMIT ${args.limitCommits}
395
- `.execute(db);
396
-
397
- return res.rows
398
- .map((r) => coerceNumber(r.commit_seq))
399
- .filter(
400
- (n): n is number =>
401
- typeof n === 'number' && Number.isFinite(n) && n > args.cursor
402
- );
403
- }
404
-
405
- async readCommits<DB extends SyncCoreDb>(
406
- db: Kysely<DB> | Transaction<DB>,
407
- commitSeqs: number[],
408
- options?: { partitionId?: string }
409
- ): Promise<SyncCommitRow[]> {
410
- const partitionId = options?.partitionId ?? 'default';
411
- if (commitSeqs.length === 0) return [];
412
-
413
- const commitSeqsIn = sql.join(
414
- commitSeqs.map((seq) => sql`${seq}`),
415
- sql`, `
416
- );
417
-
418
- const res = await sql<{
419
- commit_seq: unknown;
420
- actor_id: string;
421
- created_at: unknown;
422
- result_json: unknown | null;
423
- }>`
424
- SELECT commit_seq, actor_id, created_at, result_json
425
- FROM sync_commits
426
- WHERE commit_seq IN (${commitSeqsIn})
427
- AND partition_id = ${partitionId}
428
- ORDER BY commit_seq ASC
429
- `.execute(db);
430
-
431
- return res.rows.map((row) => ({
432
- commit_seq: coerceNumber(row.commit_seq) ?? 0,
433
- actor_id: row.actor_id,
434
- created_at: coerceIsoString(row.created_at),
435
- result_json: row.result_json ?? null,
436
- }));
437
- }
438
-
439
325
  async readChangesForCommits<DB extends SyncCoreDb>(
440
- db: Kysely<DB> | Transaction<DB>,
326
+ db: DbExecutor<DB>,
441
327
  args: {
442
328
  commitSeqs: number[];
443
329
  table: string;
@@ -489,7 +375,7 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
489
375
  }
490
376
 
491
377
  async readIncrementalPullRows<DB extends SyncCoreDb>(
492
- db: Kysely<DB> | Transaction<DB>,
378
+ db: DbExecutor<DB>,
493
379
  args: {
494
380
  table: string;
495
381
  scopes: ScopeValues;
@@ -600,7 +486,7 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
600
486
  * Yields changes one at a time instead of loading all into memory.
601
487
  */
602
488
  async *streamIncrementalPullRows<DB extends SyncCoreDb>(
603
- db: Kysely<DB> | Transaction<DB>,
489
+ db: DbExecutor<DB>,
604
490
  args: {
605
491
  table: string;
606
492
  scopes: ScopeValues;
@@ -709,7 +595,7 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
709
595
  }
710
596
 
711
597
  async compactChanges<DB extends SyncCoreDb>(
712
- db: Kysely<DB> | Transaction<DB>,
598
+ db: DbExecutor<DB>,
713
599
  args: { fullHistoryHours: number }
714
600
  ): Promise<number> {
715
601
  const cutoffIso = new Date(
@@ -767,11 +653,11 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
767
653
  if (toDelete.length === 0) return 0;
768
654
 
769
655
  // Delete in batches
770
- const batchSize = 500;
656
+ const deleteBatchSize = 500;
771
657
  let deleted = 0;
772
658
 
773
- for (let i = 0; i < toDelete.length; i += batchSize) {
774
- const batch = toDelete.slice(i, i + batchSize);
659
+ for (let i = 0; i < toDelete.length; i += deleteBatchSize) {
660
+ const batch = toDelete.slice(i, i + deleteBatchSize);
775
661
  const batchIn = sql.join(
776
662
  batch.map((id) => sql`${id}`),
777
663
  sql`, `
@@ -806,35 +692,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
806
692
  return deleted;
807
693
  }
808
694
 
809
- // ===========================================================================
810
- // Client Cursor Recording
811
- // ===========================================================================
812
-
813
- async recordClientCursor<DB extends SyncCoreDb>(
814
- db: Kysely<DB> | Transaction<DB>,
815
- args: {
816
- partitionId?: string;
817
- clientId: string;
818
- actorId: string;
819
- cursor: number;
820
- effectiveScopes: ScopeValues;
821
- }
822
- ): Promise<void> {
823
- const partitionId = args.partitionId ?? 'default';
824
- const now = new Date().toISOString();
825
- const scopesJson = JSON.stringify(args.effectiveScopes);
826
-
827
- await sql`
828
- INSERT INTO sync_client_cursors (partition_id, client_id, actor_id, cursor, effective_scopes, updated_at)
829
- VALUES (${partitionId}, ${args.clientId}, ${args.actorId}, ${args.cursor}, ${scopesJson}, ${now})
830
- ON CONFLICT(partition_id, client_id) DO UPDATE SET
831
- actor_id = ${args.actorId},
832
- cursor = ${args.cursor},
833
- effective_scopes = ${scopesJson},
834
- updated_at = ${now}
835
- `.execute(db);
836
- }
837
-
838
695
  // ===========================================================================
839
696
  // Scope Conversion Helpers
840
697
  // ===========================================================================
@@ -843,10 +700,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
843
700
  return JSON.stringify(scopes);
844
701
  }
845
702
 
846
- dbToScopes(value: unknown): StoredScopes {
847
- return parseScopes(value);
848
- }
849
-
850
703
  dbToArray(value: unknown): string[] {
851
704
  return toStringArray(value);
852
705
  }
@@ -855,24 +708,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
855
708
  return JSON.stringify(values.filter((v) => v.length > 0));
856
709
  }
857
710
 
858
- async readAffectedTablesFromChanges<DB extends SyncCoreDb>(
859
- db: Kysely<DB> | Transaction<DB>,
860
- commitSeq: number,
861
- options?: { partitionId?: string }
862
- ): Promise<string[]> {
863
- const partitionId = options?.partitionId ?? 'default';
864
- const res = await sql<{ table: string }>`
865
- SELECT DISTINCT "table"
866
- FROM sync_changes
867
- WHERE commit_seq = ${commitSeq}
868
- AND partition_id = ${partitionId}
869
- `.execute(db);
870
-
871
- return res.rows
872
- .map((r) => r.table)
873
- .filter((t): t is string => typeof t === 'string' && t.length > 0);
874
- }
875
-
876
711
  // ===========================================================================
877
712
  // Console Schema (Request Events)
878
713
  // ===========================================================================
@@ -899,8 +734,12 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
899
734
  .addColumn('row_count', 'integer')
900
735
  .addColumn('tables', 'text', (col) => col.notNull().defaultTo('[]'))
901
736
  .addColumn('error_message', 'text')
737
+ .addColumn('transport_path', 'text', (col) =>
738
+ col.notNull().defaultTo('direct')
739
+ )
902
740
  .addColumn('created_at', 'text', (col) => col.notNull().defaultTo(nowIso))
903
741
  .execute();
742
+ await ensureTransportPathColumn(db);
904
743
 
905
744
  await sql`CREATE INDEX IF NOT EXISTS idx_sync_request_events_created_at
906
745
  ON sync_request_events(created_at DESC)`.execute(db);