hikoutei 0.10.16-dev → 0.10.18-dev
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/contracts/api/entity.d.ts +10 -5
- package/dist/contracts/api/entity.d.ts.map +1 -1
- package/dist/contracts/api/entity.js +18 -10
- package/dist/contracts/api/entity.js.map +1 -1
- package/dist/contracts/sync-orm/mapping/identity.d.ts +10 -5
- package/dist/contracts/sync-orm/mapping/identity.d.ts.map +1 -1
- package/dist/contracts/sync-orm/mapping/identity.js +25 -11
- package/dist/contracts/sync-orm/mapping/identity.js.map +1 -1
- package/dist/orm/mapping/observationMapping.d.ts +4 -4
- package/dist/orm/mapping/observationMapping.d.ts.map +1 -1
- package/dist/orm/mapping/observationMapping.js +2 -1
- package/dist/orm/mapping/observationMapping.js.map +1 -1
- package/dist/orm/persistence/support/helpers.d.ts +5 -1
- package/dist/orm/persistence/support/helpers.d.ts.map +1 -1
- package/dist/orm/persistence/support/helpers.js +16 -6
- package/dist/orm/persistence/support/helpers.js.map +1 -1
- package/dist/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.js +36 -4
- package/dist/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.js.map +1 -1
- package/dist/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.js +5 -0
- package/dist/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.js.map +1 -1
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js +18 -4
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js.map +1 -1
- package/dist/storage/sqlite/migrateSchema.d.ts.map +1 -1
- package/dist/storage/sqlite/migrateSchema.js +16 -1
- package/dist/storage/sqlite/migrateSchema.js.map +1 -1
- package/dist/storage/sqlite/schema.d.ts +21 -0
- package/dist/storage/sqlite/schema.d.ts.map +1 -1
- package/dist/storage/sqlite/schema.js +27 -0
- package/dist/storage/sqlite/schema.js.map +1 -1
- package/dist/storage/sync/outbound/reconciliationSql.d.ts +81 -0
- package/dist/storage/sync/outbound/reconciliationSql.d.ts.map +1 -1
- package/dist/storage/sync/outbound/reconciliationSql.js +139 -1
- package/dist/storage/sync/outbound/reconciliationSql.js.map +1 -1
- package/dist/sync-engine/api/internalEntityManager.d.ts.map +1 -1
- package/dist/sync-engine/api/internalEntityManager.js +3 -1
- package/dist/sync-engine/api/internalEntityManager.js.map +1 -1
- package/dist/sync-engine/orm/persistence/scalar/unitOfWork.d.ts.map +1 -1
- package/dist/sync-engine/orm/persistence/scalar/unitOfWork.js +102 -9
- package/dist/sync-engine/orm/persistence/scalar/unitOfWork.js.map +1 -1
- package/dist/sync-engine/sync/outbound/reconciliation/CleanupScanner.d.ts.map +1 -1
- package/dist/sync-engine/sync/outbound/reconciliation/CleanupScanner.js +8 -3
- package/dist/sync-engine/sync/outbound/reconciliation/CleanupScanner.js.map +1 -1
- package/dist/sync-engine/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
- package/dist/sync-engine/sync/outbound/reconciliation/ReconciliationScanner.js +103 -53
- package/dist/sync-engine/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
- package/dist/sync-engine/sync/outbound/reconciliation/cleanup.d.ts +110 -0
- package/dist/sync-engine/sync/outbound/reconciliation/cleanup.d.ts.map +1 -1
- package/dist/sync-engine/sync/outbound/reconciliation/cleanup.js +307 -1
- package/dist/sync-engine/sync/outbound/reconciliation/cleanup.js.map +1 -1
- package/dist/sync-engine/sync/outbound/reconciliation/diff.d.ts +51 -7
- package/dist/sync-engine/sync/outbound/reconciliation/diff.d.ts.map +1 -1
- package/dist/sync-engine/sync/outbound/reconciliation/diff.js +53 -43
- package/dist/sync-engine/sync/outbound/reconciliation/diff.js.map +1 -1
- package/dist/sync-engine/sync/outbound/reconciliation/shared.d.ts +33 -11
- package/dist/sync-engine/sync/outbound/reconciliation/shared.d.ts.map +1 -1
- package/dist/sync-engine/sync/outbound/reconciliation/shared.js +93 -58
- package/dist/sync-engine/sync/outbound/reconciliation/shared.js.map +1 -1
- package/package.json +1 -1
|
@@ -106,6 +106,21 @@ export interface CleanupCanonicalRow {
|
|
|
106
106
|
readonly fields: Record<string, NormalizedCell>;
|
|
107
107
|
readonly fieldRevisionHash: string;
|
|
108
108
|
}
|
|
109
|
+
interface CleanupCanonicalSqlShape {
|
|
110
|
+
readonly entity_id: string;
|
|
111
|
+
readonly row_binding_id: string;
|
|
112
|
+
readonly anchor_reference: string;
|
|
113
|
+
readonly field_name: string;
|
|
114
|
+
readonly normalized_value: string;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Whole-entity canonical pages are assembled from the storage-owned
|
|
118
|
+
* entity-batch primitives (same bounded access path as the desired-state
|
|
119
|
+
* pages: PK-ordered entities, PK-prefix fields, covering binding seeks).
|
|
120
|
+
* A flat cross-table keyset cannot page here: duplicate `(entity, field)`
|
|
121
|
+
* keys across several active bindings of one entity would be skipped by a
|
|
122
|
+
* `(entity_id, field_name)` cursor, silently dropping a binding's fields.
|
|
123
|
+
*/
|
|
109
124
|
/**
|
|
110
125
|
* Stable binding-keyed stream target id shared with flush projections and
|
|
111
126
|
* resolution reconciles. Bound-row cleanup corrections must stream under the
|
|
@@ -125,6 +140,100 @@ export declare function readCleanupProtectedBindingsWithSql(sql: SqlExecutor, ph
|
|
|
125
140
|
export declare function readCleanupEvidenceWithSql(sql: SqlExecutor, logicalSheetId: string, physicalSheetId: string): Promise<CleanupEvidence>;
|
|
126
141
|
/** Reads cleanup evidence through a fresh adapter read context. */
|
|
127
142
|
export declare function readCleanupEvidence(storage: SqlStorageAdapter, logicalSheetId: string, physicalSheetId: string): Promise<CleanupEvidence>;
|
|
143
|
+
/** Keyset cursor for a paged cleanup binding chunk: the last id already seen. */
|
|
144
|
+
export interface CleanupBindingsCursor {
|
|
145
|
+
readonly rowBindingId: string;
|
|
146
|
+
}
|
|
147
|
+
/** Keyset cursor for a paged canonical chunk: the last entity already seen. */
|
|
148
|
+
export interface CleanupCanonicalCursor {
|
|
149
|
+
readonly entityId: string;
|
|
150
|
+
}
|
|
151
|
+
/** One entity-batched canonical chunk: whole entities plus progress. */
|
|
152
|
+
export interface CleanupCanonicalEntityChunk {
|
|
153
|
+
readonly rows: readonly CleanupCanonicalSqlShape[];
|
|
154
|
+
/** Entities paged (including binding-less ones) — the termination signal. */
|
|
155
|
+
readonly entityCount: number;
|
|
156
|
+
/** Last entity paged — the next cursor (absent only when empty). */
|
|
157
|
+
readonly lastEntityId: string | undefined;
|
|
158
|
+
}
|
|
159
|
+
/** Reads one bounded page of row bindings in `row_binding_id` order. */
|
|
160
|
+
export declare function readCleanupBindingsChunkWithSql(sql: SqlExecutor, logicalSheetId: string, after: CleanupBindingsCursor | undefined, limit?: number): Promise<readonly CleanupBinding[]>;
|
|
161
|
+
/**
|
|
162
|
+
* Reads one bounded chunk of whole entities as flat canonical user-owned
|
|
163
|
+
* rows, in global entity order. Pass no cursor for the first chunk, then
|
|
164
|
+
* `{ entityId }` of the last entity paged; an empty chunk (or
|
|
165
|
+
* `entityCount < limit`) ends the scan. Only `limit` entities are ever
|
|
166
|
+
* materialized per call. Multi-binding entities emit one row per
|
|
167
|
+
* (binding, field) with the smallest `row_binding_id` first, so no
|
|
168
|
+
* binding's fields can be skipped across chunks by construction.
|
|
169
|
+
*/
|
|
170
|
+
export declare function readCleanupCanonicalChunkWithSql(sql: SqlExecutor, logicalSheetId: string, after: CleanupCanonicalCursor | undefined, limit?: number): Promise<CleanupCanonicalEntityChunk>;
|
|
171
|
+
/** One entity's canonical bindings accumulated across chunk boundaries. */
|
|
172
|
+
export interface PartialCleanupCanonical {
|
|
173
|
+
readonly entityId: string;
|
|
174
|
+
readonly partials: ReadonlyMap<string, {
|
|
175
|
+
readonly entityId: string;
|
|
176
|
+
readonly rowBindingId: string;
|
|
177
|
+
readonly anchorReference: string;
|
|
178
|
+
readonly fields: Record<string, NormalizedCell>;
|
|
179
|
+
}>;
|
|
180
|
+
}
|
|
181
|
+
/** Completed canonical rows plus the trailing entity still missing fields. */
|
|
182
|
+
export interface CleanupCanonicalChunkResult {
|
|
183
|
+
readonly completed: readonly CleanupCanonicalRow[];
|
|
184
|
+
readonly carry: PartialCleanupCanonical | undefined;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Groups one ordered page of canonical rows into completed canonical rows.
|
|
188
|
+
*
|
|
189
|
+
* A page may split an entity's fields across the boundary, and several
|
|
190
|
+
* bindings may share one entity, so the trailing entity is returned as
|
|
191
|
+
* `carry` (all of its bindings) and must seed the next call; only the flush
|
|
192
|
+
* after the last page finalizes it. Completed rows hash exactly like the
|
|
193
|
+
* full-load grouping, in global entity order.
|
|
194
|
+
*/
|
|
195
|
+
export declare function assembleCleanupCanonicalChunk(rows: readonly CleanupCanonicalSqlShape[], carry: PartialCleanupCanonical | undefined): CleanupCanonicalChunkResult;
|
|
196
|
+
/** Finalizes the trailing entity's canonical rows after the last page. */
|
|
197
|
+
export declare function flushCleanupCanonicalCarry(carry: PartialCleanupCanonical | undefined): readonly CleanupCanonicalRow[];
|
|
198
|
+
/** Snapshot rows grouped by anchor for the chunked cleanup scan. */
|
|
199
|
+
export interface CleanupSnapshotIndex {
|
|
200
|
+
readonly groupsByAnchor: ReadonlyMap<string, readonly CleanupRow[]>;
|
|
201
|
+
readonly duplicateAnchors: ReadonlySet<string>;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Groups decoded snapshot rows by anchor once per scan. The maps hold
|
|
205
|
+
* references to the decoded rows; no snapshot data is copied.
|
|
206
|
+
*/
|
|
207
|
+
export declare function buildCleanupSnapshotIndex(rows: readonly CleanupRow[]): CleanupSnapshotIndex;
|
|
208
|
+
/** Streaming evidence for one cleanup scan: small maps plus drifted rewrites. */
|
|
209
|
+
export interface CleanupStreamEvidence {
|
|
210
|
+
readonly bindingsByAnchor: ReadonlyMap<string, CleanupBinding>;
|
|
211
|
+
readonly candidateHashes: ReadonlyMap<string, string>;
|
|
212
|
+
readonly canonicalAnchors: ReadonlySet<string>;
|
|
213
|
+
readonly rewriteByAnchor: ReadonlyMap<string, CleanupTarget>;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Streams binding/canonical/candidate evidence in keyset pages inside the
|
|
217
|
+
* caller's SQL context.
|
|
218
|
+
*
|
|
219
|
+
* Only one page of canonical rows is materialized at a time; completed
|
|
220
|
+
* canonical rows are rewrite-checked against the snapshot index immediately
|
|
221
|
+
* and dropped unless drifted. Retained state is small bindings, candidate
|
|
222
|
+
* hashes, canonical anchor keys, and drifted rewrite targets — never the
|
|
223
|
+
* full canonical table.
|
|
224
|
+
*/
|
|
225
|
+
export declare function readCleanupStreamEvidenceWithSql(sql: SqlExecutor, logicalSheetId: string, physicalSheetId: string, snapshot: CleanupSnapshotIndex): Promise<CleanupStreamEvidence>;
|
|
226
|
+
/**
|
|
227
|
+
* Classifies snapshot rows into correction targets in full-load order.
|
|
228
|
+
*
|
|
229
|
+
* Mirrors `classifyCleanupRows` decision-for-decision (duplicate deletes
|
|
230
|
+
* first in first-seen anchor order, then snapshot row order for rewrites
|
|
231
|
+
* and surplus deletes) while reading rewrites from the streamed evidence:
|
|
232
|
+
* bound non-duplicate anchors resolve through `rewriteByAnchor`, every
|
|
233
|
+
* other row through the binding map. The target sequence is identical to
|
|
234
|
+
* the full-load scan, so repair effect ids stay stable across the switch.
|
|
235
|
+
*/
|
|
236
|
+
export declare function classifyCleanupStreamTargets(rows: readonly CleanupRow[], snapshot: CleanupSnapshotIndex, evidence: CleanupStreamEvidence): readonly CleanupTarget[];
|
|
128
237
|
/**
|
|
129
238
|
* Decodes snapshot rows into cleanup rows.
|
|
130
239
|
*
|
|
@@ -210,4 +319,5 @@ export declare function buildCleanupEffects(context: CleanupEffectContext, sheet
|
|
|
210
319
|
readonly tabName: string;
|
|
211
320
|
readonly registeredRange: string;
|
|
212
321
|
}, targets: readonly CleanupTarget[]): Promise<readonly CleanupPlan[]>;
|
|
322
|
+
export {};
|
|
213
323
|
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAK5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,12 +52,31 @@ import { computeSyncVisibleHash, } from "../../../../contracts/sheets/syncSheets
|
|
|
52
52
|
import { SYNC_PROJECTIONS } from "../../../../contracts/sheets/constants.js";
|
|
53
53
|
import { createCandidateReconcileEffect, createUserInputDeleteEffect, } from "../../../../sync/outbound/projection/ProjectionEffectFactory.js";
|
|
54
54
|
import { normalizedCellIdentity } from "./diff.js";
|
|
55
|
-
import { decodeNormalizedCell } from "./shared.js";
|
|
55
|
+
import { decodeNormalizedCell, RECONCILIATION_SCAN_CHUNK_SIZE, RECONCILIATION_SCAN_ENTITY_PAGE_SIZE, readActiveEntityPageWithSql, readEntityBindingsWithSql, readEntityFieldsWithSql, } from "./shared.js";
|
|
56
56
|
const READ_CLEANUP_BINDINGS_SQL = `
|
|
57
57
|
SELECT row_binding_id, anchor_reference, state
|
|
58
58
|
FROM row_binding
|
|
59
59
|
WHERE logical_sheet_id = ?
|
|
60
60
|
`;
|
|
61
|
+
/**
|
|
62
|
+
* One keyset page of row bindings in `row_binding_id` order. The
|
|
63
|
+
* `(logical_sheet_id, row_binding_id)` covering index (`row_binding_scan_idx`)
|
|
64
|
+
* serves each page as a bounded index range scan with no temp-b-tree sort.
|
|
65
|
+
*/
|
|
66
|
+
const READ_CLEANUP_BINDINGS_PAGE_SQL = `
|
|
67
|
+
SELECT row_binding_id, anchor_reference, state
|
|
68
|
+
FROM row_binding
|
|
69
|
+
WHERE logical_sheet_id = ? AND row_binding_id > ?
|
|
70
|
+
ORDER BY row_binding_id
|
|
71
|
+
LIMIT ?
|
|
72
|
+
`;
|
|
73
|
+
const READ_CLEANUP_BINDINGS_FIRST_PAGE_SQL = `
|
|
74
|
+
SELECT row_binding_id, anchor_reference, state
|
|
75
|
+
FROM row_binding
|
|
76
|
+
WHERE logical_sheet_id = ?
|
|
77
|
+
ORDER BY row_binding_id
|
|
78
|
+
LIMIT ?
|
|
79
|
+
`;
|
|
61
80
|
/**
|
|
62
81
|
* Canonical user-owned projection values for every active binding with an
|
|
63
82
|
* entity. The anchor_reference is the User_Input row-id anchor of the bound
|
|
@@ -82,6 +101,14 @@ const READ_CLEANUP_CANONICAL_SQL = `
|
|
|
82
101
|
WHERE entity.status = 'active'
|
|
83
102
|
ORDER BY entity.entity_id, field.field_name
|
|
84
103
|
`;
|
|
104
|
+
/**
|
|
105
|
+
* Whole-entity canonical pages are assembled from the storage-owned
|
|
106
|
+
* entity-batch primitives (same bounded access path as the desired-state
|
|
107
|
+
* pages: PK-ordered entities, PK-prefix fields, covering binding seeks).
|
|
108
|
+
* A flat cross-table keyset cannot page here: duplicate `(entity, field)`
|
|
109
|
+
* keys across several active bindings of one entity would be skipped by a
|
|
110
|
+
* `(entity_id, field_name)` cursor, silently dropping a binding's fields.
|
|
111
|
+
*/
|
|
85
112
|
/**
|
|
86
113
|
* Stable binding-keyed stream target id shared with flush projections and
|
|
87
114
|
* resolution reconciles. Bound-row cleanup corrections must stream under the
|
|
@@ -163,6 +190,285 @@ export async function readCleanupEvidenceWithSql(sql, logicalSheetId, physicalSh
|
|
|
163
190
|
export async function readCleanupEvidence(storage, logicalSheetId, physicalSheetId) {
|
|
164
191
|
return storage.read(({ sql }) => readCleanupEvidenceWithSql(sql, logicalSheetId, physicalSheetId));
|
|
165
192
|
}
|
|
193
|
+
/** Reads one bounded page of row bindings in `row_binding_id` order. */
|
|
194
|
+
export function readCleanupBindingsChunkWithSql(sql, logicalSheetId, after, limit = RECONCILIATION_SCAN_CHUNK_SIZE) {
|
|
195
|
+
const query = after === undefined
|
|
196
|
+
? READ_CLEANUP_BINDINGS_FIRST_PAGE_SQL
|
|
197
|
+
: READ_CLEANUP_BINDINGS_PAGE_SQL;
|
|
198
|
+
const parameters = after === undefined
|
|
199
|
+
? [logicalSheetId, limit]
|
|
200
|
+
: [logicalSheetId, after.rowBindingId, limit];
|
|
201
|
+
return sql.all(query, [...parameters]).then((rows) => rows.map((row) => ({
|
|
202
|
+
rowBindingId: row.row_binding_id,
|
|
203
|
+
anchorReference: row.anchor_reference,
|
|
204
|
+
state: row.state,
|
|
205
|
+
})));
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Reads one bounded chunk of whole entities as flat canonical user-owned
|
|
209
|
+
* rows, in global entity order. Pass no cursor for the first chunk, then
|
|
210
|
+
* `{ entityId }` of the last entity paged; an empty chunk (or
|
|
211
|
+
* `entityCount < limit`) ends the scan. Only `limit` entities are ever
|
|
212
|
+
* materialized per call. Multi-binding entities emit one row per
|
|
213
|
+
* (binding, field) with the smallest `row_binding_id` first, so no
|
|
214
|
+
* binding's fields can be skipped across chunks by construction.
|
|
215
|
+
*/
|
|
216
|
+
export async function readCleanupCanonicalChunkWithSql(sql, logicalSheetId, after, limit = RECONCILIATION_SCAN_ENTITY_PAGE_SIZE) {
|
|
217
|
+
const entities = await readActiveEntityPageWithSql(sql, after?.entityId, limit);
|
|
218
|
+
const rows = [];
|
|
219
|
+
for (const entity of entities) {
|
|
220
|
+
const [bindings, fields] = await Promise.all([
|
|
221
|
+
readEntityBindingsWithSql(sql, logicalSheetId, entity.entityId),
|
|
222
|
+
readEntityFieldsWithSql(sql, entity.entityId, "user"),
|
|
223
|
+
]);
|
|
224
|
+
for (const binding of bindings) {
|
|
225
|
+
for (const field of fields) {
|
|
226
|
+
rows.push({
|
|
227
|
+
entity_id: entity.entityId,
|
|
228
|
+
row_binding_id: binding.rowBindingId,
|
|
229
|
+
anchor_reference: binding.anchorReference,
|
|
230
|
+
field_name: field.fieldName,
|
|
231
|
+
normalized_value: field.normalizedValue,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
const lastEntity = entities[entities.length - 1];
|
|
237
|
+
return {
|
|
238
|
+
rows,
|
|
239
|
+
entityCount: entities.length,
|
|
240
|
+
lastEntityId: lastEntity === undefined ? undefined : lastEntity.entityId,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Groups one ordered page of canonical rows into completed canonical rows.
|
|
245
|
+
*
|
|
246
|
+
* A page may split an entity's fields across the boundary, and several
|
|
247
|
+
* bindings may share one entity, so the trailing entity is returned as
|
|
248
|
+
* `carry` (all of its bindings) and must seed the next call; only the flush
|
|
249
|
+
* after the last page finalizes it. Completed rows hash exactly like the
|
|
250
|
+
* full-load grouping, in global entity order.
|
|
251
|
+
*/
|
|
252
|
+
export function assembleCleanupCanonicalChunk(rows, carry) {
|
|
253
|
+
const completed = [];
|
|
254
|
+
let currentEntityId = carry?.entityId;
|
|
255
|
+
let current = new Map(carry?.partials);
|
|
256
|
+
const finalizeCurrent = () => {
|
|
257
|
+
for (const partial of current.values()) {
|
|
258
|
+
completed.push(toCleanupCanonicalRow(partial));
|
|
259
|
+
}
|
|
260
|
+
current = new Map();
|
|
261
|
+
currentEntityId = undefined;
|
|
262
|
+
};
|
|
263
|
+
for (const row of rows) {
|
|
264
|
+
if (currentEntityId !== undefined && currentEntityId !== row.entity_id) {
|
|
265
|
+
finalizeCurrent();
|
|
266
|
+
}
|
|
267
|
+
currentEntityId = row.entity_id;
|
|
268
|
+
const existing = current.get(row.row_binding_id);
|
|
269
|
+
if (existing === undefined) {
|
|
270
|
+
current.set(row.row_binding_id, {
|
|
271
|
+
entityId: row.entity_id,
|
|
272
|
+
rowBindingId: row.row_binding_id,
|
|
273
|
+
anchorReference: row.anchor_reference,
|
|
274
|
+
fields: { [row.field_name]: decodeNormalizedCell(row.normalized_value) },
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
existing.fields[row.field_name] = decodeNormalizedCell(row.normalized_value);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return {
|
|
282
|
+
completed,
|
|
283
|
+
carry: currentEntityId === undefined ? undefined : {
|
|
284
|
+
entityId: currentEntityId,
|
|
285
|
+
partials: current,
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/** Finalizes the trailing entity's canonical rows after the last page. */
|
|
290
|
+
export function flushCleanupCanonicalCarry(carry) {
|
|
291
|
+
if (carry === undefined)
|
|
292
|
+
return [];
|
|
293
|
+
return [...carry.partials.values()].map(toCleanupCanonicalRow);
|
|
294
|
+
}
|
|
295
|
+
function toCleanupCanonicalRow(partial) {
|
|
296
|
+
return {
|
|
297
|
+
entityId: partial.entityId,
|
|
298
|
+
rowBindingId: partial.rowBindingId,
|
|
299
|
+
anchorReference: partial.anchorReference,
|
|
300
|
+
fields: partial.fields,
|
|
301
|
+
fieldRevisionHash: computeSyncVisibleHash(partial.fields),
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Groups decoded snapshot rows by anchor once per scan. The maps hold
|
|
306
|
+
* references to the decoded rows; no snapshot data is copied.
|
|
307
|
+
*/
|
|
308
|
+
export function buildCleanupSnapshotIndex(rows) {
|
|
309
|
+
const groupsByAnchor = new Map();
|
|
310
|
+
for (const row of rows) {
|
|
311
|
+
if (row.anchor === null)
|
|
312
|
+
continue;
|
|
313
|
+
const group = groupsByAnchor.get(row.anchor) ?? [];
|
|
314
|
+
group.push(row);
|
|
315
|
+
groupsByAnchor.set(row.anchor, group);
|
|
316
|
+
}
|
|
317
|
+
const duplicateAnchors = new Set();
|
|
318
|
+
for (const [anchor, group] of groupsByAnchor) {
|
|
319
|
+
if (group.length > 1)
|
|
320
|
+
duplicateAnchors.add(anchor);
|
|
321
|
+
}
|
|
322
|
+
return { groupsByAnchor, duplicateAnchors };
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Streams binding/canonical/candidate evidence in keyset pages inside the
|
|
326
|
+
* caller's SQL context.
|
|
327
|
+
*
|
|
328
|
+
* Only one page of canonical rows is materialized at a time; completed
|
|
329
|
+
* canonical rows are rewrite-checked against the snapshot index immediately
|
|
330
|
+
* and dropped unless drifted. Retained state is small bindings, candidate
|
|
331
|
+
* hashes, canonical anchor keys, and drifted rewrite targets — never the
|
|
332
|
+
* full canonical table.
|
|
333
|
+
*/
|
|
334
|
+
export async function readCleanupStreamEvidenceWithSql(sql, logicalSheetId, physicalSheetId, snapshot) {
|
|
335
|
+
const candidateRows = await sql.all(READ_CLEANUP_CANDIDATE_HASHES_SQL, [physicalSheetId]);
|
|
336
|
+
const candidateHashes = new Map(candidateRows.map((row) => [
|
|
337
|
+
row.row_binding_id,
|
|
338
|
+
row.active_candidate_hash,
|
|
339
|
+
]));
|
|
340
|
+
const bindingsByAnchor = new Map();
|
|
341
|
+
let bindingsAfter;
|
|
342
|
+
for (;;) {
|
|
343
|
+
const page = await readCleanupBindingsChunkWithSql(sql, logicalSheetId, bindingsAfter);
|
|
344
|
+
if (page.length === 0)
|
|
345
|
+
break;
|
|
346
|
+
for (const binding of page)
|
|
347
|
+
bindingsByAnchor.set(binding.anchorReference, binding);
|
|
348
|
+
const last = page[page.length - 1];
|
|
349
|
+
if (last === undefined)
|
|
350
|
+
break;
|
|
351
|
+
bindingsAfter = { rowBindingId: last.rowBindingId };
|
|
352
|
+
if (page.length < RECONCILIATION_SCAN_CHUNK_SIZE)
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
355
|
+
const canonicalAnchors = new Set();
|
|
356
|
+
const rewriteByAnchor = new Map();
|
|
357
|
+
let canonicalAfter;
|
|
358
|
+
let carry;
|
|
359
|
+
for (;;) {
|
|
360
|
+
const chunk = await readCleanupCanonicalChunkWithSql(sql, logicalSheetId, canonicalAfter);
|
|
361
|
+
// Whole-entity chunks: the cursor is the last entity paged, including
|
|
362
|
+
// binding-less ones that emit no rows, so no entity's rows can be
|
|
363
|
+
// skipped or repeated across chunks.
|
|
364
|
+
if (chunk.entityCount === 0 || chunk.lastEntityId === undefined)
|
|
365
|
+
break;
|
|
366
|
+
canonicalAfter = { entityId: chunk.lastEntityId };
|
|
367
|
+
const assembled = assembleCleanupCanonicalChunk(chunk.rows, carry);
|
|
368
|
+
carry = assembled.carry;
|
|
369
|
+
for (const canonical of assembled.completed) {
|
|
370
|
+
canonicalAnchors.add(canonical.anchorReference);
|
|
371
|
+
const rewrite = classifyCleanupRewrite(canonical, snapshot, candidateHashes);
|
|
372
|
+
if (rewrite !== undefined)
|
|
373
|
+
rewriteByAnchor.set(canonical.anchorReference, rewrite);
|
|
374
|
+
}
|
|
375
|
+
if (chunk.entityCount < RECONCILIATION_SCAN_ENTITY_PAGE_SIZE)
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
for (const canonical of flushCleanupCanonicalCarry(carry)) {
|
|
379
|
+
canonicalAnchors.add(canonical.anchorReference);
|
|
380
|
+
const rewrite = classifyCleanupRewrite(canonical, snapshot, candidateHashes);
|
|
381
|
+
if (rewrite !== undefined)
|
|
382
|
+
rewriteByAnchor.set(canonical.anchorReference, rewrite);
|
|
383
|
+
}
|
|
384
|
+
return { bindingsByAnchor, candidateHashes, canonicalAnchors, rewriteByAnchor };
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Rewrite-checks one completed canonical row against its snapshot group.
|
|
388
|
+
*
|
|
389
|
+
* Mirrors the bound-row branch of `classifyCleanupRows`: duplicated-anchor
|
|
390
|
+
* groups defer (their delete is planned by the surplus pass), candidate-
|
|
391
|
+
* protected bindings converge through resolution, field-less canonical rows
|
|
392
|
+
* belong to the lifecycle pipeline, and matching rows are idempotent.
|
|
393
|
+
* Returns the rewrite target only for a drifted, plannable row.
|
|
394
|
+
*/
|
|
395
|
+
function classifyCleanupRewrite(canonical, snapshot, candidateHashes) {
|
|
396
|
+
if (snapshot.duplicateAnchors.has(canonical.anchorReference))
|
|
397
|
+
return undefined;
|
|
398
|
+
if (Object.keys(canonical.fields).length === 0)
|
|
399
|
+
return undefined;
|
|
400
|
+
if (candidateHashes.has(canonical.rowBindingId))
|
|
401
|
+
return undefined;
|
|
402
|
+
const group = snapshot.groupsByAnchor.get(canonical.anchorReference);
|
|
403
|
+
const row = group?.[0];
|
|
404
|
+
if (row === undefined)
|
|
405
|
+
return undefined;
|
|
406
|
+
if (observedCanonicalHash(row, canonical.fields) === canonical.fieldRevisionHash) {
|
|
407
|
+
return undefined;
|
|
408
|
+
}
|
|
409
|
+
return {
|
|
410
|
+
kind: "rewrite",
|
|
411
|
+
row,
|
|
412
|
+
canonicalFields: canonical.fields,
|
|
413
|
+
rowBindingId: canonical.rowBindingId,
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Classifies snapshot rows into correction targets in full-load order.
|
|
418
|
+
*
|
|
419
|
+
* Mirrors `classifyCleanupRows` decision-for-decision (duplicate deletes
|
|
420
|
+
* first in first-seen anchor order, then snapshot row order for rewrites
|
|
421
|
+
* and surplus deletes) while reading rewrites from the streamed evidence:
|
|
422
|
+
* bound non-duplicate anchors resolve through `rewriteByAnchor`, every
|
|
423
|
+
* other row through the binding map. The target sequence is identical to
|
|
424
|
+
* the full-load scan, so repair effect ids stay stable across the switch.
|
|
425
|
+
*/
|
|
426
|
+
export function classifyCleanupStreamTargets(rows, snapshot, evidence) {
|
|
427
|
+
const targets = [];
|
|
428
|
+
const handled = new Set();
|
|
429
|
+
for (const [anchor, group] of snapshot.groupsByAnchor) {
|
|
430
|
+
if (group.length < 2)
|
|
431
|
+
continue;
|
|
432
|
+
const resolvable = lowestRow(group);
|
|
433
|
+
const binding = evidence.bindingsByAnchor.get(anchor);
|
|
434
|
+
if (binding !== undefined && evidence.candidateHashes.has(binding.rowBindingId)) {
|
|
435
|
+
for (const row of group)
|
|
436
|
+
handled.add(row.rowNumber);
|
|
437
|
+
continue;
|
|
438
|
+
}
|
|
439
|
+
targets.push({
|
|
440
|
+
kind: "duplicate",
|
|
441
|
+
row: resolvable,
|
|
442
|
+
...(binding === undefined ? {} : { rowBindingId: binding.rowBindingId }),
|
|
443
|
+
});
|
|
444
|
+
for (const row of group)
|
|
445
|
+
handled.add(row.rowNumber);
|
|
446
|
+
}
|
|
447
|
+
for (const row of rows) {
|
|
448
|
+
if (row.anchor === null || handled.has(row.rowNumber))
|
|
449
|
+
continue;
|
|
450
|
+
if (evidence.canonicalAnchors.has(row.anchor)) {
|
|
451
|
+
const rewrite = evidence.rewriteByAnchor.get(row.anchor);
|
|
452
|
+
if (rewrite !== undefined)
|
|
453
|
+
targets.push(rewrite);
|
|
454
|
+
continue;
|
|
455
|
+
}
|
|
456
|
+
const binding = evidence.bindingsByAnchor.get(row.anchor);
|
|
457
|
+
if (binding !== undefined) {
|
|
458
|
+
if (binding.state === "candidate" &&
|
|
459
|
+
row.identity === undefined &&
|
|
460
|
+
!evidence.candidateHashes.has(binding.rowBindingId)) {
|
|
461
|
+
targets.push({ kind: "empty_id", row, rowBindingId: binding.rowBindingId });
|
|
462
|
+
}
|
|
463
|
+
continue;
|
|
464
|
+
}
|
|
465
|
+
targets.push({
|
|
466
|
+
kind: row.identity === undefined ? "empty_id" : "extra",
|
|
467
|
+
row,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
return targets;
|
|
471
|
+
}
|
|
166
472
|
function groupCanonicalRows(rows) {
|
|
167
473
|
const byBinding = new Map();
|
|
168
474
|
for (const row of rows) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,39 @@ export interface DriftTarget {
|
|
|
23
23
|
*/
|
|
24
24
|
readonly observed: SyncSnapshotRow | undefined;
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Anchor + business-key indices shared by drift detection and matching.
|
|
28
|
+
*
|
|
29
|
+
* Built once per scan from the snapshot and reused for every desired chunk,
|
|
30
|
+
* so the snapshot side is indexed in a single Map pass instead of rebuilt
|
|
31
|
+
* per chunk. The maps hold references to the snapshot's rows; no snapshot
|
|
32
|
+
* data is copied.
|
|
33
|
+
*/
|
|
34
|
+
export interface ObservedRowIndex {
|
|
35
|
+
readonly rowsByAnchor: ReadonlyMap<string, SyncSnapshotRow>;
|
|
36
|
+
readonly ambiguousAnchors: ReadonlySet<string>;
|
|
37
|
+
readonly rowsByIdentity: ReadonlyMap<string, SyncSnapshotRow>;
|
|
38
|
+
readonly ambiguousIdentities: ReadonlySet<string>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Builds the deduplicated anchor/identity index for one snapshot.
|
|
42
|
+
*
|
|
43
|
+
* A duplicated physical anchor or business key is an anomaly, never a row
|
|
44
|
+
* choice: the affected locators are dropped from the index so neither the
|
|
45
|
+
* drift classifier nor the failed-head matcher can silently pick one row.
|
|
46
|
+
*/
|
|
47
|
+
export declare function buildObservedRowIndex(snapshot: SyncSheetsSnapshot, businessKeyField: string): ObservedRowIndex;
|
|
48
|
+
/**
|
|
49
|
+
* Resolves the observed snapshot row owned by one desired row.
|
|
50
|
+
*
|
|
51
|
+
* The primary locator's ambiguity is fatal: when the desired anchor is
|
|
52
|
+
* duplicated, identity fallback would silently pick one of the rows that the
|
|
53
|
+
* corrupted anchor cannot distinguish, so the binding stays unmatched. The
|
|
54
|
+
* same quarantine applies when the desired identity appears in the snapshot's
|
|
55
|
+
* duplicate set. Returns undefined when no row can prove ownership of this
|
|
56
|
+
* binding.
|
|
57
|
+
*/
|
|
58
|
+
export declare function resolveObservedRow(index: ObservedRowIndex, desiredRow: DesiredRow, businessKeyField: string): SyncSnapshotRow | undefined;
|
|
26
59
|
export declare function computeDrifts(args: {
|
|
27
60
|
readonly snapshot: SyncSheetsSnapshot;
|
|
28
61
|
readonly desired: readonly DesiredRow[];
|
|
@@ -33,15 +66,17 @@ export declare function computeDrifts(args: {
|
|
|
33
66
|
};
|
|
34
67
|
}): readonly DriftTarget[];
|
|
35
68
|
/**
|
|
36
|
-
*
|
|
69
|
+
* Classifies one chunk of desired rows against a prebuilt snapshot index.
|
|
37
70
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
71
|
+
* The chunked scan calls this per completed entity batch with the scan-wide
|
|
72
|
+
* index; results concatenate in chunk order, which is the global
|
|
73
|
+
* `(entity_id, field_name)` order, so chunked classification is identical to
|
|
74
|
+
* one full-load `computeDrifts` call. Returns only drift targets; matched
|
|
75
|
+
* rows are simply absent (the scan counts them as scanned-minus-missing).
|
|
43
76
|
*/
|
|
44
|
-
export declare function
|
|
77
|
+
export declare function classifyDesiredChunk(index: ObservedRowIndex, desired: readonly DesiredRow[], systemFields: readonly string[], businessKeyField: string): readonly DriftTarget[];
|
|
78
|
+
/** Classifies one desired row: missing, drifted, or matched (undefined). */
|
|
79
|
+
export declare function classifyDesiredRow(index: ObservedRowIndex, desiredRow: DesiredRow, systemFields: readonly string[], businessKeyField: string): DriftTarget | undefined;
|
|
45
80
|
/** Reads a business-key value from a snapshot row for unanchored fast appends. */
|
|
46
81
|
export declare function snapshotIdentity(row: SyncSheetsSnapshot["rows"][number], identityField: string): string | undefined;
|
|
47
82
|
/** Reads the same visible business-key value from canonical desired state. */
|
|
@@ -50,4 +85,13 @@ export declare function normalizedCellIdentity(cell: NormalizedCell | undefined)
|
|
|
50
85
|
export declare function computeObservedHash(row: SyncSheetsSnapshot["rows"][number], systemFields: readonly string[]): string;
|
|
51
86
|
export declare function countMatchedRows(snapshot: SyncSheetsSnapshot, desired: readonly DesiredRow[], identityField: string): number;
|
|
52
87
|
export declare function countExtraRows(snapshot: SyncSheetsSnapshot, desired: readonly DesiredRow[], identityField: string): number;
|
|
88
|
+
/**
|
|
89
|
+
* Counts surplus snapshot rows from pre-accumulated desired keys.
|
|
90
|
+
*
|
|
91
|
+
* The chunked scan feeds one chunk at a time into `desiredAnchors` (first
|
|
92
|
+
* row wins per anchor) and `desiredIdentities`, then calls this once: the
|
|
93
|
+
* count is identical to `countExtraRows` while only small key strings are
|
|
94
|
+
* retained instead of full desired rows.
|
|
95
|
+
*/
|
|
96
|
+
export declare function countExtraRowsForKeys(snapshot: SyncSheetsSnapshot, identityField: string, desiredAnchors: ReadonlyMap<string, string | undefined>, desiredIdentities: ReadonlySet<string>): number;
|
|
53
97
|
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAG5E,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;CAChD;
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAG5E,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;CAChD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9D,QAAQ,CAAC,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,EAC5B,gBAAgB,EAAE,MAAM,GACvB,gBAAgB,CA2BlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,MAAM,GACvB,eAAe,GAAG,SAAS,CAa7B;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CACzF,GAAG,SAAS,WAAW,EAAE,CAGzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,gBAAgB,EAAE,MAAM,GACvB,SAAS,WAAW,EAAE,CAOxB;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,gBAAgB,EAAE,MAAM,GACvB,WAAW,GAAG,SAAS,CAWzB;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EACvC,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS,CAEpB;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE7F;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAY3F;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,MAAM,CAOR;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,aAAa,EAAE,MAAM,GACpB,MAAM,CAqCR;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,aAAa,EAAE,MAAM,GACpB,MAAM,CAaR;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,EAC5B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvD,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,MAAM,CAwCR"}
|