@hypersoniclabs/helix-cli 0.1.27-helix3.546 → 0.1.27-helix3.547

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 (38) hide show
  1. package/dist/city/assemble/compose.js +17 -15
  2. package/dist/city/assemble/compose.js.map +1 -1
  3. package/dist/cs2/convert/buildingCompose.d.ts +55 -0
  4. package/dist/cs2/convert/buildingCompose.js +137 -0
  5. package/dist/cs2/convert/buildingCompose.js.map +1 -0
  6. package/dist/cs2/convert/buildingMeshCommand.d.ts +17 -0
  7. package/dist/cs2/convert/buildingMeshCommand.js +160 -0
  8. package/dist/cs2/convert/buildingMeshCommand.js.map +1 -0
  9. package/dist/cs2/convert/buildingParts.d.ts +60 -0
  10. package/dist/cs2/convert/buildingParts.js +281 -0
  11. package/dist/cs2/convert/buildingParts.js.map +1 -0
  12. package/dist/cs2/convert/buildingPrototypes.d.ts +121 -0
  13. package/dist/cs2/convert/buildingPrototypes.js +519 -0
  14. package/dist/cs2/convert/buildingPrototypes.js.map +1 -0
  15. package/dist/index.js +2 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/sceneHlod/basisEncoder.d.ts +9 -0
  18. package/dist/sceneHlod/basisEncoder.js +38 -0
  19. package/dist/sceneHlod/basisEncoder.js.map +1 -1
  20. package/dist/sceneHlod/cellArtifact.js +5 -2
  21. package/dist/sceneHlod/cellArtifact.js.map +1 -1
  22. package/dist/tsconfig.build.tsbuildinfo +1 -1
  23. package/package.json +1 -1
  24. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  25. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  26. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  27. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  28. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  29. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  30. package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
  31. package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
  32. package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
  33. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
  34. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
  35. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
  36. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
  37. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
  38. package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
@@ -71,8 +71,8 @@ class ResourceTable {
71
71
  }
