@aura3d/engine 1.5.0 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +111 -46
- package/dist/engine/agent-api/ApplicationKits.d.ts +307 -0
- package/dist/engine/agent-api/ApplicationKits.d.ts.map +1 -0
- package/dist/engine/agent-api/ApplicationKits.js +650 -0
- package/dist/engine/agent-api/ApplicationKits.js.map +1 -0
- package/dist/engine/agent-api/CombatFrameData.d.ts +210 -0
- package/dist/engine/agent-api/CombatFrameData.d.ts.map +1 -0
- package/dist/engine/agent-api/CombatFrameData.js +324 -0
- package/dist/engine/agent-api/CombatFrameData.js.map +1 -0
- package/dist/engine/agent-api/FocusSelection.d.ts +186 -0
- package/dist/engine/agent-api/FocusSelection.d.ts.map +1 -0
- package/dist/engine/agent-api/FocusSelection.js +436 -0
- package/dist/engine/agent-api/FocusSelection.js.map +1 -0
- package/dist/engine/agent-api/GameGenreKits.d.ts +32 -1
- package/dist/engine/agent-api/GameGenreKits.d.ts.map +1 -1
- package/dist/engine/agent-api/GameGenreKits.js +51 -7
- package/dist/engine/agent-api/GameGenreKits.js.map +1 -1
- package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts +10 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts.map +1 -1
- package/dist/engine/agent-api/GameSceneGeometryBindings.js +7 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.js.map +1 -1
- package/dist/engine/agent-api/PlatformerMotion.d.ts +177 -0
- package/dist/engine/agent-api/PlatformerMotion.d.ts.map +1 -0
- package/dist/engine/agent-api/PlatformerMotion.js +207 -0
- package/dist/engine/agent-api/PlatformerMotion.js.map +1 -0
- package/dist/engine/agent-api/SceneQueries.d.ts +124 -0
- package/dist/engine/agent-api/SceneQueries.d.ts.map +1 -0
- package/dist/engine/agent-api/SceneQueries.js +221 -0
- package/dist/engine/agent-api/SceneQueries.js.map +1 -0
- package/dist/engine/agent-api/SpatialAnchoring.d.ts +279 -0
- package/dist/engine/agent-api/SpatialAnchoring.d.ts.map +1 -0
- package/dist/engine/agent-api/SpatialAnchoring.js +394 -0
- package/dist/engine/agent-api/SpatialAnchoring.js.map +1 -0
- package/dist/engine/agent-api/VehicleChassis.d.ts +192 -0
- package/dist/engine/agent-api/VehicleChassis.d.ts.map +1 -0
- package/dist/engine/agent-api/VehicleChassis.js +322 -0
- package/dist/engine/agent-api/VehicleChassis.js.map +1 -0
- package/dist/engine/agent-api/VehicleDriverAi.d.ts +123 -0
- package/dist/engine/agent-api/VehicleDriverAi.d.ts.map +1 -0
- package/dist/engine/agent-api/VehicleDriverAi.js +217 -0
- package/dist/engine/agent-api/VehicleDriverAi.js.map +1 -0
- package/dist/engine/agent-api/WorldLabelRenderer.d.ts +146 -0
- package/dist/engine/agent-api/WorldLabelRenderer.d.ts.map +1 -0
- package/dist/engine/agent-api/WorldLabelRenderer.js +331 -0
- package/dist/engine/agent-api/WorldLabelRenderer.js.map +1 -0
- package/dist/engine/agent-api/index.d.ts +64 -1
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +148 -2
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
- package/dist/rendering/CameraFraming.d.ts +77 -0
- package/dist/rendering/CameraFraming.d.ts.map +1 -1
- package/dist/rendering/CameraFraming.js +176 -1
- package/dist/rendering/CameraFraming.js.map +1 -1
- package/dist/rendering/Renderer.d.ts +25 -2
- package/dist/rendering/Renderer.d.ts.map +1 -1
- package/dist/rendering/Renderer.js +11 -3
- package/dist/rendering/Renderer.js.map +1 -1
- package/dist/rendering/index.d.ts +3 -3
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +1 -1
- package/dist/rendering/index.js.map +1 -1
- package/package.json +120 -115
package/README.md
CHANGED
|
@@ -87,55 +87,120 @@ repo. The claim-boundary and release evidence docs live under `docs/` for teams
|
|
|
87
87
|
that need strict publication review, but the developer path starts here: create
|
|
88
88
|
an app, add typed assets, run it, test it, deploy it.
|
|
89
89
|
|
|
90
|
-
## Current Release: Aura3D 1.5.
|
|
91
|
-
|
|
92
|
-
Aura3D 1.5.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
`
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
- **
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
90
|
+
## Current Release: Aura3D 1.5.2
|
|
91
|
+
|
|
92
|
+
Aura3D 1.5.2 is the current source release across all 26 public packages. It adds
|
|
93
|
+
**camera and sizing capability to the public API** and carries an
|
|
94
|
+
**evidence-correctness patch** on top of 1.5.1.
|
|
95
|
+
|
|
96
|
+
### What shipped in 1.5.2
|
|
97
|
+
|
|
98
|
+
- **Orthographic and isometric cameras on the public surface.** `camera.orthographic()`
|
|
99
|
+
and `camera.isometric()` join the safe agent API with an `orthographicSize` field, and
|
|
100
|
+
`@aura3d/rendering` gains `computeOrthographicCameraFrame` (bounds-derived) and
|
|
101
|
+
`computeOrthographicCameraView` (explicit frustum), selectable through
|
|
102
|
+
`RenderSource.cameraProjection`. Before this, renderer auto-framing could only build a
|
|
103
|
+
perspective frustum, so a scene that needed a parallel projection silently received a
|
|
104
|
+
perspective one — CAD and technical views, isometric games, floor plans, sprite bakes and
|
|
105
|
+
product turntables were all affected. `camera.isometric()` uses the true `atan(1/√2)`
|
|
106
|
+
elevation at which the three world axes project to equal screen lengths. Perspective
|
|
107
|
+
remains the default, so this is not a breaking change.
|
|
108
|
+
- **`fitSizeToRegion()` for bounds-derived asset sizing.** Returns a `targetMaxDimension`
|
|
109
|
+
that sizes an asset to a chosen fraction of the region it occupies. Placement was already
|
|
110
|
+
bounds-derived through `resolveSemanticRegion`; sizing was not, so routes had no correct
|
|
111
|
+
alternative to inventing a scale multiplier that broke whenever the asset or scene
|
|
112
|
+
changed size.
|
|
113
|
+
- **Per-row background estimation in foreground analysis.** Every showcase screenshot gate
|
|
114
|
+
measures silhouette extent, foreground ratio and subject centroid against a background
|
|
115
|
+
estimate. That estimate was a single average of the frame's four corners, which is wrong
|
|
116
|
+
for most of a frame that has a gradient sky: rows near the horizon were compared against
|
|
117
|
+
a colour sampled from the top of the frame, so sky pixels were admitted as subject and
|
|
118
|
+
every derived measurement was computed against an inflated mask. Background is now
|
|
119
|
+
estimated per row from the median of that row's left and right margins, which tracks a
|
|
120
|
+
vertical gradient and tolerates a prop or HUD edge intruding into one margin.
|
|
121
|
+
- **Producer/verifier parity is pinned by equality.** `tools/showcase-library/png-foreground.mjs`
|
|
122
|
+
re-derives the same metrics from the written PNG; the two implementations must now agree
|
|
123
|
+
pixel-for-pixel across gradient, flat-background, off-centre-subject and HUD-crop cases.
|
|
124
|
+
- **Aura Clash evidence route cites current artifacts.** Its evidence model pointed at
|
|
125
|
+
superseded proof files; every required signal now resolves to a field of the current schema.
|
|
126
|
+
|
|
127
|
+
### What shipped in 1.5.1
|
|
128
|
+
|
|
129
|
+
1.5.1 was a **product-remediation release**: three reported interaction defects and four
|
|
130
|
+
reported game-runtime defects were root-caused at the library level and fixed with reusable
|
|
131
|
+
systems, each backed by unit tests and a runtime probe rather than by a screenshot.
|
|
132
|
+
|
|
133
|
+
- **Focus and selection (`focusObject`, `focusSemanticRegion`).** A focus indicator
|
|
134
|
+
rendered as a flat bar because Aura3D's torus is a ring in local **XY** with its tube
|
|
135
|
+
on **Z**, and a route scaled its ring-plane radius instead of its tube. The axis
|
|
136
|
+
convention is now published as `AURA_PRIMITIVE_AXES`, and indicator correctness is
|
|
137
|
+
asserted per result — circular in its own plane, thinned on the tube axis, enclosing
|
|
138
|
+
its target, callout outside it.
|
|
139
|
+
- **World-anchored labels.** `labels.callout(...)` produced a valid node that nothing
|
|
140
|
+
drew: label rendering lived only in the canvas2d fallback, while every route with a
|
|
141
|
+
typed GLB takes the production WebGL2 path. Evidence counted label *nodes*, so reports
|
|
142
|
+
stayed green while the screen showed none. There is now a real screen-space label layer
|
|
143
|
+
in the production path, and `AuraDiagnostics.labels` reports what was actually placed.
|
|
144
|
+
- **Asset-relative layout (`SpatialAnchoring`).** `placedBoundsFromAsset`, 19 bounds
|
|
145
|
+
anchors, normalized semantic regions, deterministic distribution and
|
|
146
|
+
`checkSpatialInvariants` replace literal helper coordinates that stopped matching their
|
|
147
|
+
asset.
|
|
148
|
+
- **Vehicle chassis and AI driving.** A car pinned to a literal height cannot respond to
|
|
149
|
+
the road; `createVehicleChassis` resolves contact, suspension and attitude from four
|
|
150
|
+
contact points, deriving geometry from the asset's own bounds.
|
|
151
|
+
`createVehicleDriverAi` steers toward a look-ahead point on the racing line with
|
|
152
|
+
curvature-based corner speeds, so it turns into a corner rather than after it.
|
|
153
|
+
- **Platformer motion solving.** `solvePlatformerMotion` derives gravity, jump velocity
|
|
154
|
+
and move speed from a level's own platform geometry; `validatePlatformerMotion` refuses
|
|
155
|
+
tuning inconsistent with it. A shipped level had a 5.76x jump overshoot that passed
|
|
156
|
+
every gate because the level was *solvable*.
|
|
157
|
+
- **Frame-based combat.** `solveCombatFrameData` and `validateCombatFrameData` validate
|
|
158
|
+
frame data *as* frame data. A shipped move table had 12–32 active frames against 4–5
|
|
159
|
+
recovery, inverted from any real fighting game, so every move was safe on block.
|
|
160
|
+
- **Application kits.** Five reusable kits — product configurator, digital twin,
|
|
161
|
+
architecture, smart city, cinematic. Each publishes a `capabilities` report naming what
|
|
162
|
+
it deliberately does **not** own.
|
|
163
|
+
- **Scene queries.** Raycasts, sphere casts and ground probes reachable from the public
|
|
164
|
+
API; previously implemented in `@aura3d/physics` and unreachable from a route.
|
|
165
|
+
|
|
166
|
+
### Measured
|
|
167
|
+
|
|
168
|
+
- **87 of 87** public controls and **47 of 47** keyboard bindings verified *by operation*
|
|
169
|
+
across 13 routes, with zero console errors.
|
|
170
|
+
- **21 of 21** combined quality gates pass with **zero unproven**. Missing evidence is
|
|
171
|
+
reported as `unproven`, never as a pass.
|
|
172
|
+
- **2903 of 2904** unit and integration tests, identical across two serial runs.
|
|
173
|
+
- Clean-room projects against the public surface only: **137 / 142 / 122 / 99** authored
|
|
174
|
+
lines against budgets of 200 / 200 / 300 / 300; one package imported each; **zero**
|
|
175
|
+
private imports.
|
|
176
|
+
- Route-local magic-geometry findings in published routes: **47 → 7**.
|
|
177
|
+
|
|
178
|
+
### What is still not resolved
|
|
179
|
+
|
|
180
|
+
Stated because a release note that omits this is not useful:
|
|
181
|
+
|
|
182
|
+
- `showcase-blockfall-reactor`, `showcase-skyline-runner` and
|
|
183
|
+
`showcase-turbo-drift-circuit` remain **prototype-blocked**. Their physics and frame
|
|
184
|
+
data are correct; whether they are good games is a judgement their visual review has
|
|
185
|
+
not yet made.
|
|
186
|
+
- `aura-clash-showcase` is **not in the route-gate registry**, so showcase-wide gates do
|
|
187
|
+
not cover it. It carries its own 23-spec suite.
|
|
188
|
+
- `@aura3d/engine-runtime` still declares 322 exports duplicating other packages; 51
|
|
189
|
+
exported symbol names have more than one owning package.
|
|
190
|
+
- Five physics capabilities remain unreachable from the public API: penetration
|
|
191
|
+
resolution, friction, restitution, constraints, continuous collision detection.
|
|
192
|
+
- Practical Three.js ecosystem parity is **6 exceed / 37 parity / 10 unproven / 3 gap**
|
|
193
|
+
across 56 capabilities. Aura3D is behind on ecosystem breadth, shader authoring
|
|
194
|
+
through the safe API, 3D text, and LOD/instancing exposure.
|
|
195
|
+
|
|
196
|
+
Full ledger and final report: `docs/project/plans/aura3d-product-remediation-prd.md`.
|
|
132
197
|
|
|
133
198
|
Install after the npm publication completes:
|
|
134
199
|
|
|
135
200
|
```bash
|
|
136
|
-
npm install @aura3d/engine@1.5.
|
|
201
|
+
npm install @aura3d/engine@1.5.2
|
|
137
202
|
# or scaffold an app
|
|
138
|
-
npx create-aura3d@1.5.
|
|
203
|
+
npx create-aura3d@1.5.2 my-product --template product-viewer
|
|
139
204
|
```
|
|
140
205
|
|
|
141
206
|
Detailed release notes are in
|
|
@@ -164,7 +229,7 @@ npx @aura3d/cli@latest assets validate-game --profile fighting-character --asset
|
|
|
164
229
|
`--profile fighting-character` requires animated GLB candidates from verified CC0/CC-BY sources, applies a browser-sized triangle budget, and writes source URL, license, author/attribution, and source family into `aura.assets.json` during `assets resolve`.
|
|
165
230
|
## Aura3D 1.1.0 runtime launch track
|
|
166
231
|
|
|
167
|
-
Aura3D 1.1.0 introduced the runtime and animation evidence foundation; 1.5.
|
|
232
|
+
Aura3D 1.1.0 introduced the runtime and animation evidence foundation; 1.5.2 is
|
|
168
233
|
the current package release that carries it forward:
|
|
169
234
|
|
|
170
235
|
- `game runtime`: mutable runtime nodes, app-owned frame loops, input, kinematic bodies, hitboxes, combat events, camera direction, effects, and evidence for browser-native game prototypes.
|
|
@@ -624,7 +689,7 @@ Aura3D 1.1.0 game-engine/showcase readiness is stricter:
|
|
|
624
689
|
pnpm aura3d110:readiness
|
|
625
690
|
```
|
|
626
691
|
|
|
627
|
-
Expected current state — The scoped package gates pass for the 1.5.
|
|
692
|
+
Expected current state — The scoped package gates pass for the 1.5.2 baseline,
|
|
628
693
|
but the current route-library gate is deliberately non-passing until independent
|
|
629
694
|
review is current. Blockfall Reactor, Turbo Drift Circuit, and Skyline Runner are
|
|
630
695
|
prototype-blocked during visual reconstruction; their typed assets, mounted
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reusable application kits for static and enterprise experiences.
|
|
3
|
+
*
|
|
4
|
+
* ## Why these exist
|
|
5
|
+
*
|
|
6
|
+
* The remediation's reusable *systems* -- focus, labels, asset-relative anchoring -- removed
|
|
7
|
+
* the defects that made these routes wrong. They did not remove the reason each route is
|
|
8
|
+
* 800 to 1,400 lines: every one still assembles part selection, variant state, overlay
|
|
9
|
+
* composition, camera presets and annotation placement by hand, and each assembles it
|
|
10
|
+
* slightly differently. A developer building a sixth configurator gets no help from the five
|
|
11
|
+
* that exist.
|
|
12
|
+
*
|
|
13
|
+
* A kit owns that assembly. A route declares *what* it is configuring -- these parts, these
|
|
14
|
+
* variants, these zones, these camera presets -- and the kit owns selection state, focus
|
|
15
|
+
* feedback, annotation placement, camera framing, reset and the evidence a gate needs. The
|
|
16
|
+
* route composes scene nodes from the kit's output instead of computing them.
|
|
17
|
+
*
|
|
18
|
+
* All five kits are pure: they hold state and return scene-node JSON plus intent. No
|
|
19
|
+
* renderer, no DOM, no asset loading, so each is unit-testable and reusable by any route.
|
|
20
|
+
*
|
|
21
|
+
* Deliberately *not* included: anything a kit cannot honestly own. Measurement and section
|
|
22
|
+
* views in the architecture kit need geometry the public API does not expose, so they are
|
|
23
|
+
* reported as absent. See `unsupported` on each kit's capability report.
|
|
24
|
+
*/
|
|
25
|
+
import type { AuraCameraSpec, AuraColor, AuraSceneNode, AuraVec3 } from "./index.js";
|
|
26
|
+
import { type FocusIndicator, type FocusResult } from "./FocusSelection.js";
|
|
27
|
+
import { type BoundsAnchor, type PlacedBounds, type SemanticRegion, type SpatialInvariantReport } from "./SpatialAnchoring.js";
|
|
28
|
+
/** Capability report every kit publishes, so a claim can be checked against it. */
|
|
29
|
+
export interface KitCapabilityReport {
|
|
30
|
+
readonly kind: "aura-application-kit-capabilities";
|
|
31
|
+
readonly kit: string;
|
|
32
|
+
/** Capabilities the kit owns and a route no longer implements. */
|
|
33
|
+
readonly supported: readonly string[];
|
|
34
|
+
/**
|
|
35
|
+
* Capabilities the assignment names that this kit does **not** own, with the reason.
|
|
36
|
+
*
|
|
37
|
+
* Present so a kit cannot imply completeness it does not have. Returning empty geometry for
|
|
38
|
+
* a capability the kit does not own would be worse than declaring the absence.
|
|
39
|
+
*/
|
|
40
|
+
readonly unsupported: readonly {
|
|
41
|
+
readonly capability: string;
|
|
42
|
+
readonly reason: string;
|
|
43
|
+
}[];
|
|
44
|
+
}
|
|
45
|
+
export interface ConfiguratorPart extends SemanticRegion {
|
|
46
|
+
/** Optional price contribution, for data binding. */
|
|
47
|
+
readonly price?: number | undefined;
|
|
48
|
+
}
|
|
49
|
+
export interface ConfiguratorVariant {
|
|
50
|
+
readonly id: string;
|
|
51
|
+
readonly label: string;
|
|
52
|
+
readonly color: AuraColor;
|
|
53
|
+
readonly accent: AuraColor;
|
|
54
|
+
readonly price?: number | undefined;
|
|
55
|
+
}
|
|
56
|
+
export interface ConfiguratorFinish {
|
|
57
|
+
readonly id: string;
|
|
58
|
+
readonly label: string;
|
|
59
|
+
readonly price?: number | undefined;
|
|
60
|
+
}
|
|
61
|
+
export interface ConfiguratorCameraPreset {
|
|
62
|
+
readonly id: string;
|
|
63
|
+
readonly camera: AuraCameraSpec;
|
|
64
|
+
}
|
|
65
|
+
export interface ProductConfiguratorKitOptions {
|
|
66
|
+
/** Placed bounds of the product, from `placedBoundsFromAsset`. */
|
|
67
|
+
readonly bounds: PlacedBounds;
|
|
68
|
+
readonly parts: readonly ConfiguratorPart[];
|
|
69
|
+
readonly variants: readonly ConfiguratorVariant[];
|
|
70
|
+
readonly finishes: readonly ConfiguratorFinish[];
|
|
71
|
+
readonly cameraPresets?: readonly ConfiguratorCameraPreset[] | undefined;
|
|
72
|
+
/** Base price, before variant and finish contributions. */
|
|
73
|
+
readonly basePrice?: number | undefined;
|
|
74
|
+
/** Focus indicators to draw for a selected part. */
|
|
75
|
+
readonly indicators?: readonly FocusIndicator[] | undefined;
|
|
76
|
+
/** Viewport aspect, for camera framing. */
|
|
77
|
+
readonly aspect?: number | undefined;
|
|
78
|
+
}
|
|
79
|
+
export interface ProductConfiguratorState {
|
|
80
|
+
readonly variantId: string;
|
|
81
|
+
readonly finishId: string;
|
|
82
|
+
readonly partId: string | undefined;
|
|
83
|
+
readonly exploded: boolean;
|
|
84
|
+
readonly cameraPresetId: string | undefined;
|
|
85
|
+
}
|
|
86
|
+
export interface ProductConfiguratorFrame {
|
|
87
|
+
readonly kind: "aura-product-configurator-frame";
|
|
88
|
+
readonly state: ProductConfiguratorState;
|
|
89
|
+
/** Focus indicator and annotation nodes for the current selection. */
|
|
90
|
+
readonly nodes: readonly AuraSceneNode[];
|
|
91
|
+
/** Exploded-part placements, empty unless `exploded`. */
|
|
92
|
+
readonly explodedPlacements: readonly {
|
|
93
|
+
readonly partId: string;
|
|
94
|
+
readonly position: AuraVec3;
|
|
95
|
+
readonly size: AuraVec3;
|
|
96
|
+
}[];
|
|
97
|
+
readonly camera: AuraCameraSpec | undefined;
|
|
98
|
+
readonly focus: FocusResult;
|
|
99
|
+
readonly price: number | undefined;
|
|
100
|
+
readonly accessibilityLabel: string;
|
|
101
|
+
readonly spatialInvariants: SpatialInvariantReport;
|
|
102
|
+
}
|
|
103
|
+
export interface ProductConfiguratorKit {
|
|
104
|
+
readonly kind: "aura-product-configurator-kit";
|
|
105
|
+
readonly capabilities: KitCapabilityReport;
|
|
106
|
+
selectVariant(variantId: string): ProductConfiguratorFrame;
|
|
107
|
+
selectFinish(finishId: string): ProductConfiguratorFrame;
|
|
108
|
+
/** Select a part, or pass the current part again to deselect it. */
|
|
109
|
+
selectPart(partId: string | undefined): ProductConfiguratorFrame;
|
|
110
|
+
toggleExploded(): ProductConfiguratorFrame;
|
|
111
|
+
selectCameraPreset(presetId: string | undefined): ProductConfiguratorFrame;
|
|
112
|
+
reset(): ProductConfiguratorFrame;
|
|
113
|
+
frame(): ProductConfiguratorFrame;
|
|
114
|
+
}
|
|
115
|
+
export declare function createProductConfiguratorKit(options: ProductConfiguratorKitOptions): ProductConfiguratorKit;
|
|
116
|
+
export interface TwinEquipment extends SemanticRegion {
|
|
117
|
+
/** Sensor readings a route supplies; the kit carries them into overlays and evidence. */
|
|
118
|
+
readonly sensors?: Readonly<Record<string, number>> | undefined;
|
|
119
|
+
}
|
|
120
|
+
export interface TwinAlarm {
|
|
121
|
+
readonly equipmentId: string;
|
|
122
|
+
readonly severity: "info" | "warning" | "critical";
|
|
123
|
+
readonly message: string;
|
|
124
|
+
}
|
|
125
|
+
export interface DigitalTwinKitOptions {
|
|
126
|
+
readonly bounds: PlacedBounds;
|
|
127
|
+
readonly equipment: readonly TwinEquipment[];
|
|
128
|
+
/** Where the alarm beacon sits relative to the workcell. */
|
|
129
|
+
readonly alarmAnchor?: BoundsAnchor | undefined;
|
|
130
|
+
/** Conveyor or belt region, for distributed markers. */
|
|
131
|
+
readonly flowRegion?: SemanticRegion | undefined;
|
|
132
|
+
readonly markerCount?: number | undefined;
|
|
133
|
+
readonly aspect?: number | undefined;
|
|
134
|
+
}
|
|
135
|
+
export interface DigitalTwinFrame {
|
|
136
|
+
readonly kind: "aura-digital-twin-frame";
|
|
137
|
+
readonly selectedEquipmentId: string | undefined;
|
|
138
|
+
readonly focused: boolean;
|
|
139
|
+
readonly mode: string;
|
|
140
|
+
readonly nodes: readonly AuraSceneNode[];
|
|
141
|
+
/** Marker placements along the flow region, deterministic for a given seed. */
|
|
142
|
+
readonly markerPlacements: readonly AuraVec3[];
|
|
143
|
+
readonly alarmPosition: AuraVec3;
|
|
144
|
+
readonly camera: AuraCameraSpec | undefined;
|
|
145
|
+
readonly alarms: readonly TwinAlarm[];
|
|
146
|
+
readonly sensorReadout: Readonly<Record<string, number>>;
|
|
147
|
+
readonly timeline: {
|
|
148
|
+
readonly step: number;
|
|
149
|
+
readonly steps: number;
|
|
150
|
+
};
|
|
151
|
+
readonly spatialInvariants: SpatialInvariantReport;
|
|
152
|
+
readonly accessibilityLabel: string;
|
|
153
|
+
}
|
|
154
|
+
export interface DigitalTwinKit {
|
|
155
|
+
readonly kind: "aura-digital-twin-kit";
|
|
156
|
+
readonly capabilities: KitCapabilityReport;
|
|
157
|
+
selectEquipment(equipmentId: string | undefined): DigitalTwinFrame;
|
|
158
|
+
setMode(mode: string): DigitalTwinFrame;
|
|
159
|
+
toggleFocus(): DigitalTwinFrame;
|
|
160
|
+
raiseAlarm(alarm: TwinAlarm): DigitalTwinFrame;
|
|
161
|
+
clearAlarms(): DigitalTwinFrame;
|
|
162
|
+
/** Advance the state-simulation timeline by one step. */
|
|
163
|
+
advanceTimeline(): DigitalTwinFrame;
|
|
164
|
+
reset(): DigitalTwinFrame;
|
|
165
|
+
frame(): DigitalTwinFrame;
|
|
166
|
+
}
|
|
167
|
+
export declare function createDigitalTwinKit(options: DigitalTwinKitOptions): DigitalTwinKit;
|
|
168
|
+
export interface ArchitectureSpace extends SemanticRegion {
|
|
169
|
+
/** Which floor this space belongs to, so floor focus can group spaces. */
|
|
170
|
+
readonly floor: number;
|
|
171
|
+
}
|
|
172
|
+
export interface ArchitectureKitOptions {
|
|
173
|
+
readonly bounds: PlacedBounds;
|
|
174
|
+
readonly spaces: readonly ArchitectureSpace[];
|
|
175
|
+
/** Named lighting moods a route supplies. */
|
|
176
|
+
readonly moods: readonly {
|
|
177
|
+
readonly id: string;
|
|
178
|
+
readonly label: string;
|
|
179
|
+
readonly sunElevation: number;
|
|
180
|
+
readonly sunAzimuth: number;
|
|
181
|
+
}[];
|
|
182
|
+
readonly materialVariants?: readonly {
|
|
183
|
+
readonly id: string;
|
|
184
|
+
readonly label: string;
|
|
185
|
+
}[] | undefined;
|
|
186
|
+
readonly aspect?: number | undefined;
|
|
187
|
+
}
|
|
188
|
+
export interface ArchitectureFrame {
|
|
189
|
+
readonly kind: "aura-architecture-frame";
|
|
190
|
+
readonly floor: number | undefined;
|
|
191
|
+
readonly spaceId: string | undefined;
|
|
192
|
+
readonly moodId: string;
|
|
193
|
+
readonly materialVariantId: string | undefined;
|
|
194
|
+
readonly nodes: readonly AuraSceneNode[];
|
|
195
|
+
readonly camera: AuraCameraSpec | undefined;
|
|
196
|
+
/** Sun direction for the active mood, as a unit vector. */
|
|
197
|
+
readonly sunDirection: AuraVec3;
|
|
198
|
+
/** Spaces on the focused floor, or all spaces when no floor is focused. */
|
|
199
|
+
readonly visibleSpaceIds: readonly string[];
|
|
200
|
+
readonly spatialInvariants: SpatialInvariantReport;
|
|
201
|
+
readonly accessibilityLabel: string;
|
|
202
|
+
}
|
|
203
|
+
export interface ArchitectureKit {
|
|
204
|
+
readonly kind: "aura-architecture-kit";
|
|
205
|
+
readonly capabilities: KitCapabilityReport;
|
|
206
|
+
focusFloor(floor: number | undefined): ArchitectureFrame;
|
|
207
|
+
focusSpace(spaceId: string | undefined): ArchitectureFrame;
|
|
208
|
+
setMood(moodId: string): ArchitectureFrame;
|
|
209
|
+
setMaterialVariant(variantId: string | undefined): ArchitectureFrame;
|
|
210
|
+
reset(): ArchitectureFrame;
|
|
211
|
+
frame(): ArchitectureFrame;
|
|
212
|
+
}
|
|
213
|
+
export declare function createArchitectureKit(options: ArchitectureKitOptions): ArchitectureKit;
|
|
214
|
+
export interface CityDistrict extends SemanticRegion {
|
|
215
|
+
readonly color: AuraColor;
|
|
216
|
+
}
|
|
217
|
+
export interface CityDataLayer {
|
|
218
|
+
readonly id: string;
|
|
219
|
+
readonly label: string;
|
|
220
|
+
/** Values per district id, so a layer's overlay follows the district it describes. */
|
|
221
|
+
readonly values: Readonly<Record<string, number>>;
|
|
222
|
+
}
|
|
223
|
+
export interface SmartCityKitOptions {
|
|
224
|
+
readonly bounds: PlacedBounds;
|
|
225
|
+
readonly districts: readonly CityDistrict[];
|
|
226
|
+
readonly layers: readonly CityDataLayer[];
|
|
227
|
+
/** Temporal states, such as time of day. */
|
|
228
|
+
readonly temporalStates?: readonly string[] | undefined;
|
|
229
|
+
readonly aspect?: number | undefined;
|
|
230
|
+
}
|
|
231
|
+
export interface SmartCityFrame {
|
|
232
|
+
readonly kind: "aura-smart-city-frame";
|
|
233
|
+
readonly districtId: string | undefined;
|
|
234
|
+
readonly activeLayerIds: readonly string[];
|
|
235
|
+
readonly temporalState: string | undefined;
|
|
236
|
+
readonly nodes: readonly AuraSceneNode[];
|
|
237
|
+
readonly camera: AuraCameraSpec | undefined;
|
|
238
|
+
/** Overlay placement and value per district, for each active layer. */
|
|
239
|
+
readonly overlays: readonly {
|
|
240
|
+
readonly layerId: string;
|
|
241
|
+
readonly districtId: string;
|
|
242
|
+
readonly position: AuraVec3;
|
|
243
|
+
readonly value: number;
|
|
244
|
+
}[];
|
|
245
|
+
/** Districts rendered at reduced detail because too many are active at once. */
|
|
246
|
+
readonly reducedDetailDistrictIds: readonly string[];
|
|
247
|
+
readonly spatialInvariants: SpatialInvariantReport;
|
|
248
|
+
readonly accessibilityLabel: string;
|
|
249
|
+
}
|
|
250
|
+
export interface SmartCityKit {
|
|
251
|
+
readonly kind: "aura-smart-city-kit";
|
|
252
|
+
readonly capabilities: KitCapabilityReport;
|
|
253
|
+
selectDistrict(districtId: string | undefined): SmartCityFrame;
|
|
254
|
+
toggleLayer(layerId: string): SmartCityFrame;
|
|
255
|
+
setTemporalState(state: string | undefined): SmartCityFrame;
|
|
256
|
+
reset(): SmartCityFrame;
|
|
257
|
+
frame(): SmartCityFrame;
|
|
258
|
+
}
|
|
259
|
+
export declare function createSmartCityKit(options: SmartCityKitOptions): SmartCityKit;
|
|
260
|
+
export interface CinematicShot {
|
|
261
|
+
readonly id: string;
|
|
262
|
+
readonly seconds: number;
|
|
263
|
+
readonly from: AuraVec3;
|
|
264
|
+
readonly to: AuraVec3;
|
|
265
|
+
readonly target: AuraVec3;
|
|
266
|
+
/** Animation clip to coordinate with this shot, when there is one. */
|
|
267
|
+
readonly clip?: string | undefined;
|
|
268
|
+
readonly transition?: "cut" | "ease" | "linear" | undefined;
|
|
269
|
+
}
|
|
270
|
+
export interface CinematicKitOptions {
|
|
271
|
+
readonly shots: readonly CinematicShot[];
|
|
272
|
+
readonly fov?: number | undefined;
|
|
273
|
+
}
|
|
274
|
+
export interface CinematicFrame {
|
|
275
|
+
readonly kind: "aura-cinematic-frame";
|
|
276
|
+
readonly time: number;
|
|
277
|
+
readonly shotId: string;
|
|
278
|
+
readonly shotIndex: number;
|
|
279
|
+
/** Progress through the current shot, 0..1. */
|
|
280
|
+
readonly shotProgress: number;
|
|
281
|
+
readonly camera: AuraCameraSpec;
|
|
282
|
+
readonly activeClip: string | undefined;
|
|
283
|
+
/** True while a transition into this shot is still resolving. */
|
|
284
|
+
readonly transitioning: boolean;
|
|
285
|
+
readonly totalSeconds: number;
|
|
286
|
+
}
|
|
287
|
+
export interface CinematicKit {
|
|
288
|
+
readonly kind: "aura-cinematic-kit";
|
|
289
|
+
readonly capabilities: KitCapabilityReport;
|
|
290
|
+
/** Sample the sequence at a time, in seconds. Pure: no internal clock. */
|
|
291
|
+
sampleAt(seconds: number): CinematicFrame;
|
|
292
|
+
/** Every shot boundary, for timeline UI and export. */
|
|
293
|
+
shotBoundaries(): readonly {
|
|
294
|
+
readonly shotId: string;
|
|
295
|
+
readonly start: number;
|
|
296
|
+
readonly end: number;
|
|
297
|
+
}[];
|
|
298
|
+
/** A deterministic frame list for replay or export at a given rate. */
|
|
299
|
+
exportPlan(fps: number): readonly {
|
|
300
|
+
readonly frame: number;
|
|
301
|
+
readonly time: number;
|
|
302
|
+
readonly shotId: string;
|
|
303
|
+
}[];
|
|
304
|
+
readonly totalSeconds: number;
|
|
305
|
+
}
|
|
306
|
+
export declare function createCinematicKit(options: CinematicKitOptions): CinematicKit;
|
|
307
|
+
//# sourceMappingURL=ApplicationKits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationKits.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/ApplicationKits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAKL,KAAK,YAAY,EAEjB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,mCAAmC,CAAC;IACnD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,SAAS;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3F;AAMD,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,qDAAqD;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,6BAA6B;IAC5C,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,wBAAwB,EAAE,GAAG,SAAS,CAAC;IACzE,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,CAAC;IAC5D,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,iCAAiC,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,yDAAyD;IACzD,QAAQ,CAAC,kBAAkB,EAAE,SAAS;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,EAAE,CAAC;IAC1H,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;CACpD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAC;IAC/C,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,wBAAwB,CAAC;IAC3D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,wBAAwB,CAAC;IACzD,oEAAoE;IACpE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,wBAAwB,CAAC;IACjE,cAAc,IAAI,wBAAwB,CAAC;IAC3C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,wBAAwB,CAAC;IAC3E,KAAK,IAAI,wBAAwB,CAAC;IAClC,KAAK,IAAI,wBAAwB,CAAC;CACnC;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB,CAuK3G;AAMD,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,yFAAyF;IACzF,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;CACjE;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;IAC7C,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAChD,wDAAwD;IACxD,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,+EAA+E;IAC/E,QAAQ,CAAC,gBAAgB,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,QAAQ,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;IACnD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAAC;IACnE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACxC,WAAW,IAAI,gBAAgB,CAAC;IAChC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAC/C,WAAW,IAAI,gBAAgB,CAAC;IAChC,yDAAyD;IACzD,eAAe,IAAI,gBAAgB,CAAC;IACpC,KAAK,IAAI,gBAAgB,CAAC;IAC1B,KAAK,IAAI,gBAAgB,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAuJnF;AAMD,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvI,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,SAAS,CAAC;IACnG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;IACnD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAAC;IACzD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAAC;IAC3D,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAC3C,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAAC;IACrE,KAAK,IAAI,iBAAiB,CAAC;IAC3B,KAAK,IAAI,iBAAiB,CAAC;CAC5B;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAiItF;AAMD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,4CAA4C;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;IACJ,gFAAgF;IAChF,QAAQ,CAAC,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrD,QAAQ,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;IACnD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC;IAC/D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC;IAC7C,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC;IAC5D,KAAK,IAAI,cAAc,CAAC;IACxB,KAAK,IAAI,cAAc,CAAC;CACzB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAiI7E;AAMD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC;IAC1C,uDAAuD;IACvD,cAAc,IAAI,SAAS;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvG,uEAAuE;IACvE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/G,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAgF7E"}
|