telperion 0.0.1 → 0.1.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.
@@ -0,0 +1,3463 @@
1
+ var oe = Object.defineProperty;
2
+ var se = (r, e, t) => e in r ? oe(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
3
+ var y = (r, e, t) => se(r, typeof e != "symbol" ? e + "" : e, t);
4
+ import { w as ce } from "./wasm-source.js";
5
+ class ue {
6
+ constructor(e) {
7
+ y(this, "offset", 0);
8
+ y(this, "view");
9
+ y(this, "node", () => ({ birth: this.u64(), key: { idx: this.u32(), version: this.u32() } }));
10
+ y(this, "identity", () => ({ shoot: this.node(), station: this.u32() }));
11
+ y(this, "placement", () => ({ identity: this.identity(), leaf: [this.u32(), this.u32(), this.u32()] }));
12
+ y(this, "run", () => ({ identity: this.node(), nodes: this.vector(() => ({
13
+ identity: this.node(),
14
+ parent: this.u8() ? this.node() : null,
15
+ position: { x: this.f64(), y: this.f64(), z: this.f64() },
16
+ radii: [this.f64(), this.f64(), this.f64()],
17
+ kind: ["Structural", "Branch", "Twig"][this.u32()],
18
+ stem: this.u8() !== 0
19
+ })) }));
20
+ this.view = new DataView(e.buffer, e.byteOffset, e.byteLength);
21
+ }
22
+ u8() {
23
+ return this.view.getUint8(this.offset++);
24
+ }
25
+ u32() {
26
+ const e = this.view.getUint32(this.offset, !0);
27
+ return this.offset += 4, e;
28
+ }
29
+ u64() {
30
+ const e = this.view.getBigUint64(this.offset, !0);
31
+ this.offset += 8;
32
+ const t = Number(e);
33
+ if (!Number.isSafeInteger(t)) throw Error("Specimen identity exceeds JavaScript integer range");
34
+ return t;
35
+ }
36
+ f64() {
37
+ const e = this.view.getFloat64(this.offset, !0);
38
+ return this.offset += 8, e;
39
+ }
40
+ vector(e) {
41
+ return Array.from({ length: this.u64() }, e);
42
+ }
43
+ identities() {
44
+ return { nodes: this.vector(this.node), placements: this.vector(this.identity), shed: this.vector(this.node) };
45
+ }
46
+ changes() {
47
+ return {
48
+ born_runs: this.vector(this.run),
49
+ resized_runs: this.vector(this.run),
50
+ shed_runs: this.vector(this.node),
51
+ born_placements: this.vector(this.placement),
52
+ moved_placements: this.vector(this.placement),
53
+ shed_placements: this.vector(this.identity)
54
+ };
55
+ }
56
+ }
57
+ function le(r, e, t) {
58
+ const n = (_) => {
59
+ const i = r();
60
+ return new ue(new Uint8Array(i.memory.buffer, i.buffer_ptr(_), i.buffer_len(_)));
61
+ }, a = (_) => ({
62
+ get frontier() {
63
+ return e(r().specimen_frontier(_)), t().frontier;
64
+ },
65
+ get historyCap() {
66
+ return e(r().specimen_frontier(_)), t().historyCap;
67
+ },
68
+ read(i) {
69
+ const s = r();
70
+ return e(s.specimen_read(_, i ?? this.frontier)), {
71
+ ...t(),
72
+ ...n(18).identities(),
73
+ structure: {
74
+ values: new Float64Array(s.memory.buffer, s.buffer_ptr(6), s.buffer_len(6)).slice(),
75
+ topology: new Uint32Array(s.memory.buffer, s.buffer_ptr(7), s.buffer_len(7)).slice()
76
+ },
77
+ leaves: new Uint32Array(s.memory.buffer, s.buffer_ptr(5), s.buffer_len(5)).slice()
78
+ };
79
+ },
80
+ advance(i) {
81
+ return e(r().specimen_advance(_, i)), { ...t(), changes: n(17).changes() };
82
+ },
83
+ changes(i, s) {
84
+ return e(r().specimen_changes(_, i, s)), n(17).changes();
85
+ },
86
+ setNodeCeiling(i) {
87
+ e(r().specimen_node_ceiling(_, i));
88
+ },
89
+ setHistoryCap(i) {
90
+ e(r().specimen_history_cap(_, i));
91
+ },
92
+ snapshot() {
93
+ const i = r();
94
+ try {
95
+ return e(i.specimen_snapshot(_)), { schema: 3, data: new Uint8Array(i.memory.buffer, i.buffer_ptr(16), i.buffer_len(16)).slice() };
96
+ } finally {
97
+ i.specimen_snapshot_release();
98
+ }
99
+ },
100
+ release() {
101
+ e(r().specimen_release(_));
102
+ }
103
+ });
104
+ return {
105
+ build(_, i) {
106
+ const s = typeof _ == "string" ? _ : Object.fromEntries(Object.entries(_).filter(([b]) => !["id", "name", "note"].includes(b))), u = new TextEncoder().encode(JSON.stringify(s, (b, f) => {
107
+ if (typeof f == "number" && !Number.isFinite(f)) throw Error(`Invalid ${b} = ${f}`);
108
+ return f;
109
+ })), l = r();
110
+ return e(l.request_alloc(u.length)), new Uint8Array(l.memory.buffer, l.request_ptr(), u.length).set(u), e(l.specimen_build(i)), a(t().handle);
111
+ },
112
+ import(_) {
113
+ if (_.schema !== 3 || !(_.data instanceof Uint8Array)) throw Error("Invalid specimen snapshot schema/data");
114
+ const i = r();
115
+ try {
116
+ return e(i.specimen_snapshot_alloc(_.data.length)), new Uint8Array(i.memory.buffer, i.buffer_ptr(16), i.buffer_len(16)).set(_.data), e(i.specimen_import()), a(t().handle);
117
+ } finally {
118
+ i.specimen_snapshot_release();
119
+ }
120
+ }
121
+ };
122
+ }
123
+ const _e = [
124
+ {
125
+ abiId: 0,
126
+ family: {
127
+ age: 100,
128
+ canopy: {
129
+ acanthophyllLength: 0.35,
130
+ acanthophyllPitch: 80,
131
+ acanthophylls: 0,
132
+ clump: 5,
133
+ clumpNeighbours: 12,
134
+ clumpSpan: 0.3,
135
+ clumpSystemOrder: 2,
136
+ divergence: 137.508,
137
+ forwardLean: 0,
138
+ leafBaseLength: 0,
139
+ leafBasePitch: 60,
140
+ leafBaseRadius: 0.35,
141
+ leafBaseWeathering: 0,
142
+ leafBases: 0,
143
+ leafletCount: 1,
144
+ leafletPitch: 45,
145
+ leanRise: 0,
146
+ limbClumping: 0,
147
+ maxInstances: 4294967295,
148
+ outward: 0.6,
149
+ rachisArch: 0,
150
+ rachisLength: 0,
151
+ rosetteDepth: 0,
152
+ rosetteDivergence: 137.508,
153
+ rosetteFronds: 0,
154
+ rosettePitch: 45,
155
+ rosettePitchSpread: 60,
156
+ scatter: 18,
157
+ shootRadius: 0,
158
+ shortShootLeaves: 3,
159
+ shortShootLength: 0.04,
160
+ shortShootRadius: 0.15,
161
+ shortShootSpacing: 0,
162
+ shortShootSpread: 45,
163
+ size: 1,
164
+ sizeVariation: 0.35,
165
+ spacing: 6e-3,
166
+ surfaceContact: 0,
167
+ terminalLeaflet: 0,
168
+ upward: 0.35
169
+ },
170
+ element: {
171
+ axialSegments: 5,
172
+ baseFullness: 0.85,
173
+ card: !1,
174
+ connectorLength: 0.01,
175
+ crossSegments: 2,
176
+ cup: 0.18,
177
+ curl: 0.12,
178
+ length: 0.12,
179
+ lobeCount: 0,
180
+ lobeDepth: 0,
181
+ sectionRoundness: 0,
182
+ tipSharpness: 1.6,
183
+ widestAt: 0.42,
184
+ width: 0.06
185
+ },
186
+ growth: {
187
+ apicalControlLoss: 0,
188
+ leafLifetime: 1,
189
+ rate: 0.08,
190
+ resizeTolerance: 1e-4,
191
+ shape: 2,
192
+ sheddingTolerance: 2,
193
+ workBudget: 25e4
194
+ },
195
+ material: {
196
+ barkBlue: 0.068,
197
+ barkGrainScale: 0,
198
+ barkGrainStrength: 0,
199
+ barkGreen: 0.105,
200
+ barkMottleScale: 0,
201
+ barkMottleStrength: 0,
202
+ barkRed: 0.147,
203
+ barkReflectance: 0.04,
204
+ barkRoughness: 0.8,
205
+ bladeGrainScale: 0,
206
+ bladeGrainStrength: 0,
207
+ bladeMottleScale: 0,
208
+ bladeMottleStrength: 0,
209
+ brightnessRangeHigh: 0.12,
210
+ brightnessRangeLow: -0.12,
211
+ canopyNormal: 0,
212
+ cavityStrength: 0,
213
+ crestBlue: 0,
214
+ crestGreen: 0,
215
+ crestRed: 0,
216
+ crestStrength: 0,
217
+ crownShade: 0,
218
+ cuticleGloss: 0,
219
+ depthStrength: 0,
220
+ diffuseTransmission: 0,
221
+ directionalOcclusion: 0,
222
+ fissureBlue: 0,
223
+ fissureGreen: 0,
224
+ fissureRed: 0,
225
+ fissureStrength: 0,
226
+ furrowStrength: 1,
227
+ hueRangeHigh: 0.03,
228
+ hueRangeLow: -0.03,
229
+ interiorDarkening: 0.5,
230
+ leafBackBlue: 0.07,
231
+ leafBackGreen: 0.24,
232
+ leafBackRed: 0.105,
233
+ leafFrontBlue: 0.036,
234
+ leafFrontGreen: 0.195,
235
+ leafFrontRed: 0.068,
236
+ leafReflectance: 0.04,
237
+ leafSheen: 0,
238
+ lenticelDensity: 0,
239
+ lenticelLength: 0,
240
+ lenticelStrength: 0,
241
+ lenticelTint: 0,
242
+ lichenBlue: 0,
243
+ lichenCoverage: 0,
244
+ lichenGreen: 0,
245
+ lichenRed: 0,
246
+ lichenScale: 0,
247
+ lichenStrength: 0,
248
+ lightWrap: 0,
249
+ lobeShade: 0,
250
+ marginBlue: 0,
251
+ marginGreen: 0,
252
+ marginRed: 0,
253
+ marginWidth: 0,
254
+ orientationBlue: 0,
255
+ orientationGreen: 0,
256
+ orientationRed: 0,
257
+ orientationStrength: 0,
258
+ peelBlue: 0,
259
+ peelCurl: 0,
260
+ peelGreen: 0,
261
+ peelRed: 0,
262
+ plateCellScale: 0,
263
+ plateDome: 0,
264
+ plateEdgeLift: 0,
265
+ plateEdgeShape: 0,
266
+ plateElongation: 0,
267
+ plateFurrowWidth: 0,
268
+ plateIdentity: 0,
269
+ plateScale: 0,
270
+ ridgeScale: 0,
271
+ roughnessDetail: 0,
272
+ shootBlue: 0.068,
273
+ shootGreen: 0.105,
274
+ shootRadius: 0,
275
+ shootRed: 0.147,
276
+ skyOcclusionStrength: 0,
277
+ thickness: 1,
278
+ transmissionBlue: 0.1,
279
+ transmissionGreen: 0.6,
280
+ transmissionRed: 0.3,
281
+ transmissionStrength: 0,
282
+ veinContrast: 0,
283
+ veinScale: 8,
284
+ weatheringBlue: 0,
285
+ weatheringGreen: 0,
286
+ weatheringRed: 0,
287
+ weatheringStrength: 0
288
+ },
289
+ radii: {
290
+ forkExponent: 2,
291
+ lengthTaper: 0.6,
292
+ maxTaperExponent: 12,
293
+ trunkRadius: 0.02
294
+ },
295
+ shellDepth: 0.45,
296
+ skeleton: {
297
+ attractors: 500,
298
+ bias: {
299
+ gravitropism: 0.7,
300
+ lean: 0.05,
301
+ supernatural: {
302
+ enabled: !1,
303
+ maxWritheMagnitude: 0.9,
304
+ spiralRate: 0,
305
+ writheAmplitude: 0,
306
+ writheWavelength: 0.45
307
+ }
308
+ },
309
+ envelope: {
310
+ crownBase: 0.3,
311
+ fullness: 0.45,
312
+ height: 24,
313
+ irregularity: 0,
314
+ lobeScale: 0.5,
315
+ shoulder: 2.2,
316
+ spread: 0.3
317
+ },
318
+ growth: {
319
+ maxTurnPerStep: 35
320
+ },
321
+ habit: {
322
+ apicalDominance: 0.5,
323
+ attractorWeight: 1,
324
+ crookedness: 12,
325
+ lateralLengthRatio: 0.4,
326
+ lateralOrders: 3,
327
+ lateralPitch: 60,
328
+ lateralSpacing: 0.9,
329
+ lateralsPerStation: 3,
330
+ leaderInternode: 1.5,
331
+ pitchVariation: 15,
332
+ reachProbeSteps: 96,
333
+ risePrimary: 0.05,
334
+ riseSecondary: 0,
335
+ sheddingThreshold: 0.45,
336
+ stemDivergence: 0,
337
+ stemForkHeight: 0,
338
+ stemLean: 0,
339
+ stemLeanSpread: 0,
340
+ stems: 1,
341
+ twigTipTaper: 1,
342
+ whorlStrength: 0.3
343
+ },
344
+ samplingAttemptsPerAttractor: 64,
345
+ seed: 42,
346
+ step: 0.022,
347
+ twigs: {
348
+ angle: 45,
349
+ angleVariation: 10,
350
+ curtainClearance: 0.5,
351
+ curtainDrop: 0,
352
+ curtainSeparation: 4,
353
+ curtainStepClearance: 0.8,
354
+ divergence: 137.508,
355
+ generations: 6,
356
+ hang: 0,
357
+ internodeFactor: 2.5,
358
+ laterals: 2,
359
+ lengthRatio: 0.4,
360
+ limbRadius: 0.1,
361
+ maxDroop: 0.35,
362
+ maxInternodes: 32,
363
+ pendulousLength: 0.25,
364
+ pendulousRadius: 1,
365
+ pendulousVariation: 0,
366
+ ratioPower: 1.3,
367
+ reach: 0.2,
368
+ sag: 0,
369
+ twig: {
370
+ bearingDiameter: 0.05,
371
+ diameter: 5e-3,
372
+ internodeLength: 0.02,
373
+ length: 0.25,
374
+ stationsPerInternode: 1
375
+ },
376
+ vigourVariation: 0.15
377
+ }
378
+ },
379
+ surface: {
380
+ flareDepth: 4e-3,
381
+ flareFalloff: 0.022,
382
+ flareRadius: 2.1,
383
+ forkSocket: 0.5,
384
+ forkSwell: 1.35,
385
+ lobeDepth: 0,
386
+ lobes: 5,
387
+ radialSegments: 12,
388
+ socketContainment: 0.9,
389
+ twistRate: 0
390
+ }
391
+ },
392
+ id: "ordinary",
393
+ name: "Ordinary",
394
+ note: "Natural baseline"
395
+ },
396
+ {
397
+ abiId: 3,
398
+ family: {
399
+ age: 100,
400
+ canopy: {
401
+ acanthophyllLength: 0.35,
402
+ acanthophyllPitch: 80,
403
+ acanthophylls: 0,
404
+ clump: 5,
405
+ clumpNeighbours: 12,
406
+ clumpSpan: 0.3,
407
+ clumpSystemOrder: 2,
408
+ divergence: 180,
409
+ forwardLean: 0.25,
410
+ leafBaseLength: 0,
411
+ leafBasePitch: 60,
412
+ leafBaseRadius: 0.35,
413
+ leafBaseWeathering: 0,
414
+ leafBases: 0,
415
+ leafletCount: 1,
416
+ leafletPitch: 45,
417
+ leanRise: 0,
418
+ limbClumping: 0,
419
+ maxInstances: 4294967295,
420
+ outward: 0,
421
+ rachisArch: 0,
422
+ rachisLength: 0,
423
+ rosetteDepth: 0,
424
+ rosetteDivergence: 137.508,
425
+ rosetteFronds: 0,
426
+ rosettePitch: 45,
427
+ rosettePitchSpread: 60,
428
+ scatter: 18,
429
+ shootRadius: 0,
430
+ shortShootLeaves: 3,
431
+ shortShootLength: 0.04,
432
+ shortShootRadius: 0.15,
433
+ shortShootSpacing: 0,
434
+ shortShootSpread: 45,
435
+ size: 1,
436
+ sizeVariation: 0.2,
437
+ spacing: 6e-3,
438
+ surfaceContact: 0,
439
+ terminalLeaflet: 0,
440
+ upward: 0
441
+ },
442
+ element: {
443
+ axialSegments: 40,
444
+ baseFullness: 0.6,
445
+ card: !1,
446
+ connectorLength: 0.012,
447
+ crossSegments: 2,
448
+ cup: 0.18,
449
+ curl: 0.12,
450
+ length: 0.1,
451
+ lobeCount: 5,
452
+ lobeDepth: 0.7,
453
+ sectionRoundness: 0,
454
+ tipSharpness: 0.6,
455
+ widestAt: 0.55,
456
+ width: 0.075
457
+ },
458
+ growth: {
459
+ apicalControlLoss: 0,
460
+ leafLifetime: 1,
461
+ rate: 0.08,
462
+ resizeTolerance: 1e-4,
463
+ shape: 2,
464
+ sheddingTolerance: 2,
465
+ workBudget: 25e4
466
+ },
467
+ material: {
468
+ barkBlue: 0.158,
469
+ barkGrainScale: 25e-4,
470
+ barkGrainStrength: 0.2,
471
+ barkGreen: 0.175,
472
+ barkMottleScale: 0.8,
473
+ barkMottleStrength: 0.2,
474
+ barkRed: 0.185,
475
+ barkReflectance: 0.04,
476
+ barkRoughness: 0.85,
477
+ bladeGrainScale: 0,
478
+ bladeGrainStrength: 0,
479
+ bladeMottleScale: 6,
480
+ bladeMottleStrength: 0.15,
481
+ brightnessRangeHigh: 0.15,
482
+ brightnessRangeLow: -0.15,
483
+ canopyNormal: 0,
484
+ cavityStrength: 0.6,
485
+ crestBlue: 0.055,
486
+ crestGreen: 0.085,
487
+ crestRed: 0.1,
488
+ crestStrength: 0.5,
489
+ crownShade: 0,
490
+ cuticleGloss: 0.35,
491
+ depthStrength: 0.5375,
492
+ diffuseTransmission: 0,
493
+ directionalOcclusion: 1,
494
+ fissureBlue: -0.04,
495
+ fissureGreen: -0.062,
496
+ fissureRed: -0.025,
497
+ fissureStrength: 0.65,
498
+ furrowStrength: 0.55,
499
+ hueRangeHigh: 0.03,
500
+ hueRangeLow: -0.03,
501
+ interiorDarkening: 0.55,
502
+ leafBackBlue: 0.112,
503
+ leafBackGreen: 0.254,
504
+ leafBackRed: 0.153,
505
+ leafFrontBlue: 0.016,
506
+ leafFrontGreen: 0.102,
507
+ leafFrontRed: 0.028,
508
+ leafReflectance: 0.04,
509
+ leafSheen: 0,
510
+ lenticelDensity: 0,
511
+ lenticelLength: 0,
512
+ lenticelStrength: 0,
513
+ lenticelTint: 0,
514
+ lichenBlue: 0,
515
+ lichenCoverage: 0,
516
+ lichenGreen: 0,
517
+ lichenRed: 0,
518
+ lichenScale: 0,
519
+ lichenStrength: 0,
520
+ lightWrap: 0,
521
+ lobeShade: 0,
522
+ marginBlue: 6e-3,
523
+ marginGreen: 0.035,
524
+ marginRed: 0.025,
525
+ marginWidth: 0.08,
526
+ orientationBlue: -0.1535,
527
+ orientationGreen: 9e-3,
528
+ orientationRed: -0.062,
529
+ orientationStrength: 0.40625,
530
+ peelBlue: 0,
531
+ peelCurl: 0,
532
+ peelGreen: 0,
533
+ peelRed: 0,
534
+ plateCellScale: 0.055,
535
+ plateDome: 0.18,
536
+ plateEdgeLift: 0.35,
537
+ plateEdgeShape: 1,
538
+ plateElongation: 1.8,
539
+ plateFurrowWidth: 0,
540
+ plateIdentity: 0.5,
541
+ plateScale: 0.055,
542
+ ridgeScale: 0.032,
543
+ roughnessDetail: 0.12,
544
+ shootBlue: 0.198,
545
+ shootGreen: 0.218,
546
+ shootRadius: 0,
547
+ shootRed: 0.225,
548
+ skyOcclusionStrength: 0.5,
549
+ thickness: 0.65,
550
+ transmissionBlue: 0.07,
551
+ transmissionGreen: 0.52,
552
+ transmissionRed: 0.24,
553
+ transmissionStrength: 0.55,
554
+ veinContrast: 0.45,
555
+ veinScale: 7,
556
+ weatheringBlue: 575e-5,
557
+ weatheringGreen: 0.035,
558
+ weatheringRed: 0.0225,
559
+ weatheringStrength: 0.425
560
+ },
561
+ radii: {
562
+ forkExponent: 2,
563
+ lengthTaper: 0.6,
564
+ maxTaperExponent: 12,
565
+ trunkRadius: 0.018
566
+ },
567
+ shellDepth: 1,
568
+ skeleton: {
569
+ attractors: 500,
570
+ bias: {
571
+ gravitropism: 0,
572
+ lean: 0,
573
+ supernatural: {
574
+ enabled: !1,
575
+ maxWritheMagnitude: 0.9,
576
+ spiralRate: 0,
577
+ writheAmplitude: 0,
578
+ writheWavelength: 0.45
579
+ }
580
+ },
581
+ envelope: {
582
+ crownBase: 0.16,
583
+ fullness: 0.55,
584
+ height: 24,
585
+ irregularity: 0,
586
+ lobeScale: 0.5,
587
+ shoulder: 2.2,
588
+ spread: 0.55
589
+ },
590
+ growth: {
591
+ maxTurnPerStep: 35
592
+ },
593
+ habit: {
594
+ apicalDominance: 0.1,
595
+ attractorWeight: 0,
596
+ crookedness: 24,
597
+ lateralLengthRatio: 0.45,
598
+ lateralOrders: 3,
599
+ lateralPitch: 55,
600
+ lateralSpacing: 1.6,
601
+ lateralsPerStation: 5,
602
+ leaderInternode: 2,
603
+ pitchVariation: 20,
604
+ reachProbeSteps: 96,
605
+ risePrimary: 0.12,
606
+ riseSecondary: 0,
607
+ sheddingThreshold: 0,
608
+ stemDivergence: 0,
609
+ stemForkHeight: 0,
610
+ stemLean: 0,
611
+ stemLeanSpread: 0,
612
+ stems: 1,
613
+ twigTipTaper: 0.25,
614
+ whorlStrength: 0.1
615
+ },
616
+ samplingAttemptsPerAttractor: 64,
617
+ seed: 42,
618
+ step: 0.022,
619
+ twigs: {
620
+ angle: 45,
621
+ angleVariation: 10,
622
+ curtainClearance: 0.5,
623
+ curtainDrop: 0,
624
+ curtainSeparation: 4,
625
+ curtainStepClearance: 0.8,
626
+ divergence: 137.508,
627
+ generations: 6,
628
+ hang: 0,
629
+ internodeFactor: 2.5,
630
+ laterals: 4,
631
+ lengthRatio: 0.45,
632
+ limbRadius: 0.1,
633
+ maxDroop: 0.35,
634
+ maxInternodes: 32,
635
+ pendulousLength: 0.25,
636
+ pendulousRadius: 1,
637
+ pendulousVariation: 0,
638
+ ratioPower: 1.3,
639
+ reach: 0.2,
640
+ sag: 0,
641
+ twig: {
642
+ bearingDiameter: 0.03,
643
+ diameter: 5e-3,
644
+ internodeLength: 0.02,
645
+ length: 0.25,
646
+ stationsPerInternode: 1
647
+ },
648
+ vigourVariation: 0.15
649
+ }
650
+ },
651
+ surface: {
652
+ flareDepth: 4e-3,
653
+ flareFalloff: 0.022,
654
+ flareRadius: 2.1,
655
+ forkSocket: 0.5,
656
+ forkSwell: 1.35,
657
+ lobeDepth: 0,
658
+ lobes: 5,
659
+ radialSegments: 12,
660
+ socketContainment: 0.9,
661
+ twistRate: 0
662
+ }
663
+ },
664
+ id: "oregon-white-oak",
665
+ name: "Oregon white oak",
666
+ note: "Quercus garryana"
667
+ },
668
+ {
669
+ abiId: 4,
670
+ family: {
671
+ age: 100,
672
+ canopy: {
673
+ acanthophyllLength: 0.35,
674
+ acanthophyllPitch: 80,
675
+ acanthophylls: 0,
676
+ clump: 5,
677
+ clumpNeighbours: 12,
678
+ clumpSpan: 0.3,
679
+ clumpSystemOrder: 2,
680
+ divergence: 137.508,
681
+ forwardLean: 0.05,
682
+ leafBaseLength: 0,
683
+ leafBasePitch: 60,
684
+ leafBaseRadius: 0.35,
685
+ leafBaseWeathering: 0,
686
+ leafBases: 0,
687
+ leafletCount: 1,
688
+ leafletPitch: 45,
689
+ leanRise: 1.2,
690
+ limbClumping: 0,
691
+ maxInstances: 4294967295,
692
+ outward: 0,
693
+ rachisArch: 0,
694
+ rachisLength: 0,
695
+ rosetteDepth: 0,
696
+ rosetteDivergence: 137.508,
697
+ rosetteFronds: 0,
698
+ rosettePitch: 45,
699
+ rosettePitchSpread: 60,
700
+ scatter: 18,
701
+ shootRadius: 0.025,
702
+ shortShootLeaves: 3,
703
+ shortShootLength: 0.04,
704
+ shortShootRadius: 0.15,
705
+ shortShootSpacing: 0,
706
+ shortShootSpread: 45,
707
+ size: 1,
708
+ sizeVariation: 0.2,
709
+ spacing: 6e-3,
710
+ surfaceContact: 1,
711
+ terminalLeaflet: 0,
712
+ upward: 0
713
+ },
714
+ element: {
715
+ axialSegments: 5,
716
+ baseFullness: 0.2,
717
+ card: !1,
718
+ connectorLength: 1e-3,
719
+ crossSegments: 4,
720
+ cup: 0.18,
721
+ curl: 0.12,
722
+ length: 0.018,
723
+ lobeCount: 0,
724
+ lobeDepth: 0,
725
+ sectionRoundness: 1,
726
+ tipSharpness: 0.2,
727
+ widestAt: 0.2,
728
+ width: 15e-4
729
+ },
730
+ growth: {
731
+ apicalControlLoss: 0,
732
+ leafLifetime: 6,
733
+ rate: 0.08,
734
+ resizeTolerance: 1e-4,
735
+ shape: 2,
736
+ sheddingTolerance: 2,
737
+ workBudget: 25e4
738
+ },
739
+ material: {
740
+ barkBlue: 0.148,
741
+ barkGrainScale: 18e-4,
742
+ barkGrainStrength: 0.15,
743
+ barkGreen: 0.175,
744
+ barkMottleScale: 0.4,
745
+ barkMottleStrength: 0.2,
746
+ barkRed: 0.2,
747
+ barkReflectance: 0.04,
748
+ barkRoughness: 0.9,
749
+ bladeGrainScale: 0,
750
+ bladeGrainStrength: 0,
751
+ bladeMottleScale: 8,
752
+ bladeMottleStrength: 0,
753
+ brightnessRangeHigh: 0.1,
754
+ brightnessRangeLow: -0.1,
755
+ canopyNormal: 0,
756
+ cavityStrength: 0.6,
757
+ crestBlue: 0.01,
758
+ crestGreen: 0.025,
759
+ crestRed: 0.05,
760
+ crestStrength: 0.3,
761
+ crownShade: 0,
762
+ cuticleGloss: 0.05,
763
+ depthStrength: 0.45625,
764
+ diffuseTransmission: 0,
765
+ directionalOcclusion: 0.45,
766
+ fissureBlue: -0.11,
767
+ fissureGreen: -0.054,
768
+ fissureRed: 0.07,
769
+ fissureStrength: 0.4,
770
+ furrowStrength: 0.025,
771
+ hueRangeHigh: 0.02,
772
+ hueRangeLow: -0.02,
773
+ interiorDarkening: 0.7,
774
+ leafBackBlue: 0.138,
775
+ leafBackGreen: 0.195,
776
+ leafBackRed: 0.109,
777
+ leafFrontBlue: 0.028,
778
+ leafFrontGreen: 0.056,
779
+ leafFrontRed: 0.018,
780
+ leafReflectance: 0.04,
781
+ leafSheen: 0,
782
+ lenticelDensity: 0,
783
+ lenticelLength: 0,
784
+ lenticelStrength: 0,
785
+ lenticelTint: 0,
786
+ lichenBlue: 0,
787
+ lichenCoverage: 0,
788
+ lichenGreen: 0,
789
+ lichenRed: 0,
790
+ lichenScale: 0,
791
+ lichenStrength: 0,
792
+ lightWrap: 0,
793
+ lobeShade: 0,
794
+ marginBlue: 2e-3,
795
+ marginGreen: 0.015,
796
+ marginRed: 0.01,
797
+ marginWidth: 0,
798
+ orientationBlue: -0.0155,
799
+ orientationGreen: 0.026,
800
+ orientationRed: -0.014,
801
+ orientationStrength: 0.44375,
802
+ peelBlue: 0,
803
+ peelCurl: 0,
804
+ peelGreen: 0,
805
+ peelRed: 0,
806
+ plateCellScale: 0.021,
807
+ plateDome: 0.08,
808
+ plateEdgeLift: 0.3,
809
+ plateEdgeShape: 1,
810
+ plateElongation: 0.2,
811
+ plateFurrowWidth: 0,
812
+ plateIdentity: 0.375,
813
+ plateScale: 0.03,
814
+ ridgeScale: 0.02,
815
+ roughnessDetail: 0.16,
816
+ shootBlue: 0.045,
817
+ shootGreen: 0.078,
818
+ shootRadius: 0,
819
+ shootRed: 0.147,
820
+ skyOcclusionStrength: 0.6,
821
+ thickness: 3.5,
822
+ transmissionBlue: 0.08,
823
+ transmissionGreen: 0.24,
824
+ transmissionRed: 0.12,
825
+ transmissionStrength: 0.01,
826
+ veinContrast: 0,
827
+ veinScale: 8,
828
+ weatheringBlue: 0.02975,
829
+ weatheringGreen: 0.03,
830
+ weatheringRed: 0.015,
831
+ weatheringStrength: 0.6
832
+ },
833
+ radii: {
834
+ forkExponent: 2,
835
+ lengthTaper: 0.6,
836
+ maxTaperExponent: 12,
837
+ trunkRadius: 0.015
838
+ },
839
+ shellDepth: 1,
840
+ skeleton: {
841
+ attractors: 500,
842
+ bias: {
843
+ gravitropism: 0,
844
+ lean: 0,
845
+ supernatural: {
846
+ enabled: !1,
847
+ maxWritheMagnitude: 0.9,
848
+ spiralRate: 0,
849
+ writheAmplitude: 0,
850
+ writheWavelength: 0.45
851
+ }
852
+ },
853
+ envelope: {
854
+ crownBase: 0.04,
855
+ fullness: 0.15,
856
+ height: 15,
857
+ irregularity: 0,
858
+ lobeScale: 0.5,
859
+ shoulder: 1,
860
+ spread: 0.31
861
+ },
862
+ growth: {
863
+ maxTurnPerStep: 35
864
+ },
865
+ habit: {
866
+ apicalDominance: 1,
867
+ attractorWeight: 0,
868
+ crookedness: 0,
869
+ lateralLengthRatio: 0.3,
870
+ lateralOrders: 4,
871
+ lateralPitch: 88,
872
+ lateralSpacing: 0.15,
873
+ lateralsPerStation: 5,
874
+ leaderInternode: 0.9,
875
+ pitchVariation: 4,
876
+ reachProbeSteps: 96,
877
+ risePrimary: 0.12,
878
+ riseSecondary: -0.8,
879
+ sheddingThreshold: 0,
880
+ stemDivergence: 0,
881
+ stemForkHeight: 0,
882
+ stemLean: 0,
883
+ stemLeanSpread: 0,
884
+ stems: 1,
885
+ twigTipTaper: 0.25,
886
+ whorlStrength: 1
887
+ },
888
+ samplingAttemptsPerAttractor: 64,
889
+ seed: 42,
890
+ step: 0.022,
891
+ twigs: {
892
+ angle: 45,
893
+ angleVariation: 10,
894
+ curtainClearance: 0.5,
895
+ curtainDrop: 0,
896
+ curtainSeparation: 4,
897
+ curtainStepClearance: 0.8,
898
+ divergence: 137.508,
899
+ generations: 6,
900
+ hang: 1,
901
+ internodeFactor: 2.5,
902
+ laterals: 2,
903
+ lengthRatio: 0.4,
904
+ limbRadius: 0.1,
905
+ maxDroop: 0.35,
906
+ maxInternodes: 32,
907
+ pendulousLength: 0.25,
908
+ pendulousRadius: 1,
909
+ pendulousVariation: 0,
910
+ ratioPower: 1.3,
911
+ reach: 0.2,
912
+ sag: 0,
913
+ twig: {
914
+ bearingDiameter: 0.02,
915
+ diameter: 2e-3,
916
+ internodeLength: 25e-4,
917
+ length: 0.25,
918
+ stationsPerInternode: 1
919
+ },
920
+ vigourVariation: 0.15
921
+ }
922
+ },
923
+ surface: {
924
+ flareDepth: 4e-3,
925
+ flareFalloff: 0.022,
926
+ flareRadius: 2.1,
927
+ forkSocket: 0.5,
928
+ forkSwell: 1.35,
929
+ lobeDepth: 0,
930
+ lobes: 5,
931
+ radialSegments: 12,
932
+ socketContainment: 0.9,
933
+ twistRate: 0
934
+ }
935
+ },
936
+ id: "norway-spruce",
937
+ name: "Norway spruce",
938
+ note: "Picea abies"
939
+ },
940
+ {
941
+ abiId: 6,
942
+ family: {
943
+ age: 70,
944
+ canopy: {
945
+ acanthophyllLength: 0.35,
946
+ acanthophyllPitch: 80,
947
+ acanthophylls: 0,
948
+ clump: 8,
949
+ clumpNeighbours: 12,
950
+ clumpSpan: 0.5,
951
+ clumpSystemOrder: 2,
952
+ divergence: 180,
953
+ forwardLean: 0.6,
954
+ leafBaseLength: 0,
955
+ leafBasePitch: 60,
956
+ leafBaseRadius: 0.35,
957
+ leafBaseWeathering: 0,
958
+ leafBases: 0,
959
+ leafletCount: 1,
960
+ leafletPitch: 45,
961
+ leanRise: 0.3,
962
+ limbClumping: 0,
963
+ maxInstances: 4294967295,
964
+ outward: 0,
965
+ rachisArch: 0,
966
+ rachisLength: 0,
967
+ rosetteDepth: 0,
968
+ rosetteDivergence: 137.508,
969
+ rosetteFronds: 0,
970
+ rosettePitch: 45,
971
+ rosettePitchSpread: 60,
972
+ scatter: 18,
973
+ shootRadius: 0,
974
+ shortShootLeaves: 3,
975
+ shortShootLength: 0.04,
976
+ shortShootRadius: 0.15,
977
+ shortShootSpacing: 0,
978
+ shortShootSpread: 45,
979
+ size: 1,
980
+ sizeVariation: 0.2,
981
+ spacing: 6e-3,
982
+ surfaceContact: 0,
983
+ terminalLeaflet: 0,
984
+ upward: -0.35
985
+ },
986
+ element: {
987
+ axialSegments: 32,
988
+ baseFullness: 0.3,
989
+ card: !1,
990
+ connectorLength: 0.022,
991
+ crossSegments: 2,
992
+ cup: 0.18,
993
+ curl: 0.12,
994
+ length: 0.055,
995
+ lobeCount: 8,
996
+ lobeDepth: 0.1,
997
+ sectionRoundness: 0,
998
+ tipSharpness: 1.1,
999
+ widestAt: 0.2,
1000
+ width: 0.045
1001
+ },
1002
+ growth: {
1003
+ apicalControlLoss: 0,
1004
+ leafLifetime: 1,
1005
+ rate: 0.08,
1006
+ resizeTolerance: 1e-4,
1007
+ shape: 2,
1008
+ sheddingTolerance: 2,
1009
+ workBudget: 25e4
1010
+ },
1011
+ material: {
1012
+ barkBlue: 0.7,
1013
+ barkGrainScale: 2e-3,
1014
+ barkGrainStrength: 0.15,
1015
+ barkGreen: 0.76,
1016
+ barkMottleScale: 0.15,
1017
+ barkMottleStrength: 0.12,
1018
+ barkRed: 0.78,
1019
+ barkReflectance: 0.04,
1020
+ barkRoughness: 0.95,
1021
+ bladeGrainScale: 90,
1022
+ bladeGrainStrength: 0.3,
1023
+ bladeMottleScale: 5.5,
1024
+ bladeMottleStrength: 0.2,
1025
+ brightnessRangeHigh: 0.12,
1026
+ brightnessRangeLow: -0.12,
1027
+ canopyNormal: 0.8,
1028
+ cavityStrength: 0.3,
1029
+ crestBlue: 0.1,
1030
+ crestGreen: 0.1,
1031
+ crestRed: 0.1,
1032
+ crestStrength: 0.4,
1033
+ crownShade: 0.2,
1034
+ cuticleGloss: 0.28,
1035
+ depthStrength: 0.4,
1036
+ diffuseTransmission: 1,
1037
+ directionalOcclusion: 0.6,
1038
+ fissureBlue: -0.41,
1039
+ fissureGreen: -0.44,
1040
+ fissureRed: -0.44,
1041
+ fissureStrength: 1,
1042
+ furrowStrength: 1,
1043
+ hueRangeHigh: 0.025,
1044
+ hueRangeLow: -0.025,
1045
+ interiorDarkening: 0.15,
1046
+ leafBackBlue: 0.14,
1047
+ leafBackGreen: 0.28,
1048
+ leafBackRed: 0.2,
1049
+ leafFrontBlue: 0.06,
1050
+ leafFrontGreen: 0.19,
1051
+ leafFrontRed: 0.1,
1052
+ leafReflectance: 0.04,
1053
+ leafSheen: 0.06,
1054
+ lenticelDensity: 18,
1055
+ lenticelLength: 0.06,
1056
+ lenticelStrength: 0.72,
1057
+ lenticelTint: -0.62,
1058
+ lichenBlue: 0.48,
1059
+ lichenCoverage: 1,
1060
+ lichenGreen: 0.5,
1061
+ lichenRed: 0.5,
1062
+ lichenScale: 0.01,
1063
+ lichenStrength: 0.45,
1064
+ lightWrap: 0.5,
1065
+ lobeShade: 0,
1066
+ marginBlue: 0.01,
1067
+ marginGreen: 0.05,
1068
+ marginRed: 0.03,
1069
+ marginWidth: 0.05,
1070
+ orientationBlue: 0,
1071
+ orientationGreen: 0,
1072
+ orientationRed: 0,
1073
+ orientationStrength: 0,
1074
+ peelBlue: 0.29,
1075
+ peelCurl: 0.3,
1076
+ peelGreen: 0.315,
1077
+ peelRed: 0.33,
1078
+ plateCellScale: 0.05,
1079
+ plateDome: 0.3,
1080
+ plateEdgeLift: 0.3,
1081
+ plateEdgeShape: 0,
1082
+ plateElongation: 0,
1083
+ plateFurrowWidth: 0,
1084
+ plateIdentity: 0.3,
1085
+ plateScale: 0.4,
1086
+ ridgeScale: 0.08,
1087
+ roughnessDetail: 0.1,
1088
+ shootBlue: 0.055,
1089
+ shootGreen: 0.07,
1090
+ shootRadius: 0.01,
1091
+ shootRed: 0.095,
1092
+ skyOcclusionStrength: 0.4,
1093
+ thickness: 0.45,
1094
+ transmissionBlue: 0.1,
1095
+ transmissionGreen: 0.55,
1096
+ transmissionRed: 0.28,
1097
+ transmissionStrength: 0.6,
1098
+ veinContrast: 0.8,
1099
+ veinScale: 6,
1100
+ weatheringBlue: 0,
1101
+ weatheringGreen: 0,
1102
+ weatheringRed: 0,
1103
+ weatheringStrength: 0
1104
+ },
1105
+ radii: {
1106
+ forkExponent: 2,
1107
+ lengthTaper: 0.6,
1108
+ maxTaperExponent: 12,
1109
+ trunkRadius: 0.014
1110
+ },
1111
+ shellDepth: 0.45,
1112
+ skeleton: {
1113
+ attractors: 500,
1114
+ bias: {
1115
+ gravitropism: 0,
1116
+ lean: 0,
1117
+ supernatural: {
1118
+ enabled: !1,
1119
+ maxWritheMagnitude: 0.9,
1120
+ spiralRate: 0,
1121
+ writheAmplitude: 0,
1122
+ writheWavelength: 0.45
1123
+ }
1124
+ },
1125
+ envelope: {
1126
+ crownBase: 0.1,
1127
+ fullness: 0.6,
1128
+ height: 18,
1129
+ irregularity: 0.35,
1130
+ lobeScale: 0.25,
1131
+ shoulder: 1.6,
1132
+ spread: 0.36
1133
+ },
1134
+ growth: {
1135
+ maxTurnPerStep: 35
1136
+ },
1137
+ habit: {
1138
+ apicalDominance: 0.45,
1139
+ attractorWeight: 0,
1140
+ crookedness: 10,
1141
+ lateralLengthRatio: 0.4,
1142
+ lateralOrders: 3,
1143
+ lateralPitch: 45,
1144
+ lateralSpacing: 1.2,
1145
+ lateralsPerStation: 2,
1146
+ leaderInternode: 1.6,
1147
+ pitchVariation: 14,
1148
+ reachProbeSteps: 96,
1149
+ risePrimary: 0.02,
1150
+ riseSecondary: -0.85,
1151
+ sheddingThreshold: 0,
1152
+ stemDivergence: 0,
1153
+ stemForkHeight: 0.5,
1154
+ stemLean: 28,
1155
+ stemLeanSpread: 1,
1156
+ stems: 2,
1157
+ twigTipTaper: 0.35,
1158
+ whorlStrength: 0.2
1159
+ },
1160
+ samplingAttemptsPerAttractor: 64,
1161
+ seed: 42,
1162
+ step: 0.022,
1163
+ twigs: {
1164
+ angle: 45,
1165
+ angleVariation: 10,
1166
+ curtainClearance: 1.8,
1167
+ curtainDrop: 0.6,
1168
+ curtainSeparation: 9,
1169
+ curtainStepClearance: 0.8,
1170
+ divergence: 137.508,
1171
+ generations: 6,
1172
+ hang: 2.4,
1173
+ internodeFactor: 2.5,
1174
+ laterals: 7,
1175
+ lengthRatio: 0.55,
1176
+ limbRadius: 0.1,
1177
+ maxDroop: 0.35,
1178
+ maxInternodes: 32,
1179
+ pendulousLength: 3,
1180
+ pendulousRadius: 1,
1181
+ pendulousVariation: 0.95,
1182
+ ratioPower: 1.3,
1183
+ reach: 0.2,
1184
+ sag: 1,
1185
+ twig: {
1186
+ bearingDiameter: 0.02,
1187
+ diameter: 3e-3,
1188
+ internodeLength: 0.06,
1189
+ length: 0.45,
1190
+ stationsPerInternode: 1
1191
+ },
1192
+ vigourVariation: 0.15
1193
+ }
1194
+ },
1195
+ surface: {
1196
+ flareDepth: 4e-3,
1197
+ flareFalloff: 0.022,
1198
+ flareRadius: 2.1,
1199
+ forkSocket: 0.5,
1200
+ forkSwell: 1.35,
1201
+ lobeDepth: 0,
1202
+ lobes: 5,
1203
+ radialSegments: 12,
1204
+ socketContainment: 0.9,
1205
+ twistRate: 0
1206
+ }
1207
+ },
1208
+ id: "silver-birch",
1209
+ name: "Silver birch",
1210
+ note: "Betula pendula"
1211
+ },
1212
+ {
1213
+ abiId: 1,
1214
+ family: {
1215
+ age: 100,
1216
+ canopy: {
1217
+ acanthophyllLength: 0.35,
1218
+ acanthophyllPitch: 80,
1219
+ acanthophylls: 0,
1220
+ clump: 6,
1221
+ clumpNeighbours: 12,
1222
+ clumpSpan: 0.28,
1223
+ clumpSystemOrder: 2,
1224
+ divergence: 137.508,
1225
+ forwardLean: 0,
1226
+ leafBaseLength: 0,
1227
+ leafBasePitch: 60,
1228
+ leafBaseRadius: 0.35,
1229
+ leafBaseWeathering: 0,
1230
+ leafBases: 0,
1231
+ leafletCount: 1,
1232
+ leafletPitch: 45,
1233
+ leanRise: 0,
1234
+ limbClumping: 0,
1235
+ maxInstances: 4294967295,
1236
+ outward: 0.42,
1237
+ rachisArch: 0,
1238
+ rachisLength: 0,
1239
+ rosetteDepth: 0,
1240
+ rosetteDivergence: 137.508,
1241
+ rosetteFronds: 0,
1242
+ rosettePitch: 45,
1243
+ rosettePitchSpread: 60,
1244
+ scatter: 14,
1245
+ shootRadius: 0,
1246
+ shortShootLeaves: 3,
1247
+ shortShootLength: 0.04,
1248
+ shortShootRadius: 0.15,
1249
+ shortShootSpacing: 0,
1250
+ shortShootSpread: 45,
1251
+ size: 1,
1252
+ sizeVariation: 0.28,
1253
+ spacing: 45e-4,
1254
+ surfaceContact: 0,
1255
+ terminalLeaflet: 0,
1256
+ upward: 0.55
1257
+ },
1258
+ element: {
1259
+ axialSegments: 5,
1260
+ baseFullness: 0.85,
1261
+ card: !1,
1262
+ connectorLength: 0.01,
1263
+ crossSegments: 2,
1264
+ cup: 0.18,
1265
+ curl: 0.12,
1266
+ length: 0.12,
1267
+ lobeCount: 0,
1268
+ lobeDepth: 0,
1269
+ sectionRoundness: 0,
1270
+ tipSharpness: 1.6,
1271
+ widestAt: 0.42,
1272
+ width: 0.06
1273
+ },
1274
+ growth: {
1275
+ apicalControlLoss: 0,
1276
+ leafLifetime: 1,
1277
+ rate: 0.08,
1278
+ resizeTolerance: 1e-4,
1279
+ shape: 2,
1280
+ sheddingTolerance: 2,
1281
+ workBudget: 25e4
1282
+ },
1283
+ material: {
1284
+ barkBlue: 0.068,
1285
+ barkGrainScale: 0,
1286
+ barkGrainStrength: 0,
1287
+ barkGreen: 0.105,
1288
+ barkMottleScale: 0,
1289
+ barkMottleStrength: 0.05,
1290
+ barkRed: 0.147,
1291
+ barkReflectance: 0.04,
1292
+ barkRoughness: 0.8,
1293
+ bladeGrainScale: 0,
1294
+ bladeGrainStrength: 0,
1295
+ bladeMottleScale: 0,
1296
+ bladeMottleStrength: 0.04,
1297
+ brightnessRangeHigh: 0.12,
1298
+ brightnessRangeLow: -0.12,
1299
+ canopyNormal: 0,
1300
+ cavityStrength: 0.2,
1301
+ crestBlue: 0,
1302
+ crestGreen: 0,
1303
+ crestRed: 0,
1304
+ crestStrength: 0.1,
1305
+ crownShade: 0,
1306
+ cuticleGloss: 0.25,
1307
+ depthStrength: 0,
1308
+ diffuseTransmission: 0,
1309
+ directionalOcclusion: 0,
1310
+ fissureBlue: 0,
1311
+ fissureGreen: 0,
1312
+ fissureRed: 0,
1313
+ fissureStrength: 0.12,
1314
+ furrowStrength: 1,
1315
+ hueRangeHigh: 0.03,
1316
+ hueRangeLow: -0.03,
1317
+ interiorDarkening: 0.5,
1318
+ leafBackBlue: 0.07,
1319
+ leafBackGreen: 0.24,
1320
+ leafBackRed: 0.105,
1321
+ leafFrontBlue: 0.036,
1322
+ leafFrontGreen: 0.195,
1323
+ leafFrontRed: 0.068,
1324
+ leafReflectance: 0.04,
1325
+ leafSheen: 0,
1326
+ lenticelDensity: 0,
1327
+ lenticelLength: 0,
1328
+ lenticelStrength: 0,
1329
+ lenticelTint: 0,
1330
+ lichenBlue: 0,
1331
+ lichenCoverage: 0,
1332
+ lichenGreen: 0,
1333
+ lichenRed: 0,
1334
+ lichenScale: 0,
1335
+ lichenStrength: 0,
1336
+ lightWrap: 0,
1337
+ lobeShade: 0,
1338
+ marginBlue: 0,
1339
+ marginGreen: 0,
1340
+ marginRed: 0,
1341
+ marginWidth: 0,
1342
+ orientationBlue: 0,
1343
+ orientationGreen: 0,
1344
+ orientationRed: 0,
1345
+ orientationStrength: 0,
1346
+ peelBlue: 0,
1347
+ peelCurl: 0,
1348
+ peelGreen: 0,
1349
+ peelRed: 0,
1350
+ plateCellScale: 0,
1351
+ plateDome: 0,
1352
+ plateEdgeLift: 0,
1353
+ plateEdgeShape: 0,
1354
+ plateElongation: 0,
1355
+ plateFurrowWidth: 0,
1356
+ plateIdentity: 0,
1357
+ plateScale: 0,
1358
+ ridgeScale: 0,
1359
+ roughnessDetail: 0,
1360
+ shootBlue: 0.068,
1361
+ shootGreen: 0.105,
1362
+ shootRadius: 0,
1363
+ shootRed: 0.147,
1364
+ skyOcclusionStrength: 0.2,
1365
+ thickness: 1,
1366
+ transmissionBlue: 0.1,
1367
+ transmissionGreen: 0.6,
1368
+ transmissionRed: 0.3,
1369
+ transmissionStrength: 0,
1370
+ veinContrast: 0,
1371
+ veinScale: 8,
1372
+ weatheringBlue: 0,
1373
+ weatheringGreen: 0,
1374
+ weatheringRed: 0,
1375
+ weatheringStrength: 0
1376
+ },
1377
+ radii: {
1378
+ forkExponent: 2.15,
1379
+ lengthTaper: 0.75,
1380
+ maxTaperExponent: 12,
1381
+ trunkRadius: 0.05
1382
+ },
1383
+ shellDepth: 0.45,
1384
+ skeleton: {
1385
+ attractors: 1600,
1386
+ bias: {
1387
+ gravitropism: 0.95,
1388
+ lean: 0.04,
1389
+ supernatural: {
1390
+ enabled: !0,
1391
+ maxWritheMagnitude: 0.9,
1392
+ spiralRate: 2.6,
1393
+ writheAmplitude: 0.11,
1394
+ writheWavelength: 0.34
1395
+ }
1396
+ },
1397
+ envelope: {
1398
+ crownBase: 0.38,
1399
+ fullness: 0.58,
1400
+ height: 148,
1401
+ irregularity: 0,
1402
+ lobeScale: 0.5,
1403
+ shoulder: 1.5,
1404
+ spread: 0.24
1405
+ },
1406
+ growth: {
1407
+ maxTurnPerStep: 26
1408
+ },
1409
+ habit: {
1410
+ apicalDominance: 0.15,
1411
+ attractorWeight: 1,
1412
+ crookedness: 12,
1413
+ lateralLengthRatio: 0.45,
1414
+ lateralOrders: 3,
1415
+ lateralPitch: 60,
1416
+ lateralSpacing: 10,
1417
+ lateralsPerStation: 4,
1418
+ leaderInternode: 10,
1419
+ pitchVariation: 15,
1420
+ reachProbeSteps: 96,
1421
+ risePrimary: 0.05,
1422
+ riseSecondary: 0,
1423
+ sheddingThreshold: 0.45,
1424
+ stemDivergence: 0,
1425
+ stemForkHeight: 0,
1426
+ stemLean: 0,
1427
+ stemLeanSpread: 0,
1428
+ stems: 1,
1429
+ twigTipTaper: 1,
1430
+ whorlStrength: 0.2
1431
+ },
1432
+ samplingAttemptsPerAttractor: 64,
1433
+ seed: 1,
1434
+ step: 0.022,
1435
+ twigs: {
1436
+ angle: 45,
1437
+ angleVariation: 10,
1438
+ curtainClearance: 0.5,
1439
+ curtainDrop: 0,
1440
+ curtainSeparation: 4,
1441
+ curtainStepClearance: 0.8,
1442
+ divergence: 137.508,
1443
+ generations: 6,
1444
+ hang: 0,
1445
+ internodeFactor: 3.5,
1446
+ laterals: 4,
1447
+ lengthRatio: 0.4,
1448
+ limbRadius: 0.1,
1449
+ maxDroop: 0.35,
1450
+ maxInternodes: 32,
1451
+ pendulousLength: 0.25,
1452
+ pendulousRadius: 1,
1453
+ pendulousVariation: 0,
1454
+ ratioPower: 1.3,
1455
+ reach: 0.2,
1456
+ sag: 0,
1457
+ twig: {
1458
+ bearingDiameter: 0.05,
1459
+ diameter: 5e-3,
1460
+ internodeLength: 0.02,
1461
+ length: 0.5,
1462
+ stationsPerInternode: 1
1463
+ },
1464
+ vigourVariation: 0.15
1465
+ }
1466
+ },
1467
+ surface: {
1468
+ flareDepth: 4e-3,
1469
+ flareFalloff: 0.022,
1470
+ flareRadius: 2,
1471
+ forkSocket: 0.5,
1472
+ forkSwell: 1.35,
1473
+ lobeDepth: 0.11,
1474
+ lobes: 7,
1475
+ radialSegments: 12,
1476
+ socketContainment: 0.9,
1477
+ twistRate: 2.4
1478
+ }
1479
+ },
1480
+ id: "telperion",
1481
+ name: "Telperion",
1482
+ note: "The silver tree"
1483
+ },
1484
+ {
1485
+ abiId: 2,
1486
+ family: {
1487
+ age: 100,
1488
+ canopy: {
1489
+ acanthophyllLength: 0.35,
1490
+ acanthophyllPitch: 80,
1491
+ acanthophylls: 0,
1492
+ clump: 9,
1493
+ clumpNeighbours: 12,
1494
+ clumpSpan: 0.36,
1495
+ clumpSystemOrder: 2,
1496
+ divergence: 99.502,
1497
+ forwardLean: 0,
1498
+ leafBaseLength: 0,
1499
+ leafBasePitch: 60,
1500
+ leafBaseRadius: 0.35,
1501
+ leafBaseWeathering: 0,
1502
+ leafBases: 0,
1503
+ leafletCount: 1,
1504
+ leafletPitch: 45,
1505
+ leanRise: 0,
1506
+ limbClumping: 0,
1507
+ maxInstances: 4294967295,
1508
+ outward: 0.72,
1509
+ rachisArch: 0,
1510
+ rachisLength: 0,
1511
+ rosetteDepth: 0,
1512
+ rosetteDivergence: 137.508,
1513
+ rosetteFronds: 0,
1514
+ rosettePitch: 45,
1515
+ rosettePitchSpread: 60,
1516
+ scatter: 22,
1517
+ shootRadius: 0,
1518
+ shortShootLeaves: 3,
1519
+ shortShootLength: 0.04,
1520
+ shortShootRadius: 0.15,
1521
+ shortShootSpacing: 0,
1522
+ shortShootSpread: 45,
1523
+ size: 1.5,
1524
+ sizeVariation: 0.4,
1525
+ spacing: 65e-4,
1526
+ surfaceContact: 0,
1527
+ terminalLeaflet: 0,
1528
+ upward: 0.22
1529
+ },
1530
+ element: {
1531
+ axialSegments: 5,
1532
+ baseFullness: 0.85,
1533
+ card: !1,
1534
+ connectorLength: 0.01,
1535
+ crossSegments: 2,
1536
+ cup: 0.18,
1537
+ curl: 0.12,
1538
+ length: 0.12,
1539
+ lobeCount: 0,
1540
+ lobeDepth: 0,
1541
+ sectionRoundness: 0,
1542
+ tipSharpness: 1.6,
1543
+ widestAt: 0.42,
1544
+ width: 0.06
1545
+ },
1546
+ growth: {
1547
+ apicalControlLoss: 0,
1548
+ leafLifetime: 1,
1549
+ rate: 0.08,
1550
+ resizeTolerance: 1e-4,
1551
+ shape: 2,
1552
+ sheddingTolerance: 2,
1553
+ workBudget: 25e4
1554
+ },
1555
+ material: {
1556
+ barkBlue: 0.068,
1557
+ barkGrainScale: 0,
1558
+ barkGrainStrength: 0,
1559
+ barkGreen: 0.105,
1560
+ barkMottleScale: 0,
1561
+ barkMottleStrength: 0.05,
1562
+ barkRed: 0.147,
1563
+ barkReflectance: 0.04,
1564
+ barkRoughness: 0.8,
1565
+ bladeGrainScale: 0,
1566
+ bladeGrainStrength: 0,
1567
+ bladeMottleScale: 0,
1568
+ bladeMottleStrength: 0.04,
1569
+ brightnessRangeHigh: 0.12,
1570
+ brightnessRangeLow: -0.12,
1571
+ canopyNormal: 0,
1572
+ cavityStrength: 0.2,
1573
+ crestBlue: 0,
1574
+ crestGreen: 0,
1575
+ crestRed: 0,
1576
+ crestStrength: 0.1,
1577
+ crownShade: 0,
1578
+ cuticleGloss: 0.3,
1579
+ depthStrength: 0,
1580
+ diffuseTransmission: 0,
1581
+ directionalOcclusion: 0,
1582
+ fissureBlue: 0,
1583
+ fissureGreen: 0,
1584
+ fissureRed: 0,
1585
+ fissureStrength: 0.12,
1586
+ furrowStrength: 1,
1587
+ hueRangeHigh: 0.03,
1588
+ hueRangeLow: -0.03,
1589
+ interiorDarkening: 0.5,
1590
+ leafBackBlue: 0.07,
1591
+ leafBackGreen: 0.24,
1592
+ leafBackRed: 0.105,
1593
+ leafFrontBlue: 0.036,
1594
+ leafFrontGreen: 0.195,
1595
+ leafFrontRed: 0.068,
1596
+ leafReflectance: 0.04,
1597
+ leafSheen: 0,
1598
+ lenticelDensity: 0,
1599
+ lenticelLength: 0,
1600
+ lenticelStrength: 0,
1601
+ lenticelTint: 0,
1602
+ lichenBlue: 0,
1603
+ lichenCoverage: 0,
1604
+ lichenGreen: 0,
1605
+ lichenRed: 0,
1606
+ lichenScale: 0,
1607
+ lichenStrength: 0,
1608
+ lightWrap: 0,
1609
+ lobeShade: 0,
1610
+ marginBlue: 0,
1611
+ marginGreen: 0,
1612
+ marginRed: 0,
1613
+ marginWidth: 0,
1614
+ orientationBlue: 0,
1615
+ orientationGreen: 0,
1616
+ orientationRed: 0,
1617
+ orientationStrength: 0,
1618
+ peelBlue: 0,
1619
+ peelCurl: 0,
1620
+ peelGreen: 0,
1621
+ peelRed: 0,
1622
+ plateCellScale: 0,
1623
+ plateDome: 0,
1624
+ plateEdgeLift: 0,
1625
+ plateEdgeShape: 0,
1626
+ plateElongation: 0,
1627
+ plateFurrowWidth: 0,
1628
+ plateIdentity: 0,
1629
+ plateScale: 0,
1630
+ ridgeScale: 0,
1631
+ roughnessDetail: 0,
1632
+ shootBlue: 0.068,
1633
+ shootGreen: 0.105,
1634
+ shootRadius: 0,
1635
+ shootRed: 0.147,
1636
+ skyOcclusionStrength: 0.2,
1637
+ thickness: 1,
1638
+ transmissionBlue: 0.1,
1639
+ transmissionGreen: 0.6,
1640
+ transmissionRed: 0.3,
1641
+ transmissionStrength: 0,
1642
+ veinContrast: 0,
1643
+ veinScale: 8,
1644
+ weatheringBlue: 0,
1645
+ weatheringGreen: 0,
1646
+ weatheringRed: 0,
1647
+ weatheringStrength: 0
1648
+ },
1649
+ radii: {
1650
+ forkExponent: 2.7,
1651
+ lengthTaper: 0.35,
1652
+ maxTaperExponent: 12,
1653
+ trunkRadius: 0.055
1654
+ },
1655
+ shellDepth: 0.45,
1656
+ skeleton: {
1657
+ attractors: 1060,
1658
+ bias: {
1659
+ gravitropism: 0.55,
1660
+ lean: 0.06,
1661
+ supernatural: {
1662
+ enabled: !0,
1663
+ maxWritheMagnitude: 0.9,
1664
+ spiralRate: 0.6,
1665
+ writheAmplitude: 0.05,
1666
+ writheWavelength: 0.8
1667
+ }
1668
+ },
1669
+ envelope: {
1670
+ crownBase: 0.24,
1671
+ fullness: 0.38,
1672
+ height: 132,
1673
+ irregularity: 0,
1674
+ lobeScale: 0.5,
1675
+ shoulder: 3.2,
1676
+ spread: 0.58
1677
+ },
1678
+ growth: {
1679
+ maxTurnPerStep: 46
1680
+ },
1681
+ habit: {
1682
+ apicalDominance: 0.15,
1683
+ attractorWeight: 1,
1684
+ crookedness: 12,
1685
+ lateralLengthRatio: 0.45,
1686
+ lateralOrders: 3,
1687
+ lateralPitch: 60,
1688
+ lateralSpacing: 10,
1689
+ lateralsPerStation: 4,
1690
+ leaderInternode: 10,
1691
+ pitchVariation: 15,
1692
+ reachProbeSteps: 96,
1693
+ risePrimary: 0.05,
1694
+ riseSecondary: 0,
1695
+ sheddingThreshold: 0.45,
1696
+ stemDivergence: 0,
1697
+ stemForkHeight: 0,
1698
+ stemLean: 0,
1699
+ stemLeanSpread: 0,
1700
+ stems: 1,
1701
+ twigTipTaper: 1,
1702
+ whorlStrength: 0.2
1703
+ },
1704
+ samplingAttemptsPerAttractor: 64,
1705
+ seed: 2,
1706
+ step: 0.022,
1707
+ twigs: {
1708
+ angle: 45,
1709
+ angleVariation: 10,
1710
+ curtainClearance: 0.5,
1711
+ curtainDrop: 0,
1712
+ curtainSeparation: 4,
1713
+ curtainStepClearance: 0.8,
1714
+ divergence: 137.508,
1715
+ generations: 6,
1716
+ hang: 0,
1717
+ internodeFactor: 6,
1718
+ laterals: 2,
1719
+ lengthRatio: 0.4,
1720
+ limbRadius: 0.1,
1721
+ maxDroop: 0.35,
1722
+ maxInternodes: 32,
1723
+ pendulousLength: 0.25,
1724
+ pendulousRadius: 1,
1725
+ pendulousVariation: 0,
1726
+ ratioPower: 1.3,
1727
+ reach: 0.2,
1728
+ sag: 0,
1729
+ twig: {
1730
+ bearingDiameter: 0.05,
1731
+ diameter: 5e-3,
1732
+ internodeLength: 0.02,
1733
+ length: 0.5,
1734
+ stationsPerInternode: 1
1735
+ },
1736
+ vigourVariation: 0.15
1737
+ }
1738
+ },
1739
+ surface: {
1740
+ flareDepth: 4e-3,
1741
+ flareFalloff: 0.022,
1742
+ flareRadius: 3.1,
1743
+ forkSocket: 0.5,
1744
+ forkSwell: 1.35,
1745
+ lobeDepth: 0.24,
1746
+ lobes: 4,
1747
+ radialSegments: 12,
1748
+ socketContainment: 0.9,
1749
+ twistRate: 0.8
1750
+ }
1751
+ },
1752
+ id: "laurelin",
1753
+ name: "Laurelin",
1754
+ note: "The golden tree"
1755
+ }
1756
+ ];
1757
+ function G(r) {
1758
+ const e = _e.find((t) => t.id === r);
1759
+ if (!e) throw Error(`Unknown tree preset: ${r}`);
1760
+ return { ...structuredClone(e.family), id: e.id, name: e.name, note: e.note };
1761
+ }
1762
+ const et = (({ id: r, name: e, note: t, ...n }) => n)(G("ordinary")), tt = G("oregon-white-oak"), nt = G("norway-spruce"), rt = G("silver-birch"), fe = G("telperion"), de = G("laurelin"), at = [fe, de], _t = _e.map((r) => G(r.id));
1763
+ class J {
1764
+ constructor(e) {
1765
+ y(this, "exports");
1766
+ y(this, "specimens", le(() => this.e, (e) => this.check(e), () => this.metadata()));
1767
+ this.exports = e.exports;
1768
+ }
1769
+ get e() {
1770
+ if (!this.exports) throw Error("Tree engine is disposed");
1771
+ return this.exports;
1772
+ }
1773
+ get disposed() {
1774
+ return this.exports === void 0;
1775
+ }
1776
+ /** Drop the instance, allowing its linear memory to be reclaimed by the host. */
1777
+ dispose() {
1778
+ var e;
1779
+ (e = this.exports) == null || e.release(), this.exports = void 0;
1780
+ }
1781
+ static async create(e) {
1782
+ const t = e ?? await ce(new URL("./telperion.wasm", import.meta.url));
1783
+ if (t instanceof Response && !t.ok) throw Error(`Tree core load failed: HTTP ${t.status}`);
1784
+ const n = t instanceof Response ? await t.arrayBuffer() : t, { instance: a } = await WebAssembly.instantiate(n, { env: { now: () => performance.now() } });
1785
+ return new J(a);
1786
+ }
1787
+ metadata() {
1788
+ const e = this.e;
1789
+ return JSON.parse(new TextDecoder().decode(new Uint8Array(e.memory.buffer, e.metadata_ptr(), e.metadata_len())));
1790
+ }
1791
+ check(e) {
1792
+ if (e) throw Error(`Tree core: ${this.metadata().error}`);
1793
+ }
1794
+ /** Releases native outputs and invalidates fields; JS copies remain usable.
1795
+ * Wasm linear memory retains its high-water capacity for allocator reuse. */
1796
+ release() {
1797
+ this.e.release();
1798
+ }
1799
+ buildSpecimen(e, t = 1e4) {
1800
+ return this.specimens.build(e, t);
1801
+ }
1802
+ importSpecimen(e) {
1803
+ return this.specimens.import(e);
1804
+ }
1805
+ get memoryBytes() {
1806
+ return this.e.memory.buffer.byteLength;
1807
+ }
1808
+ build(e, t) {
1809
+ const n = performance.now(), a = new TextEncoder().encode(JSON.stringify({ family: typeof e != "string" && "id" in e ? (({ id: f, name: g, note: H, ...ie }) => ie)(e) : e, outputs: t }, (f, g) => {
1810
+ if (typeof g == "number" && !Number.isFinite(g)) throw Error("Tree parameters must be finite");
1811
+ return g;
1812
+ })), _ = this.e;
1813
+ this.check(_.request_alloc(a.length)), new Uint8Array(_.memory.buffer, _.request_ptr(), a.length).set(a), this.check(_.build());
1814
+ const i = performance.now(), s = this.metadata(), u = (f) => new Float32Array(_.memory.buffer, _.buffer_ptr(f), _.buffer_len(f)).slice(), l = (f) => new Uint32Array(_.memory.buffer, _.buffer_ptr(f), _.buffer_len(f)).slice(), b = { diagnostics: s };
1815
+ return t.surface && (b.surface = { positions: u(0), normals: u(1), indices: l(2), bounds: s.surfaceBounds }), t.foliage && (b.foliage = { positions: u(3), indices: l(4), leaves: l(5), reference: s.foliageReference, anatomy: s.foliageAnatomy, bounds: s.foliageBounds }), t.structure && (b.structure = { values: new Float64Array(_.memory.buffer, _.buffer_ptr(6), _.buffer_len(6)).slice(), topology: l(7) }), t.field && (b.field = { query: (f) => this.query(s.revision, f), snapshot: () => this.snapshot(s) }), s.timings.transferMs = performance.now() - i, s.timings.buildMs = performance.now() - n, b;
1816
+ }
1817
+ snapshot(e) {
1818
+ const t = performance.now(), n = this.e;
1819
+ let a;
1820
+ try {
1821
+ this.check(n.field_snapshot(e.revision));
1822
+ const _ = this.metadata(), i = performance.now(), s = (l) => new Float64Array(n.memory.buffer, n.buffer_ptr(l), n.buffer_len(l)).slice(), u = (l) => new Uint32Array(n.memory.buffer, n.buffer_ptr(l), n.buffer_len(l)).slice();
1823
+ a = {
1824
+ schema: 2,
1825
+ revision: e.revision,
1826
+ bounds: structuredClone(e.fieldBounds),
1827
+ wood: s(9),
1828
+ woodIndex: { bounds: s(10), topology: u(11), nodeCount: _.woodNodes },
1829
+ leaves: { bounds: s(12), topology: u(13), nodeCount: _.leafNodes },
1830
+ plan: { segments: s(21), stations: u(22), index: { bounds: s(23), topology: u(24), nodeCount: _.planNodes } },
1831
+ timings: { extractionMs: _.extractionMs, copyMs: performance.now() - i, totalMs: 0 }
1832
+ };
1833
+ } finally {
1834
+ n.field_snapshot_release();
1835
+ }
1836
+ return a.timings.totalMs = performance.now() - t, a;
1837
+ }
1838
+ query(e, t) {
1839
+ if (!(t instanceof Float64Array) || t.length % 4) throw Error("Field cells require packed Float64Array x,y,z,halfExtent");
1840
+ const n = this.e;
1841
+ return this.check(n.query_alloc(t.length / 4)), new Float64Array(n.memory.buffer, n.query_ptr(), t.length).set(t), this.check(n.query(e)), {
1842
+ flags: new Uint8Array(n.memory.buffer, n.buffer_ptr(8), n.buffer_len(8)).slice(),
1843
+ woodRadius: new Float32Array(n.memory.buffer, n.buffer_ptr(25), n.buffer_len(25)).slice(),
1844
+ leaves: new Float32Array(n.memory.buffer, n.buffer_ptr(19), n.buffer_len(19)).slice(),
1845
+ limbs: new Uint32Array(n.memory.buffer, n.buffer_ptr(20), n.buffer_len(20)).slice()
1846
+ };
1847
+ }
1848
+ }
1849
+ let B, F;
1850
+ async function it(r) {
1851
+ return B && !B.disposed ? B : (B != null && B.disposed && (B = void 0, F = void 0), F ?? (F = J.create(r).then((e) => B = e).catch((e) => {
1852
+ throw F = void 0, e;
1853
+ })), F);
1854
+ }
1855
+ const j = 3, $ = Math.SQRT1_2, Q = 1023;
1856
+ function ot(r, e) {
1857
+ const t = e * j;
1858
+ if (t < 0 || t + j > r.length) throw Error(`Leaf ${e} is outside the packed buffer`);
1859
+ return [r[t], r[t + 1], r[t + 2]];
1860
+ }
1861
+ function be(r, e) {
1862
+ const t = (n, a) => (n >>> a & 65535) / 65535;
1863
+ return [
1864
+ e.min[0] + e.extent[0] * t(r[1], 0),
1865
+ e.min[1] + e.extent[1] * t(r[1], 16),
1866
+ e.min[2] + e.extent[2] * t(r[2], 0)
1867
+ ];
1868
+ }
1869
+ function ge(r) {
1870
+ return pe(r[2] >>> 16);
1871
+ }
1872
+ function he(r) {
1873
+ const e = r[0], t = (H) => (e >>> H * 10 & Q) / Q * (2 * $) - $, [n, a, _] = [t(0), t(1), t(2)], i = Math.sqrt(Math.max(0, 1 - n * n - a * a - _ * _)), s = e >>> 30, u = s === 0 ? [i, n, a, _] : s === 1 ? [n, i, a, _] : s === 2 ? [n, a, i, _] : [n, a, _, i], [l, b, f, g] = u;
1874
+ return [
1875
+ [1 - 2 * (f * f + g * g), 2 * (b * f + g * l), 2 * (b * g - f * l)],
1876
+ [2 * (b * f - g * l), 1 - 2 * (b * b + g * g), 2 * (f * g + b * l)],
1877
+ [2 * (b * g + f * l), 2 * (f * g - b * l), 1 - 2 * (b * b + f * f)]
1878
+ ];
1879
+ }
1880
+ function st(r, e) {
1881
+ const t = he(r), n = ge(r), a = be(r, e), _ = new Float32Array(16);
1882
+ for (let i = 0; i < 3; i++) for (let s = 0; s < 3; s++) _[i * 4 + s] = t[i][s] * n;
1883
+ return _[12] = a[0], _[13] = a[1], _[14] = a[2], _[15] = 1, _;
1884
+ }
1885
+ function pe(r) {
1886
+ const e = r & 32768 ? -1 : 1, t = r >>> 10 & 31, n = r & 1023;
1887
+ return t === 0 ? e * n * 2 ** -24 : t === 31 ? n ? NaN : e * (1 / 0) : e * (1 + n / 1024) * 2 ** (t - 15);
1888
+ }
1889
+ class T {
1890
+ static __wrap(e) {
1891
+ const t = Object.create(T.prototype);
1892
+ return t.__wbg_ptr = e, ee.register(t, t.__wbg_ptr, t), t;
1893
+ }
1894
+ __destroy_into_raw() {
1895
+ const e = this.__wbg_ptr;
1896
+ return this.__wbg_ptr = 0, ee.unregister(this), e;
1897
+ }
1898
+ free() {
1899
+ const e = this.__destroy_into_raw();
1900
+ o.__wbg_webrenderer_free(e, 0);
1901
+ }
1902
+ /**
1903
+ * @param {string} family
1904
+ * @param {number} age
1905
+ * @returns {string}
1906
+ */
1907
+ buildSpecimen(e, t) {
1908
+ let n, a;
1909
+ try {
1910
+ const s = S(e, o.__wbindgen_malloc, o.__wbindgen_realloc), u = m, l = o.webrenderer_buildSpecimen(this.__wbg_ptr, s, u, t);
1911
+ var _ = l[0], i = l[1];
1912
+ if (l[3])
1913
+ throw _ = 0, i = 0, h(l[2]);
1914
+ return n = _, a = i, c(_, i);
1915
+ } finally {
1916
+ o.__wbindgen_free(n, a, 1);
1917
+ }
1918
+ }
1919
+ /**
1920
+ * A renderer on this canvas, or a rejection naming the condition that
1921
+ * stopped it: no WebGPU, a software-only adapter, a refused device.
1922
+ * @param {HTMLCanvasElement} canvas
1923
+ * @returns {Promise<any>}
1924
+ */
1925
+ static create(e) {
1926
+ return o.webrenderer_create(e);
1927
+ }
1928
+ /**
1929
+ * Drops the device and the canvas surface with it. Every later call says
1930
+ * the renderer is disposed rather than reaching a device that is gone.
1931
+ */
1932
+ dispose() {
1933
+ o.webrenderer_dispose(this.__wbg_ptr);
1934
+ }
1935
+ /**
1936
+ * Draws one frame.
1937
+ */
1938
+ frame() {
1939
+ const e = o.webrenderer_frame(this.__wbg_ptr);
1940
+ if (e[1])
1941
+ throw h(e[0]);
1942
+ }
1943
+ /**
1944
+ * Where the camera stands and what it looks at, as JSON, or `null` before
1945
+ * a tree has been submitted. The pose is solved from the bounds alone, so
1946
+ * a browser frame and a headless still of one tree are one picture.
1947
+ * @returns {string}
1948
+ */
1949
+ heroCamera() {
1950
+ let e, t;
1951
+ try {
1952
+ const _ = o.webrenderer_heroCamera(this.__wbg_ptr);
1953
+ var n = _[0], a = _[1];
1954
+ if (_[3])
1955
+ throw n = 0, a = 0, h(_[2]);
1956
+ return e = n, t = a, c(n, a);
1957
+ } finally {
1958
+ o.__wbindgen_free(e, t, 1);
1959
+ }
1960
+ }
1961
+ /**
1962
+ * Runs the same protocol while the camera makes one full turn about the
1963
+ * pose it stands at, and resolves with the record: the GPU numbers when
1964
+ * the adapter can be timed, and either way the frame-to-frame wall clock
1965
+ * of ten seconds of turning, which is the frame rate a viewer would see.
1966
+ * @returns {Promise<any>}
1967
+ */
1968
+ orbit() {
1969
+ return o.webrenderer_orbit(this.__wbg_ptr);
1970
+ }
1971
+ /**
1972
+ * Reconfigures the canvas for a new size, clamped to what the device can
1973
+ * hold. A size that has not changed costs nothing.
1974
+ * @param {number} width
1975
+ * @param {number} height
1976
+ */
1977
+ resize(e, t) {
1978
+ const n = o.webrenderer_resize(this.__wbg_ptr, e, t);
1979
+ if (n[1])
1980
+ throw h(n[0]);
1981
+ }
1982
+ /**
1983
+ * The sun, sky and ground the next frame is drawn under, as the row's
1984
+ * own JSON. The panel reads the default out of here rather than keeping a
1985
+ * second copy of it.
1986
+ * @returns {string}
1987
+ */
1988
+ scene() {
1989
+ let e, t;
1990
+ try {
1991
+ const _ = o.webrenderer_scene(this.__wbg_ptr);
1992
+ var n = _[0], a = _[1];
1993
+ if (_[3])
1994
+ throw n = 0, a = 0, h(_[2]);
1995
+ return e = n, t = a, c(n, a);
1996
+ } finally {
1997
+ o.__wbindgen_free(e, t, 1);
1998
+ }
1999
+ }
2000
+ /**
2001
+ * @param {number} age
2002
+ * @returns {string}
2003
+ */
2004
+ seekSpecimen(e) {
2005
+ let t, n;
2006
+ try {
2007
+ const i = o.webrenderer_seekSpecimen(this.__wbg_ptr, e);
2008
+ var a = i[0], _ = i[1];
2009
+ if (i[3])
2010
+ throw a = 0, _ = 0, h(i[2]);
2011
+ return t = a, n = _, c(a, _);
2012
+ } finally {
2013
+ o.__wbindgen_free(t, n, 1);
2014
+ }
2015
+ }
2016
+ /**
2017
+ * Stands the camera somewhere else, looking at the same kind of point.
2018
+ * The near and far planes stay the pose's: they are solved from the
2019
+ * subject, and orbiting does not change the subject.
2020
+ * @param {number} x
2021
+ * @param {number} y
2022
+ * @param {number} z
2023
+ * @param {number} target_x
2024
+ * @param {number} target_y
2025
+ * @param {number} target_z
2026
+ */
2027
+ setCamera(e, t, n, a, _, i) {
2028
+ const s = o.webrenderer_setCamera(this.__wbg_ptr, e, t, n, a, _, i);
2029
+ if (s[1])
2030
+ throw h(s[0]);
2031
+ }
2032
+ /**
2033
+ * Stands the sun somewhere else and paints the sky and the ground with
2034
+ * it. The text is one whole row: what it names it states, and what it
2035
+ * leaves out takes the default rather than whatever was set before. A row
2036
+ * the renderer will not have leaves the sky exactly where it was and
2037
+ * arrives in JavaScript as the renderer's own words.
2038
+ * @param {string} scene
2039
+ */
2040
+ setScene(e) {
2041
+ const t = S(e, o.__wbindgen_malloc, o.__wbindgen_realloc), n = m, a = o.webrenderer_setScene(this.__wbg_ptr, t, n);
2042
+ if (a[1])
2043
+ throw h(a[0]);
2044
+ }
2045
+ /**
2046
+ * Experimental GPU foliage preparation. Unsupported parameters explicitly
2047
+ * use the CPU fallback; the existing synchronous entry remains available.
2048
+ * @param {string} family
2049
+ * @returns {Promise<any>}
2050
+ */
2051
+ setTreeGpu(e) {
2052
+ const t = S(e, o.__wbindgen_malloc, o.__wbindgen_realloc), n = m;
2053
+ return o.webrenderer_setTreeGpu(this.__wbg_ptr, t, n);
2054
+ }
2055
+ /**
2056
+ * Generates the tree these parameters describe and uploads it whole,
2057
+ * returning what went up. A set the generator refuses leaves the tree
2058
+ * already on the canvas exactly where it was.
2059
+ * @param {string} family
2060
+ * @returns {string}
2061
+ */
2062
+ setTree(e) {
2063
+ let t, n;
2064
+ try {
2065
+ const i = S(e, o.__wbindgen_malloc, o.__wbindgen_realloc), s = m, u = o.webrenderer_setTree(this.__wbg_ptr, i, s);
2066
+ var a = u[0], _ = u[1];
2067
+ if (u[3])
2068
+ throw a = 0, _ = 0, h(u[2]);
2069
+ return t = a, n = _, c(a, _);
2070
+ } finally {
2071
+ o.__wbindgen_free(t, n, 1);
2072
+ }
2073
+ }
2074
+ /**
2075
+ * Selects what the next frame draws of the tree that is up.
2076
+ * @param {string} view
2077
+ */
2078
+ setView(e) {
2079
+ const t = S(e, o.__wbindgen_malloc, o.__wbindgen_realloc), n = m, a = o.webrenderer_setView(this.__wbg_ptr, t, n);
2080
+ if (a[1])
2081
+ throw h(a[0]);
2082
+ }
2083
+ /**
2084
+ * What the last frame cost, as JSON.
2085
+ * @returns {string}
2086
+ */
2087
+ stats() {
2088
+ let e, t;
2089
+ try {
2090
+ const _ = o.webrenderer_stats(this.__wbg_ptr);
2091
+ var n = _[0], a = _[1];
2092
+ if (_[3])
2093
+ throw n = 0, a = 0, h(_[2]);
2094
+ return e = n, t = a, c(n, a);
2095
+ } finally {
2096
+ o.__wbindgen_free(e, t, 1);
2097
+ }
2098
+ }
2099
+ /**
2100
+ * Runs the whole timing protocol on what is up and resolves with the
2101
+ * record, verdict included. An adapter that cannot be timed resolves with
2102
+ * an unavailable record rather than rejecting: a missing measurement is a
2103
+ * result the panel still has to show.
2104
+ * @returns {Promise<any>}
2105
+ */
2106
+ timing() {
2107
+ return o.webrenderer_timing(this.__wbg_ptr);
2108
+ }
2109
+ }
2110
+ Symbol.dispose && (T.prototype[Symbol.dispose] = T.prototype.free);
2111
+ function me() {
2112
+ return {
2113
+ __proto__: null,
2114
+ "./telperion_render_bg.js": {
2115
+ __proto__: null,
2116
+ __wbg_Error_67e7344beaa85059: function(e, t) {
2117
+ return Error(c(e, t));
2118
+ },
2119
+ __wbg_Window_a2a6c4d665047b14: function(e) {
2120
+ return e.Window;
2121
+ },
2122
+ __wbg_WorkerGlobalScope_2664448a7c667d67: function(e) {
2123
+ return e.WorkerGlobalScope;
2124
+ },
2125
+ __wbg___wbindgen_debug_string_0e68cf47c9cbd9b0: function(e, t) {
2126
+ const n = q(t), a = S(n, o.__wbindgen_malloc, o.__wbindgen_realloc), _ = m;
2127
+ p().setInt32(e + 4, _, !0), p().setInt32(e + 0, a, !0);
2128
+ },
2129
+ __wbg___wbindgen_is_function_fcda5e3902d732fe: function(e) {
2130
+ return typeof e == "function";
2131
+ },
2132
+ __wbg___wbindgen_is_null_5160b3e381865372: function(e) {
2133
+ return e === null;
2134
+ },
2135
+ __wbg___wbindgen_is_string_c4f7cb494a2a21f1: function(e) {
2136
+ return typeof e == "string";
2137
+ },
2138
+ __wbg___wbindgen_is_undefined_8c687d0b90d5b524: function(e) {
2139
+ return e === void 0;
2140
+ },
2141
+ __wbg___wbindgen_string_get_92ab86bb19cbc12f: function(e, t) {
2142
+ const n = t, a = typeof n == "string" ? n : void 0;
2143
+ var _ = x(a) ? 0 : S(a, o.__wbindgen_malloc, o.__wbindgen_realloc), i = m;
2144
+ p().setInt32(e + 4, i, !0), p().setInt32(e + 0, _, !0);
2145
+ },
2146
+ __wbg___wbindgen_throw_5d9e815e6fdf150f: function(e, t) {
2147
+ throw new Error(c(e, t));
2148
+ },
2149
+ __wbg__wbg_cb_unref_997e73d32238e655: function(e) {
2150
+ e._wbg_cb_unref();
2151
+ },
2152
+ __wbg_beginComputePass_b9a325184985e6ff: function(e, t) {
2153
+ return e.beginComputePass(t);
2154
+ },
2155
+ __wbg_beginRenderPass_3c53642423af50dc: function() {
2156
+ return d(function(e, t) {
2157
+ return e.beginRenderPass(t);
2158
+ }, arguments);
2159
+ },
2160
+ __wbg_call_6bcf8d3e20937e46: function() {
2161
+ return d(function(e, t, n) {
2162
+ return e.call(t, n);
2163
+ }, arguments);
2164
+ },
2165
+ __wbg_clearBuffer_3d5a3057c3c8a9bf: function(e, t, n, a) {
2166
+ e.clearBuffer(t, n, a);
2167
+ },
2168
+ __wbg_clearBuffer_82ba999c294f42fb: function(e, t, n) {
2169
+ e.clearBuffer(t, n);
2170
+ },
2171
+ __wbg_configure_1e2c1c9edad07d26: function() {
2172
+ return d(function(e, t) {
2173
+ e.configure(t);
2174
+ }, arguments);
2175
+ },
2176
+ __wbg_copyBufferToBuffer_01766818654a9868: function() {
2177
+ return d(function(e, t, n, a, _) {
2178
+ e.copyBufferToBuffer(t, n, a, _);
2179
+ }, arguments);
2180
+ },
2181
+ __wbg_copyBufferToBuffer_9c174b96fb08d551: function() {
2182
+ return d(function(e, t, n, a, _, i) {
2183
+ e.copyBufferToBuffer(t, n, a, _, i);
2184
+ }, arguments);
2185
+ },
2186
+ __wbg_createBindGroupLayout_b1bd63b4e88459d8: function() {
2187
+ return d(function(e, t) {
2188
+ return e.createBindGroupLayout(t);
2189
+ }, arguments);
2190
+ },
2191
+ __wbg_createBindGroup_f539b26ca341308f: function(e, t) {
2192
+ return e.createBindGroup(t);
2193
+ },
2194
+ __wbg_createBuffer_d800e9b1d41b2ee5: function() {
2195
+ return d(function(e, t) {
2196
+ return e.createBuffer(t);
2197
+ }, arguments);
2198
+ },
2199
+ __wbg_createCommandEncoder_3352d1ffc36c6fc0: function(e, t) {
2200
+ return e.createCommandEncoder(t);
2201
+ },
2202
+ __wbg_createComputePipeline_224fa2618d9948a0: function(e, t) {
2203
+ return e.createComputePipeline(t);
2204
+ },
2205
+ __wbg_createPipelineLayout_6eab52c327118937: function(e, t) {
2206
+ return e.createPipelineLayout(t);
2207
+ },
2208
+ __wbg_createQuerySet_2dc8cde53df9849d: function() {
2209
+ return d(function(e, t) {
2210
+ return e.createQuerySet(t);
2211
+ }, arguments);
2212
+ },
2213
+ __wbg_createRenderPipeline_0ebb7ebc653e9207: function() {
2214
+ return d(function(e, t) {
2215
+ return e.createRenderPipeline(t);
2216
+ }, arguments);
2217
+ },
2218
+ __wbg_createSampler_9bd91d7e928c0060: function(e, t) {
2219
+ return e.createSampler(t);
2220
+ },
2221
+ __wbg_createShaderModule_cefa51336cb288ae: function(e, t) {
2222
+ return e.createShaderModule(t);
2223
+ },
2224
+ __wbg_createTexture_ed7e9fc04dd54d84: function() {
2225
+ return d(function(e, t) {
2226
+ return e.createTexture(t);
2227
+ }, arguments);
2228
+ },
2229
+ __wbg_createView_da41c2d2cb212715: function() {
2230
+ return d(function(e, t) {
2231
+ return e.createView(t);
2232
+ }, arguments);
2233
+ },
2234
+ __wbg_description_83b8a393160021b9: function(e, t) {
2235
+ const n = t.description, a = S(n, o.__wbindgen_malloc, o.__wbindgen_realloc), _ = m;
2236
+ p().setInt32(e + 4, _, !0), p().setInt32(e + 0, a, !0);
2237
+ },
2238
+ __wbg_dispatchWorkgroups_56b943172790add0: function(e, t, n, a) {
2239
+ e.dispatchWorkgroups(t >>> 0, n >>> 0, a >>> 0);
2240
+ },
2241
+ __wbg_document_c7f486c52d63d24e: function(e) {
2242
+ const t = e.document;
2243
+ return x(t) ? 0 : R(t);
2244
+ },
2245
+ __wbg_drawIndexedIndirect_d01f2181b905a0b5: function(e, t, n) {
2246
+ e.drawIndexedIndirect(t, n);
2247
+ },
2248
+ __wbg_drawIndexed_638959aae942557c: function(e, t, n, a, _, i) {
2249
+ e.drawIndexed(t >>> 0, n >>> 0, a >>> 0, _, i >>> 0);
2250
+ },
2251
+ __wbg_draw_086a9578fc9898c2: function(e, t, n, a, _) {
2252
+ e.draw(t >>> 0, n >>> 0, a >>> 0, _ >>> 0);
2253
+ },
2254
+ __wbg_end_82fd0c12ba185009: function(e) {
2255
+ e.end();
2256
+ },
2257
+ __wbg_end_b57473834b877409: function(e) {
2258
+ e.end();
2259
+ },
2260
+ __wbg_features_dec7bd2fd3d91bd6: function(e) {
2261
+ return e.features;
2262
+ },
2263
+ __wbg_finish_09ec094c10f41e7b: function(e) {
2264
+ return e.finish();
2265
+ },
2266
+ __wbg_finish_ec1c191f66a895b1: function(e, t) {
2267
+ return e.finish(t);
2268
+ },
2269
+ __wbg_getContext_5ff6bd600503b094: function() {
2270
+ return d(function(e, t, n) {
2271
+ const a = e.getContext(c(t, n));
2272
+ return x(a) ? 0 : R(a);
2273
+ }, arguments);
2274
+ },
2275
+ __wbg_getContext_e0c05ffee530bdcf: function() {
2276
+ return d(function(e, t, n) {
2277
+ const a = e.getContext(c(t, n));
2278
+ return x(a) ? 0 : R(a);
2279
+ }, arguments);
2280
+ },
2281
+ __wbg_getCurrentTexture_9f3b84d0eaa6cd95: function() {
2282
+ return d(function(e) {
2283
+ return e.getCurrentTexture();
2284
+ }, arguments);
2285
+ },
2286
+ __wbg_getMappedRange_fb54c6327b2d8d20: function() {
2287
+ return d(function(e, t, n) {
2288
+ return e.getMappedRange(t, n);
2289
+ }, arguments);
2290
+ },
2291
+ __wbg_getPreferredCanvasFormat_0ef5034c8902201b: function(e) {
2292
+ const t = e.getPreferredCanvasFormat();
2293
+ return (k.indexOf(t) + 1 || 102) - 1;
2294
+ },
2295
+ __wbg_get_95e4d462165c92ae: function(e, t) {
2296
+ const n = e[t >>> 0];
2297
+ return x(n) ? 0 : R(n);
2298
+ },
2299
+ __wbg_gpu_afdd4387c7afe5f9: function(e) {
2300
+ return e.gpu;
2301
+ },
2302
+ __wbg_has_eafa12e457ea88fb: function(e, t, n) {
2303
+ return e.has(c(t, n));
2304
+ },
2305
+ __wbg_height_c15ee46a1345e9af: function(e) {
2306
+ return e.height;
2307
+ },
2308
+ __wbg_info_971d8b9db3dae69f: function(e) {
2309
+ return e.info;
2310
+ },
2311
+ __wbg_instanceof_GpuOutOfMemoryError_5c3b8a2499f59adb: function(e) {
2312
+ let t;
2313
+ try {
2314
+ t = e instanceof GPUOutOfMemoryError;
2315
+ } catch {
2316
+ t = !1;
2317
+ }
2318
+ return t;
2319
+ },
2320
+ __wbg_instanceof_GpuValidationError_7659e07b12d4e184: function(e) {
2321
+ let t;
2322
+ try {
2323
+ t = e instanceof GPUValidationError;
2324
+ } catch {
2325
+ t = !1;
2326
+ }
2327
+ return t;
2328
+ },
2329
+ __wbg_instanceof_Window_a3b8566f0a9c5d1a: function(e) {
2330
+ let t;
2331
+ try {
2332
+ t = e instanceof Window;
2333
+ } catch {
2334
+ t = !1;
2335
+ }
2336
+ return t;
2337
+ },
2338
+ __wbg_isFallbackAdapter_4c8cc3b18677460a: function(e) {
2339
+ return e.isFallbackAdapter;
2340
+ },
2341
+ __wbg_label_7add8cb37a6ef98f: function(e, t) {
2342
+ const n = t.label, a = S(n, o.__wbindgen_malloc, o.__wbindgen_realloc), _ = m;
2343
+ p().setInt32(e + 4, _, !0), p().setInt32(e + 0, a, !0);
2344
+ },
2345
+ __wbg_length_31bdaf014f5fbde2: function(e) {
2346
+ return e.length;
2347
+ },
2348
+ __wbg_limits_06bcb36c8409843b: function(e) {
2349
+ return e.limits;
2350
+ },
2351
+ __wbg_limits_601ad2e086ef8141: function(e) {
2352
+ return e.limits;
2353
+ },
2354
+ __wbg_lost_bb454eb62101af1a: function(e) {
2355
+ return e.lost;
2356
+ },
2357
+ __wbg_mapAsync_b0597127f5037286: function(e, t, n, a) {
2358
+ return e.mapAsync(t >>> 0, n, a);
2359
+ },
2360
+ __wbg_maxBindGroupsPlusVertexBuffers_52369f089736ef9d: function(e) {
2361
+ return e.maxBindGroupsPlusVertexBuffers;
2362
+ },
2363
+ __wbg_maxBindGroups_4e424afe6ce86ca2: function(e) {
2364
+ return e.maxBindGroups;
2365
+ },
2366
+ __wbg_maxBindingsPerBindGroup_7d035da36821c44f: function(e) {
2367
+ return e.maxBindingsPerBindGroup;
2368
+ },
2369
+ __wbg_maxBufferSize_423f4a084e32a195: function(e) {
2370
+ return e.maxBufferSize;
2371
+ },
2372
+ __wbg_maxColorAttachmentBytesPerSample_c4cd9126f6d287c6: function(e) {
2373
+ return e.maxColorAttachmentBytesPerSample;
2374
+ },
2375
+ __wbg_maxColorAttachments_d924670762b9e250: function(e) {
2376
+ return e.maxColorAttachments;
2377
+ },
2378
+ __wbg_maxComputeInvocationsPerWorkgroup_707a3868f7cebb59: function(e) {
2379
+ return e.maxComputeInvocationsPerWorkgroup;
2380
+ },
2381
+ __wbg_maxComputeWorkgroupSizeX_0a4d99463cbd6e5e: function(e) {
2382
+ return e.maxComputeWorkgroupSizeX;
2383
+ },
2384
+ __wbg_maxComputeWorkgroupSizeY_85123ea0587f7558: function(e) {
2385
+ return e.maxComputeWorkgroupSizeY;
2386
+ },
2387
+ __wbg_maxComputeWorkgroupSizeZ_a3186b4c5267d44f: function(e) {
2388
+ return e.maxComputeWorkgroupSizeZ;
2389
+ },
2390
+ __wbg_maxComputeWorkgroupStorageSize_57b297355cfb6204: function(e) {
2391
+ return e.maxComputeWorkgroupStorageSize;
2392
+ },
2393
+ __wbg_maxComputeWorkgroupsPerDimension_4158f95e673d54c4: function(e) {
2394
+ return e.maxComputeWorkgroupsPerDimension;
2395
+ },
2396
+ __wbg_maxDynamicStorageBuffersPerPipelineLayout_226b0b70910aa16c: function(e) {
2397
+ return e.maxDynamicStorageBuffersPerPipelineLayout;
2398
+ },
2399
+ __wbg_maxDynamicUniformBuffersPerPipelineLayout_0e835fda711fc7e6: function(e) {
2400
+ return e.maxDynamicUniformBuffersPerPipelineLayout;
2401
+ },
2402
+ __wbg_maxInterStageShaderVariables_8c4a1d727e2aa35a: function(e) {
2403
+ return e.maxInterStageShaderVariables;
2404
+ },
2405
+ __wbg_maxSampledTexturesPerShaderStage_6675f5e91d9a728a: function(e) {
2406
+ return e.maxSampledTexturesPerShaderStage;
2407
+ },
2408
+ __wbg_maxSamplersPerShaderStage_1910fa38a6ed1e1f: function(e) {
2409
+ return e.maxSamplersPerShaderStage;
2410
+ },
2411
+ __wbg_maxStorageBufferBindingSize_2e244bded070b18d: function(e) {
2412
+ return e.maxStorageBufferBindingSize;
2413
+ },
2414
+ __wbg_maxStorageBuffersPerShaderStage_a285f3ebca51ca0d: function(e) {
2415
+ return e.maxStorageBuffersPerShaderStage;
2416
+ },
2417
+ __wbg_maxStorageTexturesPerShaderStage_7aa946f0fc322a2b: function(e) {
2418
+ return e.maxStorageTexturesPerShaderStage;
2419
+ },
2420
+ __wbg_maxTextureArrayLayers_0e699147ad00502d: function(e) {
2421
+ return e.maxTextureArrayLayers;
2422
+ },
2423
+ __wbg_maxTextureDimension1D_aabf6add54decfe2: function(e) {
2424
+ return e.maxTextureDimension1D;
2425
+ },
2426
+ __wbg_maxTextureDimension2D_dd598b27e9c0c1c4: function(e) {
2427
+ return e.maxTextureDimension2D;
2428
+ },
2429
+ __wbg_maxTextureDimension3D_f944266c65dfd1a9: function(e) {
2430
+ return e.maxTextureDimension3D;
2431
+ },
2432
+ __wbg_maxUniformBufferBindingSize_59fa6be7cfbeeb53: function(e) {
2433
+ return e.maxUniformBufferBindingSize;
2434
+ },
2435
+ __wbg_maxUniformBuffersPerShaderStage_bee5f00a4d706c7f: function(e) {
2436
+ return e.maxUniformBuffersPerShaderStage;
2437
+ },
2438
+ __wbg_maxVertexAttributes_5cf6392c4e9033fe: function(e) {
2439
+ return e.maxVertexAttributes;
2440
+ },
2441
+ __wbg_maxVertexBufferArrayStride_548baa887375d865: function(e) {
2442
+ return e.maxVertexBufferArrayStride;
2443
+ },
2444
+ __wbg_maxVertexBuffers_75d881156591f5da: function(e) {
2445
+ return e.maxVertexBuffers;
2446
+ },
2447
+ __wbg_message_2aad50368e15e8f1: function(e, t) {
2448
+ const n = t.message, a = S(n, o.__wbindgen_malloc, o.__wbindgen_realloc), _ = m;
2449
+ p().setInt32(e + 4, _, !0), p().setInt32(e + 0, a, !0);
2450
+ },
2451
+ __wbg_message_ab4cad9eeb386607: function(e, t) {
2452
+ const n = t.message, a = S(n, o.__wbindgen_malloc, o.__wbindgen_realloc), _ = m;
2453
+ p().setInt32(e + 4, _, !0), p().setInt32(e + 0, a, !0);
2454
+ },
2455
+ __wbg_minStorageBufferOffsetAlignment_5ba9b77792bdadb3: function(e) {
2456
+ return e.minStorageBufferOffsetAlignment;
2457
+ },
2458
+ __wbg_minUniformBufferOffsetAlignment_ab7d52a5293b22bd: function(e) {
2459
+ return e.minUniformBufferOffsetAlignment;
2460
+ },
2461
+ __wbg_navigator_d217ca64c4bbff48: function(e) {
2462
+ return e.navigator;
2463
+ },
2464
+ __wbg_navigator_d25c0f071226f233: function(e) {
2465
+ return e.navigator;
2466
+ },
2467
+ __wbg_new_12e5d807044fbfe3: function() {
2468
+ return d(function(e, t) {
2469
+ return new OffscreenCanvas(e >>> 0, t >>> 0);
2470
+ }, arguments);
2471
+ },
2472
+ __wbg_new_bebc3f4757acf305: function() {
2473
+ return new Object();
2474
+ },
2475
+ __wbg_new_typed_6f8b0d724fe26c07: function(e, t) {
2476
+ try {
2477
+ var n = { a: e, b: t }, a = (i, s) => {
2478
+ const u = n.a;
2479
+ n.a = 0;
2480
+ try {
2481
+ return Be(u, n.b, i, s);
2482
+ } finally {
2483
+ n.a = u;
2484
+ }
2485
+ };
2486
+ return new Promise(a);
2487
+ } finally {
2488
+ n.a = 0;
2489
+ }
2490
+ },
2491
+ __wbg_new_typed_7d4574ab4b8446c8: function() {
2492
+ return new Object();
2493
+ },
2494
+ __wbg_new_with_byte_offset_and_length_492c969e8b5da8a4: function(e, t, n) {
2495
+ return new Uint8Array(e, t >>> 0, n >>> 0);
2496
+ },
2497
+ __wbg_now_bf2997b42b46bad0: function() {
2498
+ return performance.now();
2499
+ },
2500
+ __wbg_onSubmittedWorkDone_1190213cee1ecf7e: function(e) {
2501
+ return e.onSubmittedWorkDone();
2502
+ },
2503
+ __wbg_popErrorScope_182b8e03671d81ef: function(e) {
2504
+ return e.popErrorScope();
2505
+ },
2506
+ __wbg_prototypesetcall_ae9f5e7459250748: function(e, t, n) {
2507
+ Uint8Array.prototype.set.call(N(e, t), n);
2508
+ },
2509
+ __wbg_pushErrorScope_fa7df784c43bdb51: function(e, t) {
2510
+ e.pushErrorScope(De[t]);
2511
+ },
2512
+ __wbg_querySelectorAll_fdbf93e11103921d: function() {
2513
+ return d(function(e, t, n) {
2514
+ return e.querySelectorAll(c(t, n));
2515
+ }, arguments);
2516
+ },
2517
+ __wbg_queueMicrotask_85c90f6987555d65: function(e) {
2518
+ return e.queueMicrotask;
2519
+ },
2520
+ __wbg_queueMicrotask_f6a1fa10b81d1fc0: function(e) {
2521
+ queueMicrotask(e);
2522
+ },
2523
+ __wbg_queue_7b62c28143d44293: function(e) {
2524
+ return e.queue;
2525
+ },
2526
+ __wbg_reason_b4fa3af867fc4430: function(e) {
2527
+ const t = e.reason;
2528
+ return (Pe.indexOf(t) + 1 || 3) - 1;
2529
+ },
2530
+ __wbg_requestAdapter_a539af006419f2e9: function(e, t) {
2531
+ return e.requestAdapter(t);
2532
+ },
2533
+ __wbg_requestAnimationFrame_4988887658fcee2e: function() {
2534
+ return d(function(e, t) {
2535
+ return e.requestAnimationFrame(t);
2536
+ }, arguments);
2537
+ },
2538
+ __wbg_requestDevice_5cb8a582e55d08cb: function(e, t) {
2539
+ return e.requestDevice(t);
2540
+ },
2541
+ __wbg_resolveQuerySet_770f23fabac49845: function(e, t, n, a, _, i) {
2542
+ e.resolveQuerySet(t, n >>> 0, a >>> 0, _, i >>> 0);
2543
+ },
2544
+ __wbg_resolve_35ec7e0c6af4c82c: function(e) {
2545
+ return Promise.resolve(e);
2546
+ },
2547
+ __wbg_setBindGroup_0b7c2a055ef1f314: function() {
2548
+ return d(function(e, t, n, a, _, i, s) {
2549
+ e.setBindGroup(t >>> 0, n, ne(a, _), i, s >>> 0);
2550
+ }, arguments);
2551
+ },
2552
+ __wbg_setBindGroup_11bdbb60cc8b54b9: function() {
2553
+ return d(function(e, t, n, a, _, i, s) {
2554
+ e.setBindGroup(t >>> 0, n, ne(a, _), i, s >>> 0);
2555
+ }, arguments);
2556
+ },
2557
+ __wbg_setBindGroup_418c3e0eb6943ce0: function(e, t, n) {
2558
+ e.setBindGroup(t >>> 0, n);
2559
+ },
2560
+ __wbg_setBindGroup_c83391351ce68826: function(e, t, n) {
2561
+ e.setBindGroup(t >>> 0, n);
2562
+ },
2563
+ __wbg_setIndexBuffer_241097e303986c14: function(e, t, n, a, _) {
2564
+ e.setIndexBuffer(t, K[n], a, _);
2565
+ },
2566
+ __wbg_setPipeline_5146f7b8d2b4af5c: function(e, t) {
2567
+ e.setPipeline(t);
2568
+ },
2569
+ __wbg_setPipeline_b6f981027e02cd16: function(e, t) {
2570
+ e.setPipeline(t);
2571
+ },
2572
+ __wbg_setVertexBuffer_6db3b60e99280744: function(e, t, n, a) {
2573
+ e.setVertexBuffer(t >>> 0, n, a);
2574
+ },
2575
+ __wbg_setVertexBuffer_cbf4ca1627c02f4c: function(e, t, n, a, _) {
2576
+ e.setVertexBuffer(t >>> 0, n, a, _);
2577
+ },
2578
+ __wbg_set_9cfc0f17d60ff0af: function(e, t, n) {
2579
+ e.set(t, n >>> 0);
2580
+ },
2581
+ __wbg_set_a377297433dfea63: function() {
2582
+ return d(function(e, t, n) {
2583
+ return Reflect.set(e, t, n);
2584
+ }, arguments);
2585
+ },
2586
+ __wbg_set_a_82818effc94f6256: function(e, t) {
2587
+ e.a = t;
2588
+ },
2589
+ __wbg_set_access_a099cfbbeec9b96f: function(e, t) {
2590
+ e.access = Ie[t];
2591
+ },
2592
+ __wbg_set_address_mode_u_a68737cf5d288f95: function(e, t) {
2593
+ e.addressModeU = O[t];
2594
+ },
2595
+ __wbg_set_address_mode_v_b1c3c45933f540d1: function(e, t) {
2596
+ e.addressModeV = O[t];
2597
+ },
2598
+ __wbg_set_address_mode_w_889c31cf7022c764: function(e, t) {
2599
+ e.addressModeW = O[t];
2600
+ },
2601
+ __wbg_set_alpha_106f21a936a85eba: function(e, t) {
2602
+ e.alpha = t;
2603
+ },
2604
+ __wbg_set_alpha_mode_5544568dbac50280: function(e, t) {
2605
+ e.alphaMode = Le[t];
2606
+ },
2607
+ __wbg_set_alpha_to_coverage_enabled_3372ce329447b8f1: function(e, t) {
2608
+ e.alphaToCoverageEnabled = t !== 0;
2609
+ },
2610
+ __wbg_set_array_layer_count_22afa0a979e4ad55: function(e, t) {
2611
+ e.arrayLayerCount = t >>> 0;
2612
+ },
2613
+ __wbg_set_array_stride_f64_6816040e5e7598c3: function(e, t) {
2614
+ e.arrayStride = t;
2615
+ },
2616
+ __wbg_set_aspect_a48d046965270281: function(e, t) {
2617
+ e.aspect = Ve[t];
2618
+ },
2619
+ __wbg_set_attributes_9e38cb1dde387a5b: function(e, t, n) {
2620
+ e.attributes = w(t, n);
2621
+ },
2622
+ __wbg_set_b_a3297ee7e7cac3a8: function(e, t) {
2623
+ e.b = t;
2624
+ },
2625
+ __wbg_set_base_array_layer_2435ba92c80346ae: function(e, t) {
2626
+ e.baseArrayLayer = t >>> 0;
2627
+ },
2628
+ __wbg_set_base_mip_level_8b6093e875e7c65d: function(e, t) {
2629
+ e.baseMipLevel = t >>> 0;
2630
+ },
2631
+ __wbg_set_beginning_of_pass_write_index_e552c5e8b8bbf52f: function(e, t) {
2632
+ e.beginningOfPassWriteIndex = t >>> 0;
2633
+ },
2634
+ __wbg_set_beginning_of_pass_write_index_fa9ae10d5d2804ce: function(e, t) {
2635
+ e.beginningOfPassWriteIndex = t >>> 0;
2636
+ },
2637
+ __wbg_set_bind_group_layouts_458c44ba55100b82: function(e, t, n) {
2638
+ e.bindGroupLayouts = w(t, n);
2639
+ },
2640
+ __wbg_set_binding_81b3fac7f7acaf8d: function(e, t) {
2641
+ e.binding = t >>> 0;
2642
+ },
2643
+ __wbg_set_binding_b6cee57f35ac5190: function(e, t) {
2644
+ e.binding = t >>> 0;
2645
+ },
2646
+ __wbg_set_blend_1a801617945f7945: function(e, t) {
2647
+ e.blend = t;
2648
+ },
2649
+ __wbg_set_buffer_1548ae88a9188037: function(e, t) {
2650
+ e.buffer = t;
2651
+ },
2652
+ __wbg_set_buffer_8d0ac64ad20dfc84: function(e, t) {
2653
+ e.buffer = t;
2654
+ },
2655
+ __wbg_set_buffers_5d0e0c50791f710e: function(e, t, n) {
2656
+ e.buffers = w(t, n);
2657
+ },
2658
+ __wbg_set_clear_value_gpu_color_dict_a9f763e8372ac1de: function(e, t) {
2659
+ e.clearValue = t;
2660
+ },
2661
+ __wbg_set_code_5d5b0b9e2fd0dca7: function(e, t, n) {
2662
+ e.code = c(t, n);
2663
+ },
2664
+ __wbg_set_color_8ecace4011f47d2e: function(e, t) {
2665
+ e.color = t;
2666
+ },
2667
+ __wbg_set_color_attachments_622fe2d5997fda7a: function(e, t, n) {
2668
+ e.colorAttachments = w(t, n);
2669
+ },
2670
+ __wbg_set_compare_080c9e492ff36990: function(e, t) {
2671
+ e.compare = W[t];
2672
+ },
2673
+ __wbg_set_compare_817cf3695599eaa6: function(e, t) {
2674
+ e.compare = W[t];
2675
+ },
2676
+ __wbg_set_compute_bc754d9e37f6e4c9: function(e, t) {
2677
+ e.compute = t;
2678
+ },
2679
+ __wbg_set_count_8ff0c9474e39a849: function(e, t) {
2680
+ e.count = t >>> 0;
2681
+ },
2682
+ __wbg_set_count_d9dc88156fd05bc7: function(e, t) {
2683
+ e.count = t >>> 0;
2684
+ },
2685
+ __wbg_set_cull_mode_85d2b4ab0ce3a564: function(e, t) {
2686
+ e.cullMode = Ce[t];
2687
+ },
2688
+ __wbg_set_depth_bias_95abf479cae3f3cd: function(e, t) {
2689
+ e.depthBias = t;
2690
+ },
2691
+ __wbg_set_depth_bias_clamp_ba3d0b8348151350: function(e, t) {
2692
+ e.depthBiasClamp = t;
2693
+ },
2694
+ __wbg_set_depth_bias_slope_scale_6b2584d93f5b9cd2: function(e, t) {
2695
+ e.depthBiasSlopeScale = t;
2696
+ },
2697
+ __wbg_set_depth_clear_value_e30a4c754c6b3b26: function(e, t) {
2698
+ e.depthClearValue = t;
2699
+ },
2700
+ __wbg_set_depth_compare_a90de4e3714397ab: function(e, t) {
2701
+ e.depthCompare = W[t];
2702
+ },
2703
+ __wbg_set_depth_fail_op_b5c64541d1b6b482: function(e, t) {
2704
+ e.depthFailOp = I[t];
2705
+ },
2706
+ __wbg_set_depth_load_op_932888016d762d3e: function(e, t) {
2707
+ e.depthLoadOp = M[t];
2708
+ },
2709
+ __wbg_set_depth_or_array_layers_e2f074a0284e4806: function(e, t) {
2710
+ e.depthOrArrayLayers = t >>> 0;
2711
+ },
2712
+ __wbg_set_depth_read_only_be790175a1c2db9a: function(e, t) {
2713
+ e.depthReadOnly = t !== 0;
2714
+ },
2715
+ __wbg_set_depth_stencil_attachment_54a8922f5fbe08bf: function(e, t) {
2716
+ e.depthStencilAttachment = t;
2717
+ },
2718
+ __wbg_set_depth_stencil_b7cffc59ad4da529: function(e, t) {
2719
+ e.depthStencil = t;
2720
+ },
2721
+ __wbg_set_depth_store_op_9054814f164ab55d: function(e, t) {
2722
+ e.depthStoreOp = V[t];
2723
+ },
2724
+ __wbg_set_depth_write_enabled_31a821ee1fb3b0b3: function(e, t) {
2725
+ e.depthWriteEnabled = t !== 0;
2726
+ },
2727
+ __wbg_set_device_210484a77b675c9c: function(e, t) {
2728
+ e.device = t;
2729
+ },
2730
+ __wbg_set_dimension_3da9d03131a9f446: function(e, t) {
2731
+ e.dimension = ze[t];
2732
+ },
2733
+ __wbg_set_dimension_56332450afa3e0c0: function(e, t) {
2734
+ e.dimension = z[t];
2735
+ },
2736
+ __wbg_set_dst_factor_865ba9aaf187890c: function(e, t) {
2737
+ e.dstFactor = Y[t];
2738
+ },
2739
+ __wbg_set_end_of_pass_write_index_8f164f9e60d4ad16: function(e, t) {
2740
+ e.endOfPassWriteIndex = t >>> 0;
2741
+ },
2742
+ __wbg_set_end_of_pass_write_index_b54a8e3802b9ae0d: function(e, t) {
2743
+ e.endOfPassWriteIndex = t >>> 0;
2744
+ },
2745
+ __wbg_set_entries_6f866302103b81e9: function(e, t, n) {
2746
+ e.entries = w(t, n);
2747
+ },
2748
+ __wbg_set_entries_f26b77ab9548e906: function(e, t, n) {
2749
+ e.entries = w(t, n);
2750
+ },
2751
+ __wbg_set_entry_point_71cef95c137b5774: function(e, t, n) {
2752
+ e.entryPoint = c(t, n);
2753
+ },
2754
+ __wbg_set_entry_point_ac8db535971761fe: function(e, t, n) {
2755
+ e.entryPoint = c(t, n);
2756
+ },
2757
+ __wbg_set_entry_point_b70f98f5025a114d: function(e, t, n) {
2758
+ e.entryPoint = c(t, n);
2759
+ },
2760
+ __wbg_set_external_texture_7f966c604c4f8098: function(e, t) {
2761
+ e.externalTexture = t;
2762
+ },
2763
+ __wbg_set_fail_op_d59d0187e4111dfe: function(e, t) {
2764
+ e.failOp = I[t];
2765
+ },
2766
+ __wbg_set_format_23f7f32549751d43: function(e, t) {
2767
+ e.format = k[t];
2768
+ },
2769
+ __wbg_set_format_283dca56552f07a3: function(e, t) {
2770
+ e.format = k[t];
2771
+ },
2772
+ __wbg_set_format_5080a858117ad2c1: function(e, t) {
2773
+ e.format = Ue[t];
2774
+ },
2775
+ __wbg_set_format_66735b94bd868ba2: function(e, t) {
2776
+ e.format = k[t];
2777
+ },
2778
+ __wbg_set_format_7f2bdbfb101b1ae1: function(e, t) {
2779
+ e.format = k[t];
2780
+ },
2781
+ __wbg_set_format_92732ea75d3b79f5: function(e, t) {
2782
+ e.format = k[t];
2783
+ },
2784
+ __wbg_set_format_f009e603f7d4c28e: function(e, t) {
2785
+ e.format = k[t];
2786
+ },
2787
+ __wbg_set_fragment_d2b0ec97d7cf8d47: function(e, t) {
2788
+ e.fragment = t;
2789
+ },
2790
+ __wbg_set_front_face_d3f8a2e07e7b25dd: function(e, t) {
2791
+ e.frontFace = Ae[t];
2792
+ },
2793
+ __wbg_set_g_b527ee8a9bed553d: function(e, t) {
2794
+ e.g = t;
2795
+ },
2796
+ __wbg_set_has_dynamic_offset_0c72ffa900c5a269: function(e, t) {
2797
+ e.hasDynamicOffset = t !== 0;
2798
+ },
2799
+ __wbg_set_height_1202ad0eab43cbe0: function(e, t) {
2800
+ e.height = t >>> 0;
2801
+ },
2802
+ __wbg_set_height_698fb3b255bc1348: function(e, t) {
2803
+ e.height = t >>> 0;
2804
+ },
2805
+ __wbg_set_height_f6619158e5735877: function(e, t) {
2806
+ e.height = t >>> 0;
2807
+ },
2808
+ __wbg_set_label_09e2da5f8522dbe8: function(e, t, n) {
2809
+ e.label = c(t, n);
2810
+ },
2811
+ __wbg_set_label_17202740051e9722: function(e, t, n) {
2812
+ e.label = c(t, n);
2813
+ },
2814
+ __wbg_set_label_17b4858e1eef23dd: function(e, t, n) {
2815
+ e.label = c(t, n);
2816
+ },
2817
+ __wbg_set_label_2fefb39c0e0dbbe8: function(e, t, n) {
2818
+ e.label = c(t, n);
2819
+ },
2820
+ __wbg_set_label_3cb2322e6f6db14c: function(e, t, n) {
2821
+ e.label = c(t, n);
2822
+ },
2823
+ __wbg_set_label_3f2ccaafef5ff7c9: function(e, t, n) {
2824
+ e.label = c(t, n);
2825
+ },
2826
+ __wbg_set_label_612add98a4398f92: function(e, t, n) {
2827
+ e.label = c(t, n);
2828
+ },
2829
+ __wbg_set_label_6f69e25822616a1b: function(e, t, n) {
2830
+ e.label = c(t, n);
2831
+ },
2832
+ __wbg_set_label_70a09ee68d6b1b26: function(e, t, n) {
2833
+ e.label = c(t, n);
2834
+ },
2835
+ __wbg_set_label_92cd3811e96b487c: function(e, t, n) {
2836
+ e.label = c(t, n);
2837
+ },
2838
+ __wbg_set_label_9c2a186152427ee0: function(e, t, n) {
2839
+ e.label = c(t, n);
2840
+ },
2841
+ __wbg_set_label_c3eaf136aa464cba: function(e, t, n) {
2842
+ e.label = c(t, n);
2843
+ },
2844
+ __wbg_set_label_c7987704d29f284b: function(e, t, n) {
2845
+ e.label = c(t, n);
2846
+ },
2847
+ __wbg_set_label_cfe64bca8945ee30: function(e, t, n) {
2848
+ e.label = c(t, n);
2849
+ },
2850
+ __wbg_set_label_e02179cf97e95763: function(e, t, n) {
2851
+ e.label = c(t, n);
2852
+ },
2853
+ __wbg_set_label_ee172cd5f6a96961: function(e, t, n) {
2854
+ e.label = c(t, n);
2855
+ },
2856
+ __wbg_set_layout_454e3a091b390cd4: function(e, t) {
2857
+ e.layout = t;
2858
+ },
2859
+ __wbg_set_layout_4b5d5b12fbb72a76: function(e, t) {
2860
+ e.layout = t;
2861
+ },
2862
+ __wbg_set_layout_75dc1ca3f2421cff: function(e, t) {
2863
+ e.layout = t;
2864
+ },
2865
+ __wbg_set_layout_gpu_auto_layout_mode_06a2b95af1043098: function(e, t) {
2866
+ e.layout = X[t];
2867
+ },
2868
+ __wbg_set_layout_gpu_auto_layout_mode_ee432e515c357fa8: function(e, t) {
2869
+ e.layout = X[t];
2870
+ },
2871
+ __wbg_set_load_op_c56b1269acc2d51f: function(e, t) {
2872
+ e.loadOp = M[t];
2873
+ },
2874
+ __wbg_set_lod_max_clamp_db24179f67f3aa31: function(e, t) {
2875
+ e.lodMaxClamp = t;
2876
+ },
2877
+ __wbg_set_lod_min_clamp_2bbce566e9fefa04: function(e, t) {
2878
+ e.lodMinClamp = t;
2879
+ },
2880
+ __wbg_set_mag_filter_db8e6b42d4f8846d: function(e, t) {
2881
+ e.magFilter = Z[t];
2882
+ },
2883
+ __wbg_set_mapped_at_creation_3f320fef6761b02c: function(e, t) {
2884
+ e.mappedAtCreation = t !== 0;
2885
+ },
2886
+ __wbg_set_mask_c1079e551ec360dc: function(e, t) {
2887
+ e.mask = t >>> 0;
2888
+ },
2889
+ __wbg_set_max_anisotropy_84749fdcec362dc4: function(e, t) {
2890
+ e.maxAnisotropy = t;
2891
+ },
2892
+ __wbg_set_min_binding_size_f64_897e3cd4496ddec9: function(e, t) {
2893
+ e.minBindingSize = t;
2894
+ },
2895
+ __wbg_set_min_filter_d435bbfc5a637757: function(e, t) {
2896
+ e.minFilter = Z[t];
2897
+ },
2898
+ __wbg_set_mip_level_count_047936c630acee7b: function(e, t) {
2899
+ e.mipLevelCount = t >>> 0;
2900
+ },
2901
+ __wbg_set_mip_level_count_44bc46a1ae6f6daa: function(e, t) {
2902
+ e.mipLevelCount = t >>> 0;
2903
+ },
2904
+ __wbg_set_mipmap_filter_62fb49a84b0747ff: function(e, t) {
2905
+ e.mipmapFilter = Fe[t];
2906
+ },
2907
+ __wbg_set_mode_7edfbc344ef9c650: function(e, t) {
2908
+ e.mode = Te[t];
2909
+ },
2910
+ __wbg_set_module_392eeaa269f203b0: function(e, t) {
2911
+ e.module = t;
2912
+ },
2913
+ __wbg_set_module_715d37652c4998ec: function(e, t) {
2914
+ e.module = t;
2915
+ },
2916
+ __wbg_set_module_c9946af218d23b53: function(e, t) {
2917
+ e.module = t;
2918
+ },
2919
+ __wbg_set_multisample_ff72a7a5456cbeb7: function(e, t) {
2920
+ e.multisample = t;
2921
+ },
2922
+ __wbg_set_multisampled_039f032dc4b67367: function(e, t) {
2923
+ e.multisampled = t !== 0;
2924
+ },
2925
+ __wbg_set_offset_f64_127e8a0aa5c5485a: function(e, t) {
2926
+ e.offset = t;
2927
+ },
2928
+ __wbg_set_offset_f64_457756429ede426d: function(e, t) {
2929
+ e.offset = t;
2930
+ },
2931
+ __wbg_set_operation_00a77386523b88f9: function(e, t) {
2932
+ e.operation = ve[t];
2933
+ },
2934
+ __wbg_set_pass_op_3cf10feb3d76ab97: function(e, t) {
2935
+ e.passOp = I[t];
2936
+ },
2937
+ __wbg_set_power_preference_b42d00a8facfbade: function(e, t) {
2938
+ e.powerPreference = Ee[t];
2939
+ },
2940
+ __wbg_set_primitive_e796cf76f0ff89f3: function(e, t) {
2941
+ e.primitive = t;
2942
+ },
2943
+ __wbg_set_query_set_f030702f1b69199f: function(e, t) {
2944
+ e.querySet = t;
2945
+ },
2946
+ __wbg_set_query_set_f9a94586851fdba2: function(e, t) {
2947
+ e.querySet = t;
2948
+ },
2949
+ __wbg_set_r_6ece4d74af63364f: function(e, t) {
2950
+ e.r = t;
2951
+ },
2952
+ __wbg_set_required_features_bbab71414c45e621: function(e, t, n) {
2953
+ e.requiredFeatures = w(t, n);
2954
+ },
2955
+ __wbg_set_required_limits_837f62d865e7cfac: function(e, t) {
2956
+ e.requiredLimits = t;
2957
+ },
2958
+ __wbg_set_resolve_target_gpu_texture_view_e4c1e3bbb8c27d87: function(e, t) {
2959
+ e.resolveTarget = t;
2960
+ },
2961
+ __wbg_set_resource_8fd8658b30d86ecf: function(e, t) {
2962
+ e.resource = t;
2963
+ },
2964
+ __wbg_set_resource_gpu_buffer_binding_33099b25da65b610: function(e, t) {
2965
+ e.resource = t;
2966
+ },
2967
+ __wbg_set_resource_gpu_texture_view_4cffe7bc7c8e5cbe: function(e, t) {
2968
+ e.resource = t;
2969
+ },
2970
+ __wbg_set_sample_count_481c255a12054e1d: function(e, t) {
2971
+ e.sampleCount = t >>> 0;
2972
+ },
2973
+ __wbg_set_sample_type_ebc5fcd029513bda: function(e, t) {
2974
+ e.sampleType = Ne[t];
2975
+ },
2976
+ __wbg_set_sampler_89cb4a7efcfc6005: function(e, t) {
2977
+ e.sampler = t;
2978
+ },
2979
+ __wbg_set_shader_location_3fb9f6a012eba494: function(e, t) {
2980
+ e.shaderLocation = t >>> 0;
2981
+ },
2982
+ __wbg_set_size_f64_2f591b0654540477: function(e, t) {
2983
+ e.size = t;
2984
+ },
2985
+ __wbg_set_size_f64_e844c985b8f95261: function(e, t) {
2986
+ e.size = t;
2987
+ },
2988
+ __wbg_set_size_gpu_extent_3d_dict_adf57388ab1d4f18: function(e, t) {
2989
+ e.size = t;
2990
+ },
2991
+ __wbg_set_src_factor_6f2c9ec8e4d3d979: function(e, t) {
2992
+ e.srcFactor = Y[t];
2993
+ },
2994
+ __wbg_set_stencil_back_c54d0443b8b6a957: function(e, t) {
2995
+ e.stencilBack = t;
2996
+ },
2997
+ __wbg_set_stencil_clear_value_a321b0e045bfd8c2: function(e, t) {
2998
+ e.stencilClearValue = t >>> 0;
2999
+ },
3000
+ __wbg_set_stencil_front_3ff3f8385852efff: function(e, t) {
3001
+ e.stencilFront = t;
3002
+ },
3003
+ __wbg_set_stencil_load_op_37d20deccb26a0f1: function(e, t) {
3004
+ e.stencilLoadOp = M[t];
3005
+ },
3006
+ __wbg_set_stencil_read_mask_021ef4271b24352c: function(e, t) {
3007
+ e.stencilReadMask = t >>> 0;
3008
+ },
3009
+ __wbg_set_stencil_read_only_75fe66a2356d6e92: function(e, t) {
3010
+ e.stencilReadOnly = t !== 0;
3011
+ },
3012
+ __wbg_set_stencil_store_op_501f91638dd386e6: function(e, t) {
3013
+ e.stencilStoreOp = V[t];
3014
+ },
3015
+ __wbg_set_stencil_write_mask_ec1c12237e094bdd: function(e, t) {
3016
+ e.stencilWriteMask = t >>> 0;
3017
+ },
3018
+ __wbg_set_step_mode_3cbbdeba1e5dfd62: function(e, t) {
3019
+ e.stepMode = qe[t];
3020
+ },
3021
+ __wbg_set_storage_texture_786aea7c5773b6c1: function(e, t) {
3022
+ e.storageTexture = t;
3023
+ },
3024
+ __wbg_set_store_op_678f33376d741711: function(e, t) {
3025
+ e.storeOp = V[t];
3026
+ },
3027
+ __wbg_set_strip_index_format_70313df755145d5e: function(e, t) {
3028
+ e.stripIndexFormat = K[t];
3029
+ },
3030
+ __wbg_set_targets_674b33931e512fb1: function(e, t, n) {
3031
+ e.targets = w(t, n);
3032
+ },
3033
+ __wbg_set_texture_a33be3fe02ac6264: function(e, t) {
3034
+ e.texture = t;
3035
+ },
3036
+ __wbg_set_timestamp_writes_5f240bbaad97fcaf: function(e, t) {
3037
+ e.timestampWrites = t;
3038
+ },
3039
+ __wbg_set_timestamp_writes_de6a09f299b71b76: function(e, t) {
3040
+ e.timestampWrites = t;
3041
+ },
3042
+ __wbg_set_tone_mapping_320c1aad31db2e7f: function(e, t) {
3043
+ e.toneMapping = t;
3044
+ },
3045
+ __wbg_set_topology_b92cfe523bd9653b: function(e, t) {
3046
+ e.topology = Oe[t];
3047
+ },
3048
+ __wbg_set_type_43e0092f16775979: function(e, t) {
3049
+ e.type = Me[t];
3050
+ },
3051
+ __wbg_set_type_79cec55caf4cdb6d: function(e, t) {
3052
+ e.type = Ge[t];
3053
+ },
3054
+ __wbg_set_type_7f7e54057b801caa: function(e, t) {
3055
+ e.type = We[t];
3056
+ },
3057
+ __wbg_set_unclipped_depth_32b7caf29fa5633d: function(e, t) {
3058
+ e.unclippedDepth = t !== 0;
3059
+ },
3060
+ __wbg_set_usage_1ee33d98267e787d: function(e, t) {
3061
+ e.usage = t >>> 0;
3062
+ },
3063
+ __wbg_set_usage_2365e2704b1fdb10: function(e, t) {
3064
+ e.usage = t >>> 0;
3065
+ },
3066
+ __wbg_set_usage_d53ee6f0c7aedbfa: function(e, t) {
3067
+ e.usage = t >>> 0;
3068
+ },
3069
+ __wbg_set_usage_f3e34822998d2147: function(e, t) {
3070
+ e.usage = t >>> 0;
3071
+ },
3072
+ __wbg_set_vertex_77ed7a1229239b5a: function(e, t) {
3073
+ e.vertex = t;
3074
+ },
3075
+ __wbg_set_view_dimension_893e2d16561e56e8: function(e, t) {
3076
+ e.viewDimension = z[t];
3077
+ },
3078
+ __wbg_set_view_dimension_f2c5fe4bf927c3fe: function(e, t) {
3079
+ e.viewDimension = z[t];
3080
+ },
3081
+ __wbg_set_view_formats_427069064d8b7139: function(e, t, n) {
3082
+ e.viewFormats = w(t, n);
3083
+ },
3084
+ __wbg_set_view_formats_9c2f01a6f3b365c7: function(e, t, n) {
3085
+ e.viewFormats = w(t, n);
3086
+ },
3087
+ __wbg_set_view_gpu_texture_view_35f4655788535c4d: function(e, t) {
3088
+ e.view = t;
3089
+ },
3090
+ __wbg_set_view_gpu_texture_view_a532c825c52042c0: function(e, t) {
3091
+ e.view = t;
3092
+ },
3093
+ __wbg_set_visibility_d8a6821789538c25: function(e, t) {
3094
+ e.visibility = t >>> 0;
3095
+ },
3096
+ __wbg_set_width_4c3a2252e0dea033: function(e, t) {
3097
+ e.width = t >>> 0;
3098
+ },
3099
+ __wbg_set_width_b20525f5f4df4eb8: function(e, t) {
3100
+ e.width = t >>> 0;
3101
+ },
3102
+ __wbg_set_width_f52a20e39808b138: function(e, t) {
3103
+ e.width = t >>> 0;
3104
+ },
3105
+ __wbg_set_write_mask_42d89f182ade6b2d: function(e, t) {
3106
+ e.writeMask = t >>> 0;
3107
+ },
3108
+ __wbg_static_accessor_GLOBAL_8eb4cd83130a11a0: function() {
3109
+ const e = typeof global > "u" ? null : global;
3110
+ return x(e) ? 0 : R(e);
3111
+ },
3112
+ __wbg_static_accessor_GLOBAL_THIS_1e7044f654e934db: function() {
3113
+ const e = typeof globalThis > "u" ? null : globalThis;
3114
+ return x(e) ? 0 : R(e);
3115
+ },
3116
+ __wbg_static_accessor_SELF_d8b50611246a6d92: function() {
3117
+ const e = typeof self > "u" ? null : self;
3118
+ return x(e) ? 0 : R(e);
3119
+ },
3120
+ __wbg_static_accessor_WINDOW_fd0bc376bf0f8b42: function() {
3121
+ const e = typeof window > "u" ? null : window;
3122
+ return x(e) ? 0 : R(e);
3123
+ },
3124
+ __wbg_subgroupMaxSize_b43be0aa16182403: function(e) {
3125
+ return e.subgroupMaxSize;
3126
+ },
3127
+ __wbg_subgroupMinSize_03feb6ee0cda6775: function(e) {
3128
+ return e.subgroupMinSize;
3129
+ },
3130
+ __wbg_submit_077c85cc28e36892: function(e, t, n) {
3131
+ e.submit(w(t, n));
3132
+ },
3133
+ __wbg_then_7a850dae4493f353: function(e, t, n) {
3134
+ return e.then(t, n);
3135
+ },
3136
+ __wbg_then_8ebf7f4d2b402f98: function(e, t) {
3137
+ return e.then(t);
3138
+ },
3139
+ __wbg_then_b830475380919203: function(e, t) {
3140
+ return e.then(t);
3141
+ },
3142
+ __wbg_unconfigure_835307f58dc68d80: function(e) {
3143
+ e.unconfigure();
3144
+ },
3145
+ __wbg_unmap_6a96b14c9ef5f7f5: function(e) {
3146
+ e.unmap();
3147
+ },
3148
+ __wbg_webrenderer_new: function(e) {
3149
+ return T.__wrap(e);
3150
+ },
3151
+ __wbg_width_b5e609025d3f7451: function(e) {
3152
+ return e.width;
3153
+ },
3154
+ __wbg_writeBuffer_f4bb3f54adfe1330: function() {
3155
+ return d(function(e, t, n, a, _, i, s) {
3156
+ e.writeBuffer(t, n, N(a, _), i, s);
3157
+ }, arguments);
3158
+ },
3159
+ __wbindgen_generic_0000000000000001: function(e, t) {
3160
+ return L(e, t, Se);
3161
+ },
3162
+ __wbindgen_generic_0000000000000002: function(e, t) {
3163
+ return L(e, t, ke);
3164
+ },
3165
+ __wbindgen_generic_0000000000000003: function(e, t) {
3166
+ return L(e, t, ye);
3167
+ },
3168
+ __wbindgen_generic_0000000000000004: function(e, t) {
3169
+ return L(e, t, we);
3170
+ },
3171
+ __wbindgen_generic_0000000000000005: function(e, t) {
3172
+ return L(e, t, xe);
3173
+ },
3174
+ __wbindgen_generic_0000000000000006: function(e, t) {
3175
+ return L(e, t, Re);
3176
+ },
3177
+ __wbindgen_generic_0000000000000007: function(e) {
3178
+ return e;
3179
+ },
3180
+ __wbindgen_generic_0000000000000008: function(e, t) {
3181
+ return N(e, t);
3182
+ },
3183
+ __wbindgen_generic_0000000000000009: function(e, t) {
3184
+ return c(e, t);
3185
+ },
3186
+ __wbindgen_init_externref_table: function() {
3187
+ const e = o.__wbindgen_externrefs, t = e.grow(4);
3188
+ e.set(0, void 0), e.set(t + 0, void 0), e.set(t + 1, null), e.set(t + 2, !0), e.set(t + 3, !1);
3189
+ }
3190
+ }
3191
+ };
3192
+ }
3193
+ function we(r, e, t) {
3194
+ o.wasm_bindgen_b886f896fd34b232___convert__closures_____invoke___wgpu_80aa378a978bbb48___backend__webgpu__webgpu_sys__gen_GpuDeviceLostInfo__GpuDeviceLostInfo______true_(r, e, t);
3195
+ }
3196
+ function Se(r, e, t) {
3197
+ const n = o.wasm_bindgen_b886f896fd34b232___convert__closures_____invoke___wasm_bindgen_b886f896fd34b232___JsValue__core_ed718c3d60ebd546___result__Result_____wasm_bindgen_b886f896fd34b232___JsError___true_(r, e, t);
3198
+ if (n[1])
3199
+ throw h(n[0]);
3200
+ }
3201
+ function ye(r, e, t) {
3202
+ const n = o.wasm_bindgen_b886f896fd34b232___convert__closures_____invoke___wasm_bindgen_b886f896fd34b232___sys__JsNullable_wgpu_80aa378a978bbb48___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_ed718c3d60ebd546___result__Result_____wasm_bindgen_b886f896fd34b232___JsError___true_(r, e, t);
3203
+ if (n[1])
3204
+ throw h(n[0]);
3205
+ }
3206
+ function xe(r, e, t) {
3207
+ const n = o.wasm_bindgen_b886f896fd34b232___convert__closures_____invoke___wasm_bindgen_b886f896fd34b232___sys__JsNullable_wgpu_80aa378a978bbb48___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_ed718c3d60ebd546___result__Result_____wasm_bindgen_b886f896fd34b232___JsError___true__21(r, e, t);
3208
+ if (n[1])
3209
+ throw h(n[0]);
3210
+ }
3211
+ function Re(r, e, t) {
3212
+ const n = o.wasm_bindgen_b886f896fd34b232___convert__closures_____invoke___wasm_bindgen_b886f896fd34b232___sys__JsNullable_wgpu_80aa378a978bbb48___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_ed718c3d60ebd546___result__Result_____wasm_bindgen_b886f896fd34b232___JsError___true__22(r, e, t);
3213
+ if (n[1])
3214
+ throw h(n[0]);
3215
+ }
3216
+ function Be(r, e, t, n) {
3217
+ o.wasm_bindgen_b886f896fd34b232___convert__closures_____invoke___js_sys_7d3929aa405b9504___Function_fn_wasm_bindgen_b886f896fd34b232___JsValue_____wasm_bindgen_b886f896fd34b232___sys__Undefined___js_sys_7d3929aa405b9504___Function_fn_wasm_bindgen_b886f896fd34b232___JsValue_____wasm_bindgen_b886f896fd34b232___sys__Undefined_______true_(r, e, t, n);
3218
+ }
3219
+ function ke(r, e, t) {
3220
+ o.wasm_bindgen_b886f896fd34b232___convert__closures_____invoke___f64______true_(r, e, t);
3221
+ }
3222
+ const O = ["clamp-to-edge", "repeat", "mirror-repeat"], X = ["auto"], Y = ["zero", "one", "src", "one-minus-src", "src-alpha", "one-minus-src-alpha", "dst", "one-minus-dst", "dst-alpha", "one-minus-dst-alpha", "src-alpha-saturated", "constant", "one-minus-constant", "src1", "one-minus-src1", "src1-alpha", "one-minus-src1-alpha"], ve = ["add", "subtract", "reverse-subtract", "min", "max"], Ge = ["uniform", "storage", "read-only-storage"], Le = ["opaque", "premultiplied"], Te = ["standard", "extended"], W = ["never", "less", "equal", "less-equal", "greater", "not-equal", "greater-equal", "always"], Ce = ["none", "front", "back"], Pe = ["unknown", "destroyed"], De = ["validation", "out-of-memory", "internal"], Z = ["nearest", "linear"], Ae = ["ccw", "cw"], K = ["uint16", "uint32"], M = ["load", "clear"], Fe = ["nearest", "linear"], Ee = ["low-power", "high-performance"], Oe = ["point-list", "line-list", "line-strip", "triangle-list", "triangle-strip"], We = ["occlusion", "timestamp"], Me = ["filtering", "non-filtering", "comparison"], I = ["keep", "zero", "replace", "invert", "increment-clamp", "decrement-clamp", "increment-wrap", "decrement-wrap"], Ie = ["write-only", "read-only", "read-write"], V = ["store", "discard"], Ve = ["all", "stencil-only", "depth-only"], ze = ["1d", "2d", "3d"], k = ["r8unorm", "r8snorm", "r8uint", "r8sint", "r16unorm", "r16snorm", "r16uint", "r16sint", "r16float", "rg8unorm", "rg8snorm", "rg8uint", "rg8sint", "r32uint", "r32sint", "r32float", "rg16unorm", "rg16snorm", "rg16uint", "rg16sint", "rg16float", "rgba8unorm", "rgba8unorm-srgb", "rgba8snorm", "rgba8uint", "rgba8sint", "bgra8unorm", "bgra8unorm-srgb", "rgb9e5ufloat", "rgb10a2uint", "rgb10a2unorm", "rg11b10ufloat", "rg32uint", "rg32sint", "rg32float", "rgba16unorm", "rgba16snorm", "rgba16uint", "rgba16sint", "rgba16float", "rgba32uint", "rgba32sint", "rgba32float", "stencil8", "depth16unorm", "depth24plus", "depth24plus-stencil8", "depth32float", "depth32float-stencil8", "bc1-rgba-unorm", "bc1-rgba-unorm-srgb", "bc2-rgba-unorm", "bc2-rgba-unorm-srgb", "bc3-rgba-unorm", "bc3-rgba-unorm-srgb", "bc4-r-unorm", "bc4-r-snorm", "bc5-rg-unorm", "bc5-rg-snorm", "bc6h-rgb-ufloat", "bc6h-rgb-float", "bc7-rgba-unorm", "bc7-rgba-unorm-srgb", "etc2-rgb8unorm", "etc2-rgb8unorm-srgb", "etc2-rgb8a1unorm", "etc2-rgb8a1unorm-srgb", "etc2-rgba8unorm", "etc2-rgba8unorm-srgb", "eac-r11unorm", "eac-r11snorm", "eac-rg11unorm", "eac-rg11snorm", "astc-4x4-unorm", "astc-4x4-unorm-srgb", "astc-5x4-unorm", "astc-5x4-unorm-srgb", "astc-5x5-unorm", "astc-5x5-unorm-srgb", "astc-6x5-unorm", "astc-6x5-unorm-srgb", "astc-6x6-unorm", "astc-6x6-unorm-srgb", "astc-8x5-unorm", "astc-8x5-unorm-srgb", "astc-8x6-unorm", "astc-8x6-unorm-srgb", "astc-8x8-unorm", "astc-8x8-unorm-srgb", "astc-10x5-unorm", "astc-10x5-unorm-srgb", "astc-10x6-unorm", "astc-10x6-unorm-srgb", "astc-10x8-unorm", "astc-10x8-unorm-srgb", "astc-10x10-unorm", "astc-10x10-unorm-srgb", "astc-12x10-unorm", "astc-12x10-unorm-srgb", "astc-12x12-unorm", "astc-12x12-unorm-srgb"], Ne = ["float", "unfilterable-float", "depth", "sint", "uint"], z = ["1d", "2d", "2d-array", "cube", "cube-array", "3d"], Ue = ["uint8", "uint8x2", "uint8x4", "sint8", "sint8x2", "sint8x4", "unorm8", "unorm8x2", "unorm8x4", "snorm8", "snorm8x2", "snorm8x4", "uint16", "uint16x2", "uint16x4", "sint16", "sint16x2", "sint16x4", "unorm16", "unorm16x2", "unorm16x4", "snorm16", "snorm16x2", "snorm16x4", "float16", "float16x2", "float16x4", "float32", "float32x2", "float32x3", "float32x4", "uint32", "uint32x2", "uint32x3", "uint32x4", "sint32", "sint32x2", "sint32x3", "sint32x4", "unorm10-10-10-2", "unorm8x4-bgra"], qe = ["vertex", "instance"], ee = typeof FinalizationRegistry > "u" ? { register: () => {
3223
+ }, unregister: () => {
3224
+ } } : new FinalizationRegistry((r) => o.__wbg_webrenderer_free(r, 1));
3225
+ function R(r) {
3226
+ const e = o.__externref_table_alloc();
3227
+ return o.__wbindgen_externrefs.set(e, r), e;
3228
+ }
3229
+ const te = typeof FinalizationRegistry > "u" ? { register: () => {
3230
+ }, unregister: () => {
3231
+ } } : new FinalizationRegistry((r) => o.__wbindgen_destroy_closure(r.a, r.b));
3232
+ function q(r) {
3233
+ const e = typeof r;
3234
+ if (e == "number" || e == "boolean" || r == null)
3235
+ return `${r}`;
3236
+ if (e == "string")
3237
+ return `"${r}"`;
3238
+ if (e == "symbol") {
3239
+ const a = r.description;
3240
+ return a == null ? "Symbol" : `Symbol(${a})`;
3241
+ }
3242
+ if (e == "function") {
3243
+ const a = r.name;
3244
+ return typeof a == "string" && a.length > 0 ? `Function(${a})` : "Function";
3245
+ }
3246
+ if (Array.isArray(r)) {
3247
+ const a = r.length;
3248
+ let _ = "[";
3249
+ a > 0 && (_ += q(r[0]));
3250
+ for (let i = 1; i < a; i++)
3251
+ _ += ", " + q(r[i]);
3252
+ return _ += "]", _;
3253
+ }
3254
+ const t = /\[object ([^\]]+)\]/.exec(toString.call(r));
3255
+ let n;
3256
+ if (t && t.length > 1)
3257
+ n = t[1];
3258
+ else
3259
+ return toString.call(r);
3260
+ if (n == "Object")
3261
+ try {
3262
+ return "Object(" + JSON.stringify(r) + ")";
3263
+ } catch {
3264
+ return "Object";
3265
+ }
3266
+ return r instanceof Error ? `${r.name}: ${r.message}
3267
+ ${r.stack}` : n;
3268
+ }
3269
+ function w(r, e) {
3270
+ r = r >>> 0;
3271
+ const t = p(), n = [];
3272
+ for (let a = r; a < r + 4 * e; a += 4)
3273
+ n.push(o.__wbindgen_externrefs.get(t.getUint32(a, !0)));
3274
+ return n;
3275
+ }
3276
+ function ne(r, e) {
3277
+ return r = r >>> 0, Je().subarray(r / 4, r / 4 + e);
3278
+ }
3279
+ function N(r, e) {
3280
+ return r = r >>> 0, D().subarray(r / 1, r / 1 + e);
3281
+ }
3282
+ let v = null;
3283
+ function p() {
3284
+ return (v === null || v.buffer.detached === !0 || v.buffer.detached === void 0 && v.buffer !== o.memory.buffer) && (v = new DataView(o.memory.buffer)), v;
3285
+ }
3286
+ function c(r, e) {
3287
+ return je(r >>> 0, e);
3288
+ }
3289
+ let C = null;
3290
+ function Je() {
3291
+ return (C === null || C.byteLength === 0) && (C = new Uint32Array(o.memory.buffer)), C;
3292
+ }
3293
+ let P = null;
3294
+ function D() {
3295
+ return (P === null || P.byteLength === 0) && (P = new Uint8Array(o.memory.buffer)), P;
3296
+ }
3297
+ function d(r, e) {
3298
+ try {
3299
+ return r.apply(this, e);
3300
+ } catch (t) {
3301
+ const n = R(t);
3302
+ o.__wbindgen_exn_store(n);
3303
+ }
3304
+ }
3305
+ function x(r) {
3306
+ return r == null;
3307
+ }
3308
+ function L(r, e, t) {
3309
+ const n = { a: r, b: e, cnt: 1 }, a = (..._) => {
3310
+ n.cnt++;
3311
+ const i = n.a;
3312
+ n.a = 0;
3313
+ try {
3314
+ return t(i, n.b, ..._);
3315
+ } finally {
3316
+ n.a = i, a._wbg_cb_unref();
3317
+ }
3318
+ };
3319
+ return a._wbg_cb_unref = () => {
3320
+ --n.cnt === 0 && (o.__wbindgen_destroy_closure(n.a, n.b), n.a = 0, te.unregister(n));
3321
+ }, te.register(a, n, n), a;
3322
+ }
3323
+ function S(r, e, t) {
3324
+ if (t === void 0) {
3325
+ const s = A.encode(r), u = e(s.length, 1) >>> 0;
3326
+ return D().subarray(u, u + s.length).set(s), m = s.length, u;
3327
+ }
3328
+ let n = r.length, a = e(n, 1) >>> 0;
3329
+ const _ = D();
3330
+ let i = 0;
3331
+ for (; i < n; i++) {
3332
+ const s = r.charCodeAt(i);
3333
+ if (s > 127) break;
3334
+ _[a + i] = s;
3335
+ }
3336
+ if (i !== n) {
3337
+ i !== 0 && (r = r.slice(i)), a = t(a, n, n = i + r.length * 3, 1) >>> 0;
3338
+ const s = D().subarray(a + i, a + n), u = A.encodeInto(r, s);
3339
+ i += u.written, a = t(a, n, i, 1) >>> 0;
3340
+ }
3341
+ return m = i, a;
3342
+ }
3343
+ function h(r) {
3344
+ const e = o.__wbindgen_externrefs.get(r);
3345
+ return o.__externref_table_dealloc(r), e;
3346
+ }
3347
+ let E = new TextDecoder("utf-8", { ignoreBOM: !0, fatal: !0 });
3348
+ E.decode();
3349
+ const He = 2146435072;
3350
+ let U = 0;
3351
+ function je(r, e) {
3352
+ return U += e, U >= He && (E = new TextDecoder("utf-8", { ignoreBOM: !0, fatal: !0 }), E.decode(), U = e), E.decode(D().subarray(r, r + e));
3353
+ }
3354
+ const A = new TextEncoder();
3355
+ "encodeInto" in A || (A.encodeInto = function(r, e) {
3356
+ const t = A.encode(r);
3357
+ return e.set(t), {
3358
+ read: r.length,
3359
+ written: t.length
3360
+ };
3361
+ });
3362
+ let m = 0, o;
3363
+ function $e(r, e) {
3364
+ return o = r.exports, v = null, C = null, P = null, o.__wbindgen_start(), o;
3365
+ }
3366
+ async function Qe(r, e) {
3367
+ if (typeof Response == "function" && r instanceof Response) {
3368
+ if (!r.ok)
3369
+ throw new Error(`failed to fetch Wasm: ${r.status} ${r.statusText} fetching '${r.url}'`);
3370
+ if (typeof WebAssembly.instantiateStreaming == "function")
3371
+ try {
3372
+ return await WebAssembly.instantiateStreaming(r, e);
3373
+ } catch (a) {
3374
+ if (t(r.type) && r.headers.get("Content-Type") !== "application/wasm")
3375
+ console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", a);
3376
+ else
3377
+ throw a;
3378
+ }
3379
+ const n = await r.arrayBuffer();
3380
+ return await WebAssembly.instantiate(n, e);
3381
+ } else {
3382
+ const n = await WebAssembly.instantiate(r, e);
3383
+ return n instanceof WebAssembly.Instance ? { instance: n, module: r } : n;
3384
+ }
3385
+ function t(n) {
3386
+ switch (n) {
3387
+ case "basic":
3388
+ case "cors":
3389
+ case "default":
3390
+ return !0;
3391
+ }
3392
+ return !1;
3393
+ }
3394
+ }
3395
+ async function Xe(r) {
3396
+ if (o !== void 0) return o;
3397
+ r !== void 0 && (Object.getPrototypeOf(r) === Object.prototype ? { module_or_path: r } = r : console.warn("using deprecated parameters for the initialization function; pass a single object instead"));
3398
+ const e = me();
3399
+ (typeof r == "string" || typeof Request == "function" && r instanceof Request || typeof URL == "function" && r instanceof URL) && (r = fetch(r));
3400
+ const { instance: t, module: n } = await Qe(await r, e);
3401
+ return $e(t);
3402
+ }
3403
+ const Ye = 2;
3404
+ function re(r) {
3405
+ window.telperionLiveDevices = (window.telperionLiveDevices ?? 0) + r;
3406
+ }
3407
+ let ae;
3408
+ async function ct(r) {
3409
+ ae ?? (ae = Xe({ module_or_path: new URL("./telperion-render.wasm", import.meta.url) }).then(() => {
3410
+ })), await ae;
3411
+ const e = () => {
3412
+ const _ = Math.min(window.devicePixelRatio, Ye);
3413
+ r.width = Math.max(1, Math.round((r.clientWidth || 1) * _)), r.height = Math.max(1, Math.round((r.clientHeight || 1) * _));
3414
+ };
3415
+ e();
3416
+ const t = await T.create(r);
3417
+ re(1);
3418
+ let n = !1;
3419
+ const a = new ResizeObserver(() => {
3420
+ n || (e(), t.resize(r.width, r.height));
3421
+ });
3422
+ return a.observe(r), {
3423
+ setTree: (_) => JSON.parse(t.setTree(_)),
3424
+ setTreeGpu: async (_) => {
3425
+ if (n) throw new Error("the renderer is disposed");
3426
+ return JSON.parse(await t.setTreeGpu(_));
3427
+ },
3428
+ buildSpecimen: (_, i) => JSON.parse(t.buildSpecimen(_, i)),
3429
+ seekSpecimen: (_) => JSON.parse(t.seekSpecimen(_)),
3430
+ setView: (_) => t.setView(_),
3431
+ scene: () => JSON.parse(t.scene()),
3432
+ setScene: (_) => t.setScene(JSON.stringify(_)),
3433
+ hero: () => JSON.parse(t.heroCamera()),
3434
+ setCamera: ({ position: _, target: i }) => t.setCamera(_[0], _[1], _[2], i[0], i[1], i[2]),
3435
+ frame: () => t.frame(),
3436
+ stats: () => JSON.parse(t.stats()),
3437
+ timing: async () => JSON.parse(await t.timing()),
3438
+ orbit: async () => JSON.parse(await t.orbit()),
3439
+ dispose: () => {
3440
+ n || (n = !0, a.disconnect(), t.dispose(), t.free(), re(-1));
3441
+ }
3442
+ };
3443
+ }
3444
+ export {
3445
+ de as LAURELIN,
3446
+ j as LEAF_WORDS,
3447
+ nt as NORWAY_SPRUCE,
3448
+ et as ORDINARY,
3449
+ tt as OREGON_WHITE_OAK,
3450
+ _t as PRESETS,
3451
+ rt as SILVER_BIRCH,
3452
+ fe as TELPERION,
3453
+ at as TWO_TREES,
3454
+ J as TreeEngine,
3455
+ ct as createRenderer,
3456
+ it as initializeTreeCore,
3457
+ be as leafPosition,
3458
+ he as leafRotation,
3459
+ ge as leafScale,
3460
+ st as leafTransform,
3461
+ ot as leafWords,
3462
+ G as presetById
3463
+ };