72
72
  async function composeCityScene(input) {
73
73
  const { buildings, buildingsDir } = input;
74
- if (!buildings.cells.length)
75
- throw new Error('scene create city: the source has no buildings; a city scene needs at least one building cell');
74
+ // A landscape-only source (no buildings at all) is a valid root: terrain, roads and vegetation, to which building parts are mounted.
75
+ const landscapeOnly = !buildings.cells.length;
76
76
  // 1. Terrain (and placements) through the same compiler every scene uses.
77
77
  const baseDir = (0, node_path_1.dirname)((0, node_path_1.resolve)(input.terrainDir));
78
78
  const doc = {
@@ -90,8 +90,8 @@ async function composeCityScene(input) {
90
90
  for (const file of base.bundleFiles)
91
91
  files.set(file.uri, { uri: file.uri, path: file.path, bytes: file.bytes, sha256: file.sha256 });
92
92
  // 2. One node per building cell, with its box-level collider, in its own distance group.
93
- const minIx = Math.min(...buildings.cells.map((c) => c.ix)), minIz = Math.min(...buildings.cells.map((c) => c.iz));
94
- const farMinX = Math.min(...buildings.far.map((c) => c.ix)), farMinZ = Math.min(...buildings.far.map((c) => c.iz));
93
+ const minIx = landscapeOnly ? 0 : Math.min(...buildings.cells.map((c) => c.ix)), minIz = landscapeOnly ? 0 : Math.min(...buildings.cells.map((c) => c.iz));
94
+ const farMinX = landscapeOnly ? 0 : Math.min(...buildings.far.map((c) => c.ix)), farMinZ = landscapeOnly ? 0 : Math.min(...buildings.far.map((c) => c.iz));
95
95
  const index = (cell) => cellId(cell.ix - minIx, cell.iz - minIz);
96
96
  const identity = { position: [0, 0, 0], rotation: [0, 0, 0, 1], scale: [1, 1, 1] };
97
97
  const nodes = [];
@@ -102,7 +102,7 @@ async function composeCityScene(input) {
102
102
  const sortedCells = [...buildings.cells].sort((a, b) => a.iz - b.iz || a.ix - b.ix);
103
103
  const roadSetCount = (input.roads ?? []).filter((c) => c.collider).length;
104
104
  const nearCells = sortedCells.filter((c) => c.near);
105
- const nearMinIx = Math.min(...nearCells.map((c) => c.ix)), nearMinIz = Math.min(...nearCells.map((c) => c.iz));
105
+ const nearMinIx = nearCells.length ? Math.min(...nearCells.map((c) => c.ix)) : 0, nearMinIz = nearCells.length ? Math.min(...nearCells.map((c) => c.iz)) : 0;
106
106
  const blockSize = colliderBlockSize(nearCells, exports.MAX_COLLISION_SETS - scene.collision.sets.length - roadSetCount - COLLISION_SET_RESERVE);
107
107
  const blocks = new Map();
108
108
  for (const cell of sortedCells) {
@@ -255,7 +255,7 @@ async function composeCityScene(input) {
255
255
  }
256
256
  // 3. The generator's far layer is the complete HLOD v2 layer: one cluster per far entry, sources in `cells` order.
257
257
  const carrier = await (0, glbParts_1.facadeMaterialCarrierGlb)([0.62, 0.58, 0.52]);
258
- const materialId = table.add('res.hlod.material', 'model', 'model/gltf-binary', `hlod-complete/${(0, glbParts_1.sha256Hex)(carrier.bytes)}.glb`, carrier.bytes);
258
+ const materialId = landscapeOnly ? '' : table.add('res.hlod.material', 'model', 'model/gltf-binary', `hlod-complete/${(0, glbParts_1.sha256Hex)(carrier.bytes)}.glb`, carrier.bytes);
259
259
  const clusters = [];
260
260
  let hlodTriangles = 0, hlodBytes = 0;
261
261
  for (const far of [...buildings.far].sort((a, b) => a.iz - b.iz || a.ix - b.ix)) {
@@ -296,26 +296,28 @@ async function composeCityScene(input) {
296
296
  scene.streamGroups = [...scene.streamGroups, ...groups];
297
297
  scene.scenes = scene.scenes.map((root) => ({ ...root, nodes: [...root.nodes, ...nodes.map((n) => n.id)], streamGroups: [...root.streamGroups, ...groups.map((g) => g.id)] }));
298
298
  scene.collision = { sets: [...scene.collision.sets, ...collisionSets] };
299
- scene.hlod = {
300
- version: 2, defaultLayer: exports.CITY_HLOD_LAYER,
301
- layers: [{ id: exports.CITY_HLOD_LAYER, distanceM: 128, maxDistanceM: 8192, fadeMs: 350, triangleRatio: 1, maxErrorM: 0.02, atlasSize: 512, residency: 'complete' }],
302
- clusters,
303
- sharedMaterials: [{ resource: materialId, estimatedBytes: carrier.estimatedBytes, extension: 'HELIX_materials_city' }],
304
- bake: { cellSizeM: buildings.options.farCellM, voxelSizeM: 2, texelsPerM: 1, minTileSize: 64, maxTileSize: 256 },
305
- };
299
+ if (!landscapeOnly)
300
+ scene.hlod = {
301
+ version: 2, defaultLayer: exports.CITY_HLOD_LAYER,
302
+ layers: [{ id: exports.CITY_HLOD_LAYER, distanceM: 128, maxDistanceM: 8192, fadeMs: 350, triangleRatio: 1, maxErrorM: 0.02, atlasSize: 512, residency: 'complete' }],
303
+ clusters,
304
+ sharedMaterials: [{ resource: materialId, estimatedBytes: carrier.estimatedBytes, extension: 'HELIX_materials_city' }],
305
+ bake: { cellSizeM: buildings.options.farCellM, voxelSizeM: 2, texelsPerM: 1, minTileSize: 64, maxTileSize: 256 },
306
+ };
306
307
  scene.runtimeExtensions = [
307
308
  ...scene.runtimeExtensions,
308
309
  { id: 'ext.city-materials', extension: 'web.city-materials/1', runtime: 'web', targetNodes: [], required: false, fallback: 'portable', parameters: { version: 1, library: input.library.manifestResourceId } },
309
310
  ];
310
311
  const required = new Set(scene.capabilities.required);
311
312
  required.add('render.mesh/1');
312
- required.add(helix_manifest_1.SCENE_HLOD_COMPLETE_CAPABILITY);
313
+ if (!landscapeOnly)
314
+ required.add(helix_manifest_1.SCENE_HLOD_COMPLETE_CAPABILITY);
313
315
  if (seaNodeIds.length)
314
316
  required.add(helix_manifest_1.HELIX_SCENE_WATER_CAPABILITY);
315
317
  scene.capabilities = { ...scene.capabilities, required: [...required].sort() };
316
318
  // The shared hasher reads nodes, cells, resources and extensions, so it runs once everything above is in place.
317
319
  const hasher = (0, helix_manifest_1.createSceneHlodSourceHasher)(scene);
318
- for (const cluster of scene.hlod.clusters)
320
+ for (const cluster of scene.hlod?.clusters ?? [])
319
321
  cluster.sourceHash = hasher(cluster);
320
322
  // Dedupe: a resource id appears once.
321
323
  const seen = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/city/assemble/compose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/city/assemble/compose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { type HelixSceneV2 } from '@hypersoniclabs/helix-manifest';
2
+ export declare const MOUNT_CAPABILITY = "helix.scene-mount/1";
3
+ export interface ComposeTier {
4
+ budgetMiB: number;
5
+ nearAllowanceMiB: number;
6
+ nearRadiusM: number;
7
+ /** Fraction of the bake's uncompressed-RGBA worst case the shared HLOD atlas is declared at (it ships KTX2). */
8
+ hlodMaterialScale: number;
9
+ streamRadiusM?: number;
10
+ }
11
+ export declare const COMPOSE_TIERS: Record<'desktop' | 'mobile', ComposeTier>;
12
+ export declare function reseal(scene: HelixSceneV2): HelixSceneV2;
13
+ /** The part with its own allowance and near radius, sealed again. */
14
+ export declare function retargetPart(part: HelixSceneV2, tier: ComposeTier): HelixSceneV2;
15
+ export declare const mountCommitmentMiB: (child: HelixSceneV2) => number;
16
+ export declare function mountParts(base: HelixSceneV2, children: HelixSceneV2[], options: {
17
+ id: string;
18
+ title: string;
19
+ tier: ComposeTier;
20
+ mountMode?: 'eager' | 'distance';
21
+ }): HelixSceneV2;
22
+ export interface ComposeOptions {
23
+ /** The landscape package (`scene create city` output). */
24
+ land: string;
25
+ /** The data root holding the baked `part.<n>.scene.json`, `buildings/` and `hlod-complete/`. */
26
+ data: string;
27
+ out: string;
28
+ name: string;
29
+ tier: 'desktop' | 'mobile';
30
+ /** Root scene id; omitted, the landscape's. */
31
+ id?: string;
32
+ title?: string;
33
+ log?: (line: string) => void;
34
+ }
35
+ export interface ComposeReport {
36
+ root: {
37
+ dir: string;
38
+ id: string;
39
+ revision: string;
40
+ documentBytes: number;
41
+ documentCapBytes: number;
42
+ };
43
+ parts: Array<{
44
+ id: string;
45
+ dir: string;
46
+ revision: string;
47
+ nodes: number;
48
+ clusters: number;
49
+ groups: number;
50
+ largestGroupMiB: number;
51
+ commitmentMiB: number;
52
+ allowanceMiB: number;
53
+ }>;
54
+ }
55
+ export declare function composeWorld(options: ComposeOptions): ComposeReport;
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ // Composes a World root: a landscape Scene (terrain, roads, trees, props) that MOUNTS the baked building parts.
3
+ //
4
+ // <out>/<root name>/ the landscape package, its document now mounting every part (+ pin.json)
5
+ // <out>/<part sha256>/ one folder per mounted part: the sealed document, `buildings/` and `hlod-complete/` linked
6
+ //
7
+ // The engine resolves a mount at `../<sha256>/scene.helix-scene.json` beside the root document, exactly as Granit's compose
8
+ // script lays it out. Policy (memory allowance, near radius, mount budgets) is the only thing changed in a part; content is
9
+ // never touched. Sealing order is the manifest's: revision from a zeroed digest, then integrity over the document.
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.mountCommitmentMiB = exports.COMPOSE_TIERS = exports.MOUNT_CAPABILITY = void 0;
12
+ exports.reseal = reseal;
13
+ exports.retargetPart = retargetPart;
14
+ exports.mountParts = mountParts;
15
+ exports.composeWorld = composeWorld;
16
+ const node_fs_1 = require("node:fs");
17
+ const node_path_1 = require("node:path");
18
+ const helix_manifest_1 = require("@hypersoniclabs/helix-manifest");
19
+ exports.MOUNT_CAPABILITY = 'helix.scene-mount/1';
20
+ exports.COMPOSE_TIERS = {
21
+ desktop: { budgetMiB: 512, nearAllowanceMiB: 320, nearRadiusM: 128, hlodMaterialScale: 0.4 },
22
+ mobile: { budgetMiB: 192, nearAllowanceMiB: 8, nearRadiusM: 48, hlodMaterialScale: 1, streamRadiusM: 384 },
23
+ };
24
+ function reseal(scene) {
25
+ scene.revision = '0'.repeat(16);
26
+ scene.integrity = { sha256: '0'.repeat(64) };
27
+ scene.revision = (0, helix_manifest_1.computeSceneDocumentIntegrity)(scene).slice(0, 16);
28
+ scene.integrity = { sha256: (0, helix_manifest_1.computeSceneDocumentIntegrity)(scene) };
29
+ if (!(0, helix_manifest_1.verifySceneDocumentIntegrity)(scene))
30
+ throw new Error(`${scene.id}: sealed integrity does not verify`);
31
+ return scene;
32
+ }
33
+ /** The part with its own allowance and near radius, sealed again. */
34
+ function retargetPart(part, tier) {
35
+ const child = structuredClone(part);
36
+ const resourceBytes = new Map(child.resources.map((r) => [r.id, r.bytes ?? 0]));
37
+ for (const material of child.hlod?.sharedMaterials ?? []) {
38
+ material.estimatedBytes = Math.max(resourceBytes.get(material.resource) ?? 0, Math.ceil(material.estimatedBytes * tier.hlodMaterialScale));
39
+ }
40
+ const largestGroupMiB = Math.max(...child.streamGroups.map((g) => g.estimatedMemoryMiB));
41
+ const coarseMiB = (child.hlod?.clusters ?? []).reduce((sum, c) => sum + (c.estimatedBytes ?? 0), 0) / 1048576;
42
+ const atlasMiB = Math.max(0, ...(child.hlod?.sharedMaterials ?? []).map((m) => m.estimatedBytes)) / 1048576;
43
+ const allowanceMiB = Math.max(32, Math.ceil(largestGroupMiB + coarseMiB + atlasMiB + tier.nearAllowanceMiB));
44
+ for (const profile of Object.values(child.profiles)) {
45
+ profile.runtimePolicy.memoryBudgetMiB = allowanceMiB;
46
+ profile.runtimePolicy.streamRadiusM = tier.nearRadiusM;
47
+ }
48
+ return reseal(child);
49
+ }
50
+ const mountCommitmentMiB = (child) => Math.max(32, ...Object.keys(child.profiles).map((id) => (0, helix_manifest_1.sceneProfileMemoryCommitmentMiB)(child, id)));
51
+ exports.mountCommitmentMiB = mountCommitmentMiB;
52
+ function mountParts(base, children, options) {
53
+ const root = structuredClone(base);
54
+ root.id = options.id;
55
+ root.title = options.title;
56
+ for (const profile of Object.values(root.profiles)) {
57
+ profile.runtimePolicy.memoryBudgetMiB = options.tier.budgetMiB;
58
+ if (options.tier.streamRadiusM)
59
+ profile.runtimePolicy.streamRadiusM = options.tier.streamRadiusM;
60
+ }
61
+ const mounts = root.mounts ? [...root.mounts] : [];
62
+ const nodeIds = [];
63
+ const commitments = children.map(exports.mountCommitmentMiB);
64
+ children.forEach((child, index) => {
65
+ const mount = `mount.city.part.${index}`;
66
+ const node = `node.city.part.${index}`;
67
+ mounts.push({ id: mount, scene: { id: child.id, revision: child.revision }, integrity: { sha256: child.integrity.sha256 }, profile: 'world', budgetMiB: commitments[index], depth: 0 });
68
+ root.nodes.push({ id: node, streamGroup: 'stream.city', transform: { position: [0, 0, 0], rotation: [0, 0, 0, 1], scale: [1, 1, 1] }, components: [{ type: 'scene.mount', mount }] });
69
+ nodeIds.push(node);
70
+ });
71
+ root.mounts = mounts;
72
+ root.mountDepth = 1;
73
+ root.scenes[0].nodes.push(...nodeIds);
74
+ root.scenes[0].streamGroups.push('stream.city');
75
+ const mode = options.mountMode ?? 'eager';
76
+ const span = root.placement?.bounds ?? { min: [-8192, -1024, -8192], max: [8192, 2048, 8192] };
77
+ root.streamGroups.push({
78
+ id: 'stream.city', mode, priority: mode === 'eager' ? 100 : 20, dependencies: ['stream.root'],
79
+ estimatedMemoryMiB: commitments.reduce((sum, v) => sum + v, 0),
80
+ cells: [{ id: 'cell.city', bounds: { min: [...span.min], max: [...span.max] }, nodes: nodeIds }],
81
+ });
82
+ for (const capability of [exports.MOUNT_CAPABILITY, 'render.mesh/1', 'helix.scene-hlod/2']) {
83
+ if (!root.capabilities.required.includes(capability))
84
+ root.capabilities.required.push(capability);
85
+ }
86
+ root.capabilities.required.sort();
87
+ return reseal(root);
88
+ }
89
+ const link = (target, at) => { (0, node_fs_1.rmSync)(at, { recursive: true, force: true }); (0, node_fs_1.symlinkSync)(target, at); };
90
+ function composeWorld(options) {
91
+ const tier = exports.COMPOSE_TIERS[options.tier];
92
+ const base = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(options.land, 'scene.helix-scene.json'), 'utf8'));
93
+ const partFiles = [];
94
+ for (let i = 0; (0, node_fs_1.existsSync)((0, node_path_1.join)(options.data, `part.${i}.scene.json`)); i += 1)
95
+ partFiles.push((0, node_path_1.join)(options.data, `part.${i}.scene.json`));
96
+ if (!partFiles.length)
97
+ throw new Error(`composeWorld: no part.<n>.scene.json in ${options.data}`);
98
+ const children = partFiles.map((file) => retargetPart(JSON.parse((0, node_fs_1.readFileSync)(file, 'utf8')), tier));
99
+ const root = mountParts(base, children, { id: options.id ?? base.id, title: options.title ?? base.title, tier });
100
+ const rootValidation = (0, helix_manifest_1.validateSceneDocument)(root);
101
+ if (!rootValidation.valid)
102
+ throw new Error(`root document invalid: ${rootValidation.errors.slice(0, 8).join('; ')}`);
103
+ for (const child of children) {
104
+ const result = (0, helix_manifest_1.validateSceneDocument)(child);
105
+ if (!result.valid)
106
+ throw new Error(`${child.id} invalid: ${result.errors.slice(0, 8).join('; ')}`);
107
+ }
108
+ const out = (0, node_path_1.resolve)(options.out);
109
+ const rootDir = (0, node_path_1.join)(out, options.name);
110
+ (0, node_fs_1.rmSync)(out, { recursive: true, force: true }); // part folders are named by digest, so a stale set would linger beside the new one
111
+ (0, node_fs_1.mkdirSync)(out, { recursive: true });
112
+ // The landscape package is cloned (copy-on-write where the filesystem has it), then its document is replaced.
113
+ (0, node_fs_1.cpSync)(options.land, rootDir, { recursive: true, ...(process.platform === 'darwin' ? { mode: 1 } : {}) });
114
+ const serialized = `${JSON.stringify(root)}\n`;
115
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(rootDir, 'scene.helix-scene.json'), serialized);
116
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(rootDir, 'pin.json'), `${JSON.stringify({ kind: 'scene-v2', id: root.id, revision: root.revision, integrity: root.integrity }, null, 2)}\n`);
117
+ const report = {
118
+ root: { dir: rootDir, id: root.id, revision: root.revision, documentBytes: Buffer.byteLength(serialized), documentCapBytes: 4194304 },
119
+ parts: [],
120
+ };
121
+ children.forEach((child) => {
122
+ const dir = (0, node_path_1.join)(out, child.integrity.sha256);
123
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
124
+ for (const sub of ['buildings', 'hlod-complete'])
125
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(options.data, sub)))
126
+ link((0, node_path_1.join)(options.data, sub), (0, node_path_1.join)(dir, sub));
127
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'scene.helix-scene.json'), `${JSON.stringify(child)}\n`);
128
+ report.parts.push({
129
+ id: child.id, dir, revision: child.revision, nodes: child.nodes.length, clusters: child.hlod?.clusters.length ?? 0, groups: child.streamGroups.length,
130
+ largestGroupMiB: Math.max(...child.streamGroups.map((g) => g.estimatedMemoryMiB)), commitmentMiB: (0, exports.mountCommitmentMiB)(child),
131
+ allowanceMiB: Math.max(...Object.values(child.profiles).map((p) => p.runtimePolicy.memoryBudgetMiB)),
132
+ });
133
+ });
134
+ void node_fs_1.lstatSync;
135
+ return report;
136
+ }
137
+ //# sourceMappingURL=buildingCompose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildingCompose.js","sourceRoot":"","sources":["../../../src/cs2/convert/buildingCompose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * `helix cs2 mesh-buildings`: the real CS2 prefab meshes for a city's buildings, as a World root plus building part Scenes
4
+ * (Granit's storage pattern). Four stages, each reading the previous one's folder:
5
+ *
6
+ * prototypes one prototype GLB per prefab and colourway (KTX2 textures shared by name), plus a small self-contained bake GLB
7
+ * merge joins the `prototypes.shard.<i>.json` indices of a sharded run into `prototypes.json`
8
+ * parts the `part.<n>.scene.json` documents for a `helix.city-source/1` whose buildings carry `mesh` pointers
9
+ * compose mounts sealed parts into a landscape package (`helix scene create city` output) for one tier
10
+ *
11
+ * The complete HLOD bake between `parts` and `compose` is the existing `helix scene hlod bake-complete`.
12
+ */
13
+ export declare function mergePrototypeIndices(data: string): {
14
+ prefabs: number;
15
+ failed: number;
16
+ };
17
+ export declare function registerCs2MeshBuildings(parent: Command, fail: (message: string) => never): void;
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.mergePrototypeIndices = mergePrototypeIndices;
37
+ exports.registerCs2MeshBuildings = registerCs2MeshBuildings;
38
+ const node_fs_1 = require("node:fs");
39
+ const node_path_1 = require("node:path");
40
+ /**
41
+ * `helix cs2 mesh-buildings`: the real CS2 prefab meshes for a city's buildings, as a World root plus building part Scenes
42
+ * (Granit's storage pattern). Four stages, each reading the previous one's folder:
43
+ *
44
+ * prototypes one prototype GLB per prefab and colourway (KTX2 textures shared by name), plus a small self-contained bake GLB
45
+ * merge joins the `prototypes.shard.<i>.json` indices of a sharded run into `prototypes.json`
46
+ * parts the `part.<n>.scene.json` documents for a `helix.city-source/1` whose buildings carry `mesh` pointers
47
+ * compose mounts sealed parts into a landscape package (`helix scene create city` output) for one tier
48
+ *
49
+ * The complete HLOD bake between `parts` and `compose` is the existing `helix scene hlod bake-complete`.
50
+ */
51
+ function mergePrototypeIndices(data) {
52
+ const dir = (0, node_path_1.join)(data, 'buildings');
53
+ const byPrefab = new Map();
54
+ let options = {}, schema = '';
55
+ for (const file of (0, node_fs_1.readdirSync)(dir).filter((f) => /^prototypes\.shard\.\d+\.json$/.test(f)).sort()) {
56
+ const index = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(dir, file), 'utf8'));
57
+ options = index.options;
58
+ schema = index.schema;
59
+ for (const record of index.prototypes)
60
+ byPrefab.set(record.prefab, record);
61
+ }
62
+ if (!byPrefab.size)
63
+ throw new Error(`mesh-buildings merge: no prototypes.shard.<i>.json in ${dir}`);
64
+ const prototypes = [...byPrefab.values()].sort((l, r) => (l.prefab < r.prefab ? -1 : 1));
65
+ const failed = prototypes.filter((p) => p.status === 'failed').length;
66
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'prototypes.json'), JSON.stringify({ schema, options, totals: { prefabs: prototypes.length, failed }, prototypes }));
67
+ return { prefabs: prototypes.length, failed };
68
+ }
69
+ function registerCs2MeshBuildings(parent, fail) {
70
+ const group = parent.command('mesh-buildings').description('Real CS2 prefab meshes for a city: prototype GLBs, building part Scenes and the World root that mounts them');
71
+ const guard = (action) => async () => {
72
+ try {
73
+ await action();
74
+ }
75
+ catch (error) {
76
+ fail(`✖ ${error instanceof Error ? error.message : String(error)}`);
77
+ }
78
+ };
79
+ const log = (message) => console.error(message);
80
+ group.command('prototypes')
81
+ .description('Build prototype GLBs (colourways, KTX2) and bake sources for every prefab a city-source places')
82
+ .argument('<citySource>', 'a helix.city-source/1 folder whose buildings carry mesh pointers')
83
+ .requiredOption('--bundle <dir>', 'the folder holding meshes-v2/ and materials-v2/ (what `city import cs2` reads)')
84
+ .requiredOption('--out <dir>', 'data root to write buildings/ into')
85
+ .option('--shard <i/n>', 'this process takes every n-th prefab starting at i; run shards as separate processes, then `merge`')
86
+ .option('--max-triangles <n>', 'simplify a prototype above this many triangles (default 20000)')
87
+ .option('--albedo-edge <px>', 'longest edge of a colour map (default 1024)')
88
+ .option('--data-edge <px>', 'longest edge of a normal or ORM map (default 512)')
89
+ .option('--max-variants <n>', 'colourways per prefab (default 4)')
90
+ .action((citySource, opts) => guard(async () => {
91
+ const { gunzipSync } = await Promise.resolve().then(() => __importStar(require('node:zlib')));
92
+ const { buildBuildingPrototypes } = await Promise.resolve().then(() => __importStar(require('./buildingPrototypes')));
93
+ const counts = new Map();
94
+ for (const line of gunzipSync((0, node_fs_1.readFileSync)((0, node_path_1.join)(citySource, 'buildings.ndjson.gz'))).toString('utf8').split('\n')) {
95
+ if (!line)
96
+ continue;
97
+ const row = JSON.parse(line);
98
+ if (row.mesh?.kind === 'cs2-prefab')
99
+ counts.set(row.mesh.prefab, (counts.get(row.mesh.prefab) ?? 0) + 1);
100
+ }
101
+ let entries = [...counts].sort((l, r) => (l[0] < r[0] ? -1 : 1));
102
+ let indexName;
103
+ if (opts.shard) {
104
+ const match = /^(\d+)\/(\d+)$/.exec(opts.shard);
105
+ if (!match || Number(match[2]) < 1 || Number(match[1]) >= Number(match[2]))
106
+ throw new Error(`--shard must be i/n with 0 <= i < n, got '${opts.shard}'`);
107
+ entries = entries.filter((_, i) => i % Number(match[2]) === Number(match[1]));
108
+ indexName = `prototypes.shard.${match[1]}.json`;
109
+ }
110
+ (0, node_fs_1.mkdirSync)(opts.out, { recursive: true });
111
+ const index = await buildBuildingPrototypes({
112
+ bundle: opts.bundle, out: opts.out, prefabs: new Map(entries), concurrency: 1, log,
113
+ ...(indexName ? { indexName } : {}),
114
+ ...(opts.maxTriangles ? { maxTriangles: Number(opts.maxTriangles) } : {}),
115
+ ...(opts.albedoEdge ? { maxAlbedoEdge: Number(opts.albedoEdge) } : {}),
116
+ ...(opts.dataEdge ? { maxDataEdge: Number(opts.dataEdge) } : {}),
117
+ ...(opts.maxVariants ? { maxVariants: Number(opts.maxVariants) } : {}),
118
+ });
119
+ console.log(JSON.stringify(index.totals));
120
+ })());
121
+ group.command('merge')
122
+ .description('Join the shard indices of a sharded `prototypes` run into buildings/prototypes.json')
123
+ .argument('<data>', 'the data root the shards wrote into')
124
+ .action((data) => guard(() => { console.log(JSON.stringify(mergePrototypeIndices(data))); })());
125
+ group.command('parts')
126
+ .description('Write part.<n>.scene.json: one node per building, distance stream groups, nodes tagged for complete HLOD')
127
+ .argument('<citySource>', 'the helix.city-source/1 folder')
128
+ .requiredOption('--data <dir>', 'the data root holding buildings/prototypes.json (part documents are written beside buildings/)')
129
+ .option('--id <sceneId>', 'part scene id prefix (default scene.city.buildings)')
130
+ .option('--title <title>', 'part title')
131
+ .option('--group-cap <MiB>', 'declared memory cap of one near group (default 48)')
132
+ .option('--max-parts <n>', 'at most this many parts (default 8, the engine mount limit)')
133
+ .option('--json', 'machine-readable report')
134
+ .action((citySource, opts) => guard(async () => {
135
+ const { buildBuildingParts } = await Promise.resolve().then(() => __importStar(require('./buildingParts')));
136
+ const report = buildBuildingParts({
137
+ citySource, data: opts.data, log,
138
+ ...(opts.id ? { sceneId: opts.id } : {}), ...(opts.title ? { title: opts.title } : {}),
139
+ ...(opts.groupCap ? { groupCapMiB: Number(opts.groupCap) } : {}), ...(opts.maxParts ? { maxParts: Number(opts.maxParts) } : {}),
140
+ });
141
+ console.log(opts.json ? JSON.stringify(report, null, 2) : `✔ ${report.parts.length} part(s), ${report.buildings.placed} of ${report.buildings.total} buildings with a real mesh (${report.buildings.markers} markers)`);
142
+ })());
143
+ group.command('compose')
144
+ .description('Mount the baked parts into a landscape package: <out>/<name>/ is the root, one <sha256>/ folder per part beside it')
145
+ .requiredOption('--land <dir>', 'the landscape package (`helix scene create city` output)')
146
+ .requiredOption('--data <dir>', 'the data root holding part.<n>.scene.json, buildings/ and hlod-complete/ (after bake-complete)')
147
+ .requiredOption('--out <dir>', 'folder to write the root and the parts into (emptied first)')
148
+ .option('--name <name>', 'root folder name (default world)', 'world')
149
+ .option('--tier <tier>', 'desktop or mobile (default desktop)', 'desktop')
150
+ .option('--id <sceneId>', 'root scene id (default: the landscape\'s)')
151
+ .option('--title <title>', 'root title')
152
+ .action((opts) => guard(async () => {
153
+ if (opts.tier !== 'desktop' && opts.tier !== 'mobile')
154
+ throw new Error(`--tier must be desktop or mobile, got '${opts.tier}'`);
155
+ const { composeWorld } = await Promise.resolve().then(() => __importStar(require('./buildingCompose')));
156
+ const report = composeWorld({ land: opts.land, data: opts.data, out: opts.out, name: opts.name, tier: opts.tier, log, ...(opts.id ? { id: opts.id } : {}), ...(opts.title ? { title: opts.title } : {}) });
157
+ console.log(JSON.stringify(report, null, 2));
158
+ })());
159
+ }
160
+ //# sourceMappingURL=buildingMeshCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildingMeshCommand.js","sourceRoot":"","sources":["../../../src/cs2/convert/buildingMeshCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,sDAcC;AAED,4DAqFC;AArHD,qCAA8E;AAC9E,yCAAiC;AAIjC;;;;;;;;;;GAUG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,MAAM,GAAG,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IACpD,IAAI,OAAO,GAA4B,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,IAAA,qBAAW,EAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACnG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAmB,CAAC;QAClF,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC/C,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,UAAU;YAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,GAAG,EAAE,CAAC,CAAC;IACpG,MAAM,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACtE,IAAA,uBAAa,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAC7I,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED,SAAgB,wBAAwB,CAAC,MAAe,EAAE,IAAgC;IACxF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,6GAA6G,CAAC,CAAC;IAC1K,MAAM,KAAK,GAAG,CAAC,MAAkC,EAAE,EAAE,CAAC,KAAK,IAAmB,EAAE;QAC9E,IAAI,CAAC;YAAC,MAAM,MAAM,EAAE,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IAChH,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,OAAe,EAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE9D,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;SACxB,WAAW,CAAC,gGAAgG,CAAC;SAC7G,QAAQ,CAAC,cAAc,EAAE,kEAAkE,CAAC;SAC5F,cAAc,CAAC,gBAAgB,EAAE,gFAAgF,CAAC;SAClH,cAAc,CAAC,aAAa,EAAE,oCAAoC,CAAC;SACnE,MAAM,CAAC,eAAe,EAAE,oGAAoG,CAAC;SAC7H,MAAM,CAAC,qBAAqB,EAAE,gEAAgE,CAAC;SAC/F,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;SAC3E,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;SAC/E,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;SACjE,MAAM,CAAC,CAAC,UAAkB,EAAE,IAA0I,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;QAC3L,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;QACjD,MAAM,EAAE,uBAAuB,EAAE,GAAG,wDAAa,sBAAsB,GAAC,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAClH,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuD,CAAC;YACnF,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3G,CAAC;QACD,IAAI,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,SAA6B,CAAC;QAClC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACxJ,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9E,SAAS,GAAG,oBAAoB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAClD,CAAC;QACD,IAAA,mBAAS,EAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC;YAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG;YAClF,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvE,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,EAAE,CAAC,CAAC;IAER,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;SACnB,WAAW,CAAC,qFAAqF,CAAC;SAClG,QAAQ,CAAC,QAAQ,EAAE,qCAAqC,CAAC;SACzD,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE1G,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;SACnB,WAAW,CAAC,0GAA0G,CAAC;SACvH,QAAQ,CAAC,cAAc,EAAE,gCAAgC,CAAC;SAC1D,cAAc,CAAC,cAAc,EAAE,gGAAgG,CAAC;SAChI,MAAM,CAAC,gBAAgB,EAAE,qDAAqD,CAAC;SAC/E,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC;SACvC,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;SACjF,MAAM,CAAC,iBAAiB,EAAE,6DAA6D,CAAC;SACxF,MAAM,CAAC,QAAQ,EAAE,yBAAyB,CAAC;SAC3C,MAAM,CAAC,CAAC,UAAkB,EAAE,IAAyG,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;QAC1J,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAAa,iBAAiB,GAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,kBAAkB,CAAC;YAChC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;YAChC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChI,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,aAAa,MAAM,CAAC,SAAS,CAAC,MAAM,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,gCAAgC,MAAM,CAAC,SAAS,CAAC,OAAO,WAAW,CAAC,CAAC;IAC1N,CAAC,CAAC,EAAE,CAAC,CAAC;IAER,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;SACrB,WAAW,CAAC,oHAAoH,CAAC;SACjI,cAAc,CAAC,cAAc,EAAE,0DAA0D,CAAC;SAC1F,cAAc,CAAC,cAAc,EAAE,gGAAgG,CAAC;SAChI,cAAc,CAAC,aAAa,EAAE,6DAA6D,CAAC;SAC5F,MAAM,CAAC,eAAe,EAAE,kCAAkC,EAAE,OAAO,CAAC;SACpE,MAAM,CAAC,eAAe,EAAE,qCAAqC,EAAE,SAAS,CAAC;SACzE,MAAM,CAAC,gBAAgB,EAAE,2CAA2C,CAAC;SACrE,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC;SACvC,MAAM,CAAC,CAAC,IAA0G,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;QACvI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC/H,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3M,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,EAAE,CAAC,CAAC;AACV,CAAC"}