@ifc-lite/cli 0.28.0 → 0.29.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/commands/analyze.d.ts.map +1 -1
  2. package/dist/commands/analyze.js +9 -2
  3. package/dist/commands/analyze.js.map +1 -1
  4. package/dist/commands/bcf.js +1 -1
  5. package/dist/commands/bcf.js.map +1 -1
  6. package/dist/commands/diff-test-helpers.d.ts +7 -4
  7. package/dist/commands/diff-test-helpers.d.ts.map +1 -1
  8. package/dist/commands/diff-test-helpers.js +7 -4
  9. package/dist/commands/diff-test-helpers.js.map +1 -1
  10. package/dist/commands/export-rust-formats.d.ts +11 -0
  11. package/dist/commands/export-rust-formats.d.ts.map +1 -0
  12. package/dist/commands/export-rust-formats.js +185 -0
  13. package/dist/commands/export-rust-formats.js.map +1 -0
  14. package/dist/commands/export.d.ts +9 -0
  15. package/dist/commands/export.d.ts.map +1 -1
  16. package/dist/commands/export.js +36 -148
  17. package/dist/commands/export.js.map +1 -1
  18. package/dist/commands/extract-entities.d.ts +23 -18
  19. package/dist/commands/extract-entities.d.ts.map +1 -1
  20. package/dist/commands/extract-entities.js +86 -133
  21. package/dist/commands/extract-entities.js.map +1 -1
  22. package/dist/commands/info.d.ts.map +1 -1
  23. package/dist/commands/info.js +56 -0
  24. package/dist/commands/info.js.map +1 -1
  25. package/dist/commands/mutate-step-record.d.ts +33 -0
  26. package/dist/commands/mutate-step-record.d.ts.map +1 -0
  27. package/dist/commands/mutate-step-record.js +267 -0
  28. package/dist/commands/mutate-step-record.js.map +1 -0
  29. package/dist/commands/mutate.d.ts +2 -13
  30. package/dist/commands/mutate.d.ts.map +1 -1
  31. package/dist/commands/mutate.js +4 -105
  32. package/dist/commands/mutate.js.map +1 -1
  33. package/dist/commands/query-output.d.ts.map +1 -1
  34. package/dist/commands/query-output.js +33 -6
  35. package/dist/commands/query-output.js.map +1 -1
  36. package/dist/commands/spatial-ancestors.d.ts +26 -0
  37. package/dist/commands/spatial-ancestors.d.ts.map +1 -0
  38. package/dist/commands/spatial-ancestors.js +102 -0
  39. package/dist/commands/spatial-ancestors.js.map +1 -0
  40. package/dist/commands/step-args.d.ts +140 -0
  41. package/dist/commands/step-args.d.ts.map +1 -0
  42. package/dist/commands/step-args.js +333 -0
  43. package/dist/commands/step-args.js.map +1 -0
  44. package/dist/commands/storey-selection.d.ts +6 -0
  45. package/dist/commands/storey-selection.d.ts.map +1 -0
  46. package/dist/commands/storey-selection.js +90 -0
  47. package/dist/commands/storey-selection.js.map +1 -0
  48. package/dist/commands/subset-relations.d.ts +201 -0
  49. package/dist/commands/subset-relations.d.ts.map +1 -0
  50. package/dist/commands/subset-relations.js +277 -0
  51. package/dist/commands/subset-relations.js.map +1 -0
  52. package/dist/commands/where-filter.d.ts +1 -0
  53. package/dist/commands/where-filter.d.ts.map +1 -1
  54. package/dist/commands/where-filter.js +7 -3
  55. package/dist/commands/where-filter.js.map +1 -1
  56. package/dist/index.js +1 -1
  57. package/package.json +19 -19
@@ -13,9 +13,13 @@
13
13
  * --detect [--top N] the N meshes a geometry-triage pass ranks most unusual
14
14
  *
15
15
  * The output carries each selected product's full forward reference closure PLUS
16
- * the shared context roots (IfcProject, unit assignment, geometric contexts, the
17
- * spatial site/building/storey skeleton) and every spatial-containment relation
18
- * whose members are all kept so the result parses and renders on its own.
16
+ * the shared context roots (IfcProject, unit assignment, geometric contexts, and
17
+ * the backward closure of the selection's spatial ancestors — only the
18
+ * site/building/storey/space chain actually reached by what was selected, not
19
+ * every spatial-structure instance in the model, see `spatial-ancestors.ts`) and
20
+ * every spatial-structure relation, its related-objects SET rewritten down to
21
+ * the kept members (see `subset-relations.ts`) — so the result parses and
22
+ * renders on its own.
19
23
  *
20
24
  * `--detect --report [--json]` prints the triage report WITHOUT extracting. The
21
25
  * report separates HARD defects (non-finite or |coord|>1e4 vertices after the
@@ -28,6 +32,9 @@ import { readFile, writeFile } from 'node:fs/promises';
28
32
  import { basename } from 'node:path';
29
33
  import { fatal, getFlag, getAllFlags, hasFlag } from '../output.js';
30
34
  import { logger } from '../logger.js';
35
+ import { planSpatialRelations, refsOutsideStrings } from './subset-relations.js';
36
+ import { spatialAncestors } from './spatial-ancestors.js';
37
+ import { productsUnderPlacement, resolveStoreyPlacement } from './storey-selection.js';
31
38
  /**
32
39
  * String-aware STEP DATA tokenizer. Splits the data section into instances at
33
40
  * the `;` that terminates each `#id = TYPE(...)`, ignoring `;`/`#`/`(` inside
@@ -140,121 +147,58 @@ export function resolveToId(token, parsed) {
140
147
  throw new Error(`GlobalId not found in model: ${t}`);
141
148
  return id;
142
149
  }
150
+ // Used only by the voids/fills fixpoint below — a narrower, TYPE-POSITIONAL
151
+ // read (last N refs of a known relation shape) than forwardClosure's
152
+ // open-ended scan. `productsUnderPlacement`/`resolveStoreyPlacement` used
153
+ // this too, until free text tripped it; see `refsOutsideStrings` there, #4148.
143
154
  const REF_RE = /#(\d+)/g;
144
- /** Forward reference closure: every instance transitively referenced by `seeds`. */
155
+ /**
156
+ * Forward reference closure: every instance transitively referenced by
157
+ * `seeds`.
158
+ *
159
+ * Uses `refsOutsideStrings`, not a raw `/#(\d+)/g` scan, because a record's
160
+ * Name/Description is free TEXT and Revit writes `#`-shaped substrings into
161
+ * it (`'Chair pairs with #71'`). A raw regex reads that as a reference to
162
+ * entity 71 and pulls it — and its own closure — into the extraction even
163
+ * though it was never selected. See #4148.
164
+ *
165
+ * An id NAMED but never DEFINED is not added, or a rewritten SET would emit
166
+ * it as a dangling `#id` (#4128).
167
+ */
145
168
  export function forwardClosure(seeds, parsed, into) {
146
169
  const stack = [...seeds];
147
170
  while (stack.length) {
148
171
  const id = stack.pop();
149
172
  if (into.has(id))
150
173
  continue;
151
- into.add(id);
152
174
  const rec = parsed.instances.get(id);
153
175
  if (!rec)
154
176
  continue;
155
- REF_RE.lastIndex = 0;
156
- let m;
157
- while ((m = REF_RE.exec(rec.body)) !== null) {
158
- const ref = parseInt(m[1], 10);
177
+ into.add(id);
178
+ for (const ref of refsOutsideStrings(rec.body)) {
159
179
  if (!into.has(ref))
160
180
  stack.push(ref);
161
181
  }
162
182
  }
163
183
  }
164
- /** Map each IfcLocalPlacement to its parent placement (or null when top-level). */
165
- function placementParents(parsed) {
166
- const parents = new Map();
167
- for (const inst of parsed.instances.values()) {
168
- if (inst.type !== 'IFCLOCALPLACEMENT')
169
- continue;
170
- const pm = /^\s*(#\d+|\$)/.exec(inst.body);
171
- parents.set(inst.id, pm && pm[1].startsWith('#') ? parseInt(pm[1].slice(1), 10) : null);
172
- }
173
- return parents;
174
- }
175
- /** Every product whose ObjectPlacement chains up through `storeyPlacementId`. */
176
- function productsUnderPlacement(storeyPlacementId, parsed) {
177
- const parents = placementParents(parsed);
178
- const under = new Set();
179
- for (const pid of parents.keys()) {
180
- let cur = pid;
181
- let guard = 0;
182
- while (cur != null && guard++ < 128) {
183
- if (cur === storeyPlacementId) {
184
- under.add(pid);
185
- break;
186
- }
187
- cur = parents.get(cur) ?? null;
188
- }
189
- }
190
- // Products referencing a selected placement.
191
- const seeds = new Set();
192
- for (const inst of parsed.instances.values()) {
193
- REF_RE.lastIndex = 0;
194
- let m;
195
- while ((m = REF_RE.exec(inst.body)) !== null) {
196
- if (under.has(parseInt(m[1], 10))) {
197
- seeds.add(inst.id);
198
- break;
199
- }
200
- }
201
- }
202
- return seeds;
203
- }
204
- /** Resolve a --storey selector (GUID / name / expressId) to its placement id. */
205
- function resolveStoreyPlacement(token, parsed) {
206
- let storeyId;
207
- const t = token.trim();
208
- if (/^#?\d+$/.test(t)) {
209
- storeyId = parseInt(t.replace('#', ''), 10);
210
- }
211
- else if (parsed.guidToId.has(t)) {
212
- storeyId = parsed.guidToId.get(t);
213
- }
214
- else {
215
- // match by name (2nd-to-last-ish quoted arg); scan storeys for a Name match
216
- for (const inst of parsed.instances.values()) {
217
- if (inst.type !== 'IFCBUILDINGSTOREY')
218
- continue;
219
- if (inst.body.includes(`'${t}'`)) {
220
- storeyId = inst.id;
221
- break;
222
- }
223
- }
224
- }
225
- if (storeyId === undefined)
226
- throw new Error(`Storey not found: ${token}`);
227
- const storey = parsed.instances.get(storeyId);
228
- if (!storey || storey.type !== 'IFCBUILDINGSTOREY') {
229
- throw new Error(`#${storeyId} is ${storey?.type ?? 'missing'}, not an IfcBuildingStorey`);
230
- }
231
- // IfcBuildingStorey ObjectPlacement is attribute 6 (after Guid, Owner, Name,
232
- // Description, ObjectType) — the last #ref before LongName/Elevation. Grab the
233
- // placement ref: the storey references exactly one IfcLocalPlacement.
234
- const refs = [...storey.body.matchAll(REF_RE)].map((m) => parseInt(m[1], 10));
235
- const placementId = refs.find((r) => parsed.instances.get(r)?.type === 'IFCLOCALPLACEMENT');
236
- if (placementId === undefined)
237
- throw new Error(`Storey #${storeyId} has no IfcLocalPlacement`);
238
- return placementId;
239
- }
240
184
  /**
241
- * Assemble the kept-id set: the closure of `seedProducts` + context roots
242
- * (project/units/contexts + spatial skeleton) + spatial-containment relations
243
- * whose every member is kept (so no dangling references).
185
+ * Assemble the subset: the closure of `seedProducts` + context roots
186
+ * (project/units/contexts + the backward closure of spatial ancestors, not
187
+ * the whole skeleton) + spatial-structure relations, each rewritten down to
188
+ * its kept members (so no dangling references).
244
189
  */
245
190
  export function buildSubset(seedProducts, parsed) {
246
191
  const keep = new Set();
247
192
  forwardClosure(seedProducts, parsed, keep);
248
- // Context roots: the project + spatial skeleton, closed forward for units,
249
- // geometric contexts, and placement chains.
250
- const rootSeeds = [];
193
+ // Context roots: IfcProject (always units/contexts hang off it even when
194
+ // nothing selected reaches it) plus every spatial ancestor of what is
195
+ // already kept, closed forward. Backward closure, not a type list, so an
196
+ // unrelated storey/space is never dragged in and a product under an
197
+ // IfcSpace or IFC4X3 facility class keeps its parent too (#4124).
198
+ const rootSeeds = spatialAncestors(keep, parsed.instances);
251
199
  for (const inst of parsed.instances.values()) {
252
- if (inst.type === 'IFCPROJECT' ||
253
- inst.type === 'IFCSITE' ||
254
- inst.type === 'IFCBUILDING' ||
255
- inst.type === 'IFCBUILDINGSTOREY') {
200
+ if (inst.type === 'IFCPROJECT')
256
201
  rootSeeds.push(inst.id);
257
- }
258
202
  }
259
203
  forwardClosure(rootSeeds, parsed, keep);
260
204
  // Opening (void) + filler relations. These point FROM the relation TO the host
@@ -271,45 +215,54 @@ export function buildSubset(seedProducts, parsed) {
271
215
  for (const inst of parsed.instances.values()) {
272
216
  if (keep.has(inst.id))
273
217
  continue;
274
- const refs = [...inst.body.matchAll(REF_RE)].map((m) => parseInt(m[1], 10));
275
- if (inst.type === 'IFCRELVOIDSELEMENT') {
276
- // refs: [OwnerHistory, RelatingBuildingElement, RelatedOpeningElement].
277
- const host = refs[refs.length - 2];
278
- const opening = refs[refs.length - 1];
279
- if (host !== undefined && opening !== undefined && keep.has(host)) {
280
- // Close over the relation itself, not just the opening: the rel's own
281
- // OwnerHistory must be kept too or the subset emits a dangling ref.
282
- forwardClosure([inst.id], parsed, keep);
283
- grew = true;
284
- }
285
- }
286
- else if (inst.type === 'IFCRELFILLSELEMENT') {
287
- // refs: [OwnerHistory, RelatingOpeningElement, RelatedBuildingElement(filler)].
288
- const opening = refs[refs.length - 2];
289
- const filler = refs[refs.length - 1];
290
- if (opening !== undefined && filler !== undefined && keep.has(opening)) {
291
- forwardClosure([inst.id], parsed, keep);
292
- grew = true;
293
- }
294
- }
218
+ if (inst.type !== 'IFCRELVOIDSELEMENT' && inst.type !== 'IFCRELFILLSELEMENT')
219
+ continue;
220
+ // Different meanings, one shape. `Relating` (attribute 5, the second-to-last
221
+ // reference) is the ANCHOR that must be kept already: the host wall for voids, the
222
+ // opening for fills. `Related` (attribute 6) is what the relation drags in, the
223
+ // opening or the filling window/door, and it is not read here because the closure
224
+ // below reaches it anyway.
225
+ const anchor = [...inst.body.matchAll(REF_RE)].map((m) => parseInt(m[1], 10)).at(-2);
226
+ if (anchor === undefined || !keep.has(anchor))
227
+ continue;
228
+ // Close over the relation itself, not just what it drags in: the rel's own
229
+ // OwnerHistory must be kept too or the subset emits a dangling ref.
230
+ forwardClosure([inst.id], parsed, keep);
231
+ grew = true;
295
232
  }
296
233
  }
297
- // Spatial relationships that connect kept products into the tree — but only
298
- // when EVERY referenced element is already kept, else we'd emit dangling refs.
299
- for (const inst of parsed.instances.values()) {
300
- if (inst.type === 'IFCRELCONTAINEDINSPATIALSTRUCTURE' ||
301
- inst.type === 'IFCRELAGGREGATES') {
302
- const refs = [...inst.body.matchAll(REF_RE)].map((m) => parseInt(m[1], 10));
303
- if (refs.length > 0 && refs.every((r) => keep.has(r)))
304
- keep.add(inst.id);
305
- }
234
+ // Spatial relationships that connect kept products into the tree, each
235
+ // relation's member SET filtered down to the kept ids rather than the whole
236
+ // relation being dropped. `subset-relations.ts` owns that rule and the
237
+ // no-dangling-reference invariant it preserves.
238
+ let spatial = planSpatialRelations(parsed.instances.values(), keep);
239
+ // A relation-private IfcOwnerHistory is reachable from nothing else, so the
240
+ // plan drops the relation and reports what blocked it. Close over a dropped
241
+ // relation's blocker group and replan (#4126), but only when EVERY id in the
242
+ // group is a defined IfcOwnerHistory: then the closure keeps all of them and
243
+ // that relation survives round two. A group holding anything else (a phantom
244
+ // id, or a product named in a Name or Description slot, both schema-invalid)
245
+ // leaves its relation dropped whatever is kept, so closing over it would only
246
+ // emit records nothing references and drag unselected products in (#4150).
247
+ // ONE replan, not a `while`: for a SCHEMA-VALID record an IfcOwnerHistory
248
+ // subtree names no product, container or relation, so it blocks nothing new;
249
+ // on invalid input a second round is discarded and the relation stays dropped
250
+ // (never a dangling id).
251
+ const owners = spatial.blockedOn
252
+ .filter((ids) => ids.every((id) => parsed.instances.get(id)?.type === 'IFCOWNERHISTORY'))
253
+ .flat();
254
+ if (owners.length > 0) {
255
+ forwardClosure(owners, parsed, keep);
256
+ spatial = planSpatialRelations(parsed.instances.values(), keep);
306
257
  }
307
- return keep;
258
+ for (const id of spatial.add)
259
+ keep.add(id);
260
+ return { keep, rewritten: spatial.rewritten };
308
261
  }
309
- /** Serialize the kept ids back into a valid STEP file (sorted, header preserved). */
310
- export function serializeSubset(keep, parsed) {
262
+ /** Serialize the subset back into a valid STEP file (sorted, header preserved). */
263
+ export function serializeSubset({ keep, rewritten }, parsed) {
311
264
  const kept = [...keep].filter((id) => parsed.instances.has(id)).sort((a, b) => a - b);
312
- const lines = kept.map((id) => parsed.instances.get(id).full);
265
+ const lines = kept.map((id) => rewritten.get(id) ?? parsed.instances.get(id).full);
313
266
  return parsed.header + lines.join('\n') + '\nENDSEC;\nEND-ISO-10303-21;\n';
314
267
  }
315
268
  /**
@@ -468,10 +421,10 @@ export async function extractEntitiesCommand(args) {
468
421
  fatal('Missing --out <sub.ifc> for extraction (or use --detect --report for a report).');
469
422
  return;
470
423
  }
471
- const keep = buildSubset(seeds, parsed);
472
- const out = serializeSubset(keep, parsed);
424
+ const subset = buildSubset(seeds, parsed);
425
+ const out = serializeSubset(subset, parsed);
473
426
  await writeFile(outPath, out, 'latin1');
474
- process.stdout.write(`Extracted ${seeds.size} product(s) → ${keep.size} instances → ${outPath}\n`);
427
+ process.stdout.write(`Extracted ${seeds.size} product(s) → ${subset.keep.size} instances → ${outPath}\n`);
475
428
  if (hasFlag(args, '--view')) {
476
429
  const { viewCommand } = await import('./view.js');
477
430
  const viewArgs = [outPath];
@@ -1 +1 @@
1
- {"version":3,"file":"extract-entities.js","sourceRoot":"","sources":["../../src/commands/extract-entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract-entities.js","sourceRoot":"","sources":["../../src/commands/extract-entities.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,sEAAsE;AACtE,4DAA4D;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAgC,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AASvF;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,SAAS,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC;IAElB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3C,IAAI,CAAC,GAAG,SAAS,CAAC;IAClB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACb,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAChC,+CAA+C;YAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;gBACjC,CAAC,GAAG,CAAC,CAAC;gBACN,MAAM;YACR,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;QACD,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM;QAClB,MAAM,SAAS,GAAG,CAAC,CAAC;QACpB,CAAC,EAAE,CAAC,CAAC,WAAW;QAChB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG;YAAE,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACrE,IAAI,KAAK,KAAK,EAAE;YAAE,SAAS,CAAC,mCAAmC;QAC/D,kCAAkC;QAClC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;YAAE,CAAC,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,SAAS,CAAC,yCAAyC;QACxE,CAAC,EAAE,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;YAAE,CAAC,EAAE,CAAC;QACnG,YAAY;QACZ,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,sEAAsE;QACtE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,CAAC,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;oBACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;wBAAE,CAAC,EAAE,CAAC,CAAC,gBAAgB;;wBACzC,KAAK,GAAG,KAAK,CAAC;gBACrB,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,GAAG,IAAI,CAAC;iBACxB,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;iBACxB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACpB,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBAChB,CAAC,EAAE,CAAC;oBACJ,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,4BAA4B;QACnD,kDAAkD;QAClD,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,CAAC;QACf,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,iEAAiE;QACjE,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,EAAE;YAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACf,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACzC,CAAC;AAED;;4DAE4D;AAC5D,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,MAAkB;IAC3D,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;QACvF,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,EAAE,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,4EAA4E;AAC5E,qEAAqE;AACrE,0EAA0E;AAC1E,+EAA+E;AAC/E,MAAM,MAAM,GAAG,SAAS,CAAC;AAEzB;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,KAAuB,EAAE,MAAkB,EAAE,IAAiB;IAC3F,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,YAAyB,EAAE,MAAkB;IACvE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAE3C,2EAA2E;IAC3E,sEAAsE;IACtE,yEAAyE;IACzE,oEAAoE;IACpE,kEAAkE;IAClE,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAExC,+EAA+E;IAC/E,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,4EAA4E;IAC5E,4EAA4E;IAC5E,+EAA+E;IAC/E,iFAAiF;IACjF,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,GAAG,KAAK,CAAC;QACb,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YAChC,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB;gBAAE,SAAS;YACvF,6EAA6E;YAC7E,mFAAmF;YACnF,gFAAgF;YAChF,kFAAkF;YAClF,2BAA2B;YAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrF,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAS;YACxD,2EAA2E;YAC3E,oEAAoE;YACpE,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,4EAA4E;IAC5E,uEAAuE;IACvE,gDAAgD;IAChD,IAAI,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;IACpE,4EAA4E;IAC5E,4EAA4E;IAC5E,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,0EAA0E;IAC1E,6EAA6E;IAC7E,8EAA8E;IAC9E,yBAAyB;IACzB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS;SAC7B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,iBAAiB,CAAC,CAAC;SACxF,IAAI,EAAE,CAAC;IACV,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG;QAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;AAChD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAU,EAAE,MAAkB;IAC7E,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,CAAC;IACpF,OAAO,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,gCAAgC,CAAC;AAC7E,CAAC;AAgBD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAc;IACxC,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC;QAAE,OAAO,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;IACnD,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;QAAE,OAAO,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACzC,OAAO,GAAG,CAAC,WAAW,CAAC;AACzB,CAAC;AAED,SAAS,GAAG,CAAC,MAAoB,EAAE,CAAS;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,KAAiB;IACrC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACnC,IAAI,GAA2C,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAChB,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,OAAO,EAAE,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,EAAE,KAAK,CAAC;YAAE,SAAS;QACvB,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,SAAS,EAAE,CAAC;YACnF,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;gBAAE,IAAI,EAAE,CAAC;YACxE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACV,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACV,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACZ,CAAC;QACD,EAAE,CAAC,IAAI,EAAE,CAAC;QACV,EAAE,CAAC,IAAI,EAAE,CAAC;QACV,EAAE,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACtG,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC;YACR,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;YACxB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAC1B,SAAS;YACT,IAAI;YACJ,WAAW,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAc;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,KAAK,CACH,6EAA6E;YAC3E,kFAAkF;YAClF,wEAAwE,CAC3E,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,GAAG,CAAC,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,CAAC;QACpD,KAAK,CACH,sCAAsC,GAAG,CAAC,MAAM,4BAA4B;YAC1E,kEAAkE,CACrE,CAAC;QACF,OAAO;IACT,CAAC;IACD,+EAA+E;IAC/E,8EAA8E;IAC9E,0EAA0E;IAC1E,kBAAkB;IAClB,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,IAAI,wBAAwB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEzF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvC,0EAA0E;IAC1E,0CAA0C;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhD,gCAAgC;IAChC,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1H,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC;QACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,MAAM,GAAG,CAAC;YACb,CAAC,CAAC,2EAA2E,IAAI,CAAC,MAAM,IAAI;YAC5F,CAAC,CAAC,2DAA2D,CAChE,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4BAA4B,IAAI,wFAAwF,CACzH,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC;QACxG,CAAC;QACD,OAAO;IACT,CAAC;IAED,mEAAmE;IACnE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAChF,IAAI,KAAK;YAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE;YAAE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,WAAW,GAAG,sBAAsB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACtD,KAAK,MAAM,EAAE,IAAI,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,qEAAqE,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,aAAa,KAAK,CAAC,IAAI,iBAAiB,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,OAAO,IAAI,CACpF,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,IAAI,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,SAAS,WAAW,CAAC,IAAc,EAAE,CAAS;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,UAAU,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,UAAU,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC;AAC/K,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAeA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8F/D"}
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAgBA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqK/D"}
@@ -31,6 +31,28 @@ export async function infoCommand(args) {
31
31
  const node = new EntityNode(store, id);
32
32
  return { name: node.name, expressId: id };
33
33
  });
34
+ // Semantic drop census (#4208): report honestly whether it ran, distinct
35
+ // from "it ran and found nothing" — an absent `dropCensus` on the store
36
+ // must never render the same as zero drops.
37
+ const dropCensus = store.dropCensus;
38
+ const dropCensusSummary = dropCensus
39
+ ? {
40
+ ran: true,
41
+ totalScanned: dropCensus.totalScanned,
42
+ totalRetained: dropCensus.totalRetained,
43
+ totalSkipped: dropCensus.totalSkipped,
44
+ skippedClasses: dropCensus.skippedClasses.map((c) => ({ type: c.type, scanned: c.scanned, knownInSchema: c.knownInSchema })),
45
+ // Split so a JSON consumer doesn't have to re-derive "is this a real
46
+ // regression or universal geometry noise" itself — see
47
+ // ClassCensusEntry.isRootDescendant in @ifc-lite/parser's drop-census.ts.
48
+ expectedSkippedClasses: dropCensus.expectedSkippedClasses.map((c) => ({ type: c.type, scanned: c.scanned, knownInSchema: c.knownInSchema })),
49
+ unexpectedSkippedClasses: dropCensus.unexpectedSkippedClasses.map((c) => ({ type: c.type, scanned: c.scanned, knownInSchema: c.knownInSchema })),
50
+ unknownClasses: dropCensus.unknownClasses.map((c) => ({ type: c.type, scanned: c.scanned })),
51
+ relClassesSeen: dropCensus.relClassesSeen,
52
+ relClassesIndexed: dropCensus.relClassesIndexed,
53
+ unindexedRelClasses: dropCensus.unindexedRelClasses.map((c) => ({ type: c.type, scanned: c.scanned })),
54
+ }
55
+ : { ran: false };
34
56
  const summary = {
35
57
  file: filePath,
36
58
  schema: store.schemaVersion,
@@ -40,6 +62,7 @@ export async function infoCommand(args) {
40
62
  parseTime: `${store.parseTime.toFixed(0)}ms`,
41
63
  storeys: storeys.map(s => s.name),
42
64
  typeCounts,
65
+ dropCensus: dropCensusSummary,
43
66
  };
44
67
  if (jsonOutput) {
45
68
  printJson(summary);
@@ -83,6 +106,39 @@ export async function infoCommand(args) {
83
106
  process.stdout.write(`\n Other types (top ${otherTypes.length}):\n`);
84
107
  process.stdout.write(formatTable(['Type', 'Count'], otherTypes.map(([name, count]) => [name, count.toLocaleString()])).split('\n').map(l => ' ' + l).join('\n') + '\n');
85
108
  }
109
+ // Semantic drop census (#4208)
110
+ if (!dropCensusSummary.ran) {
111
+ process.stdout.write(`\n Drop census: did not run (no dropCensus on this store).\n`);
112
+ }
113
+ else {
114
+ process.stdout.write(`\n Drop census: ${dropCensusSummary.totalScanned.toLocaleString()} scanned, `
115
+ + `${dropCensusSummary.totalRetained.toLocaleString()} retained, `
116
+ + `${dropCensusSummary.totalSkipped.toLocaleString()} skipped.\n`);
117
+ if (dropCensusSummary.unexpectedSkippedClasses.length > 0) {
118
+ // Classes with a GlobalId (IfcRoot descendants) that fell to CAT_SKIP
119
+ // anyway — the shape of a real regression, not routine geometry noise.
120
+ process.stdout.write(` Skipped classes with a GlobalId (unexpected):\n`);
121
+ process.stdout.write(formatTable(['Type', 'Count', 'In schema'], dropCensusSummary.unexpectedSkippedClasses.map((c) => [c.type, c.scanned.toLocaleString(), c.knownInSchema ? 'yes' : 'no'])).split('\n').map(l => ' ' + l).join('\n') + '\n');
122
+ }
123
+ if (dropCensusSummary.expectedSkippedClasses.length > 0) {
124
+ // Geometry/placement/style resource classes with no GlobalId — this
125
+ // fires on nearly every file and is not, by itself, a problem.
126
+ process.stdout.write(` Skipped classes with no GlobalId (expected — geometry/placement/style resources):\n`);
127
+ process.stdout.write(formatTable(['Type', 'Count', 'In schema'], dropCensusSummary.expectedSkippedClasses.map((c) => [c.type, c.scanned.toLocaleString(), c.knownInSchema ? 'yes' : 'no'])).split('\n').map(l => ' ' + l).join('\n') + '\n');
128
+ }
129
+ if (dropCensusSummary.unindexedRelClasses.length > 0) {
130
+ process.stdout.write(` IFCREL* classes seen but not indexed as edges:\n`);
131
+ process.stdout.write(formatTable(['Type', 'Count'], dropCensusSummary.unindexedRelClasses.map((c) => [c.type, c.scanned.toLocaleString()])).split('\n').map(l => ' ' + l).join('\n') + '\n');
132
+ }
133
+ if (dropCensusSummary.unknownClasses.length > 0) {
134
+ // Classes not recognised by the bundled schema registry at all —
135
+ // vendor extensions or a registry gap. Loud signal; must not be
136
+ // silently dropped from the human-readable output while it's still
137
+ // in the JSON payload.
138
+ process.stdout.write(` Classes not recognised by the schema registry (unknown):\n`);
139
+ process.stdout.write(formatTable(['Type', 'Count'], dropCensusSummary.unknownClasses.map((c) => [c.type, c.scanned.toLocaleString()])).split('\n').map(l => ' ' + l).join('\n') + '\n');
140
+ }
141
+ }
86
142
  process.stdout.write('\n');
87
143
  }
88
144
  function formatSize(bytes) {
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * IFC entity attribute indices (0-based positions in STEP argument list).
3
+ * Standard for all IfcRoot subtypes: GlobalId(0), OwnerHistory(1), Name(2), Description(3).
4
+ * IfcObject subtypes add ObjectType(4). Tag varies by entity type.
5
+ */
6
+ export declare const ATTRIBUTE_INDEX: Record<string, number>;
7
+ /**
8
+ * Apply attribute mutations to STEP content via text replacement.
9
+ *
10
+ * For each target entity, locates the record's exact bytes with
11
+ * `StepTokenizer.scanEntities()` (multi-line records, and records with a
12
+ * comment before their `(`, included) and rewrites the attribute at its
13
+ * known slot index using the validating splitter (`splitTopLevelStepArgs`,
14
+ * `./step-args.js`) -- the same one `mutate.ts` uses on main, so a
15
+ * mis-scanned argument list is refused here exactly as it would be there
16
+ * (#4125).
17
+ *
18
+ * Every record this call was asked to mutate is read and validated FIRST;
19
+ * only if every one of them is readable does any rewriting happen, and the
20
+ * function returns the fully rewritten content. If ANY of them cannot be
21
+ * located, its span isn't followed by the STEP record terminator `;`
22
+ * (the truncation guard -- see the module header), or its argument list
23
+ * cannot be split unambiguously, nothing is rewritten and one error names
24
+ * every record that failed. The alternative -- writing the records that
25
+ * were fine and skipping the rest -- is a run that reports success over a
26
+ * file that carries only part of the requested edit.
27
+ */
28
+ export declare function applyAttributeMutations(content: string, mutations: {
29
+ entity: any;
30
+ propName: string;
31
+ value: string;
32
+ }[], objectTypeEntities: ReadonlySet<string>): string;
33
+ //# sourceMappingURL=mutate-step-record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutate-step-record.d.ts","sourceRoot":"","sources":["../../src/commands/mutate-step-record.ts"],"names":[],"mappings":"AAoDA;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIlD,CAAC;AA6DF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EAC7D,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,GACtC,MAAM,CAsJR"}